It is certain that Jessica is a sheep. There is little chance that Lily is a rhino. It is impossible that Julius is a frog. We doubt that if 'Jessica is a sheep' or 'Lily is a rhino' or both then Antoine is hungry. It is improbable that if 'Jessica is a sheep and Julius is a frog' then Mary went to the office. It is unlikely that if either 'Jessica is a sheep' or 'Julius is a frog' but not both then Bernhard is gray.
We doubt that 'Bernhard is gray' or 'Mary went to the office' or both.
We doubt that 'Bernhard is gray' or 'Mary went to the office' or both.
It is probably the case that 'Bernhard is gray' or 'Mary went 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
  1.0::factA.
  0.1::factB.
  0.0::factC.
  %hop1
  0.2::factX:-or(factA,factB).
  0.1::factY:-and(factA,factC).
  0.2::factZ:-xor(factA,factC).

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

  query(conclusion).
  
'Bernhard is gray' or 'Mary went to the office' or both.