alarm.plp 430 Bytes
{burglary}.
:~not burglary.["2.19722"@0,0,()]

{earthquake}.
:~not earthquake.["1.38629"@0,1,()]

{hears_alarm(mary)}.
{hears_alarm(john)}.
:~not hears_alarm(mary).["-0.84729"@0,2,(mary,)]
:~not hears_alarm(john).["-0.84729"@0,2,(john,)]

alarm :- burglary. 
alarm :- earthquake.
calls(X) :- alarm, hears_alarm(X).

person(mary).
person(john).

% Evidence that alarm has (been observed) to be true
:- not alarm.

&query(burglary).