context: There is almost no chance that Bernhard is a rhino. We doubt that John put down the apple. We doubt that Mary dropped the milk. It is probably not the case that if 'Mary dropped the milk and John put down the apple' then Greg is a swan. We doubt that if either 'John put down the apple' or 'Mary dropped the milk' but not both then Julius is gray. There is little chance that if 'John put down the apple' or 'Mary dropped the milk' or both then Gertrude is a cat.
hypothesis: It is highly likely that either 'Greg is a swan' or 'Bernhard is a rhino' but not both.
valid_hypothesis: There is almost no chance that either 'Greg is a swan' or 'Bernhard is a rhino' but not both.
invalid_hypothesis: It is highly likely that either 'Greg is a swan' or 'Bernhard 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.02::factA.
    0.2::factB.
    0.2::factC.
    %hop1
    0.25::factX:-and(factC,factB).
    0.2::factY:-xor(factB,factC).
    0.1::factZ:-or(factB,factC).
  
    %hop2
    conclusion:-xor(factX,factA).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Greg is a swan' or 'Bernhard is a rhino' but not both.