TPTP Problem File: SWW986_1.p
View Solutions
- Solve Problem
%------------------------------------------------------------------------------
% File : SWW986_1 : TPTP v9.2.1. Released v9.1.0.
% Domain : Software Verification
% Problem : dutch-flag-5
% Version : Especial.
% English :
% Refs : [Kot17] Kotelnikov (2017), Email to Geoff Sutcliffe
% Source : [Kot17]
% Names : dutch-flag-5 [Kot17]
% Status : Theorem
% Rating : ? v9.1.0
% Syntax : Number of formulae : 20 ( 1 unt; 11 typ; 0 def)
% Number of atoms : 37 ( 8 equ)
% Maximal formula atoms : 17 ( 4 avg)
% Number of connectives : 29 ( 1 ~; 4 |; 15 &)
% ( 0 <=>; 9 =>; 0 <=; 0 <~>)
% Maximal formula depth : 8 ( 5 avg)
% Maximal term depth : 3 ( 1 avg)
% Number of X terms : 10 ( 0 []; 0 ite; 10 let)
% Number arithmetic : 47 ( 25 atm; 2 fun; 7 num; 13 var)
% Number of types : 3 ( 1 usr; 1 ari)
% Number of type conns : 5 ( 2 >; 3 *; 0 +; 0 <<)
% Number of predicates : 7 ( 1 usr; 2 prp; 0-2 aty)
% Number of functors : 13 ( 9 usr; 9 con; 0-3 aty)
% Number of variables : 17 ( 17 !; 0 ?; 17 :)
% SPC : TX0_THM_EQU_ARI
% Comments : This file was generated by Voogie.
%------------------------------------------------------------------------------
tff(array_int_int,type,
array_int_int: $tType ).
tff(select_int_int,type,
select_int_int: ( array_int_int * $int ) > $int ).
tff(store_int_int,type,
store_int_int: ( array_int_int * $int * $int ) > array_int_int ).
tff(a,type,
a: array_int_int ).
tff(bad,type,
bad: $o ).
tff(high,type,
high: $int ).
tff(i,type,
i: $int ).
tff(low,type,
low: $int ).
tff(n,type,
n: $int ).
tff(pivot,type,
pivot: $int ).
tff(t,type,
t: $int ).
tff(voogie_precondition_1,axiom,
! [A: array_int_int,V: $int,I: $int,J: $int] :
( ( I = J )
=> ( select_int_int(store_int_int(A,I,V),J) = V ) ) ).
tff(voogie_precondition_2,axiom,
! [A: array_int_int,V: $int,I: $int,J: $int] :
( ( I != J )
=> ( select_int_int(store_int_int(A,I,V),J) = select_int_int(A,J) ) ) ).
tff(voogie_precondition_3,axiom,
! [A: array_int_int,B: array_int_int] :
( ! [I: $int] : ( select_int_int(A,I) = select_int_int(B,I) )
=> ( A = B ) ) ).
tff(voogie_precondition_4,axiom,
$greatereq(n,0) ).
tff(voogie_precondition_5,axiom,
( $lesseq(0,low)
& $lesseq(low,i)
& $lesseq(i,$sum(high,1))
& $less(high,n) ) ).
tff(voogie_precondition_6,axiom,
! [K: $int] :
( ( $lesseq(0,K)
& $less(K,low) )
=> $less(select_int_int(a,K),pivot) ) ).
tff(voogie_precondition_7,axiom,
! [K: $int] :
( ( $lesseq(low,K)
& $less(K,i) )
=> ( select_int_int(a,K) = pivot ) ) ).
tff(voogie_precondition_8,axiom,
! [K: $int] :
( ( $less(high,K)
& $less(K,n) )
=> $greater(select_int_int(a,K),pivot) ) ).
tff(voogie_conjecture,conjecture,
$let(
bad: $o,
bad:=
$ite(~ $lesseq(i,high),$true,bad),
$let(
[ i: $int,
t: $int,
a: array_int_int,
high: $int,
low: $int ],
[i,t,a,high,low]:=
$ite(
$less(select_int_int(a,i),pivot),
$let(
t: $int,
t:= select_int_int(a,low),
$let(
a: array_int_int,
a:= store_int_int(a,low,select_int_int(a,i)),
$let(
a: array_int_int,
a:= store_int_int(a,i,t),
$let(
low: $int,
low:= $sum(low,1),
$let(
i: $int,
i:= $sum(i,1),
[i,t,a,high,low] ) ) ) ) ),
$let(
[ i: $int,
t: $int,
a: array_int_int,
high: $int ],
[i,t,a,high]:=
$ite(
$greater(select_int_int(a,i),pivot),
$let(
t: $int,
t:= select_int_int(a,i),
$let(
a: array_int_int,
a:= store_int_int(a,i,select_int_int(a,high)),
$let(
a: array_int_int,
a:= store_int_int(a,high,t),
$let(
high: $int,
high:= $difference(high,1),
[i,t,a,high] ) ) ) ),
$let(
i: $int,
i:= $sum(i,1),
[i,t,a,high] ) ),
[i,t,a,high,low] ) ),
$let(
bad: $o,
bad:=
$ite(~ $lesseq(i,high),$true,bad),
$let(
[ i: $int,
t: $int,
a: array_int_int,
high: $int,
low: $int ],
[i,t,a,high,low]:=
$ite(
$less(select_int_int(a,i),pivot),
$let(
t: $int,
t:= select_int_int(a,low),
$let(
a: array_int_int,
a:= store_int_int(a,low,select_int_int(a,i)),
$let(
a: array_int_int,
a:= store_int_int(a,i,t),
$let(
low: $int,
low:= $sum(low,1),
$let(
i: $int,
i:= $sum(i,1),
[i,t,a,high,low] ) ) ) ) ),
$let(
[ i: $int,
t: $int,
a: array_int_int,
high: $int ],
[i,t,a,high]:=
$ite(
$greater(select_int_int(a,i),pivot),
$let(
t: $int,
t:= select_int_int(a,i),
$let(
a: array_int_int,
a:= store_int_int(a,i,select_int_int(a,high)),
$let(
a: array_int_int,
a:= store_int_int(a,high,t),
$let(
high: $int,
high:= $difference(high,1),
[i,t,a,high] ) ) ) ),
$let(
i: $int,
i:= $sum(i,1),
[i,t,a,high] ) ),
[i,t,a,high,low] ) ),
$let(
bad: $o,
bad:=
$ite(~ $lesseq(i,high),$true,bad),
$let(
[ i: $int,
t: $int,
a: array_int_int,
high: $int,
low: $int ],
[i,t,a,high,low]:=
$ite(
$less(select_int_int(a,i),pivot),
$let(
t: $int,
t:= select_int_int(a,low),
$let(
a: array_int_int,
a:= store_int_int(a,low,select_int_int(a,i)),
$let(
a: array_int_int,
a:= store_int_int(a,i,t),
$let(
low: $int,
low:= $sum(low,1),
$let(
i: $int,
i:= $sum(i,1),
[i,t,a,high,low] ) ) ) ) ),
$let(
[ i: $int,
t: $int,
a: array_int_int,
high: $int ],
[i,t,a,high]:=
$ite(
$greater(select_int_int(a,i),pivot),
$let(
t: $int,
t:= select_int_int(a,i),
$let(
a: array_int_int,
a:= store_int_int(a,i,select_int_int(a,high)),
$let(
a: array_int_int,
a:= store_int_int(a,high,t),
$let(
high: $int,
high:= $difference(high,1),
[i,t,a,high] ) ) ) ),
$let(
i: $int,
i:= $sum(i,1),
[i,t,a,high] ) ),
[i,t,a,high,low] ) ),
$let(
bad: $o,
bad:=
$ite(~ $lesseq(i,high),$true,bad),
$let(
[ i: $int,
t: $int,
a: array_int_int,
high: $int,
low: $int ],
[i,t,a,high,low]:=
$ite(
$less(select_int_int(a,i),pivot),
$let(
t: $int,
t:= select_int_int(a,low),
$let(
a: array_int_int,
a:= store_int_int(a,low,select_int_int(a,i)),
$let(
a: array_int_int,
a:= store_int_int(a,i,t),
$let(
low: $int,
low:= $sum(low,1),
$let(
i: $int,
i:= $sum(i,1),
[i,t,a,high,low] ) ) ) ) ),
$let(
[ i: $int,
t: $int,
a: array_int_int,
high: $int ],
[i,t,a,high]:=
$ite(
$greater(select_int_int(a,i),pivot),
$let(
t: $int,
t:= select_int_int(a,i),
$let(
a: array_int_int,
a:= store_int_int(a,i,select_int_int(a,high)),
$let(
a: array_int_int,
a:= store_int_int(a,high,t),
$let(
high: $int,
high:= $difference(high,1),
[i,t,a,high] ) ) ) ),
$let(
i: $int,
i:= $sum(i,1),
[i,t,a,high] ) ),
[i,t,a,high,low] ) ),
$let(
bad: $o,
bad:=
$ite(~ $lesseq(i,high),$true,bad),
$let(
[ i: $int,
t: $int,
a: array_int_int,
high: $int,
low: $int ],
[i,t,a,high,low]:=
$ite(
$less(select_int_int(a,i),pivot),
$let(
t: $int,
t:= select_int_int(a,low),
$let(
a: array_int_int,
a:= store_int_int(a,low,select_int_int(a,i)),
$let(
a: array_int_int,
a:= store_int_int(a,i,t),
$let(
low: $int,
low:= $sum(low,1),
$let(
i: $int,
i:= $sum(i,1),
[i,t,a,high,low] ) ) ) ) ),
$let(
[ i: $int,
t: $int,
a: array_int_int,
high: $int ],
[i,t,a,high]:=
$ite(
$greater(select_int_int(a,i),pivot),
$let(
t: $int,
t:= select_int_int(a,i),
$let(
a: array_int_int,
a:= store_int_int(a,i,select_int_int(a,high)),
$let(
a: array_int_int,
a:= store_int_int(a,high,t),
$let(
high: $int,
high:= $difference(high,1),
[i,t,a,high] ) ) ) ),
$let(
i: $int,
i:= $sum(i,1),
[i,t,a,high] ) ),
[i,t,a,high,low] ) ),
( ( bad
| ( $lesseq(0,low)
& $lesseq(low,i)
& $lesseq(i,$sum(high,1))
& $less(high,n) ) )
& ( bad
| ! [K: $int] :
( ( $lesseq(0,K)
& $less(K,low) )
=> $less(select_int_int(a,K),pivot) ) )
& ( bad
| ! [K: $int] :
( ( $lesseq(low,K)
& $less(K,i) )
=> ( select_int_int(a,K) = pivot ) ) )
& ( bad
| ! [K: $int] :
( ( $less(high,K)
& $less(K,n) )
=> $greater(select_int_int(a,K),pivot) ) ) ) ) ) ) ) ) ) ) ) ) ) ).
%------------------------------------------------------------------------------