context: We believe that Lily is a swan. It is impossible that Mary grabbed the milk. It is probably the case that Bernhard is green. It is impossible that if either 'Mary grabbed the milk' or 'Lily is a swan' but not both then Greg is gray. Chances are slight that if 'Mary grabbed the milk' or 'Bernhard is green' or both then Brian is yellow. It is almost certain that if either 'Lily is a swan' or 'Mary grabbed the milk' but not both then John went to the kitchen.
hypothesis: It is probably the case that 'Greg is gray' or 'Bernhard is green' or both.
valid_hypothesis: It is probably the case that 'Greg is gray' or 'Bernhard is green' or both.
invalid_hypothesis: We doubt that 'Greg is gray' or 'Bernhard is green' or 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.75::factA.
    0.0::factB.
    0.7::factC.
    %hop1
    0.0::factX:-xor(factB,factA).
    0.1::factY:-or(factB,factC).
    0.95::factZ:-xor(factA,factB).
  
    %hop2
    conclusion:-or(factX,factC).
  
    query(conclusion).
    
hypothesis_assertion: 'Greg is gray' or 'Bernhard is green' or both.