It is almost certain that Brian is yellow. It is highly unlikely that Gertrude is a mouse. It is certain that John moved to the office. It is likely that if 'Gertrude is a mouse and Brian is yellow' then Mary went to the bedroom. It is likely that if either 'John moved to the office' or 'Gertrude is a mouse' but not both then Daniel got the milk. It is likely that if either 'Gertrude is a mouse' or 'Brian is yellow' but not both then Greg is a swan.
It is improbable that 'John moved to the office' or 'Mary went to the bedroom' or both.
It is certain that 'John moved to the office' or 'Mary went to the bedroom' or both.
It is improbable that 'John moved to the office' or 'Mary went to the bedroom' 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.95::factA.
  0.05::factB.
  1.0::factC.
  %hop1
  0.7::factX:-and(factB,factA).
  0.7::factY:-xor(factC,factB).
  0.7::factZ:-xor(factB,factA).

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

  query(conclusion).
  
'John moved to the office' or 'Mary went to the bedroom' or both.