It is improbable that Julius is gray. It is unlikely that Mary left the milk. It is impossible that Greg is a swan. It is almost certain that if 'Mary left the milk and Greg is a swan' then Bill moved to the office. There is a very good chance that if either 'Mary left the milk' or 'Julius is gray' but not both then John went to the hallway. It is improbable that if 'Julius is gray' or 'Mary left the milk' or both then Jessica is a cat.
There is a very good chance that 'Jessica is a cat' or 'Bill moved to the office' or both.
There is almost no chance that 'Jessica is a cat' or 'Bill moved to the office' or both.
There is a very good chance that 'Jessica is a cat' or 'Bill moved to the office' 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.2::factB.
  0.0::factC.
  %hop1
  0.95::factX:-and(factB,factC).
  0.8::factY:-xor(factB,factA).
  0.1::factZ:-or(factA,factB).

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

  query(conclusion).
  
'Jessica is a cat' or 'Bill moved to the office' or both.