## TPTP Axioms File: DAT006=0.ax

```%------------------------------------------------------------------------------
% File     : DAT006=0 : TPTP v7.5.0. Released v5.5.0.
% Domain   : Data Structures
% Axioms   : Tree-heap data types
% Version  : [KIV] axioms.
% English  :

% Refs     : [Rei99] Reif (1999), Email to Geoff Sutcliffe
% Source   : [Rei99]
% Names    :

% Status   : Satisfiable
% Syntax   : Number of formulae    :   22 (   8 unit;   8 type)
%            Number of atoms       :   23 (  16 equality)
%            Maximal formula depth :    7 (   4 average)
%            Number of connectives :   13 (   4   ~;   2   |;   2   &)
%                                         (   2 <=>;   3  =>;   0  <=;   0 <~>)
%                                         (   0  ~|;   0  ~&)
%            Number of type conns  :    9 (   6   >;   3   *;   0   +;   0  <<)
%            Number of predicates  :   13 (  11 propositional; 0-2 arity)
%            Number of functors    :    9 (   3 constant; 0-2 arity)
%            Number of variables   :   28 (   0 sgn;  28   !;   0   ?)
%                                         (  28   :;   0  !>;   0  ?*)
%            Maximal term depth    :    3 (   2 average)
%            Arithmetic symbols    :   15 (   0 prd;   1 fun;   2 num;  12 var)
% SPC      : TFF_SAT_EQU_ARI

%            specifications/sel/
%------------------------------------------------------------------------------
tff(heap_type,type,(
heap: \$tType )).

tff(empty_type,type,(
empty: heap )).

tff(toop_type,type,(
toop: heap > \$int )).

tff(sel_type,type,(
sel: ( heap * \$int ) > \$int )).

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

tff(app_type,type,(
app: ( heap * \$int ) > heap )).

tff(get_type,type,(
get: heap > heap )).

tff(lsls_type,type,(
lsls: ( heap * heap ) > \$o )).

tff(ax_1,axiom,(
! [M: \$int] : sel(empty,M) = 0 )).

tff(ax_2,axiom,(
! [H: heap,M: \$int,N: \$int] :
( M = \$sum(1,length(H))
=> sel(app(H,N),M) = N ) )).

tff(ax_3,axiom,(
! [N: \$int,H: heap,M: \$int] :
( M != \$sum(1,length(H))
=> sel(app(H,N),M) = sel(H,M) ) )).

tff(ax_20,axiom,(
! [N: \$int,H: heap] : get(app(H,N)) = H )).

tff(ax_21,axiom,(
! [H: heap,N: \$int] : toop(app(H,N)) = N )).

tff(ax_22,axiom,(
! [H: heap,H0: heap,N: \$int,N0: \$int] :
( app(H,N) = app(H0,N0)
<=> ( H = H0
& N = N0 ) ) )).

tff(ax_23,axiom,(
! [H: heap,N: \$int] : empty != app(H,N) )).

tff(ax_24,axiom,(
! [H: heap] :
( H = empty
| H = app(get(H),toop(H)) ) )).

tff(ax_25,axiom,(
length(empty) = 0 )).

tff(ax_26,axiom,(
! [N: \$int,H: heap] : length(app(H,N)) = \$sum(1,length(H)) )).

tff(ax_27,axiom,(
! [H: heap] : ~ lsls(H,H) )).

tff(ax_28,axiom,(
! [H0: heap,H: heap,H1: heap] :
( ( lsls(H,H0)
& lsls(H0,H1) )
=> lsls(H,H1) ) )).

tff(ax_29,axiom,(
! [H: heap] : ~ lsls(H,empty) )).

tff(ax_30,axiom,(
! [N: \$int,H0: heap,H: heap] :
( lsls(H0,app(H,N))
<=> ( H0 = H
| lsls(H0,H) ) ) )).

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