## TPTP Axioms File: CSR001+1.ax

```%------------------------------------------------------------------------------
% File     : CSR001+1 : TPTP v7.5.0. Released v3.1.0.
% Domain   : Commonsense Reasoning
% Axioms   : Kitchen sink scenario
% Version  : [Sha97] axioms : Especial.
% English  :

% Refs     : [Sha97] Shanahan (1997), Solving the Frame Problem
% Source   : [Sha97]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of formulae    :   13 (   6 unit)
%            Number of atoms       :   39 (  27 equality)
%            Maximal formula depth :   11 (   5 average)
%            Number of connectives :   32 (   6 ~  ;   5  |;  14  &)
%                                         (   5 <=>;   2 =>;   0 <=)
%                                         (   0 <~>;   0 ~|;   0 ~&)
%            Number of predicates  :    7 (   0 propositional; 2-4 arity)
%            Number of functors    :    9 (   7 constant; 0-2 arity)
%            Number of variables   :   25 (   0 singleton;  22 !;   3 ?)
%            Maximal term depth    :    2 (   1 average)
% SPC      :

%------------------------------------------------------------------------------
fof(initiates_all_defn,axiom,
( ! [Event,Fluent,Time] :
( initiates(Event,Fluent,Time)
<=> ( ( Event = tapOn
& Fluent = filling )
| ( Event = overflow
& Fluent = spilling )
| ? [Height] :
( holdsAt(waterLevel(Height),Time)
& Event = tapOff
& Fluent = waterLevel(Height) )
| ? [Height] :
( holdsAt(waterLevel(Height),Time)
& Event = overflow
& Fluent = waterLevel(Height) ) ) ) )).

fof(terminates_all_defn,axiom,
( ! [Event,Fluent,Time] :
( terminates(Event,Fluent,Time)
<=> ( ( Event = tapOff
& Fluent = filling )
| ( Event = overflow
& Fluent = filling ) ) ) )).

%----tapOn event releases all waterLevels at all times
fof(releases_all_defn,axiom,
( ! [Event,Fluent,Time] :
( releases(Event,Fluent,Time)
<=> ? [Height] :
( Event = tapOn
& Fluent = waterLevel(Height) ) ) )).

fof(happens_all_defn,axiom,
( ! [Event,Time] :
( happens(Event,Time)
<=> ( ( Event = tapOn
& Time = n0 )
| ( holdsAt(waterLevel(n3),Time)
& holdsAt(filling,Time)
& Event = overflow ) ) ) )).

fof(change_of_waterLevel,axiom,
( ! [Height1,Time,Height2,Offset] :
( ( holdsAt(waterLevel(Height1),Time)
& Height2 = plus(Height1,Offset) )
=> trajectory(filling,Time,waterLevel(Height2),Offset) ) )).

fof(same_waterLevel,axiom,
( ! [Time,Height1,Height2] :
( ( holdsAt(waterLevel(Height1),Time)
& holdsAt(waterLevel(Height2),Time) )
=> Height1 = Height2 ) )).

%----Distinct events
fof(tapOff_not_tapOn,axiom,
(  tapOff != tapOn )).

fof(tapOff_not_overflow,axiom,
(  tapOff != overflow )).

fof(overflow_not_tapOn,axiom,
(  overflow != tapOn )).

%----Distinct fluents
fof(filling_not_waterLevel,axiom,
( ! [X] : filling != waterLevel(X) )).

fof(spilling_not_waterLevel,axiom,
( ! [X] : spilling != waterLevel(X) )).

fof(filling_not_spilling,axiom,
(  filling != spilling )).

fof(distinct_waterLevels,axiom,
( ! [X,Y] :
( waterLevel(X) = waterLevel(Y)
<=> X = Y ) )).

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