It is likely that Bernhard is green. Chances are slight that Mary left the football. It is unlikely that Brian is yellow. It is probably not the case that if either 'Mary left the football' or 'Brian is yellow' but not both then Greg is gray. It is probably not the case that if 'Brian is yellow' or 'Bernhard is green' or both then John went to the office. It is impossible that if 'Brian is yellow and Bernhard is green' then Lily is a swan.
It is impossible that 'Bernhard is green and Lily is a swan'.
It is impossible that 'Bernhard is green and Lily is a swan'.
It is probable that 'Bernhard is green and Lily is a swan'.

  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.1::factB.
  0.2::factC.
  %hop1
  0.25::factX:-xor(factB,factC).
  0.25::factY:-or(factC,factA).
  0.0::factZ:-and(factC,factA).

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

  query(conclusion).
  
'Bernhard is green and Lily is a swan'.