It is certain that Julius is gray. It is certain that Mary left the football. There is a very good chance that Brian is yellow. It is almost certain that if 'Brian is yellow' or 'Julius is gray' or both then Lily is a rhino. It is almost certain that if either 'Julius is gray' or 'Mary left the football' but not both then Jeff went to the bedroom. There is almost no chance that if either 'Julius is gray' or 'Brian is yellow' but not both then John picked up the milk.
It is certain that either 'Julius is gray' or 'John picked up the milk' but not both.
It is certain that either 'Julius is gray' or 'John picked up the milk' but not both.
It is probably not the case that either 'Julius is gray' or 'John picked up the milk' 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
  1.0::factA.
  1.0::factB.
  0.8::factC.
  %hop1
  0.95::factX:-or(factC,factA).
  0.95::factY:-xor(factA,factB).
  0.02::factZ:-xor(factA,factC).

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

  query(conclusion).
  
Either 'Julius is gray' or 'John picked up the milk' but not both.