It is likely that Daniel left the milk. It is probably the case that Greg is gray. It is probably the case that John dropped the apple. It is unlikely that if 'Daniel left the milk and Greg is gray' then Jessica is a cat. There is almost no chance that if either 'Daniel left the milk' or 'Greg is gray' but not both then Brian is yellow. There is a very good chance that if either 'John dropped the apple' or 'Greg is gray' but not both then Lily is a rhino.
It is impossible that 'Greg is gray' or 'Brian is yellow' or both.
It is probably the case that 'Greg is gray' or 'Brian is yellow' or both.
It is impossible that 'Greg is gray' or 'Brian is yellow' 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.7::factA.
  0.7::factB.
  0.7::factC.
  %hop1
  0.2::factX:-and(factA,factB).
  0.02::factY:-xor(factA,factB).
  0.8::factZ:-xor(factC,factB).

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

  query(conclusion).
  
'Greg is gray' or 'Brian is yellow' or both.