TPTP Axioms File: DAT004=0.ax


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

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

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

% Comments : From: /home/magenta/KIV/newtppl/case-studies/hashtable/
%            specifications/array/
%------------------------------------------------------------------------------
tff(data_type,type,(
    data: $tType )).

tff(array_type,type,(
    array: $tType )).

tff(mkarray_type,type,(
    mkarray: array )).

tff(none_type,type,(
    none: data )).

tff(put_type,type,(
    put: ( array * $int * data ) > array )).

tff(get_type,type,(
    get: ( array * $int ) > data )).

tff(ax_17,axiom,(
    ! [M: $int] : get(mkarray,M) = none )).

tff(ax_18,axiom,(
    ! [Ar: array,M: $int,D: data] : get(put(Ar,M,D),M) = D )).

tff(ax_19,axiom,(
    ! [N: $int,D: data,Ar: array,M: $int] :
      ( M != N
     => get(put(Ar,N,D),M) = get(Ar,M) ) )).

tff(ax_20,axiom,(
    ! [D2: data,Ar: array,M: $int,D1: data] : put(put(Ar,M,D2),M,D1) = put(Ar,M,D1) )).

tff(ax_21,axiom,(
    ! [Ar: array,Ar0: array] :
      ( Ar = Ar0
    <=> ! [N: $int] : get(Ar,N) = get(Ar0,N) ) )).

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