module changing_possesion depends on entity_event_and_action sort declarations transfer :: actions deliver :: transfer lose :: transfer receive :: transfer function declarations fluents basic possesses : entity * entity -> booleans axioms false if instance(X, transfer), -defined_object(X). false if instance(X, transfer), donor(X, D), -instance(D, tangible_entity). false if instance(X, transfer), recipient(X, Y), donor(X, Y). occurs(X) causes -possesses(D, O) if instance(X, transfer), donor(X, D), object(X, O). occurs(X) causes -possesses(R, O) if instance(X, transfer), recipient(X, R), object(X, O). impossible occurs(X) if instance(X, transfer), donor(X, D), object(X, O), -possesses(D, O). false if instance(X, deliver), -defined_recipient(X). false if instance(X, deliver), recipient(X, R), -instance(R, tangible_entity). false if instance(X, deliver), donor(X, Y), agent(X, Y). false if instance(X, deliver), recipient(X, Y), agent(X, Y). false if instance(X, lose), -defined_donor(X). false if instance(X, lose), donor(X, D), -instance(D, tangible_entity). false if instance(X, receive), -defined_recipient(X).