There is little chance that Bernhard is green. It is highly unlikely that Mary moved to the office. Chances are about even that John got the apple. It is probable that if 'Mary moved to the office and Bernhard is green' then Lily is a rhino. It is certain that if either 'Bernhard is green' or 'John got the apple' but not both then Brian is a lion. It is impossible that if either 'John got the apple' or 'Mary moved to the office' but not both then Jeff went to the bedroom.
It is impossible that 'Brian is a lion' or 'John got the apple' or both.
There is a better than even chance that 'Brian is a lion' or 'John got the apple' or both.
It is impossible that 'Brian is a lion' or 'John got the apple' or both.

  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.1::factA.
  0.05::factB.
  0.5::factC.
  %hop1
  0.7::factX:-and(factB,factA).
  1.0::factY:-xor(factA,factC).
  0.0::factZ:-xor(factC,factB).

  %hop2
  conclusion:-or(factY,factC).

  query(conclusion).
  
'Brian is a lion' or 'John got the apple' or both.