TPTP Axioms File: PLA002+0.ax


%--------------------------------------------------------------------------
% File     : PLA002+0 : TPTP v9.0.0. Released v2.4.0.
% Domain   : Planning (Blocks world)
% Axioms   : Blocks world axioms
% Version  : [Bau99] axioms.
% English  :

% Refs     : [Bau99] Baumgartner (1999), FTP'2000 - Problem Sets
%            [KS96]  Kautz & Selman (1996), Pushing the Envelope: Planning,
%            [KS92]  Kautz & Selman (1992), Planning as Satisfiability
% Source   : [Bau99]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of formulae    :   24 (   0 unt;   0 def)
%            Number of atoms       :  119 (   0 equ)
%            Maximal formula atoms :    8 (   4 avg)
%            Number of connectives :  120 (  25   ~;   0   |;  43   &)
%                                         (   0 <=>;  52  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   10 (   8 avg)
%            Maximal term depth    :    2 (   1 avg)
%            Number of predicates  :   10 (  10 usr;   0 prp; 1-3 aty)
%            Number of functors    :    1 (   1 usr;   0 con; 1-1 aty)
%            Number of variables   :   64 (  64   !;   0   ?)
% SPC      : 

% Comments :
%--------------------------------------------------------------------------
% blocks_axioms:
fof(place_object_block_on_destination,axiom,
    ! [I,X] :
      ( nonfixed(X)
     => ! [Z] :
          ( ( a_block(Z)
            & neq(X,Z) )
         => ( ( time(I)
              & object(X,I)
              & destination(Z,I) )
           => on(X,Z,s(I)) ) ) ) ).

%	All( x, block, ! member( x, fixed),
%	    All( y, block, ! eql( x, y),
%		Disj(
%		     Not( L2("object",  x, i));
%		     Not( L2("source", y, i));
%		     Not( L3("on", x, y, 1 + i)))));
fof(remove_object_block_from_source,axiom,
    ! [I,X] :
      ( nonfixed(X)
     => ! [Y] :
          ( ( a_block(Y)
            & neq(X,Y) )
         => ( ( time(I)
              & object(X,I)
              & source(Y,I) )
           => ~ on(X,Y,s(I)) ) ) ) ).

%	All( y, block, ! member( y, fixed),
%	    Disj(
%		 Not( L2("source", y, i));
%		 L2("clear", y, 1 + i);
%		 ));
fof(clear_source_after_removal,axiom,
    ! [I,Y] :
      ( nonfixed(Y)
     => ( ( time(I)
          & source(Y,I) )
       => clear(Y,s(I)) ) ) ).

%	All( z, block, ! member( z, fixed),
%	    Disj(
%		 Not( L2("destination", z, i));
%		 Not( L2("clear", z, 1 + i))));
fof(not_clear_destination_after_placement,axiom,
    ! [I,Z] :
      ( nonfixed(Z)
     => ( ( time(I)
          & destination(Z,I) )
       => ~ clear(Z,s(I)) ) ) ).

fof(object_block_on_source,axiom,
    ! [I,X] :
      ( nonfixed(X)
     => ! [Y] :
          ( ( a_block(Y)
            & neq(X,Y) )
         => ( ( object(X,I)
              & source(Y,I) )
           => on(X,Y,I) ) ) ) ).

%	All( x, block, ! member( x, fixed),
%	    Disj(
%		 Not( L2("object",  x, i));
%		 L2("clear", x, i)));
fof(object_block_is_clear,axiom,
    ! [I,X] :
      ( nonfixed(X)
     => ( object(X,I)
       => clear(X,I) ) ) ).

%	All( z, block, ! member( z, fixed),
%	    Disj(
%		 Not( L2("destination", z, i));
%		 L2("clear", z, i)));
fof(destination_block_is_clear,axiom,
    ! [I,Z] :
      ( nonfixed(Z)
     => ( destination(Z,I)
       => clear(Z,I) ) ) ).

fof(non_destination_remains_clear,axiom,
    ! [I,W] :
      ( nonfixed(W)
     => ( ( time(I)
          & ~ destination(W,I)
          & clear(W,I) )
       => clear(W,s(I)) ) ) ).

%	All( v, block, ! member( v, fixed),
%	    All( w, block, !eql( v, w),
%		Disj(
%		     L2("object",  v, i);
%		     Not( L3("on", v, w, i)) ;
%		     L3("on", v, w, 1 + i))));
fof(non_object_remains_on,axiom,
    ! [I,V] :
      ( nonfixed(V)
     => ! [W] :
          ( ( a_block(W)
            & neq(V,W) )
         => ( ( time(I)
              & ~ object(V,I)
              & on(V,W,I) )
           => on(V,W,s(I)) ) ) ) ).

fof(non_source_remains_not_clear,axiom,
    ! [I,W] :
      ( nonfixed(W)
     => ( ( time(I)
          & ~ source(W,I)
          & ~ clear(W,I) )
       => ~ clear(W,s(I)) ) ) ).

%	All( v, block, ! member( v, fixed),
%	    All( w, block, ! eql( v, w),
%		Disj(
%		     L2("object",  v, i);
%		     L3("on", v, w, i) ;
%		     Not( L3("on", v, w, 1 + i)))));
fof(non_object_remains_not_on,axiom,
    ! [I,V] :
      ( nonfixed(V)
     => ! [W] :
          ( ( a_block(W)
            & neq(V,W) )
         => ( ( time(I)
              & ~ object(V,I)
              & ~ on(V,W,I) )
           => ~ on(V,W,s(I)) ) ) ) ).

%	All( v, block, ! member( v, fixed),
%	    All( w, block, ! eql( v, w),
%		Disj(
%		     L2("destination", w, i);
%		     L3("on", v, w, i);
%		     Not( L3("on", v, w, 1 + i)))));
fof(non_destination_remains_not_on,axiom,
    ! [I,V] :
      ( nonfixed(V)
     => ! [W] :
          ( ( a_block(W)
            & neq(V,W) )
         => ( ( time(I)
              & ~ destination(W,I)
              & ~ on(V,W,I) )
           => ~ on(V,W,s(I)) ) ) ) ).

fof(only_one_object_block,axiom,
    ! [I,X1] :
      ( nonfixed(X1)
     => ! [X2] :
          ( ( a_block(X2)
            & neq(X1,X2) )
         => ~ ( object(X1,I)
              & object(X2,I) ) ) ) ).

%	All( y1, block, 1,
%	    All( y2, block, ! eql( y1, y2),
%		Disj(
%		     Not( L2("source", y1, i));
%		     Not( L2("source", y2, i)))));
fof(only_one_source_block,axiom,
    ! [I,Y1] :
      ( a_block(Y1)
     => ! [Y2] :
          ( ( a_block(Y2)
            & neq(Y1,Y2) )
         => ~ ( source(Y1,I)
              & source(Y2,I) ) ) ) ).

%	All( z1, block, 1,
%	    All( z2, block, ! eql( z1, z2),
%		Disj(
%		     Not( L2("destination", z1, i));
%		     Not( L2("destination", z2, i)))));
fof(only_one_destination_block,axiom,
    ! [I,Z1] :
      ( a_block(Z1)
     => ! [Z2] :
          ( ( a_block(Z2)
            & neq(Z1,Z2) )
         => ~ ( destination(Z1,I)
              & destination(Z2,I) ) ) ) ).

fof(object_is_not_source,axiom,
    ! [I,X] :
      ( nonfixed(X)
     => ~ ( object(X,I)
          & source(X,I) ) ) ).

%	All( x, block, ! member( x, fixed),
%	    Disj(
%		 Not( L2("object",  x, i));
%		 Not( L2("destination", x, i))));
fof(object_is_not_destination,axiom,
    ! [I,X] :
      ( nonfixed(X)
     => ~ ( object(X,I)
          & destination(X,I) ) ) ).

%	All( y, block, y,
%	    Disj(
%		 Not( L2("source", y, i));
%		 Not( L2("destination", y, i))));
fof(source_is_not_destination,axiom,
    ! [I,Y] :
      ( a_block(Y)
     => ~ ( source(Y,I)
          & destination(Y,I) ) ) ).

%% on_axioms:
fof(not_on_each_other,axiom,
    ! [I,X] :
      ( a_block(X)
     => ! [Y] :
          ( ( a_block(Y)
            & neq(X,Y) )
         => ~ ( on(X,Y,I)
              & on(Y,X,I) ) ) ) ).

fof(not_on_self,axiom,
    ! [I,X] :
      ( a_block(X)
     => ~ on(X,X,I) ) ).

fof(only_one_on,axiom,
    ! [I,X] :
      ( nonfixed(X)
     => ! [Y] :
          ( ( nonfixed(Y)
            & neq(X,Y) )
         => ! [Z] :
              ( ( nonfixed(Z)
                & neq(X,Z)
                & neq(Y,Z) )
             => ~ ( on(X,Y,I)
                  & on(Z,Y,I) ) ) ) ) ).

fof(only_on_one_thing,axiom,
    ! [I,X] :
      ( nonfixed(X)
     => ! [Y] :
          ( ( a_block(Y)
            & neq(X,Y) )
         => ! [Z] :
              ( ( a_block(Z)
                & neq(X,Z)
                & neq(Y,Z) )
             => ~ ( on(X,Y,I)
                  & on(X,Z,I) ) ) ) ) ).

fof(not_clear_if_something_on,axiom,
    ! [I,X] :
      ( nonfixed(X)
     => ! [Y] :
          ( nonfixed(Y)
         => ~ ( on(X,Y,I)
              & clear(Y,I) ) ) ) ).

fof(fixed_not_on_anything,axiom,
    ! [I,X] :
      ( a_block(X)
     => ! [Y] :
          ( fixed(Y)
         => ~ on(Y,X,I) ) ) ).

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