It is probably the case that Lily is yellow. It is highly likely that John went to the garden. It is probable that Brian is white. There is a better than even chance that if 'Lily is yellow and John went to the garden' then Bernhard is green. It is probably the case that if 'Brian is white' or 'Lily is yellow' or both then Jeff dropped the apple. There is a very good chance that if 'Lily is yellow and Brian is white' then Greg is a rhino.
It is probably not the case that either 'Lily is yellow' or 'Greg is a rhino' but not both.
It is probably not the case that either 'Lily is yellow' or 'Greg is a rhino' but not both.
It is almost certain that either 'Lily is yellow' or 'Greg is a rhino' 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.7::factA.
  0.9::factB.
  0.7::factC.
  %hop1
  0.6::factX:-and(factA,factB).
  0.7::factY:-or(factC,factA).
  0.8::factZ:-and(factA,factC).

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

  query(conclusion).
  
Either 'Lily is yellow' or 'Greg is a rhino' but not both.