Chances are slight that Antoine is hungry. It is impossible that Brian is a lion. It is impossible that John went to the garden. There is a very good chance that if 'Brian is a lion and John went to the garden' then Julius is a rhino. There is little chance that if 'Antoine is hungry' or 'John went to the garden' or both then Bernhard is a frog. It is impossible that if 'John went to the garden and Antoine is hungry' then Greg is yellow.
It is highly likely that either 'Greg is yellow' or 'John went to the garden' but not both.
It is impossible that either 'Greg is yellow' or 'John went to the garden' but not both.
It is highly likely that either 'Greg is yellow' or 'John went to the garden' 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.0::factB.
  0.0::factC.
  %hop1
  0.8::factX:-and(factB,factC).
  0.1::factY:-or(factA,factC).
  0.0::factZ:-and(factC,factA).

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

  query(conclusion).
  
Either 'Greg is yellow' or 'John went to the garden' but not both.