It is unlikely that Greg is gray. It is probably the case that Jason is bored. It is unlikely that Sumit is thirsty. There is little chance that if either 'Sumit is thirsty' or 'Jason is bored' but not both then Emily is a mouse. It is probable that if 'Jason is bored and Greg is gray' then Brian is a swan. It is almost certain that if 'Jason is bored' or 'Greg is gray' or both then John picked up the milk.
It is probably not the case that either 'Sumit is thirsty' or 'Emily is a mouse' but not both.
It is probably not the case that either 'Sumit is thirsty' or 'Emily is a mouse' but not both.
We believe that either 'Sumit is thirsty' or 'Emily is a mouse' 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.2::factA.
  0.7::factB.
  0.2::factC.
  %hop1
  0.1::factX:-xor(factC,factB).
  0.7::factY:-and(factB,factA).
  0.95::factZ:-or(factB,factA).

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

  query(conclusion).
  
Either 'Sumit is thirsty' or 'Emily is a mouse' but not both.