:- sorts Role; Slot; Message; Commitment; Condition. :- variables msg1 :: Message; p,q :: Condition; cc1 :: Commitment; db1,cr1 :: Role. :- constants fl(Message) :: inertialFluent; act(Message) :: exogenousAction; cond(Condition) :: action; comm(Commitment) :: inertialFluent; create(Commitment), discharge(Commitment), toBase(Commitment) :: action; initial :: sdFluent. :- objects T :: Condition; cc(Role,Role,Condition,Condition) :: Commitment. caused initial if initial. caused -initial if comm(cc1). caused -initial if fl(msg1). act(msg1) causes fl(msg1). -cond(p) causes -cond(p). caused discharge(cc(db1,cr1,p,q)) if cond(q) & (comm(cc(db1,cr1,p,q)) ++ create(cc(db1,cr1,p,q))). caused toBase(cc(db1,cr1,p,q)) if cond(p) & (comm(cc(db1,cr1,p,q)) ++ create(cc(db1,cr1,p,q))) & p<>T. discharge(cc1) causes -comm(cc1). toBase(cc1) & -discharge(cc1) causes -comm(cc1). toBase(cc(db1,cr1,p,q)) & -discharge(cc(db1,cr1,p,q)) causes comm(cc(db1,cr1,T,q)). caused comm(cc1) if true after create(cc1) & -(discharge(cc1) ++ toBase(cc1)) & -comm(cc1). -create(cc1) causes -create(cc1). -toBase(cc1) causes -toBase(cc1). -discharge(cc1) causes -discharge(cc1).