context: It is likely that Sandra got the milk. There is little chance that Greg is a swan. It is almost certain that Bill went to the office. It is probably the case that if 'Greg is a swan and Sandra got the milk' then Julius is gray. It is improbable that if 'Sandra got the milk' or 'Bill went to the office' or both then John moved to the garden. It is impossible that if 'Greg is a swan and Sandra got the milk' then Bernhard is yellow.
hypothesis: It is highly unlikely that either 'Greg is a swan' or 'Julius is gray' but not both.
valid_hypothesis: It is highly unlikely that either 'Greg is a swan' or 'Julius is gray' but not both.
invalid_hypothesis: It is probable that either 'Greg is a swan' 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.1::factB.
    0.95::factC.
    %hop1
    0.7::factX:-and(factB,factA).
    0.1::factY:-or(factA,factC).
    0.0::factZ:-and(factB,factA).
  
    %hop2
    conclusion:-xor(factB,factX).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Greg is a swan' or 'Julius is gray' but not both.