TPTP Axioms File: DAT006_0.ax


%------------------------------------------------------------------------------
% File     : DAT006_0 : TPTP v8.2.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 unt;   8 typ;   0 def)
%            Number of atoms       :   23 (  16 equ)
%            Maximal formula atoms :    3 (   1 avg)
%            Number of connectives :   13 (   4   ~;   2   |;   2   &)
%                                         (   2 <=>;   3  =>;   0  <=;   0 <~>)
%            Maximal formula depth :    7 (   4 avg)
%            Maximal term depth    :    3 (   1 avg)
%            Number arithmetic     :   20 (   0 atm;   3 fun;   5 num;  12 var)
%            Number of types       :    3 (   1 usr;   1 ari)
%            Number of type conns  :    9 (   6   >;   3   *;   0   +;   0  <<)
%            Number of predicates  :    2 (   1 usr;   0 prp; 2-2 aty)
%            Number of functors    :    9 (   6 usr;   3 con; 0-2 aty)
%            Number of variables   :   28 (  28   !;   0   ?;  28   :)
% SPC      : TFF_SAT_EQU_ARI

% Comments : From: /home/magenta/KIV/newtppl/case-studies/tree-heap/
%            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) ) ) ).

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