context: It is highly unlikely that Sandra took the milk. There is a better than even chance that John dropped the apple. It is probably not the case that Mary went to the bedroom. We doubt that if 'John dropped the apple and Mary went to the bedroom' then Bernhard is green. Chances are about even that if either 'Sandra took the milk' or 'Mary went to the bedroom' but not both then Greg is a rhino. There is a better than even chance that if either 'John dropped the apple' or 'Sandra took the milk' but not both then Brian is yellow.
hypothesis: There is a very good chance that either 'Greg is a rhino' or 'Bernhard is green' but not both.
valid_hypothesis: Chances are slight that either 'Greg is a rhino' or 'Bernhard is green' but not both.
invalid_hypothesis: There is a very good chance that either 'Greg is a rhino' or 'Bernhard is green' 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.05::factA.
    0.6::factB.
    0.25::factC.
    %hop1
    0.2::factX:-and(factB,factC).
    0.5::factY:-xor(factA,factC).
    0.6::factZ:-xor(factB,factA).
  
    %hop2
    conclusion:-xor(factY,factX).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Greg is a rhino' or 'Bernhard is green' but not both.