updated proof sessions

This commit is contained in:
Jean-Christophe Filliatre
2017-05-16 15:48:05 +02:00
parent 3698ea2ec5
commit f868ab16f7
20 changed files with 1257 additions and 1706 deletions

View File

@@ -1,88 +0,0 @@
(* This file is generated by Why3's Coq 8.4 driver *)
(* Beware! Only edit allowed sections below *)
Require Import BuiltIn.
Require BuiltIn.
Require int.Int.
Require map.Map.
(* Why3 assumption *)
Definition unit := unit.
(* Why3 assumption *)
Inductive ref (a:Type) {a_WT:WhyType a} :=
| mk_ref : a -> ref a.
Axiom ref_WhyType : forall (a:Type) {a_WT:WhyType a}, WhyType (ref a).
Existing Instance ref_WhyType.
Implicit Arguments mk_ref [[a] [a_WT]].
(* Why3 assumption *)
Definition contents {a:Type} {a_WT:WhyType a} (v:(@ref a a_WT)): a :=
match v with
| (mk_ref x) => x
end.
(* Why3 assumption *)
Inductive array
(a:Type) {a_WT:WhyType a} :=
| mk_array : Z -> (@map.Map.map Z _ a a_WT) -> array a.
Axiom array_WhyType : forall (a:Type) {a_WT:WhyType a}, WhyType (array a).
Existing Instance array_WhyType.
Implicit Arguments mk_array [[a] [a_WT]].
(* Why3 assumption *)
Definition elts {a:Type} {a_WT:WhyType a} (v:(@array a a_WT)): (@map.Map.map
Z _ a a_WT) := match v with
| (mk_array x x1) => x1
end.
(* Why3 assumption *)
Definition length {a:Type} {a_WT:WhyType a} (v:(@array a a_WT)): Z :=
match v with
| (mk_array x x1) => x
end.
(* Why3 assumption *)
Definition get {a:Type} {a_WT:WhyType a} (a1:(@array a a_WT)) (i:Z): a :=
(map.Map.get (elts a1) i).
(* Why3 assumption *)
Definition set {a:Type} {a_WT:WhyType a} (a1:(@array a a_WT)) (i:Z)
(v:a): (@array a a_WT) := (mk_array (length a1) (map.Map.set (elts a1) i
v)).
(* Why3 assumption *)
Definition make {a:Type} {a_WT:WhyType a} (n:Z) (v:a): (@array a a_WT) :=
(mk_array n (map.Map.const v:(@map.Map.map Z _ a a_WT))).
(* Why3 assumption *)
Definition decrease1 (a:(@array Z _)): Prop := forall (i:Z), ((0%Z <= i)%Z /\
(i < ((length a) - 1%Z)%Z)%Z) -> (((get a i) - 1%Z)%Z <= (get a
(i + 1%Z)%Z))%Z.
(* Why3 goal *)
Theorem decrease1_induction : forall (a:(@array Z _)), (decrease1 a) ->
forall (i:Z) (j:Z), ((0%Z <= i)%Z /\ ((i <= j)%Z /\ (j < (length a))%Z)) ->
((((get a i) + i)%Z - j)%Z <= (get a j))%Z.
(* Why3 intros a h1 i j (h2,(h3,h4)). *)
(* YOU MAY EDIT THE PROOF BELOW *)
unfold decrease1.
intros a Ha i j Hij.
generalize Hij; pattern j.
apply (Zlt_lower_bound_ind _ i).
2: omega.
intuition.
assert (x = i \/ i < x)%Z by omega.
destruct H5.
subst x.
ring_simplify.
omega.
apply Zle_trans with (get a (x-1) - 1)%Z.
assert (i <= x-1 < x)%Z by omega.
assert (0 <= i /\ i <= x-1 < length a)%Z by omega.
generalize (H0 (x-1)%Z H8 H9); clear H0; intuition.
apply Zle_trans with (get a (x-1+1))%Z.
apply (Ha (x-1)%Z); omega.
ring_simplify (x-1+1)%Z.
omega.
Qed.

View File

@@ -2,189 +2,92 @@
<!DOCTYPE why3session PUBLIC "-//Why3//proof session v5//EN"
"http://why3.lri.fr/why3session.dtd">
<why3session shape_version="4">
<prover id="0" name="CVC4" version="1.2" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="1" name="Coq" version="8.6" timelimit="10" steplimit="0" memlimit="0"/>
<prover id="2" name="CVC3" version="2.4.1" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="4" name="Z3" version="2.19" timelimit="10" steplimit="0" memlimit="0"/>
<prover id="5" name="CVC3" version="2.2" timelimit="10" steplimit="0" memlimit="0"/>
<prover id="6" name="Z3" version="4.3.1" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="7" name="Z3" version="3.2" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="8" name="Alt-Ergo" version="0.99.1" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="3" name="CVC4" version="1.4" timelimit="5" steplimit="0" memlimit="1000"/>
<prover id="9" name="Alt-Ergo" version="1.30" timelimit="5" steplimit="0" memlimit="1000"/>
<file name="../decrease1.mlw" expanded="true">
<theory name="Decrease1" sum="7c49cfeea622335075ec3d6212620b2b" expanded="true">
<goal name="decrease1_induction" expanded="true">
<proof prover="1" edited="decrease1_Decrease1_decrease1_induction_2.v"><result status="valid" time="0.40"/></proof>
<theory name="Decrease1" sum="ada34eb3bebc2acf740281e95648456b" expanded="true">
<goal name="VC decrease1_induction" expl="VC for decrease1_induction" expanded="true">
<proof prover="9"><result status="valid" time="0.02" steps="35"/></proof>
</goal>
<goal name="WP_parameter search" expl="VC for search" expanded="true">
<transf name="split_goal_wp" expanded="true">
<goal name="WP_parameter search.1" expl="1. loop invariant init" expanded="true">
<proof prover="2"><result status="valid" time="0.00"/></proof>
<proof prover="6"><result status="valid" time="0.00"/></proof>
<proof prover="7"><result status="valid" time="0.00"/></proof>
<proof prover="8"><result status="valid" time="0.00" steps="2"/></proof>
<goal name="VC search" expl="VC for search">
<transf name="split_goal_wp">
<goal name="VC search.1" expl="1. loop invariant init">
<proof prover="9"><result status="valid" time="0.00" steps="2"/></proof>
</goal>
<goal name="WP_parameter search.2" expl="2. loop invariant init" expanded="true">
<proof prover="2"><result status="valid" time="0.00"/></proof>
<proof prover="4"><result status="valid" time="0.00"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.00"/></proof>
<proof prover="7"><result status="valid" time="0.00"/></proof>
<proof prover="8"><result status="valid" time="0.00" steps="4"/></proof>
<goal name="VC search.2" expl="2. loop invariant init">
<proof prover="9"><result status="valid" time="0.00" steps="2"/></proof>
</goal>
<goal name="WP_parameter search.3" expl="3. index in array bounds" expanded="true">
<proof prover="2"><result status="valid" time="0.00"/></proof>
<proof prover="4"><result status="valid" time="0.01"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.03"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.01" steps="4"/></proof>
<goal name="VC search.3" expl="3. index in array bounds">
<proof prover="9"><result status="valid" time="0.00" steps="4"/></proof>
</goal>
<goal name="WP_parameter search.4" expl="4. postcondition" expanded="true">
<proof prover="2"><result status="valid" time="0.02"/></proof>
<proof prover="4"><result status="valid" time="0.03"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.02"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.01" steps="9"/></proof>
<goal name="VC search.4" expl="4. postcondition">
<proof prover="9"><result status="valid" time="0.00" steps="12"/></proof>
</goal>
<goal name="WP_parameter search.5" expl="5. index in array bounds" expanded="true">
<proof prover="2"><result status="valid" time="0.01"/></proof>
<proof prover="4"><result status="valid" time="0.00"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.00"/></proof>
<proof prover="7"><result status="valid" time="0.00"/></proof>
<proof prover="8"><result status="valid" time="0.01" steps="5"/></proof>
<goal name="VC search.5" expl="5. index in array bounds">
<proof prover="9"><result status="valid" time="0.00" steps="5"/></proof>
</goal>
<goal name="WP_parameter search.6" expl="6. index in array bounds" expanded="true">
<proof prover="2"><result status="valid" time="0.01"/></proof>
<proof prover="4"><result status="valid" time="0.00"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.00"/></proof>
<proof prover="7"><result status="valid" time="0.00"/></proof>
<proof prover="8"><result status="valid" time="0.01" steps="6"/></proof>
<goal name="VC search.6" expl="6. index in array bounds">
<proof prover="9"><result status="valid" time="0.00" steps="6"/></proof>
</goal>
<goal name="WP_parameter search.7" expl="7. loop invariant preservation" expanded="true">
<proof prover="2"><result status="valid" time="0.02"/></proof>
<proof prover="6"><result status="valid" time="0.03"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.01" steps="7"/></proof>
<goal name="VC search.7" expl="7. loop variant decrease">
<proof prover="9"><result status="valid" time="0.00" steps="7"/></proof>
</goal>
<goal name="WP_parameter search.8" expl="8. loop invariant preservation" expanded="true">
<proof prover="4"><result status="valid" time="0.02"/></proof>
<proof prover="6"><result status="valid" time="0.00"/></proof>
<proof prover="7"><result status="valid" time="0.09"/></proof>
<goal name="VC search.8" expl="8. loop invariant preservation">
<proof prover="9"><result status="valid" time="0.00" steps="7"/></proof>
</goal>
<goal name="WP_parameter search.9" expl="9. loop variant decrease" expanded="true">
<proof prover="2"><result status="valid" time="0.02"/></proof>
<proof prover="4"><result status="valid" time="0.02"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.02"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.00" steps="7"/></proof>
<goal name="VC search.9" expl="9. loop invariant preservation">
<proof prover="3"><result status="valid" time="0.01"/></proof>
<proof prover="9"><result status="unknown" time="1.10"/></proof>
</goal>
<goal name="WP_parameter search.10" expl="10. loop invariant preservation" expanded="true">
<proof prover="2"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.02"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.00" steps="7"/></proof>
<goal name="VC search.10" expl="10. loop variant decrease">
<proof prover="9"><result status="valid" time="0.00" steps="7"/></proof>
</goal>
<goal name="WP_parameter search.11" expl="11. loop invariant preservation" expanded="true">
<proof prover="2"><result status="valid" time="0.02"/></proof>
<proof prover="6"><result status="valid" time="0.02"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.02" steps="12"/></proof>
<goal name="VC search.11" expl="11. loop invariant preservation">
<proof prover="9"><result status="valid" time="0.00" steps="7"/></proof>
</goal>
<goal name="WP_parameter search.12" expl="12. loop variant decrease" expanded="true">
<proof prover="2"><result status="valid" time="0.01"/></proof>
<proof prover="4"><result status="valid" time="0.02"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.03"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.01" steps="7"/></proof>
<goal name="VC search.12" expl="12. loop invariant preservation">
<proof prover="9"><result status="valid" time="0.00" steps="12"/></proof>
</goal>
<goal name="WP_parameter search.13" expl="13. postcondition" expanded="true">
<proof prover="2"><result status="valid" time="0.01"/></proof>
<proof prover="4"><result status="valid" time="0.02"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.02"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.00" steps="9"/></proof>
<goal name="VC search.13" expl="13. postcondition">
<proof prover="9"><result status="valid" time="0.00" steps="9"/></proof>
</goal>
</transf>
</goal>
<goal name="WP_parameter search_rec" expl="VC for search_rec" expanded="true">
<transf name="split_goal_wp" expanded="true">
<goal name="WP_parameter search_rec.1" expl="1. index in array bounds" expanded="true">
<proof prover="2"><result status="valid" time="0.01"/></proof>
<proof prover="4"><result status="valid" time="0.02"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.02"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.01" steps="4"/></proof>
<goal name="VC search_rec" expl="VC for search_rec">
<transf name="split_goal_wp">
<goal name="VC search_rec.1" expl="1. index in array bounds">
<proof prover="9"><result status="valid" time="0.00" steps="4"/></proof>
</goal>
<goal name="WP_parameter search_rec.2" expl="2. postcondition" expanded="true">
<proof prover="2"><result status="valid" time="0.02"/></proof>
<proof prover="4"><result status="valid" time="0.01"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.02"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.00" steps="8"/></proof>
<goal name="VC search_rec.2" expl="2. index in array bounds">
<proof prover="9"><result status="valid" time="0.00" steps="5"/></proof>
</goal>
<goal name="WP_parameter search_rec.3" expl="3. index in array bounds" expanded="true">
<proof prover="2"><result status="valid" time="0.01"/></proof>
<proof prover="4"><result status="valid" time="0.00"/></proof>
<proof prover="5"><result status="valid" time="0.00"/></proof>
<proof prover="6"><result status="valid" time="0.00"/></proof>
<proof prover="7"><result status="valid" time="0.00"/></proof>
<proof prover="8"><result status="valid" time="0.01" steps="5"/></proof>
<goal name="VC search_rec.3" expl="3. index in array bounds">
<proof prover="9"><result status="valid" time="0.00" steps="6"/></proof>
</goal>
<goal name="WP_parameter search_rec.4" expl="4. index in array bounds" expanded="true">
<proof prover="2"><result status="valid" time="0.00"/></proof>
<proof prover="4"><result status="valid" time="0.00"/></proof>
<proof prover="5"><result status="valid" time="0.00"/></proof>
<proof prover="6"><result status="valid" time="0.00"/></proof>
<proof prover="7"><result status="valid" time="0.00"/></proof>
<proof prover="8"><result status="valid" time="0.00" steps="6"/></proof>
<goal name="VC search_rec.4" expl="4. variant decrease">
<proof prover="9"><result status="valid" time="0.00" steps="6"/></proof>
</goal>
<goal name="WP_parameter search_rec.5" expl="5. variant decrease">
<proof prover="8"><result status="valid" time="0.02" steps="6"/></proof>
<goal name="VC search_rec.5" expl="5. precondition">
<proof prover="9"><result status="valid" time="0.00" steps="6"/></proof>
</goal>
<goal name="WP_parameter search_rec.6" expl="6. precondition" expanded="true">
<proof prover="2"><result status="valid" time="0.00"/></proof>
<proof prover="4"><result status="valid" time="0.02"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.03"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.01" steps="6"/></proof>
<goal name="VC search_rec.6" expl="6. variant decrease">
<proof prover="9"><result status="valid" time="0.00" steps="6"/></proof>
</goal>
<goal name="WP_parameter search_rec.7" expl="7. postcondition" expanded="true">
<proof prover="0"><result status="valid" time="0.04"/></proof>
<proof prover="7"><result status="valid" time="0.05"/></proof>
<goal name="VC search_rec.7" expl="7. precondition">
<proof prover="9"><result status="valid" time="0.00" steps="6"/></proof>
</goal>
<goal name="WP_parameter search_rec.8" expl="8. variant decrease">
<proof prover="8"><result status="valid" time="0.03" steps="6"/></proof>
<goal name="VC search_rec.8" expl="8. postcondition">
<proof prover="9"><result status="valid" time="0.00" steps="8"/></proof>
</goal>
<goal name="WP_parameter search_rec.9" expl="9. precondition" expanded="true">
<proof prover="2"><result status="valid" time="0.01"/></proof>
<proof prover="4"><result status="valid" time="0.02"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.01"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.01" steps="6"/></proof>
<goal name="VC search_rec.9" expl="9. postcondition">
<proof prover="3"><result status="valid" time="0.02"/></proof>
<proof prover="9"><result status="unknown" time="1.31"/></proof>
</goal>
<goal name="WP_parameter search_rec.10" expl="10. postcondition" expanded="true">
<proof prover="2"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.01"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.01" steps="42"/></proof>
<goal name="VC search_rec.10" expl="10. postcondition">
<proof prover="9"><result status="valid" time="0.01" steps="41"/></proof>
</goal>
<goal name="WP_parameter search_rec.11" expl="11. postcondition" expanded="true">
<proof prover="2"><result status="valid" time="0.02"/></proof>
<proof prover="4"><result status="valid" time="0.03"/></proof>
<proof prover="5"><result status="valid" time="0.01"/></proof>
<proof prover="6"><result status="valid" time="0.02"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="8"><result status="valid" time="0.02" steps="6"/></proof>
<goal name="VC search_rec.11" expl="11. postcondition">
<proof prover="9"><result status="valid" time="0.00" steps="5"/></proof>
</goal>
</transf>
</goal>

Binary file not shown.