TPTP Axioms File: DAT003_0.ax
%------------------------------------------------------------------------------
% File : DAT003_0 : TPTP v9.0.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))) ) ) ).
%------------------------------------------------------------------------------