Commit b7c77790 authored by MARCHE Claude's avatar MARCHE Claude
Browse files

LCP: simplified [le_trans], and cosmetic changes

parent e7949e64
......@@ -80,13 +80,13 @@ that it does so correctly.
(** {2 First module: longest common prefix}
(** {2 First module: longest common prefix}
it corresponds to the basic part of the challenge
*)
module LCP
module LCP
use export int.Int
use import array.Array
......@@ -95,8 +95,8 @@ use import array.Array
at respective positions [x] and [y] in array [a] are identical. In
other words, the array parts a[x..x+l-1] and a[y..y+l-1] are equal
*)
predicate is_common_prefix (a:array int) (x y l:int) =
0 <= l /\ x+l <= a.length /\ y+l <= a.length /\
predicate is_common_prefix (a:array int) (x y l:int) =
0 <= l /\ x+l <= a.length /\ y+l <= a.length /\
(forall i:int. 0 <= i < l -> a[x+i] = a[y+i])
(** This lemma helps for the proof of [lcp] (but is not mandatory) and
......@@ -108,9 +108,9 @@ lemma not_common_prefix_if_last_char_are_different:
(** [is_longest_common_prefix a x y l] is true when [l] is the maximal
length such that prefixes at positions [x] and [y] in array [a]
are identical. *)
predicate is_longest_common_prefix (a:array int) (x y l:int) =
is_common_prefix a x y l /\
are identical. *)
predicate is_longest_common_prefix (a:array int) (x y l:int) =
is_common_prefix a x y l /\
forall m:int. l < m -> not (is_common_prefix a x y m)
(** This lemma helps for proving [lcp] (but again is not mandatory),
......@@ -213,18 +213,21 @@ let compare (a:array int) (x y:int) : int
absurd
(** for the [range] predicate used below *)
use map.MapInjection
(** for the [permut] predicate (permutation of elements) *)
use array.ArrayPermut
predicate le (a : array int) (x y:int) = x = y \/ lt a x y
(* needed for le_trans (for cases x = y /\ le y z and le x y /\ y = z) *)
lemma lcp_same_index :
forall a:array int, x:int.
0 <= x <= a.length -> LCP.is_longest_common_prefix a x x (a.length - x)
lemma le_trans :
forall a:array int, x y z:int.
0 <= x <= a.length /\ 0 <= y <= a.length /\
0 <= z <= a.length /\ le a x y /\ le a y z -> le a x z
lemma le_trans : forall a:array int, x y z:int.
le a x y /\ le a y z -> le a x z
(** spec of sorted in increasing prefix order *)
use map.Map
......@@ -236,26 +239,22 @@ let compare (a:array int) (x y:int) : int
predicate sorted (a : array int) (data:array int) =
sorted_sub a data.elts 0 data.length
(** spec of permutation of elements *)
use import array.ArrayPermut
use map.MapInjection (* for the range function used below *)
let sort (a:array int) (data : array int)
let sort (a:array int) (data : array int)
requires { data.length = a.length }
requires { MapInjection.range data.elts data.length }
ensures { sorted a data }
ensures { permut (old data) data }
ensures { ArrayPermut.permut (old data) data }
=
'Init:
for i = 0 to data.length - 1 do
invariant { permut (at data 'Init) data }
invariant { ArrayPermut.permut (at data 'Init) data }
invariant { sorted_sub a data.elts 0 i }
invariant { MapInjection.range data.elts data.length }
let j = ref i in
while !j > 0 && compare a data[!j-1] data[!j] > 0 do
invariant { 0 <= !j <= i }
invariant { MapInjection.range data.elts data.length }
invariant { permut (at data 'Init) data }
invariant { ArrayPermut.permut (at data 'Init) data }
invariant { sorted_sub a data.elts 0 !j }
invariant { sorted_sub a data.elts !j (i+1) }
invariant { forall k1 k2:int. 0 <= k1 < !j /\ !j+1 <= k2 <= i ->
......@@ -265,9 +264,11 @@ let compare (a:array int) (x y:int) : int
let t = data[!j] in
data[!j] <- data[b];
data[b] <- t;
assert { exchange (at data 'L) data (!j-1) !j };
assert { ArrayPermut.exchange (at data 'L) data (!j-1) !j };
decr j
done
done;
(* needed to prove the invariant [sorted_sub a data.elts 0 i] *)
assert { !j > 0 -> le a data[!j-1] data[!j] }
done
end
......@@ -277,7 +278,7 @@ end
(** {2 Third module: Suffix Array Data Structure } *)
(** {2 Third module: Suffix Array Data Structure } *)
module SuffixArray
......@@ -309,31 +310,33 @@ let select (s:suffixArray) (i:int) : int
use import array.ArrayPermut
(** needed to establish invariant in function [create] *)
lemma permut_permutation :
forall a1 a2:array int.
permut a1 a2 -> permutation a1.elts a1.length -> permutation a2.elts a2.length
lemma permut_permutation : forall a1 a2:array int.
permut a1 a2 /\ permutation a1.elts a1.length ->
permutation a2.elts a2.length
(** constructor of suffixArray structure *)
let create (a:array int) : suffixArray
ensures { result.values = a }
=
let n = a.length in
let suf = Array.make n 0 in
for i = 0 to n-1 do
invariant { forall j:int. 0 <= j < i -> suf[j] = j }
suf[i] <- i done;
SuffixSort.sort a suf;
{ values = a; suffixes = suf }
= let n = a.length in
let suf = Array.make n 0 in
for i = 0 to n-1 do
invariant { forall j:int. 0 <= j < i -> suf[j] = j }
suf[i] <- i done;
SuffixSort.sort a suf;
{ values = a; suffixes = suf }
let lcp (s:suffixArray) (i:int) : int
requires { 0 < i < s.values.length }
ensures { LCP.is_longest_common_prefix s.values
ensures { LCP.is_longest_common_prefix s.values
s.suffixes[i-1] s.suffixes[i] result }
=
LCP.lcp s.values s.suffixes[i] s.suffixes[i-1]
= LCP.lcp s.values s.suffixes[i] s.suffixes[i-1]
end
module SuffixArray_test
use import array.Array
......@@ -374,16 +377,16 @@ end
(** {2 Fourth module: Longest Repeated Substring} *)
(** {2 Fourth module: Longest Repeated Substring} *)
module LRS
module LRS
use import int.Int
use import ref.Ref
use import array.Array
use map.MapInjection
use LCP
use SuffixSort
use SuffixSort
use SuffixArray
......@@ -393,7 +396,7 @@ module LRS
lemma lcp_sym :
forall a:array int, x y l:int.
0 <= x <= a.length /\ 0 <= y <= a.length ->
LCP.is_longest_common_prefix a x y l ->
LCP.is_longest_common_prefix a x y l ->
LCP.is_longest_common_prefix a y x l
......@@ -409,7 +412,7 @@ lemma le_le_common_prefix:
lemma le_le_longest_common_prefix:
forall a:array int, x y z l m :int.
SuffixSort.le a x y /\ SuffixSort.le a y z ->
LCP.is_longest_common_prefix a x z l /\
LCP.is_longest_common_prefix a x z l /\
LCP.is_longest_common_prefix a y z m
-> l <= m
......@@ -457,7 +460,7 @@ lemma le_le_common_prefix:
(** the following assert needs [lcp_sym] lemma *)
assert { forall j k l:int.
0 <= j < a.length /\ 0 <= k < a.length /\ j <> k /\
LCP.is_longest_common_prefix a
LCP.is_longest_common_prefix a
sa.SuffixArray.suffixes[j] sa.SuffixArray.suffixes[k] l ->
!solLength >= l};
assert { forall x y:int.
......
......@@ -47,7 +47,7 @@
version="4.2"/>
<file
name="../verifythis_fm2012_lcp.mlw"
verified="false"
verified="true"
expanded="true">
<theory
name="LCP"
......@@ -6081,8 +6081,8 @@
<goal
name="lcp_same_index"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="219" loccnumb="8" loccnume="22"
sum="a9624123b4f1c440d591428adff4528c"
loclnum="225" loccnumb="8" loccnume="22"
sum="7011da184439871f186b2f06301a5749"
proved="true"
expanded="false"
shape="ais_longest_common_prefixV0V1V1ainfix -alengthV0V1Iainfix &lt;=V1alengthV0Aainfix &lt;=c0V1F">
......@@ -6162,11 +6162,11 @@
<goal
name="le_trans"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="223" loccnumb="8" loccnume="16"
sum="e083576932aec6a29bdf637aa9707922"
loclnum="229" loccnumb="8" loccnume="16"
sum="0ce0487b9b3c8b9ca6cfb1ceea0c5ff4"
proved="true"
expanded="false"
shape="aleV0V1V3IaleV0V2V3AaleV0V1V2Aainfix &lt;=V3alengthV0Aainfix &lt;=c0V3Aainfix &lt;=V2alengthV0Aainfix &lt;=c0V2Aainfix &lt;=V1alengthV0Aainfix &lt;=c0V1F">
shape="aleV0V1V3IaleV0V2V3AaleV0V1V2F">
<proof
prover="0"
timelimit="5"
......@@ -6205,7 +6205,7 @@
memlimit="1000"
obsolete="false"
archived="false">
<result status="timeout" time="5.13"/>
<result status="unknown" time="0.37"/>
</proof>
<proof
prover="5"
......@@ -6243,12 +6243,12 @@
<goal
name="WP_parameter sort"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="VC for sort"
sum="e908f05ee487c60a7a98ca9954104853"
sum="af88edb4d25bea67d683ddc2bceb8162"
proved="true"
expanded="false"
shape="apermutV4V7Aasorted_subV5V6c0V1Aainfix &lt;=c0V1IarangeV6V1Aasorted_subV5V6c0ainfix +ainfix -V1c1c1AapermutV4V7Aiainfix &gt;V9c0iainfix &gt;V14c0aleV5agetV16V18agetV16V19Iainfix &lt;=V19V8Aainfix &lt;=ainfix +V17c1V19Aainfix &lt;V18V17Aainfix &lt;=c0V18FAasorted_subV5V16V17ainfix +V8c1Aasorted_subV5V16c0V17AapermutV4amk arrayV1V16AarangeV16V1Aainfix &lt;=V17V8Aainfix &lt;=c0V17Iainfix =V17ainfix -V9c1FAaexchangeV10V16ainfix -V9c1V9Iainfix =V16asetV15ainfix -V9c1agetV10V9Aainfix &lt;=c0V1FAainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix =V15asetV10V9agetV10ainfix -V9c1Aainfix &lt;=c0V1FAainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Aainfix &lt;V9V1Aainfix &lt;=c0V9arangeV10V1Aasorted_subV5V10c0ainfix +V8c1AapermutV4V11IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FAainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Aainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Aainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1arangeV10V1Aasorted_subV5V10c0ainfix +V8c1AapermutV4V11IaleV5agetV10V20agetV10V21Iainfix &lt;=V21V8Aainfix &lt;=ainfix +V9c1V21Aainfix &lt;V20V9Aainfix &lt;=c0V20FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FAaleV5agetV6V22agetV6V23Iainfix &lt;=V23V8Aainfix &lt;=ainfix +V8c1V23Aainfix &lt;V22V8Aainfix &lt;=c0V22FAasorted_subV5V6V8ainfix +V8c1Aasorted_subV5V6c0V8AapermutV4V7AarangeV6V1Aainfix &lt;=V8V8Aainfix &lt;=c0V8IarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FAarangeV2V1Aasorted_subV5V2c0c0AapermutV4V4Iainfix &lt;=c0ainfix -V1c1AapermutV4V4Aasorted_subV5V2c0V1Iainfix &gt;c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
shape="apermutV4V7Aasorted_subV5V6c0V1Aainfix &lt;=c0V1IarangeV6V1Aasorted_subV5V6c0ainfix +ainfix -V1c1c1AapermutV4V7Aiainfix &gt;V9c0iainfix &gt;V14c0aleV5agetV16V18agetV16V19Iainfix &lt;=V19V8Aainfix &lt;=ainfix +V17c1V19Aainfix &lt;V18V17Aainfix &lt;=c0V18FAasorted_subV5V16V17ainfix +V8c1Aasorted_subV5V16c0V17AapermutV4amk arrayV1V16AarangeV16V1Aainfix &lt;=V17V8Aainfix &lt;=c0V17Iainfix =V17ainfix -V9c1FAaexchangeV10V16ainfix -V9c1V9Iainfix =V16asetV15ainfix -V9c1agetV10V9Aainfix &lt;=c0V1FAainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix =V15asetV10V9agetV10ainfix -V9c1Aainfix &lt;=c0V1FAainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Aainfix &lt;V9V1Aainfix &lt;=c0V9arangeV10V1Aasorted_subV5V10c0ainfix +V8c1AapermutV4V11AaleV5agetV10ainfix -V9c1agetV10V9Iainfix &gt;V9c0IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FAainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Aainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Aainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1arangeV10V1Aasorted_subV5V10c0ainfix +V8c1AapermutV4V11AaleV5agetV10ainfix -V9c1agetV10V9Iainfix &gt;V9c0IaleV5agetV10V20agetV10V21Iainfix &lt;=V21V8Aainfix &lt;=ainfix +V9c1V21Aainfix &lt;V20V9Aainfix &lt;=c0V20FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FAaleV5agetV6V22agetV6V23Iainfix &lt;=V23V8Aainfix &lt;=ainfix +V8c1V23Aainfix &lt;V22V8Aainfix &lt;=c0V22FAasorted_subV5V6V8ainfix +V8c1Aasorted_subV5V6c0V8AapermutV4V7AarangeV6V1Aainfix &lt;=V8V8Aainfix &lt;=c0V8IarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FAarangeV2V1Aasorted_subV5V2c0c0AapermutV4V4Iainfix &lt;=c0ainfix -V1c1AapermutV4V4Aasorted_subV5V2c0V1Iainfix &gt;c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
<label
name="expl:VC for sort"/>
<transf
......@@ -6258,9 +6258,9 @@
<goal
name="WP_parameter sort.1"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="1. postcondition"
sum="d12758ffa588f2a49c1dad9dd229533a"
sum="39a22cc8ef8ba91d0872c2f6a9cafc3b"
proved="true"
expanded="false"
shape="asorted_subV5V2c0V1Iainfix &gt;c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -6342,9 +6342,9 @@
<goal
name="WP_parameter sort.2"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="2. postcondition"
sum="385ba572abda2e35d4d5c971ae61d3ee"
sum="528488000e157d65043b338ea23403ff"
proved="true"
expanded="false"
shape="apermutV4V4Iainfix &gt;c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -6426,9 +6426,9 @@
<goal
name="WP_parameter sort.3"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="3. loop invariant init"
sum="29f4e0a4c40e34c225d9656278db404b"
sum="ff6489c275833d941a4b988d1c5c4ec9"
proved="true"
expanded="false"
shape="apermutV4V4Iainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -6510,9 +6510,9 @@
<goal
name="WP_parameter sort.4"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="4. loop invariant init"
sum="1a765cb05fc29fe972a07d5bfb552aae"
sum="319474108d4ed06a0a4bded7c6e60ae8"
proved="true"
expanded="false"
shape="asorted_subV5V2c0c0Iainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -6594,9 +6594,9 @@
<goal
name="WP_parameter sort.5"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="5. loop invariant init"
sum="a38c2ce6c5c34df81190fa6c1da26d6d"
sum="30ebd51f3b39ace8d98e187366ffc06c"
proved="true"
expanded="false"
shape="arangeV2V1Iainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -6678,9 +6678,9 @@
<goal
name="WP_parameter sort.6"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="6. loop invariant init"
sum="155706b05a2ffa83e4c45d56288beb63"
sum="1f720482c2102acc36a7a8dcbd1c171c"
proved="true"
expanded="false"
shape="ainfix &lt;=V8V8Aainfix &lt;=c0V8IarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -6762,9 +6762,9 @@
<goal
name="WP_parameter sort.7"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="7. loop invariant init"
sum="8f301a305e1d9d25f3f987d28679d48e"
sum="3c0b586918fabc2378fa02cc29a625df"
proved="true"
expanded="false"
shape="arangeV6V1IarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -6846,9 +6846,9 @@
<goal
name="WP_parameter sort.8"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="8. loop invariant init"
sum="e235c059e0f69bdd4c057c28880b137e"
sum="2369acf02a3d0c55654cfd8d4d9d3a43"
proved="true"
expanded="false"
shape="apermutV4V7IarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -6930,9 +6930,9 @@
<goal
name="WP_parameter sort.9"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="9. loop invariant init"
sum="dd4b3e5bbb1ccd1f75a856ddab640042"
sum="976a6876867490ca8d6dc1ea69939aee"
proved="true"
expanded="false"
shape="asorted_subV5V6c0V8IarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -6990,9 +6990,9 @@
<goal
name="WP_parameter sort.10"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="10. loop invariant init"
sum="41b3637cb53dcbcf303ff8771dfe0272"
sum="fc5509af11dab5b4c319cf12ecb62650"
proved="true"
expanded="false"
shape="asorted_subV5V6V8ainfix +V8c1IarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -7050,9 +7050,9 @@
<goal
name="WP_parameter sort.11"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="11. loop invariant init"
sum="5d580e12016c691e0bd7c9cb463ad50d"
sum="a5693951e23b002397460d3244939b20"
proved="true"
expanded="false"
shape="aleV5agetV6V9agetV6V10Iainfix &lt;=V10V8Aainfix &lt;=ainfix +V8c1V10Aainfix &lt;V9V8Aainfix &lt;=c0V9FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -7134,9 +7134,9 @@
<goal
name="WP_parameter sort.12"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="12. type invariant"
sum="a8bf28ef8972349e60d160d73ce42952"
sum="b1a07da5f18ae387117e48020b970d6c"
proved="true"
expanded="false"
shape="ainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V12agetV10V13Iainfix &lt;=V13V8Aainfix &lt;=ainfix +V9c1V13Aainfix &lt;V12V9Aainfix &lt;=c0V12FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -7218,9 +7218,9 @@
<goal
name="WP_parameter sort.13"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="13. precondition"
sum="b881adef650e6f21cd9c00f766d00b99"
sum="90c23a44c6d4f45c7676b989aad85772"
proved="true"
expanded="false"
shape="ainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V12agetV10V13Iainfix &lt;=V13V8Aainfix &lt;=ainfix +V9c1V13Aainfix &lt;V12V9Aainfix &lt;=c0V12FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -7302,9 +7302,9 @@
<goal
name="WP_parameter sort.14"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="14. precondition"
sum="d00d0927abbfa212e014452ec5ec5dfb"
sum="c39ceba24b0892bdd0f5a0811bf762de"
proved="true"
expanded="false"
shape="ainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V13agetV10V14Iainfix &lt;=V14V8Aainfix &lt;=ainfix +V9c1V14Aainfix &lt;V13V9Aainfix &lt;=c0V13FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -7386,9 +7386,9 @@
<goal
name="WP_parameter sort.15"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="15. precondition"
sum="44f80476993a586cf13893830e0b65f6"
sum="8c194061ffdf98c10106ccfc31abd96c"
proved="true"
expanded="false"
shape="ainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V14agetV10V15Iainfix &lt;=V15V8Aainfix &lt;=ainfix +V9c1V15Aainfix &lt;V14V9Aainfix &lt;=c0V14FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -7470,9 +7470,9 @@
<goal
name="WP_parameter sort.16"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="16. precondition"
sum="c1bf8496bd9cbcc1265dd7560a219eea"
sum="774672aede19cd71539098d049868a89"
proved="true"
expanded="false"
shape="ainfix &lt;=V12V0Aainfix &lt;=c0V12LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V14agetV10V15Iainfix &lt;=V15V8Aainfix &lt;=ainfix +V9c1V15Aainfix &lt;V14V9Aainfix &lt;=c0V14FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -7554,9 +7554,9 @@
<goal
name="WP_parameter sort.17"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="17. precondition"
sum="093890886d35d02d0e7a649bb001e6fe"
sum="5c673196ebdfaa4ec1d1eacf6b94340e"
proved="true"
expanded="false"
shape="ainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &gt;V14c0IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FIainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V15agetV10V16Iainfix &lt;=V16V8Aainfix &lt;=ainfix +V9c1V16Aainfix &lt;V15V9Aainfix &lt;=c0V15FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -7638,9 +7638,9 @@
<goal
name="WP_parameter sort.18"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="18. precondition"
sum="ddbdfa3a352527d85740b3af1438e038"
sum="9ccf8a07407cb608a2f3eadf6894de0e"
proved="true"
expanded="false"
shape="ainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &gt;V14c0IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FIainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V15agetV10V16Iainfix &lt;=V16V8Aainfix &lt;=ainfix +V9c1V16Aainfix &lt;V15V9Aainfix &lt;=c0V15FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -7722,9 +7722,9 @@
<goal
name="WP_parameter sort.19"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="19. precondition"
sum="9f4007138938257557b0255e0541adb5"
sum="f4329a216e152273c67b6402ec05c00d"
proved="true"
expanded="false"
shape="ainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &gt;V14c0IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FIainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V15agetV10V16Iainfix &lt;=V16V8Aainfix &lt;=ainfix +V9c1V16Aainfix &lt;V15V9Aainfix &lt;=c0V15FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -7806,9 +7806,9 @@
<goal
name="WP_parameter sort.20"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="20. precondition"
sum="91104e6fb34608b851955a4f8fea3e1f"
sum="f0feed8bb9d9041603f5073a0fbdf38e"
proved="true"
expanded="false"
shape="ainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix =V15asetV10V9agetV10ainfix -V9c1Aainfix &lt;=c0V1FIainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &gt;V14c0IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FIainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V16agetV10V17Iainfix &lt;=V17V8Aainfix &lt;=ainfix +V9c1V17Aainfix &lt;V16V9Aainfix &lt;=c0V16FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -7890,9 +7890,9 @@
<goal
name="WP_parameter sort.21"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="21. assertion"
sum="c72bff85a7c7528dfe01c6cdd2bbaaf8"
sum="d13142a17be10d7c387a1e4fe5dc4e13"
proved="true"
expanded="false"
shape="aexchangeV10V16ainfix -V9c1V9Iainfix =V16asetV15ainfix -V9c1agetV10V9Aainfix &lt;=c0V1FIainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix =V15asetV10V9agetV10ainfix -V9c1Aainfix &lt;=c0V1FIainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &gt;V14c0IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FIainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V17agetV10V18Iainfix &lt;=V18V8Aainfix &lt;=ainfix +V9c1V18Aainfix &lt;V17V9Aainfix &lt;=c0V17FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -7966,9 +7966,9 @@
<goal
name="WP_parameter sort.22"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="22. loop invariant preservation"
sum="b8e7d5ddd9413f78aaaf5991a5b6739c"
sum="f781075d9e0d4a789a8140a6e65449b1"
proved="true"
expanded="false"
shape="ainfix &lt;=V17V8Aainfix &lt;=c0V17Iainfix =V17ainfix -V9c1FIaexchangeV10V16ainfix -V9c1V9Iainfix =V16asetV15ainfix -V9c1agetV10V9Aainfix &lt;=c0V1FIainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix =V15asetV10V9agetV10ainfix -V9c1Aainfix &lt;=c0V1FIainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &gt;V14c0IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FIainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V18agetV10V19Iainfix &lt;=V19V8Aainfix &lt;=ainfix +V9c1V19Aainfix &lt;V18V9Aainfix &lt;=c0V18FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -8050,9 +8050,9 @@
<goal
name="WP_parameter sort.23"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="23. loop invariant preservation"
sum="abcabbd50f05d757d3f7de189338ae40"
sum="d92087e9fcf66e30fa0015c1316793b5"
proved="true"
expanded="false"
shape="arangeV16V1Iainfix =V17ainfix -V9c1FIaexchangeV10V16ainfix -V9c1V9Iainfix =V16asetV15ainfix -V9c1agetV10V9Aainfix &lt;=c0V1FIainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix =V15asetV10V9agetV10ainfix -V9c1Aainfix &lt;=c0V1FIainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &gt;V14c0IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FIainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V18agetV10V19Iainfix &lt;=V19V8Aainfix &lt;=ainfix +V9c1V19Aainfix &lt;V18V9Aainfix &lt;=c0V18FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -8086,9 +8086,9 @@
<goal
name="WP_parameter sort.24"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="24. loop invariant preservation"
sum="ceba7120e3d217e783412ea66f705afc"
sum="266c94b82721bc4dfdf85168272d6e87"
proved="true"
expanded="false"
shape="apermutV4amk arrayV1V16Iainfix =V17ainfix -V9c1FIaexchangeV10V16ainfix -V9c1V9Iainfix =V16asetV15ainfix -V9c1agetV10V9Aainfix &lt;=c0V1FIainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix =V15asetV10V9agetV10ainfix -V9c1Aainfix &lt;=c0V1FIainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &gt;V14c0IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FIainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V18agetV10V19Iainfix &lt;=V19V8Aainfix &lt;=ainfix +V9c1V19Aainfix &lt;V18V9Aainfix &lt;=c0V18FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -8114,9 +8114,9 @@
<goal
name="WP_parameter sort.25"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="25. loop invariant preservation"
sum="cbf02ed4fa4b865ceebed89c9f4560db"
sum="cb8a7ff8475ae345aa047e16e6823ae2"
proved="true"
expanded="false"
shape="asorted_subV5V16c0V17Iainfix =V17ainfix -V9c1FIaexchangeV10V16ainfix -V9c1V9Iainfix =V16asetV15ainfix -V9c1agetV10V9Aainfix &lt;=c0V1FIainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix =V15asetV10V9agetV10ainfix -V9c1Aainfix &lt;=c0V1FIainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &gt;V14c0IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FIainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V18agetV10V19Iainfix &lt;=V19V8Aainfix &lt;=ainfix +V9c1V19Aainfix &lt;V18V9Aainfix &lt;=c0V18FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -8174,9 +8174,9 @@
<goal
name="WP_parameter sort.26"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="26. loop invariant preservation"
sum="962700eaa1ecd8141b07dcecb8a8f12d"
sum="e59cf1c884f123ba58e82022d0b24d29"
proved="true"
expanded="false"
shape="asorted_subV5V16V17ainfix +V8c1Iainfix =V17ainfix -V9c1FIaexchangeV10V16ainfix -V9c1V9Iainfix =V16asetV15ainfix -V9c1agetV10V9Aainfix &lt;=c0V1FIainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix =V15asetV10V9agetV10ainfix -V9c1Aainfix &lt;=c0V1FIainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &gt;V14c0IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FIainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V18agetV10V19Iainfix &lt;=V19V8Aainfix &lt;=ainfix +V9c1V19Aainfix &lt;V18V9Aainfix &lt;=c0V18FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -8188,7 +8188,7 @@
memlimit="1000"
obsolete="false"
archived="false">
<result status="valid" time="4.62"/>
<result status="valid" time="1.96"/>
</proof>
<proof
prover="1"
......@@ -8196,7 +8196,7 @@
memlimit="1000"
obsolete="false"
archived="false">
<result status="valid" time="1.66"/>
<result status="valid" time="0.71"/>
</proof>
<proof
prover="2"
......@@ -8204,7 +8204,7 @@
memlimit="1000"
obsolete="false"
archived="false">
<result status="valid" time="1.05"/>
<result status="valid" time="0.49"/>
</proof>
<proof
prover="3"
......@@ -8226,9 +8226,9 @@
<goal
name="WP_parameter sort.27"
locfile="../verifythis_fm2012_lcp.mlw"
loclnum="243" loccnumb="6" loccnume="10"
loclnum="242" loccnumb="4" loccnume="8"
expl="27. loop invariant preservation"
sum="83f6ef40c52c326719f2e2fdc3e96dcd"
sum="ff96522d8eb0cc1e155f624344d7106e"
proved="true"
expanded="false"
shape="aleV5agetV16V18agetV16V19Iainfix &lt;=V19V8Aainfix &lt;=ainfix +V17c1V19Aainfix &lt;V18V17Aainfix &lt;=c0V18FIainfix =V17ainfix -V9c1FIaexchangeV10V16ainfix -V9c1V9Iainfix =V16asetV15ainfix -V9c1agetV10V9Aainfix &lt;=c0V1FIainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix =V15asetV10V9agetV10ainfix -V9c1Aainfix &lt;=c0V1FIainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1Iainfix &lt;V9V1Aainfix &lt;=c0V9Iainfix &gt;V14c0IaltV5V12V13Iainfix &gt;V14c0AaltV5V13V12Iainfix &lt;V14c0Aainfix =V13V12Iainfix =V14c0FIainfix &lt;=V12V0Aainfix &lt;=c0V12Aainfix &lt;=V13V0Aainfix &lt;=c0V13LagetV10ainfix -V9c1Iainfix &lt;ainfix -V9c1V1Aainfix &lt;=c0ainfix -V9c1LagetV10V9Iainfix &lt;V9V1Aainfix &lt;=c0V9Aainfix &lt;=c0V1Iainfix &gt;V9c0IaleV5agetV10V20agetV10V21Iainfix &lt;=V21V8Aainfix &lt;=ainfix +V9c1V21Aainfix &lt;V20V9Aainfix &lt;=c0V20FAasorted_subV5V10V9ainfix +V8c1Aasorted_subV5V10c0V9AapermutV4V11AarangeV10V1Aainfix &lt;=V9V8Aainfix &lt;=c0V9Lamk arrayV1V10FIarangeV6V1Aasorted_subV5V6c0V8AapermutV4V7Iainfix &lt;=V8ainfix -V1c1Aainfix &lt;=c0V8FLamk arrayV1V6FIainfix &lt;=c0ainfix -V1c1IarangeV2V1Aainfix =V1V0Aainfix &lt;=c0V1Aainfix &lt;=c0V0Lamk arrayV0V3Lamk arrayV1V2FF">
......@@ -8240,7 +8240,7 @@
memlimit="1000"
obsolete="false"
archived="false">
<result status="valid" time="1.97"/>
<result status="valid" time="1.12"/>
</proof>
<proof
prover="1"
......@@ -8256,7 +8256,7 @@
memlimit="1000"
obsolete="false"
archived="false">
<result status="valid" time="0.60"/>
<result status="valid" time="0.42"/>
</proof>
<proof