context: We doubt that Jason is tired. It is highly likely that Brian is gray. It is highly likely that John grabbed the apple. It is highly unlikely that if either 'Jason is tired' or 'John grabbed the apple' but not both then Emily is a wolf. It is impossible that if 'Brian is gray and John grabbed the apple' then Julius is a lion. There is almost no chance that if 'Jason is tired' or 'John grabbed the apple' or both then Greg is a rhino.
hypothesis: It is unlikely that either 'Jason is tired' or 'Greg is a rhino' but not both.
valid_hypothesis: It is unlikely that either 'Jason is tired' or 'Greg is a rhino' but not both.
invalid_hypothesis: It is probable that either 'Jason is tired' or 'Greg is a rhino' 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.2::factA.
    0.9::factB.
    0.9::factC.
    %hop1
    0.05::factX:-xor(factA,factC).
    0.0::factY:-and(factB,factC).
    0.02::factZ:-or(factA,factC).
  
    %hop2
    conclusion:-xor(factA,factZ).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Jason is tired' or 'Greg is a rhino' but not both.