It is probably the case that Greg is gray. It is unlikely that Brian is a swan. It is probable that Daniel got the milk. It is probably not the case that if 'Greg is gray and Brian is a swan' then Yann is tired. There is a very good chance that if 'Daniel got the milk and Brian is a swan' then Bernhard is a rhino. There is almost no chance that if 'Daniel got the milk' or 'Greg is gray' or both then Emily is a wolf.
It is probable that 'Daniel got the milk' or 'Yann is tired' or both.
It is probable that 'Daniel got the milk' or 'Yann is tired' or both.
It is impossible that 'Daniel got the milk' or 'Yann is tired' or both.

  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.2::factB.
  0.7::factC.
  %hop1
  0.25::factX:-and(factA,factB).
  0.8::factY:-and(factC,factB).
  0.02::factZ:-or(factC,factA).

  %hop2
  conclusion:-or(factC,factX).

  query(conclusion).
  
'Daniel got the milk' or 'Yann is tired' or both.