Chances are slight that Bill moved to the office. It is certain that John picked up the milk. It is impossible that Brian is green. There is a very good chance that if 'Brian is green and Bill moved to the office' then Sandra is in the kitchen. It is probably not the case that if 'John picked up the milk' or 'Brian is green' or both then Mary left the football. It is almost certain that if 'Brian is green' or 'Bill moved to the office' or both then Lily is a rhino.
It is certain that either 'Brian is green' or 'Sandra is in the kitchen' but not both.
It is impossible that either 'Brian is green' or 'Sandra is in the kitchen' but not both.
It is certain that either 'Brian is green' or 'Sandra is in the kitchen' 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.
  1.0::factB.
  0.0::factC.
  %hop1
  0.8::factX:-and(factC,factA).
  0.25::factY:-or(factB,factC).
  0.95::factZ:-or(factC,factA).

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

  query(conclusion).
  
Either 'Brian is green' or 'Sandra is in the kitchen' but not both.