context: There is little chance that Bernhard is yellow. Chances are slight that Jeff went to the bedroom. It is highly likely that John dropped the apple. It is highly likely that if 'Bernhard is yellow and Jeff went to the bedroom' then Julius is a lion. It is probable that if either 'Bernhard is yellow' or 'John dropped the apple' but not both then Lily is a swan. It is certain that if 'Bernhard is yellow' or 'John dropped the apple' or both then Greg is a swan.
hypothesis: There is a better than even chance that either 'Julius is a lion' or 'Lily is a swan' but not both.
valid_hypothesis: There is a better than even chance that either 'Julius is a lion' or 'Lily is a swan' but not both.
invalid_hypothesis: There is little chance that either 'Julius is a lion' or 'Lily is a swan' 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.
    0.9::factC.
    %hop1
    0.9::factX:-and(factA,factB).
    0.7::factY:-xor(factA,factC).
    1.0::factZ:-or(factA,factC).
  
    %hop2
    conclusion:-xor(factX,factY).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Julius is a lion' or 'Lily is a swan' but not both.