It is probably not the case that Emily is a sheep. It is probably the case that Julius is gray. It is unlikely that John dropped the milk. It is highly likely that if 'Julius is gray' or 'John dropped the milk' or both then Antoine is hungry. It is impossible that if either 'Emily is a sheep' or 'John dropped the milk' but not both then Bernhard is green. There is a very good chance that if either 'John dropped the milk' or 'Emily is a sheep' but not both then Greg is a frog.
We doubt that 'Emily is a sheep and Antoine is hungry'.
We doubt that 'Emily is a sheep and Antoine is hungry'.
It is certain that 'Emily is a sheep and Antoine is hungry'.

  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.7::factB.
  0.2::factC.
  %hop1
  0.9::factX:-or(factB,factC).
  0.0::factY:-xor(factA,factC).
  0.8::factZ:-xor(factC,factA).

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

  query(conclusion).
  
'Emily is a sheep and Antoine is hungry'.