TPTP Axioms File: DAT003_0.ax


%------------------------------------------------------------------------------
% File     : DAT003_0 : TPTP v8.2.0. Released v5.0.0.
% Domain   : Data Structures
% Axioms   : Pointer data types
% Version  : [Wal10] axioms.
% English  : 

% Refs     : [PW06]  Prevosto & Waldmann (2006), SPASS+T
%          : [Wal10] Waldmann (2010), Email to Geoff Sutcliffe
% Source   : [Wal10]
% Names    : 

% Status   : Satisfiable
% Syntax   : Number of formulae    :   20 (   0 unt;   7 typ;   0 def)
%            Number of atoms       :   31 (   6 equ)
%            Maximal formula atoms :    3 (   1 avg)
%            Number of connectives :   27 (   9   ~;   0   |;   5   &)
%                                         (   0 <=>;  13  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    5 (   4 avg)
%            Maximal term depth    :    4 (   2 avg)
%            Number arithmetic     :    5 (   1 atm;   1 fun;   3 num;   0 var)
%            Number of types       :    3 (   1 usr;   1 ari)
%            Number of type conns  :    6 (   6   >;   0   *;   0   +;   0  <<)
%            Number of predicates  :    3 (   1 usr;   0 prp; 1-2 aty)
%            Number of functors    :    8 (   5 usr;   2 con; 0-2 aty)
%            Number of variables   :   13 (  13   !;   0   ?;  13   :)
% SPC      : TFF_SAT_RFO_SEQ_SAR

% Comments : 
%------------------------------------------------------------------------------
tff(record_type,type,
    record: $tType ).

tff(length_type,type,
    length: record > $int ).

tff(next_type,type,
    next: record > record ).

tff(data_type,type,
    data: record > $int ).

tff(split1_type,type,
    split1: record > record ).

tff(split2_type,type,
    split2: record > record ).

tff(isrecord_type,type,
    isrecord: record > $o ).

tff(ax1,axiom,
    ! [U: record] :
      ( ~ isrecord(U)
     => ( length(U) = 0 ) ) ).

tff(ax2,axiom,
    ! [U: record] :
      ( isrecord(U)
     => $greatereq(length(U),1) ) ).

tff(ax3,axiom,
    ! [U: record] :
      ( isrecord(U)
     => ( length(U) = $sum(length(next(U)),1) ) ) ).

tff(ax4,axiom,
    ! [U: record] :
      ( ~ isrecord(U)
     => ~ isrecord(split1(U)) ) ).

tff(ax5,axiom,
    ! [U: record] :
      ( isrecord(U)
     => isrecord(split1(U)) ) ).

tff(ax6,axiom,
    ! [U: record] :
      ( isrecord(U)
     => ( data(split1(U)) = data(U) ) ) ).

tff(ax7,axiom,
    ! [U: record] :
      ( ( isrecord(U)
        & ~ isrecord(next(U)) )
     => ~ isrecord(next(split1(U))) ) ).

tff(ax8,axiom,
    ! [U: record] :
      ( ( isrecord(U)
        & isrecord(next(U)) )
     => ( next(split1(U)) = split1(next(next(U))) ) ) ).

tff(ax9,axiom,
    ! [U: record] :
      ( ~ isrecord(U)
     => ~ isrecord(split2(U)) ) ).

tff(ax10,axiom,
    ! [U: record] :
      ( ~ isrecord(next(U))
     => ~ isrecord(split2(U)) ) ).

tff(ax11,axiom,
    ! [U: record] :
      ( ( isrecord(U)
        & isrecord(next(U)) )
     => isrecord(split2(U)) ) ).

tff(ax12,axiom,
    ! [U: record] :
      ( ( isrecord(U)
        & isrecord(next(U)) )
     => ( data(split2(U)) = data(next(U)) ) ) ).

tff(ax13,axiom,
    ! [U: record] :
      ( ( isrecord(U)
        & isrecord(next(U)) )
     => ( next(split2(U)) = split2(next(next(U))) ) ) ).

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