Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Why3
why3
Commits
7e9ea977
Commit
7e9ea977
authored
Oct 06, 2017
by
MARCHE Claude
Browse files
sumrange example: fully prover, including complexity
parent
306c0cdf
Changes
3
Hide whitespace changes
Inline
Side-by-side
examples/in_progress/sumrange.mlw
View file @
7e9ea977
...
...
@@ -427,17 +427,10 @@ module CumulativeTree
requires { is_tree_for t a t.indexes.low t.indexes.high }
requires { 0 <= t.indexes.low <= i < j <= t.indexes.high <= a.length }
variant { t }
(*
ensures { !c - old !c <=
if i = t.indexes.low /\ j = t.indexes.high then 1 else
if i = t.indexes.low \/ j = t.indexes.high then depth t else
2 * depth t }
*)
ensures {
i = t.indexes.low /\ j = t.indexes.high -> !c - old !c <= 1 }
ensures {
i = t.indexes.low \/ j = t.indexes.high -> !c - old !c <= 1 + depth t }
ensures { !c - old !c <= 2 * depth t }
if i = t.indexes.low \/ j = t.indexes.high then 2 * depth t else
4 * depth t }
ensures { result = sum a i j }
= c := !c + 1;
match t with
...
...
@@ -448,20 +441,9 @@ module CumulativeTree
let k3 = ind.high in
if i=k1 && j=k3 then ind.isum else
let m = l.indexes.high in
if j <= m then
begin
assert { depth l < depth t };
assert { i = t.indexes.low <-> i = l.indexes.low };
assert { j = t.indexes.high -> j = l.indexes.high };
query_aux_complexity l a i j c
end
else
if j <= m then query_aux_complexity l a i j c else
if i >= m then query_aux_complexity r a i j c else
begin
'L1: let tmp = query_aux_complexity l a i m c in
assert { !c - at !c 'L1 <= depth t };
tmp + query_aux_complexity r a m j c
end
query_aux_complexity l a i m c + query_aux_complexity r a m j c
end
...
...
examples/in_progress/sumrange/why3session.xml
View file @
7e9ea977
...
...
@@ -6,7 +6,7 @@
<prover
id=
"1"
name=
"Alt-Ergo"
version=
"1.30"
timelimit=
"1"
steplimit=
"0"
memlimit=
"1000"
/>
<prover
id=
"2"
name=
"Z3"
version=
"4.5.0"
timelimit=
"1"
steplimit=
"0"
memlimit=
"1000"
/>
<prover
id=
"3"
name=
"CVC4"
version=
"1.5"
timelimit=
"1"
steplimit=
"0"
memlimit=
"1000"
/>
<file
name=
"../sumrange.mlw"
>
<file
name=
"../sumrange.mlw"
proved=
"true"
>
<theory
name=
"ArraySum"
proved=
"true"
sum=
"c43abcc65051af09a54f471f27f69208"
>
<goal
name=
"sum_right"
proved=
"true"
>
<transf
name=
"assert"
proved=
"true"
arg1=
"(forall x. 0 < x < j -> sum a (j-x) j = sum a (j-x) (j-1) + a[j-1])"
>
...
...
@@ -121,7 +121,7 @@
<proof
prover=
"2"
><result
status=
"valid"
time=
"0.05"
/></proof>
</goal>
</theory>
<theory
name=
"CumulativeTree"
sum=
"926714608746ce5cc75c06bb87a4995d
"
>
<theory
name=
"CumulativeTree"
proved=
"true"
sum=
"4f2a81f2193f3e3cf4199b3867f6aaca
"
>
<goal
name=
"WP_parameter tree_of_array"
expl=
"VC for tree_of_array"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.43"
/></proof>
</goal>
...
...
@@ -295,130 +295,70 @@
</goal>
</transf>
</goal>
<goal
name=
"WP_parameter query_aux_complexity"
expl=
"VC for query_aux_complexity"
>
<proof
prover=
"0"
><result
status=
"unknown"
time=
"2.01"
/></proof>
<proof
prover=
"1"
><result
status=
"timeout"
time=
"1.00"
/></proof>
<proof
prover=
"2"
><result
status=
"timeout"
time=
"1.00"
/></proof>
<proof
prover=
"3"
><result
status=
"unknown"
time=
"1.97"
/></proof>
<transf
name=
"split_goal_wp"
>
<goal
name=
"WP_parameter query_aux_complexity"
expl=
"VC for query_aux_complexity"
proved=
"true"
>
<transf
name=
"split_goal_wp"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.0"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.0
3
"
/></proof>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.0
4
"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.1"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"0"
><result
status=
"valid"
time=
"0.02"
/></proof>
<proof
prover=
"1"
><result
status=
"valid"
time=
"0.01"
steps=
"76"
/></proof>
<proof
prover=
"2"
><result
status=
"valid"
time=
"0.02"
/></proof>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.06"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.2"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.0
4
"
/></proof>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.0
3
"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.3"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.06"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.4"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.5"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.6"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"0"
><result
status=
"valid"
time=
"0.02"
/></proof>
<proof
prover=
"1"
><result
status=
"valid"
time=
"0.01"
steps=
"78"
/></proof>
<proof
prover=
"2"
><result
status=
"valid"
time=
"0.02"
/></proof>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.7"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.05"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.8"
expl=
"assertion"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.03"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.9"
expl=
"assertion"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.03"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.10"
expl=
"assertion"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.11"
expl=
"variant decrease"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.4"
expl=
"variant decrease"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.05"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.
12
"
expl=
"precondition"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.
5
"
expl=
"precondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.
13
"
expl=
"precondition"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.
6
"
expl=
"precondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.
14
"
expl=
"postcondition"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.
7
"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"0"
><result
status=
"valid"
time=
"0.04"
/></proof>
<proof
prover=
"1"
><result
status=
"valid"
time=
"0.03"
steps=
"99"
/></proof>
<proof
prover=
"2"
><result
status=
"valid"
time=
"0.02"
/></proof>
<proof
prover=
"1"
><result
status=
"valid"
time=
"0.39"
steps=
"363"
/></proof>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.03"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.15"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.06"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.16"
expl=
"postcondition"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.8"
expl=
"variant decrease"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.17"
expl=
"variant decrease"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.18"
expl=
"precondition"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.9"
expl=
"precondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.03"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.1
9
"
expl=
"precondition"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.1
0
"
expl=
"precondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.20"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"0"
><result
status=
"valid"
time=
"0.03"
/></proof>
<proof
prover=
"1"
><result
status=
"valid"
time=
"0.02"
steps=
"99"
/></proof>
<proof
prover=
"2"
><result
status=
"valid"
time=
"0.02"
/></proof>
<goal
name=
"WP_parameter query_aux_complexity.11"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.05"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.21"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.03"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.22"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.06"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.23"
expl=
"variant decrease"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.12"
expl=
"variant decrease"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.24"
expl=
"precondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.25"
expl=
"precondition"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.13"
expl=
"precondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.
26
"
expl=
"
asser
tion"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.
14
"
expl=
"
precondi
tion"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.
27
"
expl=
"variant decrease"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.
15
"
expl=
"variant decrease"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.
28
"
expl=
"precondition"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.
16
"
expl=
"precondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.
29
"
expl=
"precondition"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.
17
"
expl=
"precondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.
30
"
expl=
"postcondition"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.
18
"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"0"
><result
status=
"valid"
time=
"0.04"
/></proof>
<proof
prover=
"1"
><result
status=
"valid"
time=
"0.06"
steps=
"124"
/></proof>
<proof
prover=
"2"
><result
status=
"valid"
time=
"0.02"
/></proof>
<proof
prover=
"1"
><result
status=
"valid"
time=
"0.85"
steps=
"666"
/></proof>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.04"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.31"
expl=
"postcondition"
>
<proof
prover=
"0"
><result
status=
"timeout"
time=
"2.00"
/></proof>
<proof
prover=
"1"
><result
status=
"timeout"
time=
"1.00"
/></proof>
<proof
prover=
"2"
><result
status=
"timeout"
time=
"1.00"
/></proof>
<proof
prover=
"3"
><result
status=
"unknown"
time=
"2.02"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.32"
expl=
"postcondition"
>
<proof
prover=
"3"
><result
status=
"unknown"
time=
"1.07"
/></proof>
</goal>
<goal
name=
"WP_parameter query_aux_complexity.33"
expl=
"postcondition"
proved=
"true"
>
<goal
name=
"WP_parameter query_aux_complexity.19"
expl=
"postcondition"
proved=
"true"
>
<proof
prover=
"3"
><result
status=
"valid"
time=
"0.06"
/></proof>
</goal>
</transf>
...
...
examples/in_progress/sumrange/why3shapes.gz
View file @
7e9ea977
No preview for this file type
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment