It is certain that Bernhard is a frog. It is unlikely that Greg is yellow. It is probably not the case that Antoine is hungry. It is unlikely that if 'Antoine is hungry' or 'Greg is yellow' or both then Sandra left the apple. We doubt that if either 'Bernhard is a frog' or 'Greg is yellow' but not both then Lily is yellow. Chances are about even that if 'Greg is yellow' or 'Bernhard is a frog' or both then John took the football.
It is highly unlikely that either 'Greg is yellow' or 'John took the football' but not both.
Chances are about even that either 'Greg is yellow' or 'John took the football' but not both.
It is highly unlikely that either 'Greg is yellow' or 'John took the football' 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.
  0.2::factB.
  0.25::factC.
  %hop1
  0.2::factX:-or(factC,factB).
  0.2::factY:-xor(factA,factB).
  0.5::factZ:-or(factB,factA).

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

  query(conclusion).
  
Either 'Greg is yellow' or 'John took the football' but not both.