context: Chances are slight that Sandra took the milk. Chances are slight that Mary dropped the apple. It is certain that John got the milk. Chances are slight that if 'Mary dropped the apple and John got the milk' then Lily is green. We doubt that if 'Mary dropped the apple' or 'Sandra took the milk' or both then Julius is yellow. It is probably the case that if 'John got the milk' or 'Sandra took the milk' or both then Greg is a rhino.
hypothesis: It is probably the case that either 'Greg is a rhino' or 'Mary dropped the apple' but not both.
valid_hypothesis: It is probably the case that either 'Greg is a rhino' or 'Mary dropped the apple' but not both.
invalid_hypothesis: It is improbable that either 'Greg is a rhino' or 'Mary dropped the apple' 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.1::factA.
    0.1::factB.
    1.0::factC.
    %hop1
    0.1::factX:-and(factB,factC).
    0.2::factY:-or(factB,factA).
    0.7::factZ:-or(factC,factA).
  
    %hop2
    conclusion:-xor(factZ,factB).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Greg is a rhino' or 'Mary dropped the apple' but not both.