TPTP Axioms File: CSR001+1.ax


%------------------------------------------------------------------------------
% File     : CSR001+1 : TPTP v9.0.0. Released .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 unt;   0 def)
%            Number of atoms       :   39 (  27 equ)
%            Maximal formula atoms :   11 (   3 avg)
%            Number of connectives :   32 (   6   ~;   5   |;  14   &)
%                                         (   5 <=>;   2  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   11 (   5 avg)
%            Maximal term depth    :    2 (   1 avg)
%            Number of predicates  :    7 (   6 usr;   0 prp; 2-4 aty)
%            Number of functors    :    9 (   9 usr;   7 con; 0-2 aty)
%            Number of variables   :   25 (  22   !;   3   ?)
% SPC      : 

% Comments : Requires CSR001+0.ax
%------------------------------------------------------------------------------
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 ) ).

%------------------------------------------------------------------------------