context: It is likely that Bernhard is gray. It is likely that Brian is a rhino. It is probably the case that Mary left the football. There is almost no chance that if either 'Bernhard is gray' or 'Brian is a rhino' but not both then Jessica is a sheep. It is highly likely that if 'Brian is a rhino' or 'Bernhard is gray' or both then Greg is yellow. It is certain that if either 'Mary left the football' or 'Bernhard is gray' but not both then Julius is gray.
hypothesis: It is unlikely that either 'Bernhard is gray' or 'Julius is gray' but not both.
valid_hypothesis: It is probably the case that either 'Bernhard is gray' or 'Julius is gray' but not both.
invalid_hypothesis: It is unlikely that either 'Bernhard is gray' or 'Julius is gray' but not both.
problog: 
    and(A,B) :- A,B.
    or(A,B) :- A;B.
    nand(A,B) :- not(and(A,B)).
    nor(A,B) :- not(or(A,B)).
    xor(A,B) :- or(A,B), nand(A,B).
  
    %hop0
    0.7::factA.
    0.7::factB.
    0.7::factC.
    %hop1
    0.02::factX:-xor(factA,factB).
    0.9::factY:-or(factB,factA).
    1.0::factZ:-xor(factC,factA).
  
    %hop2
    conclusion:-xor(factA,factZ).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Bernhard is gray' or 'Julius is gray' but not both.