TPTP Problem File: DAT329_1.p

View Solutions - Solve Problem

%------------------------------------------------------------------------------
% File     : DAT329_1 : TPTP v8.2.0. Released v7.0.0.
% Domain   : Software Verification
% Problem  : PVS TCC problem
% Version  : Especial.
% English  :

% Refs     :
% Source   : [SMTL]
% Names    : misc/arr2.p [SMTL]

% Status   : Unsatisfiable
% Rating   : 0.20 v8.2.0, 0.50 v8.1.0, 0.33 v7.3.0, 0.50 v7.1.0, 0.33 v7.0.0
% Syntax   : Number of formulae    :   13 (   2 unt;   8 typ;   0 def)
%            Number of atoms       :   25 (  11 equ)
%            Maximal formula atoms :   19 (   1 avg)
%            Number of connectives :   25 (   5   ~;   0   |;  15   &)
%                                         (   0 <=>;   5  =>;   0  <=;   0 <~>)
%            Maximal formula depth :   19 (   8 avg)
%            Maximal term depth    :    4 (   1 avg)
%            Number arithmetic     :   38 (  14 atm;   2 fun;   8 num;  14 var)
%            Number of types       :    3 (   2 usr;   1 ari)
%            Number of type conns  :    9 (   6   >;   3   *;   0   +;   0  <<)
%            Number of predicates  :    5 (   0 usr;   0 prp; 2-2 aty)
%            Number of functors    :    9 (   6 usr;   2 con; 0-3 aty)
%            Number of variables   :   21 (  19   !;   2   ?;  21   :)
% SPC      : TF0_UNS_EQU_ARI

% Comments : This is an SMT-LIB AUFLIA problem. Contributed to SMT-LIB by
%            Natarajan Shankar.
%          : Translated to TFF using Peter Baumgartner's SMTtoTPTP program.
%------------------------------------------------------------------------------
tff('Array',type,
    'Array[Int,Int]': $tType ).

tff('Queue',type,
    'Queue': $tType ).

tff(size,type,
    size: 'Queue' > $int ).

tff(elems,type,
    elems: 'Queue' > 'Array[Int,Int]' ).

tff(store,type,
    'store:(Array[Int,Int]*Int*Int)>Array[Int,Int]': ( 'Array[Int,Int]' * $int * $int ) > 'Array[Int,Int]' ).

tff(const,type,
    'const:(Int)>Array[Int,Int]': $int > 'Array[Int,Int]' ).

tff(select,type,
    'select:(Array[Int,Int]*Int)>Int': ( 'Array[Int,Int]' * $int ) > $int ).

tff(key,type,
    key: $int > $int ).

tff(formula_1,axiom,
    ~ ! [A__questionmark_i: $int,A__questionmark_pp: 'Queue'] :
      ? [A__questionmark_v_0_1: 'Array[Int,Int]'] :
        ( ( A__questionmark_v_0_1 = elems(A__questionmark_pp) )
        & ( ( $greatereq(A__questionmark_i,0)
            & ! [A__questionmark_j: $int,A__questionmark_k: $int] :
                ( ( $greater(A__questionmark_j,0)
                  & $less(A__questionmark_j,size(A__questionmark_pp))
                  & $greatereq(A__questionmark_k,0)
                  & $less(A__questionmark_k,A__questionmark_j)
                  & ( A__questionmark_i != A__questionmark_j ) )
               => $lesseq(key('select:(Array[Int,Int]*Int)>Int'(A__questionmark_v_0_1,A__questionmark_j)),key('select:(Array[Int,Int]*Int)>Int'(A__questionmark_v_0_1,A__questionmark_k))) )
            & ~ $lesseq(key('select:(Array[Int,Int]*Int)>Int'(A__questionmark_v_0_1,A__questionmark_i)),key('select:(Array[Int,Int]*Int)>Int'(A__questionmark_v_0_1,$difference(A__questionmark_i,1))))
            & $greater(A__questionmark_i,0)
            & $less(A__questionmark_i,size(A__questionmark_pp)) )
         => ! [A__questionmark_j: $int,A__questionmark_k: $int,A__questionmark_ee: 'Array[Int,Int]'] :
            ? [A__questionmark_v_1_2: $int] :
              ( ( A__questionmark_v_1_2 = $difference(A__questionmark_i,1) )
              & ( ( $greater(A__questionmark_j,0)
                  & $less(A__questionmark_j,size(A__questionmark_pp))
                  & $greatereq(A__questionmark_k,0)
                  & $less(A__questionmark_k,A__questionmark_j)
                  & ( A__questionmark_j != A__questionmark_v_1_2 )
                  & ( A__questionmark_ee = 'store:(Array[Int,Int]*Int*Int)>Array[Int,Int]'('store:(Array[Int,Int]*Int*Int)>Array[Int,Int]'(A__questionmark_v_0_1,A__questionmark_v_1_2,'select:(Array[Int,Int]*Int)>Int'(A__questionmark_v_0_1,A__questionmark_i)),A__questionmark_i,'select:(Array[Int,Int]*Int)>Int'(A__questionmark_v_0_1,A__questionmark_v_1_2)) ) )
               => $lesseq(key('select:(Array[Int,Int]*Int)>Int'(A__questionmark_ee,A__questionmark_j)),key('select:(Array[Int,Int]*Int)>Int'(A__questionmark_ee,A__questionmark_k))) ) ) ) ) ).

tff(formula_2,axiom,
    ! [A: 'Array[Int,Int]',I: $int,E: $int] : 'select:(Array[Int,Int]*Int)>Int'('store:(Array[Int,Int]*Int*Int)>Array[Int,Int]'(A,I,E),I) = E ).

tff(formula_3,axiom,
    ! [A: 'Array[Int,Int]',I: $int,J: $int,E: $int] :
      ( ( I != J )
     => ( 'select:(Array[Int,Int]*Int)>Int'('store:(Array[Int,Int]*Int*Int)>Array[Int,Int]'(A,I,E),J) = 'select:(Array[Int,Int]*Int)>Int'(A,J) ) ) ).

tff(formula_4,axiom,
    ! [A: 'Array[Int,Int]',B: 'Array[Int,Int]'] :
      ( ! [I: $int] : 'select:(Array[Int,Int]*Int)>Int'(A,I) = 'select:(Array[Int,Int]*Int)>Int'(B,I)
     => ( A = B ) ) ).

tff(formula_5,axiom,
    ! [I: $int,E: $int] : 'select:(Array[Int,Int]*Int)>Int'('const:(Int)>Array[Int,Int]'(E),I) = E ).

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