It is probably not the case that Lily is green. Chances are about even that Greg is gray. It is probably not the case that John left the milk. We doubt that if either 'Lily is green' or 'John left the milk' but not both then Sandra took the football. It is probable that if either 'Lily is green' or 'Greg is gray' but not both then Brian is a swan. Chances are about even that if either 'Greg is gray' or 'John left the milk' but not both then Bernhard is white.
It is highly unlikely that 'Sandra took the football and Lily is green'.
It is highly unlikely that 'Sandra took the football and Lily is green'.
It is highly likely that 'Sandra took the football and Lily is green'.

  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.25::factA.
  0.5::factB.
  0.25::factC.
  %hop1
  0.2::factX:-xor(factA,factC).
  0.7::factY:-xor(factA,factB).
  0.5::factZ:-xor(factB,factC).

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

  query(conclusion).
  
'Sandra took the football and Lily is green'.