It is probably the case that Julius is gray. It is likely that John went to the hallway. Chances are slight that Bernhard is a rhino. It is improbable that if either 'John went to the hallway' or 'Julius is gray' but not both then Greg is green. It is highly likely that if either 'John went to the hallway' or 'Bernhard is a rhino' but not both then Daniel got the football. It is likely that if 'Julius is gray' or 'Bernhard is a rhino' or both then Lily is a frog.
It is impossible that 'Julius is gray' or 'Lily is a frog' or both.
It is probably the case that 'Julius is gray' or 'Lily is a frog' or both.
It is impossible that 'Julius is gray' or 'Lily is a frog' 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.1::factC.
  %hop1
  0.1::factX:-xor(factB,factA).
  0.9::factY:-xor(factB,factC).
  0.7::factZ:-or(factA,factC).

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

  query(conclusion).
  
'Julius is gray' or 'Lily is a frog' or both.