It is highly unlikely that Julius is gray. It is unlikely that John moved to the garden. It is probably the case that Mary went to the office. It is unlikely that if either 'John moved to the garden' or 'Julius is gray' but not both then Brian is a frog. It is unlikely that if 'Mary went to the office' or 'John moved to the garden' or both then Daniel grabbed the milk. Chances are slight that if 'John moved to the garden' or 'Julius is gray' or both then Bernhard is a swan.
It is impossible that 'Julius is gray and Bernhard is a swan'.
It is impossible that 'Julius is gray and Bernhard is a swan'.
There is a better than even chance that 'Julius is gray and Bernhard 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.05::factA.
  0.2::factB.
  0.7::factC.
  %hop1
  0.2::factX:-xor(factB,factA).
  0.2::factY:-or(factC,factB).
  0.1::factZ:-or(factB,factA).

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

  query(conclusion).
  
'Julius is gray and Bernhard is a swan'.