It is probably the case that Mary went to the office. Chances are about even that Antoine is thirsty. We believe that Greg is yellow. We doubt that if 'Antoine is thirsty and Greg is yellow' then Gertrude is a sheep. It is highly likely that if either 'Mary went to the office' or 'Greg is yellow' but not both then Brian is yellow. Chances are slight that if either 'Greg is yellow' or 'Antoine is thirsty' but not both then Bernhard is a swan.
It is highly likely that 'Gertrude is a sheep' or 'Bernhard is a swan' or both.
Chances are slight that 'Gertrude is a sheep' or 'Bernhard is a swan' or both.
It is highly likely that 'Gertrude is a sheep' or 'Bernhard is a swan' or 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.5::factB.
  0.75::factC.
  %hop1
  0.2::factX:-and(factB,factC).
  0.9::factY:-xor(factA,factC).
  0.1::factZ:-xor(factC,factB).

  %hop2
  conclusion:-or(factX,factZ).

  query(conclusion).
  
'Gertrude is a sheep' or 'Bernhard is a swan' or both.