context: It is unlikely that Greg is a swan. It is probably the case that Jeff moved to the garden. There is almost no chance that Bernhard is green. It is probably the case that if either 'Bernhard is green' or 'Jeff moved to the garden' but not both then Julius is gray. It is unlikely that if 'Greg is a swan and Bernhard is green' then Jessica is a cat. There is almost no chance that if 'Bernhard is green' or 'Jeff moved to the garden' or both then Brian is a rhino.
hypothesis: Chances are about even that either 'Brian is a rhino' or 'Julius is gray' but not both.
valid_hypothesis: Chances are about even that either 'Brian is a rhino' or 'Julius is gray' but not both.
invalid_hypothesis: It is impossible that either 'Brian is a rhino' 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.2::factA.
    0.7::factB.
    0.02::factC.
    %hop1
    0.7::factX:-xor(factC,factB).
    0.2::factY:-and(factA,factC).
    0.02::factZ:-or(factC,factB).
  
    %hop2
    conclusion:-xor(factZ,factX).
  
    query(conclusion).
    
hypothesis_assertion: Either 'Brian is a rhino' or 'Julius is gray' but not both.