TPTP Axioms File: CSR001_1.ax


%------------------------------------------------------------------------------
% File     : CSR001_1 : TPTP v9.1.0. Released v9.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    :   18 (   6 unt;   6 typ;   0 def)
%            Number of atoms       :   42 (  24 equ)
%            Maximal formula atoms :   11 (   3 avg)
%            Number of connectives :   27 (   6   ~;   4   |;  11   &)
%                                         (   4 <=>;   2  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   11 (   5 avg)
%            Maximal term depth    :    2 (   1 avg)
%            Number of FOOLs       :    9 (   9 fml;   0 var)
%            Number arithmetic     :   18 (   0 atm;   1 fun;   0 num;  17 var)
%            Number of types       :    1 (   0 usr;   1 ari)
%            Number of type conns  :    1 (   1   >;   0   *;   0   +;   0  <<)
%            Number of predicates  :    9 (   8 usr;   2 prp; 0-4 aty)
%            Number of functors    :    7 (   6 usr;   5 con; 0-2 aty)
%            Number of variables   :   23 (  20   !;   3   ?;  23   :)
% SPC      :

% Comments : Requires CSR001_0.ax
%------------------------------------------------------------------------------
tff(waterLevel_decl,type,
    waterLevel: $int > fluent ).

tff(tapOn_decl,type,
    tapOn: event ).

tff(tapOff_decl,type,
    tapOff: event ).

tff(overflow_decl,type,
    overflow: event ).

tff(spilling_decl,type,
    spilling: fluent ).

tff(filling_decl,type,
    filling: fluent ).

%tff(distinct_events,axiom,
%    $distinct(tapOn,tapOff,overflow) ).

tff(tapOn_tapOff,axiom,
    tapOn != tapOff ).

tff(tapOn_overflow,axiom,
    tapOn != overflow ).

tff(tapOff_overflow,axiom,
    tapOff != overflow ).

tff(filling_not_waterLevel,axiom,
    ! [X: $int] : ( filling != waterLevel(X) ) ).

tff(spilling_not_waterLevel,axiom,
    ! [X: $int] : ( spilling != waterLevel(X) ) ).

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

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

tff(initiates_all_defn,axiom,
    ! [Event: event,Fluent: fluent,Time: $int] :
      ( initiates(Event,Fluent,at_time(Time))
    <=> ( ( ( Event = tapOn )
          & ( Fluent = filling ) )
        | ( ( Event = overflow )
          & ( Fluent = spilling ) )
        | ? [Height: $int] :
            ( holdsAt(waterLevel(Height),at_time(Time))
            & ( Event = tapOff )
            & ( Fluent = waterLevel(Height) ) )
        | ? [Height: $int] :
            ( holdsAt(waterLevel(Height),at_time(Time))
            & ( Event = overflow )
            & ( Fluent = waterLevel(Height) ) ) ) ) ).

tff(terminates_all_defn,axiom,
    ! [Event: event,Fluent: fluent,Time: $int] :
      ( terminates(Event,Fluent,at_time(Time))
    <=> ( ( ( Event = tapOff )
          & ( Fluent = filling ) )
        | ( ( Event = overflow )
          & ( Fluent = filling ) ) ) ) ).

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

tff(change_of_waterLevel,axiom,
    ! [Height1: $int,Time: $int,Height2: $int,Offset: $int] :
      ( ( holdsAt(waterLevel(Height1),at_time(Time))
        & ( Height2 = $sum(Height1,Offset) ) )
     => trajectory(filling,at_time(Time),waterLevel(Height2),Offset) ) ).

tff(same_waterLevel,axiom,
    ! [Time: $int,Height1: $int,Height2: $int] :
      ( ( holdsAt(waterLevel(Height1),at_time(Time))
        & holdsAt(waterLevel(Height2),at_time(Time)) )
     => ( Height1 = Height2 ) ) ).

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