It is highly unlikely that Greg is white. It is probably the case that John dropped the apple. There is little chance that Mary got the football. It is highly likely that if 'John dropped the apple and Greg is white' then Jeff went to the hallway. It is likely that if 'Greg is white and John dropped the apple' then Jason is thirsty. There is a better than even chance that if either 'Greg is white' or 'John dropped the apple' but not both then Brian is a swan.
It is impossible that 'Brian is a swan and Jason is thirsty'.
It is impossible that 'Brian is a swan and Jason is thirsty'.
There is a better than even chance that 'Brian is a swan and Jason is thirsty'.

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

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

  query(conclusion).
  
'Brian is a swan and Jason is thirsty'.