context: It is unlikely that Brian is a rhino. It is highly likely that John picked up the milk. There is almost no chance that Mary discarded the apple. It is almost certain that if 'John picked up the milk and Mary discarded the apple' then Bernhard is a lion. Chances are about even that if 'John picked up the milk' or 'Brian is a rhino' or both then Lily is a swan. It is probably the case that if either 'Mary discarded the apple' or 'John picked up the milk' but not both then Sandra is in the kitchen.
hypothesis: We doubt that 'Bernhard is a lion' or 'Brian is a rhino' or both.
valid_hypothesis: We doubt that 'Bernhard is a lion' or 'Brian is a rhino' or both.
invalid_hypothesis: It is almost certain that 'Bernhard is a lion' or 'Brian is a rhino' 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.2::factA.
    0.9::factB.
    0.02::factC.
    %hop1
    0.95::factX:-and(factB,factC).
    0.5::factY:-or(factB,factA).
    0.7::factZ:-xor(factC,factB).
  
    %hop2
    conclusion:-or(factX,factA).
  
    query(conclusion).
    
hypothesis_assertion: 'Bernhard is a lion' or 'Brian is a rhino' or both.