context: It is highly likely that Bernhard is white. It is impossible that John went to the kitchen. It is almost certain that Fred put down the apple. It is impossible that if 'Fred put down the apple' or 'John went to the kitchen' or both then Lily is green. It is highly likely that if 'John went to the kitchen' or 'Fred put down the apple' or both then Greg is a swan. There is almost no chance that if 'Fred put down the apple' or 'Bernhard is white' or both then Brian is yellow.
hypothesis: It is almost certain that either 'Fred put down the apple' or 'Greg is a swan' but not both.
valid_hypothesis: It is improbable that either 'Fred put down the apple' or 'Greg is a swan' but not both.
invalid_hypothesis: It is almost certain that either 'Fred put down the apple' or 'Greg 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.9::factA.
    0.0::factB.
    0.95::factC.
    %hop1
    0.0::factX:-or(factC,factB).
    0.9::factY:-or(factB,factC).
    0.02::factZ:-or(factC,factA).
  
    %hop2
    conclusion:-xor(factC,factY).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Fred put down the apple' or 'Greg is a swan' but not both.