## TPTP Axioms File: CSR001+3.ax

```%------------------------------------------------------------------------------
% File     : CSR001+3 : TPTP v7.5.0. Released v3.1.0.
% Domain   : Commonsense Reasoning
% Axioms   : Supermarket trolley scenario for multiple trolleys
% Version  : [Mue05] axioms : Especial.
% English  :

% Refs     : [Mue05] Mueller (2005), Email to Geoff Sutcliffe
% Source   : [Mue05]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of formulae    :    9 (   5 unit)
%            Number of atoms       :   40 (  28 equality)
%            Maximal formula depth :   15 (   7 average)
%            Number of connectives :   48 (  17 ~  ;   7  |;  20  &)
%                                         (   2 <=>;   2 =>;   0 <=)
%                                         (   0 <~>;   0 ~|;   0 ~&)
%            Number of predicates  :    5 (   0 propositional; 2-3 arity)
%            Number of functors    :    5 (   0 constant; 1-2 arity)
%            Number of variables   :   26 (   0 singleton;  22 !;   4 ?)
%            Maximal term depth    :    2 (   1 average)
% SPC      :

% Comments : Requires CSR001+0.ax
%------------------------------------------------------------------------------
fof(initiates_all_defn,axiom,
( ! [Event,Fluent,Time] :
( initiates(Event,Fluent,Time)
<=> ? [Agent,Trolley] :
( ( Event = push(Agent,Trolley)
& Fluent = forwards(Trolley)
& ~ happens(pull(Agent,Trolley),Time) )
| ( Event = pull(Agent,Trolley)
& Fluent = backwards(Trolley)
& ~ happens(push(Agent,Trolley),Time) )
| ( Event = pull(Agent,Trolley)
& Fluent = spinning(Trolley)
& happens(push(Agent,Trolley),Time) ) ) ) )).

fof(terminates_all_defn,axiom,
( ! [Event,Fluent,Time] :
( terminates(Event,Fluent,Time)
<=> ? [Agent,Trolley] :
( ( Event = push(Agent,Trolley)
& Fluent = backwards(Trolley)
& ~ happens(pull(Agent,Trolley),Time) )
| ( Event = pull(Agent,Trolley)
& Fluent = forwards(Trolley)
& ~ happens(push(Agent,Trolley),Time) )
| ( Event = pull(Agent,Trolley)
& Fluent = forwards(Trolley)
& happens(push(Agent,Trolley),Time) )
| ( Event = pull(Agent,Trolley)
& Fluent = backwards(Trolley)
& happens(push(Agent,Trolley),Time) )
| ( Event = push(Agent,Trolley)
& Fluent = spinning(Trolley)
& ~ happens(pull(Agent,Trolley),Time) )
| ( Event = pull(Agent,Trolley)
& Fluent = spinning(Trolley)
& ~ happens(push(Agent,Trolley),Time) ) ) ) )).

fof(releases_all_defn,axiom,
( ! [Event,Fluent,Time] : ~ releases(Event,Fluent,Time) )).

%----Distinct events
fof(push_not_pull,axiom,
( ! [Agent,Trolley] : push(Agent,Trolley) != pull(Agent,Trolley) )).

fof(push_unique,axiom,
( ! [Agent1,Agent2,Trolley1,Trolley2] :
( ( Agent1 != Agent2
& Trolley1 != Trolley2 )
=> push(Agent1,Trolley1) != push(Agent2,Trolley2) ) )).

fof(pull_unique,axiom,
( ! [Agent1,Agent2,Trolley1,Trolley2] :
( ( Agent1 != Agent2
& Trolley1 != Trolley2 )
=> pull(Agent1,Trolley1) != pull(Agent2,Trolley2) ) )).

%----Distinct fluents
fof(forwards_not_backwards,axiom,
( ! [Trolley] : forwards(Trolley) != backwards(Trolley) )).

fof(forwards_not_spinning,axiom,
( ! [Trolley] : forwards(Trolley) != spinning(Trolley) )).

fof(spinning_not_backwards,axiom,
( ! [Trolley] : spinning(Trolley) != backwards(Trolley) )).

%------------------------------------------------------------------------------
```