There is little chance that Greg is gray. It is almost certain that Lily is a rhino. It is highly unlikely that Brian is white. It is highly unlikely that if 'Greg is gray' or 'Lily is a rhino' or both then Emily is a sheep. It is improbable that if either 'Lily is a rhino' or 'Brian is white' but not both then Antoine is hungry. It is probable that if 'Greg is gray' or 'Lily is a rhino' or both then Fred moved to the office.
It is highly unlikely that either 'Greg is gray' or 'Fred moved to the office' but not both.
There is a better than even chance that either 'Greg is gray' or 'Fred moved to the office' but not both.
It is highly unlikely that either 'Greg is gray' or 'Fred moved to the office' but not 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.95::factB.
  0.05::factC.
  %hop1
  0.05::factX:-or(factA,factB).
  0.1::factY:-xor(factB,factC).
  0.7::factZ:-or(factA,factB).

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

  query(conclusion).
  
Either 'Greg is gray' or 'Fred moved to the office' but not both.