It is impossible that Emily is a sheep. It is probably the case that Bernhard is yellow. It is probably not the case that Greg is yellow. It is certain that if 'Bernhard is yellow and Greg is yellow' then Lily is a rhino. There is a very good chance that if 'Greg is yellow and Emily is a sheep' then Brian is a frog. It is likely that if 'Bernhard is yellow and Greg is yellow' then Sandra dropped the milk.
It is certain that 'Greg is yellow' or 'Brian is a frog' or both.
It is probably not the case that 'Greg is yellow' or 'Brian is a frog' or both.
It is certain that 'Greg is yellow' or 'Brian is a frog' 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.0::factA.
  0.7::factB.
  0.25::factC.
  %hop1
  1.0::factX:-and(factB,factC).
  0.8::factY:-and(factC,factA).
  0.7::factZ:-and(factB,factC).

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

  query(conclusion).
  
'Greg is yellow' or 'Brian is a frog' or both.