It is probably the case that Brian is gray. It is highly unlikely that Fred moved to the office. It is likely that Lily is a lion. We doubt that if 'Lily is a lion' or 'Brian is gray' or both then Greg is a swan. It is probably not the case that if 'Brian is gray and Fred moved to the office' then Daniel dropped the apple. It is certain that if 'Brian is gray and Lily is a lion' then Bernhard is green.
It is impossible that 'Greg is a swan' or 'Bernhard is green' or both.
There is a better than even chance that 'Greg is a swan' or 'Bernhard is green' or both.
It is impossible that 'Greg is a swan' or 'Bernhard is green' 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.05::factB.
  0.7::factC.
  %hop1
  0.2::factX:-or(factC,factA).
  0.25::factY:-and(factA,factB).
  1.0::factZ:-and(factA,factC).

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

  query(conclusion).
  
'Greg is a swan' or 'Bernhard is green' or both.