It is impossible that Brian is yellow. It is almost certain that Greg is gray. It is impossible that Bernhard is a swan. It is almost certain that if 'Bernhard is a swan' or 'Greg is gray' or both then Mary left the football. There is almost no chance that if 'Bernhard is a swan and Brian is yellow' then John grabbed the apple. It is likely that if either 'Bernhard is a swan' or 'Greg is gray' but not both then Bill moved to the office.
It is probably the case that 'Bill moved to the office and John grabbed the apple'.
It is impossible that 'Bill moved to the office and John grabbed the apple'.
It is probably the case that 'Bill moved to the office and John grabbed the apple'.

  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.0::factA.
  0.95::factB.
  0.0::factC.
  %hop1
  0.95::factX:-or(factC,factB).
  0.02::factY:-and(factC,factA).
  0.7::factZ:-xor(factC,factB).

  %hop2
  conclusion:-and(factZ,factY).

  query(conclusion).
  
'Bill moved to the office and John grabbed the apple'.