
r1(X):: fly(agt=X) <= bird(agt=X), not injured(agt=X).
r2(X):: injured(agt=X) <= shot(obj=X).
r3:: bird(agt=tweety) <= .
r4:: shot(obj=tweety) <= .

p1(X):: r1(X)>r2(X) <= principle(X).
p2(X):: r1(X)<r2(X) <= exception(X).

pp(X):: p2(X)>p1(X) <= .

f1:: principle(pingu) <= .
f2:: exception(pingu) <= .




test1(X,Y)::ancestor(agt=X,obj=Y) <= father(agt=X,obj=Y).
test2(X,Y,Z)::ancestor(agt=X,obj=Y) <= father(agt=X,obj=Z),ancestor(agt=Z,obj=Y).
test3::father(agt=taro,obj=jiro) <= .
test4::father(agt=jiro,obj=saburo) <= .
test5::father(agt=jiro,obj=shiro) <= .
test6::father(agt=shiro,obj=goro) <= .



a1:: p(agt=a) <= q(agt=a).
a2:: q(agt=a) <= not - p(agt=a).
a3:: -p(agt=a) <= r(agt=a).
a4:: r(agt=a) <= not p(agt=a).


