## TPTP Axioms File: DAT003=0.ax

```%------------------------------------------------------------------------------
% File     : DAT003=0 : TPTP v7.5.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 unit;   7 type)
%            Number of atoms       :   31 (   6 equality)
%            Maximal formula depth :    5 (   3 average)
%            Number of connectives :   27 (   9   ~;   0   |;   5   &)
%                                         (   0 <=>;  13  =>;   0  <=;   0 <~>)
%                                         (   0  ~|;   0  ~&)
%            Number of type conns  :    6 (   6   >;   0   *;   0   +;   0  <<)
%            Number of predicates  :   13 (  10 propositional; 0-2 arity)
%            Number of functors    :    8 (   2 constant; 0-2 arity)
%            Number of variables   :   13 (   0 sgn;  13   !;   0   ?)
%                                         (  13   :;   0  !>;   0  ?*)
%            Maximal term depth    :    4 (   2 average)
%            Arithmetic symbols    :    4 (   1 prd;   1 fun;   2 num;   0 var)
% SPC      : TFF_SAT_RFO_SEQ_SAR

%------------------------------------------------------------------------------
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))) ) )).

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