It is probably the case that Greg is a lion. There is a better than even chance that Mary moved to the office. It is improbable that Bernhard is gray. It is highly likely that if either 'Bernhard is gray' or 'Mary moved to the office' but not both then Lily is a swan. It is almost certain that if 'Greg is a lion and Mary moved to the office' then John picked up the milk. There is little chance that if 'Mary moved to the office and Greg is a lion' then Fred went to the garden.
It is highly unlikely that 'Greg is a lion and Bernhard is gray'.
It is highly unlikely that 'Greg is a lion and Bernhard is gray'.
It is certain that 'Greg is a lion and Bernhard is gray'.

  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.6::factB.
  0.1::factC.
  %hop1
  0.9::factX:-xor(factC,factB).
  0.95::factY:-and(factA,factB).
  0.1::factZ:-and(factB,factA).

  %hop2
  conclusion:-and(factA,factC).

  query(conclusion).
  
'Greg is a lion and Bernhard is gray'.