It is probably the case that Brian is a lion. It is highly likely that Sandra grabbed the milk. It is probably not the case that Julius is a frog. It is highly unlikely that if either 'Sandra grabbed the milk' or 'Julius is a frog' but not both then John took the football. It is highly likely that if either 'Julius is a frog' or 'Brian is a lion' but not both then Bernhard is yellow. It is highly likely that if 'Julius is a frog and Sandra grabbed the milk' then Greg is white.
There is little chance that either 'Greg is white' or 'Bernhard is yellow' but not both.
There is a better than even chance that either 'Greg is white' or 'Bernhard is yellow' but not both.
There is little chance that either 'Greg is white' or 'Bernhard is yellow' 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.25::factC.
  %hop1
  0.05::factX:-xor(factB,factC).
  0.9::factY:-xor(factC,factA).
  0.9::factZ:-and(factC,factB).

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

  query(conclusion).
  
Either 'Greg is white' or 'Bernhard is yellow' but not both.