It is impossible that Bernhard is a swan. It is certain that Greg is white. It is probably not the case that John went to the garden. It is unlikely that if 'Greg is white and Bernhard is a swan' then Sandra left the apple. It is almost certain that if either 'Greg is white' or 'John went to the garden' but not both then Yann is tired. It is certain that if 'John went to the garden' or 'Greg is white' or both then Brian is a frog.
It is impossible that 'Brian is a frog and Sandra left the apple'.
It is impossible that 'Brian is a frog and Sandra left the apple'.
It is probable that 'Brian is a frog and Sandra left the apple'.

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

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

  query(conclusion).
  
'Brian is a frog and Sandra left the apple'.