c0::S2:X<-S1:X|meet(pre=S1,post=S2).
c1::w:emergency_evacuation(a_obt=S:illegal_action(agt=X))<-
	S:drunken_drive(agt=X),
	T:dangerous(a_obt=X)
	| subset(sub=S,super=T).

c1::w:superfluous_evacuation(a_obt=S:illegal_action(agt=X))<-
	S:drunken_drive(agt=X),
	w:emergency_evacuation(a_obt=T:illegal_action(agt=X)),
	w:-emergency_evacuation(a_obt=U:illegal_action(agt=X))
	| meet(pre=T,post=U), union(s1=T,s2=U,s3=S).

c1::S:illegal_action(agt=X)<-S:drunken_drive(agt=X).

t0,t1:dangerous(a_obt=taro).
t2:-dangerous(a_obt=taro).
t1,t2:drunken_drive(agt=taro).
t3:-drunken_drive(agt=taro).
