Commit 9ddbd8d7 authored by MARCHE Claude's avatar MARCHE Claude
Browse files

Update sessions: enforce Alt-Ergo 0.95.2 in some use of why3 Coq tactic

parent df3b3fe9
......@@ -4,8 +4,8 @@
<why3session shape_version="4">
<prover id="0" name="CVC4" version="1.2" timelimit="30" memlimit="4000"/>
<prover id="1" name="Coq" version="8.4pl4" timelimit="5" memlimit="1000"/>
<prover id="2" name="Alt-Ergo" version="0.95.1" timelimit="5" memlimit="1000"/>
<prover id="3" name="CVC3" version="2.4.1" timelimit="5" memlimit="1000"/>
<prover id="2" name="CVC3" version="2.4.1" timelimit="5" memlimit="1000"/>
<prover id="3" name="Alt-Ergo" version="0.95.1" timelimit="5" memlimit="1000"/>
<prover id="4" name="Z3" version="2.19" timelimit="3" memlimit="1000"/>
<prover id="5" name="CVC4" version="1.4" timelimit="5" memlimit="1000"/>
<prover id="6" name="Z3" version="4.3.1" timelimit="5" memlimit="1000"/>
......@@ -16,28 +16,28 @@
<file name="../bitvector.why" expanded="true">
<theory name="BitVector" sum="c987a49d4811dbdbdb5f642ae8b291d3" expanded="true">
<goal name="Nth_bw_xor_v1true">
<proof prover="2"><result status="valid" time="0.10" steps="85"/></proof>
<proof prover="3"><result status="valid" time="0.01"/></proof>
<proof prover="2"><result status="valid" time="0.01"/></proof>
<proof prover="3"><result status="valid" time="0.10" steps="85"/></proof>
<proof prover="5"><result status="valid" time="0.02"/></proof>
<proof prover="7"><result status="valid" time="0.01"/></proof>
<proof prover="9"><result status="valid" time="0.15" steps="85"/></proof>
</goal>
<goal name="Nth_bw_xor_v1false">
<proof prover="3"><result status="valid" time="0.00"/></proof>
<proof prover="2"><result status="valid" time="0.00"/></proof>
<proof prover="5"><result status="valid" time="0.04"/></proof>
<proof prover="7"><result status="valid" time="0.00"/></proof>
<proof prover="9"><result status="valid" time="0.14" steps="87"/></proof>
</goal>
<goal name="Nth_bw_xor_v2true">
<proof prover="2"><result status="valid" time="0.07" steps="82"/></proof>
<proof prover="3"><result status="valid" time="0.02"/></proof>
<proof prover="2"><result status="valid" time="0.02"/></proof>
<proof prover="3"><result status="valid" time="0.07" steps="82"/></proof>
<proof prover="5"><result status="valid" time="0.03"/></proof>
<proof prover="7"><result status="valid" time="0.01"/></proof>
<proof prover="9"><result status="valid" time="0.04" steps="82"/></proof>
</goal>
<goal name="Nth_bw_xor_v2false">
<proof prover="2"><result status="valid" time="0.06" steps="80"/></proof>
<proof prover="3"><result status="valid" time="0.01"/></proof>
<proof prover="2"><result status="valid" time="0.01"/></proof>
<proof prover="3"><result status="valid" time="0.06" steps="80"/></proof>
<proof prover="5"><result status="valid" time="0.03"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="9"><result status="valid" time="0.08" steps="80"/></proof>
......@@ -63,50 +63,49 @@
<proof prover="9"><result status="timeout" time="4.97"/></proof>
</goal>
<goal name="nth_from_int_low_even">
<proof prover="2"><result status="valid" time="0.02" steps="70"/></proof>
<proof prover="3"><result status="valid" time="0.07"/></proof>
<proof prover="2"><result status="valid" time="0.07"/></proof>
<proof prover="3"><result status="valid" time="0.02" steps="70"/></proof>
<proof prover="5"><result status="valid" time="0.06"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="9"><result status="valid" time="0.04" steps="70"/></proof>
</goal>
<goal name="nth_from_int_low_odd">
<proof prover="2"><result status="valid" time="0.02" steps="70"/></proof>
<proof prover="3"><result status="valid" time="0.07"/></proof>
<proof prover="2"><result status="valid" time="0.07"/></proof>
<proof prover="3"><result status="valid" time="0.02" steps="70"/></proof>
<proof prover="5"><result status="valid" time="0.07"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="9"><result status="valid" time="0.04" steps="70"/></proof>
</goal>
<goal name="nth_from_int_0">
<proof prover="2"><result status="valid" time="0.16" steps="80"/></proof>
<proof prover="3"><result status="valid" time="0.13"/></proof>
<proof prover="2"><result status="valid" time="0.13"/></proof>
<proof prover="3"><result status="valid" time="0.16" steps="80"/></proof>
<proof prover="5"><result status="valid" time="0.07"/></proof>
<proof prover="7"><result status="valid" time="0.03"/></proof>
<proof prover="9"><result status="valid" time="0.29" steps="80"/></proof>
</goal>
<goal name="nth_from_int2c_low_even">
<proof prover="2"><result status="valid" time="0.08" steps="72"/></proof>
<proof prover="3"><result status="valid" time="0.08"/></proof>
<proof prover="2"><result status="valid" time="0.08"/></proof>
<proof prover="3"><result status="valid" time="0.08" steps="72"/></proof>
<proof prover="5"><result status="valid" time="0.08"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="9"><result status="valid" time="0.05" steps="72"/></proof>
</goal>
<goal name="nth_from_int2c_low_odd">
<proof prover="2"><result status="valid" time="0.07" steps="72"/></proof>
<proof prover="3"><result status="valid" time="0.12"/></proof>
<proof prover="2"><result status="valid" time="0.12"/></proof>
<proof prover="3"><result status="valid" time="0.07" steps="72"/></proof>
<proof prover="5"><result status="valid" time="0.07"/></proof>
<proof prover="7"><result status="valid" time="0.02"/></proof>
<proof prover="9"><result status="valid" time="0.04" steps="72"/></proof>
</goal>
<goal name="nth_from_int2c_0">
<proof prover="2"><result status="valid" time="0.23" steps="83"/></proof>
<proof prover="3"><result status="valid" time="0.13"/></proof>
<proof prover="2"><result status="valid" time="0.13"/></proof>
<proof prover="3"><result status="valid" time="0.23" steps="83"/></proof>
<proof prover="5"><result status="timeout" time="4.99"/></proof>
<proof prover="7"><result status="valid" time="0.03"/></proof>
<proof prover="9"><result status="valid" time="0.44" steps="83"/></proof>
</goal>
<goal name="nth_from_int2c_plus_pow2">
<proof prover="1" timelimit="10" edited="bitvector_BitVector_nth_from_int2c_plus_pow2_1.v"><result status="valid" time="2.11"/></proof>
<proof prover="2"><result status="valid" time="0.94" steps="120"/></proof>
<proof prover="5"><result status="valid" time="0.08"/></proof>
<proof prover="9"><result status="valid" time="1.26" steps="120"/></proof>
</goal>
......@@ -120,8 +119,8 @@
<theory name="TestBv32" sum="9674a66038630320e8dcfbf55092b81b" expanded="true">
<goal name="Test1">
<proof prover="0"><result status="valid" time="0.04"/></proof>
<proof prover="2"><result status="valid" time="0.12" steps="73"/></proof>
<proof prover="3" timelimit="3"><result status="valid" time="0.07"/></proof>
<proof prover="2" timelimit="3"><result status="valid" time="0.07"/></proof>
<proof prover="3"><result status="valid" time="0.12" steps="73"/></proof>
<proof prover="4"><result status="valid" time="0.85"/></proof>
<proof prover="5"><result status="valid" time="0.04"/></proof>
<proof prover="6"><result status="valid" time="1.11"/></proof>
......@@ -130,8 +129,8 @@
</goal>
<goal name="Test2">
<proof prover="0"><result status="valid" time="0.05"/></proof>
<proof prover="2"><result status="valid" time="0.03" steps="74"/></proof>
<proof prover="3" timelimit="3"><result status="valid" time="0.06"/></proof>
<proof prover="2" timelimit="3"><result status="valid" time="0.06"/></proof>
<proof prover="3"><result status="valid" time="0.03" steps="74"/></proof>
<proof prover="4"><result status="valid" time="0.79"/></proof>
<proof prover="5"><result status="valid" time="0.04"/></proof>
<proof prover="6"><result status="valid" time="1.00"/></proof>
......@@ -140,8 +139,8 @@
</goal>
<goal name="Test3">
<proof prover="0"><result status="valid" time="0.04"/></proof>
<proof prover="2"><result status="valid" time="0.02" steps="66"/></proof>
<proof prover="3" timelimit="3"><result status="valid" time="0.02"/></proof>
<proof prover="2" timelimit="3"><result status="valid" time="0.02"/></proof>
<proof prover="3"><result status="valid" time="0.02" steps="66"/></proof>
<proof prover="4"><result status="valid" time="0.10"/></proof>
<proof prover="5"><result status="valid" time="0.04"/></proof>
<proof prover="6"><result status="valid" time="0.12"/></proof>
......@@ -151,8 +150,8 @@
</goal>
<goal name="Test4">
<proof prover="0"><result status="valid" time="0.06"/></proof>
<proof prover="2"><result status="valid" time="0.02" steps="71"/></proof>
<proof prover="3" timelimit="3"><result status="valid" time="0.07"/></proof>
<proof prover="2" timelimit="3"><result status="valid" time="0.07"/></proof>
<proof prover="3"><result status="valid" time="0.02" steps="71"/></proof>
<proof prover="4"><result status="valid" time="0.81"/></proof>
<proof prover="5"><result status="valid" time="0.04"/></proof>
<proof prover="6"><result status="valid" time="0.98"/></proof>
......@@ -161,8 +160,8 @@
</goal>
<goal name="Test5">
<proof prover="0"><result status="valid" time="0.05"/></proof>
<proof prover="2"><result status="valid" time="0.03" steps="71"/></proof>
<proof prover="3" timelimit="3"><result status="valid" time="0.07"/></proof>
<proof prover="2" timelimit="3"><result status="valid" time="0.07"/></proof>
<proof prover="3"><result status="valid" time="0.03" steps="71"/></proof>
<proof prover="4"><result status="valid" time="0.79"/></proof>
<proof prover="5"><result status="valid" time="0.04"/></proof>
<proof prover="6"><result status="valid" time="1.10"/></proof>
......@@ -171,8 +170,8 @@
</goal>
<goal name="Test6">
<proof prover="0"><result status="valid" time="0.05"/></proof>
<proof prover="2"><result status="valid" time="0.07" steps="71"/></proof>
<proof prover="3" timelimit="3"><result status="valid" time="0.07"/></proof>
<proof prover="2" timelimit="3"><result status="valid" time="0.07"/></proof>
<proof prover="3"><result status="valid" time="0.07" steps="71"/></proof>
<proof prover="4"><result status="valid" time="0.79"/></proof>
<proof prover="5"><result status="valid" time="0.05"/></proof>
<proof prover="6"><result status="valid" time="1.03"/></proof>
......@@ -182,8 +181,8 @@
</goal>
<goal name="to_nat_0x00000000">
<proof prover="0"><result status="valid" time="0.06"/></proof>
<proof prover="2"><result status="valid" time="0.05" steps="80"/></proof>
<proof prover="3" timelimit="3"><result status="valid" time="0.12"/></proof>
<proof prover="2" timelimit="3"><result status="valid" time="0.12"/></proof>
<proof prover="3"><result status="valid" time="0.05" steps="80"/></proof>
<proof prover="4"><result status="valid" time="0.79"/></proof>
<proof prover="5"><result status="valid" time="0.05"/></proof>
<proof prover="6"><result status="valid" time="1.02"/></proof>
......@@ -284,8 +283,8 @@
</goal>
<goal name="to_nat_0xFFFFFFFF">
<proof prover="0"><result status="valid" time="0.05"/></proof>
<proof prover="2"><result status="valid" time="0.04" steps="80"/></proof>
<proof prover="3" timelimit="3"><result status="valid" time="0.12"/></proof>
<proof prover="2" timelimit="3"><result status="valid" time="0.12"/></proof>
<proof prover="3"><result status="valid" time="0.04" steps="80"/></proof>
<proof prover="5"><result status="valid" time="0.05"/></proof>
<proof prover="7" timelimit="3"><result status="valid" time="0.03"/></proof>
<proof prover="9"><result status="valid" time="0.15" steps="80"/></proof>
......
......@@ -152,15 +152,19 @@ Axiom pow2_62 : ((pow2 62%Z) = 4611686018427387904%Z).
Axiom pow2_63 : ((pow2 63%Z) = 9223372036854775808%Z).
Axiom Div_double : forall (x:Z) (y:Z), (((0%Z < y)%Z /\ (y <= x)%Z) /\
(x < (2%Z * y)%Z)%Z) -> ((int.EuclideanDivision.div x y) = 1%Z).
Axiom Div_mult_inst : forall (x:Z) (z:Z), (0%Z < x)%Z ->
((int.EuclideanDivision.div ((x * 1%Z)%Z + z)%Z
x) = (1%Z + (int.EuclideanDivision.div z x))%Z).
Axiom Div_double : forall (x:Z) (y:Z), ((0%Z < y)%Z /\ ((y <= x)%Z /\
(x < (2%Z * y)%Z)%Z)) -> ((int.EuclideanDivision.div x y) = 1%Z).
Axiom Div_pow : forall (x:Z) (i:Z), (0%Z < i)%Z ->
((((pow2 (i - 1%Z)%Z) <= x)%Z /\ (x < (pow2 i))%Z) ->
((int.EuclideanDivision.div x (pow2 (i - 1%Z)%Z)) = 1%Z)).
Axiom Div_double_neg : forall (x:Z) (y:Z), (((((-2%Z)%Z * y)%Z <= x)%Z /\
(x < (-y)%Z)%Z) /\ ((-y)%Z < 0%Z)%Z) -> ((int.EuclideanDivision.div x
Axiom Div_double_neg : forall (x:Z) (y:Z), ((((-2%Z)%Z * y)%Z <= x)%Z /\
((x < (-y)%Z)%Z /\ ((-y)%Z < 0%Z)%Z)) -> ((int.EuclideanDivision.div x
y) = (-2%Z)%Z).
Axiom Div_pow2 : forall (x:Z) (i:Z), (0%Z < i)%Z ->
......@@ -188,7 +192,7 @@ Axiom Power_s_all : forall (n:Z),
Axiom Power_p_all : forall (n:Z),
((pow21 (n - 1%Z)%Z) = ((05 / 10)%R * (pow21 n))%R).
Axiom Power_1_2 : ((05 / 10)%R = (Rdiv 1%R 2%R)%R).
Axiom Power_1_2 : ((05 / 10)%R = (1%R / 2%R)%R).
Axiom Power_11 : ((pow21 1%Z) = 2%R).
......@@ -197,11 +201,11 @@ Axiom Power_neg1 : ((pow21 (-1%Z)%Z) = (05 / 10)%R).
Axiom Power_non_null_aux : forall (n:Z), (0%Z <= n)%Z -> ~ ((pow21 n) = 0%R).
Axiom Power_neg_aux : forall (n:Z), (0%Z <= n)%Z ->
((pow21 (-n)%Z) = (Rdiv 1%R (pow21 n))%R).
((pow21 (-n)%Z) = (1%R / (pow21 n))%R).
Axiom Power_non_null : forall (n:Z), ~ ((pow21 n) = 0%R).
Axiom Power_neg : forall (n:Z), ((pow21 (-n)%Z) = (Rdiv 1%R (pow21 n))%R).
Axiom Power_neg : forall (n:Z), ((pow21 (-n)%Z) = (1%R / (pow21 n))%R).
Axiom Power_sum_aux : forall (n:Z) (m:Z), (0%Z <= m)%Z ->
((pow21 (n + m)%Z) = ((pow21 n) * (pow21 m))%R).
......@@ -210,7 +214,7 @@ Axiom Power_sum1 : forall (n:Z) (m:Z),
((pow21 (n + m)%Z) = ((pow21 n) * (pow21 m))%R).
Axiom Pow2_int_real : forall (x:Z), (0%Z <= x)%Z ->
((pow21 x) = (IZR (pow2 x))).
((pow21 x) = (Reals.Raxioms.IZR (pow2 x))).
Axiom size_positive : (1%Z < 32%Z)%Z.
......@@ -239,21 +243,24 @@ Axiom extensionality : forall (v1:bv) (v2:bv), (eq v1 v2) -> (v1 = v2).
Parameter bw_and: bv -> bv -> bv.
Axiom Nth_bw_and : forall (v1:bv) (v2:bv) (n:Z), ((0%Z <= n)%Z /\
(n < 32%Z)%Z) -> ((nth (bw_and v1 v2) n) = (andb (nth v1 n) (nth v2 n))).
(n < 32%Z)%Z) -> ((nth (bw_and v1 v2) n) = (Init.Datatypes.andb (nth v1
n) (nth v2 n))).
Parameter bw_or: bv -> bv -> bv.
Axiom Nth_bw_or : forall (v1:bv) (v2:bv) (n:Z), ((0%Z <= n)%Z /\
(n < 32%Z)%Z) -> ((nth (bw_or v1 v2) n) = (orb (nth v1 n) (nth v2 n))).
(n < 32%Z)%Z) -> ((nth (bw_or v1 v2) n) = (Init.Datatypes.orb (nth v1
n) (nth v2 n))).
Parameter bw_xor: bv -> bv -> bv.
Axiom Nth_bw_xor : forall (v1:bv) (v2:bv) (n:Z), ((0%Z <= n)%Z /\
(n < 32%Z)%Z) -> ((nth (bw_xor v1 v2) n) = (xorb (nth v1 n) (nth v2 n))).
(n < 32%Z)%Z) -> ((nth (bw_xor v1 v2) n) = (Init.Datatypes.xorb (nth v1
n) (nth v2 n))).
Axiom Nth_bw_xor_v1true : forall (v1:bv) (v2:bv) (n:Z), (((0%Z <= n)%Z /\
(n < 32%Z)%Z) /\ ((nth v1 n) = true)) -> ((nth (bw_xor v1 v2)
n) = (negb (nth v2 n))).
n) = (Init.Datatypes.negb (nth v2 n))).
Axiom Nth_bw_xor_v1false : forall (v1:bv) (v2:bv) (n:Z), (((0%Z <= n)%Z /\
(n < 32%Z)%Z) /\ ((nth v1 n) = false)) -> ((nth (bw_xor v1 v2) n) = (nth v2
......@@ -261,7 +268,7 @@ Axiom Nth_bw_xor_v1false : forall (v1:bv) (v2:bv) (n:Z), (((0%Z <= n)%Z /\
Axiom Nth_bw_xor_v2true : forall (v1:bv) (v2:bv) (n:Z), (((0%Z <= n)%Z /\
(n < 32%Z)%Z) /\ ((nth v2 n) = true)) -> ((nth (bw_xor v1 v2)
n) = (negb (nth v1 n))).
n) = (Init.Datatypes.negb (nth v1 n))).
Axiom Nth_bw_xor_v2false : forall (v1:bv) (v2:bv) (n:Z), (((0%Z <= n)%Z /\
(n < 32%Z)%Z) /\ ((nth v2 n) = false)) -> ((nth (bw_xor v1 v2) n) = (nth v1
......@@ -270,7 +277,7 @@ Axiom Nth_bw_xor_v2false : forall (v1:bv) (v2:bv) (n:Z), (((0%Z <= n)%Z /\
Parameter bw_not: bv -> bv.
Axiom Nth_bw_not : forall (v:bv) (n:Z), ((0%Z <= n)%Z /\ (n < 32%Z)%Z) ->
((nth (bw_not v) n) = (negb (nth v n))).
((nth (bw_not v) n) = (Init.Datatypes.negb (nth v n))).
Parameter lsr: bv -> Z -> bv.
......@@ -304,19 +311,19 @@ Axiom lsl_nth_low : forall (b:bv) (n:Z) (s:Z), ((0%Z <= n)%Z /\
Parameter to_nat_sub: bv -> Z -> Z -> Z.
Axiom to_nat_sub_zero : forall (b:bv) (j:Z) (i:Z), (((0%Z <= i)%Z /\
(i <= j)%Z) /\ (j < 32%Z)%Z) -> (((nth b j) = false) -> ((to_nat_sub b j
Axiom to_nat_sub_zero : forall (b:bv) (j:Z) (i:Z), ((0%Z <= i)%Z /\
((i <= j)%Z /\ (j < 32%Z)%Z)) -> (((nth b j) = false) -> ((to_nat_sub b j
i) = (to_nat_sub b (j - 1%Z)%Z i))).
Axiom to_nat_sub_one : forall (b:bv) (j:Z) (i:Z), (((0%Z <= i)%Z /\
(i <= j)%Z) /\ (j < 32%Z)%Z) -> (((nth b j) = true) -> ((to_nat_sub b j
Axiom to_nat_sub_one : forall (b:bv) (j:Z) (i:Z), ((0%Z <= i)%Z /\
((i <= j)%Z /\ (j < 32%Z)%Z)) -> (((nth b j) = true) -> ((to_nat_sub b j
i) = ((pow2 (j - i)%Z) + (to_nat_sub b (j - 1%Z)%Z i))%Z)).
Axiom to_nat_sub_high : forall (b:bv) (j:Z) (i:Z), (j < i)%Z ->
((to_nat_sub b j i) = 0%Z).
Axiom to_nat_of_zero2 : forall (b:bv) (i:Z) (j:Z), (((j < 32%Z)%Z /\
(i <= j)%Z) /\ (0%Z <= i)%Z) -> ((forall (k:Z), ((k <= j)%Z /\
Axiom to_nat_of_zero2 : forall (b:bv) (i:Z) (j:Z), ((j < 32%Z)%Z /\
((i <= j)%Z /\ (0%Z <= i)%Z)) -> ((forall (k:Z), ((k <= j)%Z /\
(i < k)%Z) -> ((nth b k) = false)) -> ((to_nat_sub b j 0%Z) = (to_nat_sub b
i 0%Z))).
......@@ -324,8 +331,8 @@ Axiom to_nat_of_zero : forall (b:bv) (i:Z) (j:Z), ((j < 32%Z)%Z /\
(0%Z <= i)%Z) -> ((forall (k:Z), ((k <= j)%Z /\ (i <= k)%Z) -> ((nth b
k) = false)) -> ((to_nat_sub b j i) = 0%Z)).
Axiom to_nat_of_one : forall (b:bv) (i:Z) (j:Z), (((j < 32%Z)%Z /\
(i <= j)%Z) /\ (0%Z <= i)%Z) -> ((forall (k:Z), ((k <= j)%Z /\
Axiom to_nat_of_one : forall (b:bv) (i:Z) (j:Z), ((j < 32%Z)%Z /\
((i <= j)%Z /\ (0%Z <= i)%Z)) -> ((forall (k:Z), ((k <= j)%Z /\
(i <= k)%Z) -> ((nth b k) = true)) -> ((to_nat_sub b j
i) = ((pow2 ((j - i)%Z + 1%Z)%Z) - 1%Z)%Z)).
......@@ -413,23 +420,24 @@ Axiom extensionality1 : forall (v1:bv1) (v2:bv1), (eq1 v1 v2) -> (v1 = v2).
Parameter bw_and1: bv1 -> bv1 -> bv1.
Axiom Nth_bw_and1 : forall (v1:bv1) (v2:bv1) (n:Z), ((0%Z <= n)%Z /\
(n < 64%Z)%Z) -> ((nth1 (bw_and1 v1 v2) n) = (andb (nth1 v1 n) (nth1 v2
n))).
(n < 64%Z)%Z) -> ((nth1 (bw_and1 v1 v2) n) = (Init.Datatypes.andb (nth1 v1
n) (nth1 v2 n))).
Parameter bw_or1: bv1 -> bv1 -> bv1.
Axiom Nth_bw_or1 : forall (v1:bv1) (v2:bv1) (n:Z), ((0%Z <= n)%Z /\
(n < 64%Z)%Z) -> ((nth1 (bw_or1 v1 v2) n) = (orb (nth1 v1 n) (nth1 v2 n))).
(n < 64%Z)%Z) -> ((nth1 (bw_or1 v1 v2) n) = (Init.Datatypes.orb (nth1 v1
n) (nth1 v2 n))).
Parameter bw_xor1: bv1 -> bv1 -> bv1.
Axiom Nth_bw_xor1 : forall (v1:bv1) (v2:bv1) (n:Z), ((0%Z <= n)%Z /\
(n < 64%Z)%Z) -> ((nth1 (bw_xor1 v1 v2) n) = (xorb (nth1 v1 n) (nth1 v2
n))).
(n < 64%Z)%Z) -> ((nth1 (bw_xor1 v1 v2) n) = (Init.Datatypes.xorb (nth1 v1
n) (nth1 v2 n))).
Axiom Nth_bw_xor_v1true1 : forall (v1:bv1) (v2:bv1) (n:Z), (((0%Z <= n)%Z /\
(n < 64%Z)%Z) /\ ((nth1 v1 n) = true)) -> ((nth1 (bw_xor1 v1 v2)
n) = (negb (nth1 v2 n))).
n) = (Init.Datatypes.negb (nth1 v2 n))).
Axiom Nth_bw_xor_v1false1 : forall (v1:bv1) (v2:bv1) (n:Z), (((0%Z <= n)%Z /\
(n < 64%Z)%Z) /\ ((nth1 v1 n) = false)) -> ((nth1 (bw_xor1 v1 v2)
......@@ -437,7 +445,7 @@ Axiom Nth_bw_xor_v1false1 : forall (v1:bv1) (v2:bv1) (n:Z), (((0%Z <= n)%Z /\
Axiom Nth_bw_xor_v2true1 : forall (v1:bv1) (v2:bv1) (n:Z), (((0%Z <= n)%Z /\
(n < 64%Z)%Z) /\ ((nth1 v2 n) = true)) -> ((nth1 (bw_xor1 v1 v2)
n) = (negb (nth1 v1 n))).
n) = (Init.Datatypes.negb (nth1 v1 n))).
Axiom Nth_bw_xor_v2false1 : forall (v1:bv1) (v2:bv1) (n:Z), (((0%Z <= n)%Z /\
(n < 64%Z)%Z) /\ ((nth1 v2 n) = false)) -> ((nth1 (bw_xor1 v1 v2)
......@@ -446,7 +454,7 @@ Axiom Nth_bw_xor_v2false1 : forall (v1:bv1) (v2:bv1) (n:Z), (((0%Z <= n)%Z /\
Parameter bw_not1: bv1 -> bv1.
Axiom Nth_bw_not1 : forall (v:bv1) (n:Z), ((0%Z <= n)%Z /\ (n < 64%Z)%Z) ->
((nth1 (bw_not1 v) n) = (negb (nth1 v n))).
((nth1 (bw_not1 v) n) = (Init.Datatypes.negb (nth1 v n))).
Parameter lsr1: bv1 -> Z -> bv1.
......@@ -480,19 +488,19 @@ Axiom lsl_nth_low1 : forall (b:bv1) (n:Z) (s:Z), ((0%Z <= n)%Z /\
Parameter to_nat_sub1: bv1 -> Z -> Z -> Z.
Axiom to_nat_sub_zero1 : forall (b:bv1) (j:Z) (i:Z), (((0%Z <= i)%Z /\
(i <= j)%Z) /\ (j < 64%Z)%Z) -> (((nth1 b j) = false) -> ((to_nat_sub1 b j
Axiom to_nat_sub_zero1 : forall (b:bv1) (j:Z) (i:Z), ((0%Z <= i)%Z /\
((i <= j)%Z /\ (j < 64%Z)%Z)) -> (((nth1 b j) = false) -> ((to_nat_sub1 b j
i) = (to_nat_sub1 b (j - 1%Z)%Z i))).
Axiom to_nat_sub_one1 : forall (b:bv1) (j:Z) (i:Z), (((0%Z <= i)%Z /\
(i <= j)%Z) /\ (j < 64%Z)%Z) -> (((nth1 b j) = true) -> ((to_nat_sub1 b j
Axiom to_nat_sub_one1 : forall (b:bv1) (j:Z) (i:Z), ((0%Z <= i)%Z /\
((i <= j)%Z /\ (j < 64%Z)%Z)) -> (((nth1 b j) = true) -> ((to_nat_sub1 b j
i) = ((pow2 (j - i)%Z) + (to_nat_sub1 b (j - 1%Z)%Z i))%Z)).
Axiom to_nat_sub_high1 : forall (b:bv1) (j:Z) (i:Z), (j < i)%Z ->
((to_nat_sub1 b j i) = 0%Z).
Axiom to_nat_of_zero21 : forall (b:bv1) (i:Z) (j:Z), (((j < 64%Z)%Z /\
(i <= j)%Z) /\ (0%Z <= i)%Z) -> ((forall (k:Z), ((k <= j)%Z /\
Axiom to_nat_of_zero21 : forall (b:bv1) (i:Z) (j:Z), ((j < 64%Z)%Z /\
((i <= j)%Z /\ (0%Z <= i)%Z)) -> ((forall (k:Z), ((k <= j)%Z /\
(i < k)%Z) -> ((nth1 b k) = false)) -> ((to_nat_sub1 b j
0%Z) = (to_nat_sub1 b i 0%Z))).
......@@ -500,8 +508,8 @@ Axiom to_nat_of_zero1 : forall (b:bv1) (i:Z) (j:Z), ((j < 64%Z)%Z /\
(0%Z <= i)%Z) -> ((forall (k:Z), ((k <= j)%Z /\ (i <= k)%Z) -> ((nth1 b
k) = false)) -> ((to_nat_sub1 b j i) = 0%Z)).
Axiom to_nat_of_one1 : forall (b:bv1) (i:Z) (j:Z), (((j < 64%Z)%Z /\
(i <= j)%Z) /\ (0%Z <= i)%Z) -> ((forall (k:Z), ((k <= j)%Z /\
Axiom to_nat_of_one1 : forall (b:bv1) (i:Z) (j:Z), ((j < 64%Z)%Z /\
((i <= j)%Z /\ (0%Z <= i)%Z)) -> ((forall (k:Z), ((k <= j)%Z /\
(i <= k)%Z) -> ((nth1 b k) = true)) -> ((to_nat_sub1 b j
i) = ((pow2 ((j - i)%Z + 1%Z)%Z) - 1%Z)%Z)).
......@@ -590,7 +598,7 @@ Axiom sign_of_double_negative : forall (b:bv1), ((nth1 b 63%Z) = true) ->
Axiom double_of_bv64_value : forall (b:bv1), ((0%Z < (to_nat_sub1 b 62%Z
52%Z))%Z /\ ((to_nat_sub1 b 62%Z 52%Z) < 2047%Z)%Z) ->
((double_of_bv64 b) = (((sign_value (nth1 b 63%Z)) * (pow21 ((to_nat_sub1 b
62%Z 52%Z) - 1023%Z)%Z))%R * (1%R + ((IZR (to_nat_sub1 b 51%Z
62%Z 52%Z) - 1023%Z)%Z))%R * (1%R + ((Reals.Raxioms.IZR (to_nat_sub1 b 51%Z
0%Z)) * (pow21 (-52%Z)%Z))%R)%R)%R).
Axiom nth_j1 : forall (i:Z), ((0%Z <= i)%Z /\ (i <= 19%Z)%Z) ->
......@@ -667,7 +675,7 @@ Axiom mantissa_const_to_nat51 : ((to_nat_sub1 (concat (from_int 1127219200%Z)
Axiom mantissa_const : ((to_nat_sub1 (concat (from_int 1127219200%Z)
(from_int 2147483648%Z)) 51%Z 0%Z) = (pow2 31%Z)).
Axiom real1075m1023 : ((IZR (1075%Z - 1023%Z)%Z) = 52%R).
Axiom real1075m1023 : ((Reals.Raxioms.IZR (1075%Z - 1023%Z)%Z) = 52%R).
Axiom real1075m1023_2 : ((1075%R - 1023%R)%R = 52%R).
......@@ -702,7 +710,7 @@ Axiom nth_jpxor_0_30 : forall (x:Z), forall (i:Z), ((is_int32 x) /\
i) = (nth (from_int2c x) i)).
Axiom nth_var31 : forall (x:Z), ((nth (jpxor x)
31%Z) = (negb (nth (from_int2c x) 31%Z))).
31%Z) = (Init.Datatypes.negb (nth (from_int2c x) 31%Z))).
Axiom to_nat_sub_0_30 : forall (x:Z), (is_int32 x) ->
((to_nat_sub (bw_xor (from_int 2147483648%Z) (from_int2c x)) 30%Z
......@@ -752,7 +760,7 @@ Axiom nth_var3 : forall (x:Z) (i:Z), ((is_int32 x) /\ ((32%Z <= i)%Z /\
Open Scope Z_scope.
Require Import Why3.
Ltac ae := why3 "alt-ergo" timelimit 30.
Ltac ae := why3 "Alt-Ergo,0.95.2," timelimit 30.
(* Why3 goal *)
Theorem lemma2 : forall (x:Z), (is_int32 x) -> ((to_nat_sub1 (var x) 51%Z
......@@ -764,4 +772,3 @@ ae.
ae.
Qed.
......@@ -11,66 +11,66 @@
<prover id="6" name="Gappa" version="1.1.1" timelimit="5" memlimit="1000"/>
<prover id="7" name="Alt-Ergo" version="0.95.2" timelimit="3" memlimit="1000"/>
<file name="../double_of_int.why" expanded="true">
<theory name="DoubleOfInt" sum="51a02b8d5eabcefc93d0fa4ead59f4f6" expanded="true">
<goal name="nth_j1" expanded="true">
<theory name="DoubleOfInt" sum="51a02b8d5eabcefc93d0fa4ead59f4f6">
<goal name="nth_j1">
<proof prover="7" timelimit="5"><result status="valid" time="0.41" steps="115"/></proof>
</goal>
<goal name="nth_j2" expanded="true">
<goal name="nth_j2">
<proof prover="7" timelimit="5"><result status="valid" time="0.24" steps="113"/></proof>
</goal>
<goal name="nth_j3" expanded="true">
<goal name="nth_j3">
<proof prover="7" timelimit="5"><result status="valid" time="0.40" steps="116"/></proof>
</goal>
<goal name="nth_j4" expanded="true">
<goal name="nth_j4">
<proof prover="7" timelimit="5"><result status="valid" time="0.24" steps="113"/></proof>
</goal>
<goal name="nth_j5" expanded="true">
<goal name="nth_j5">
<proof prover="7" timelimit="5"><result status="valid" time="0.40" steps="116"/></proof>
</goal>
<goal name="nth_j6" expanded="true">
<goal name="nth_j6">
<proof prover="7" timelimit="5"><result status="valid" time="0.11" steps="102"/></proof>
</goal>
<goal name="nth_j7" expanded="true">
<goal name="nth_j7">
<proof prover="7" timelimit="5"><result status="valid" time="0.25" steps="112"/></proof>
</goal>
<goal name="jp0_30" expanded="true">
<goal name="jp0_30">
<proof prover="7"><result status="valid" time="0.53" steps="124"/></proof>
</goal>
<goal name="nth_const1" expanded="true">
<goal name="nth_const1">
<proof prover="7" timelimit="60"><result status="valid" time="3.25" steps="258"/></proof>
</goal>
<goal name="nth_const2" expanded="true">
<goal name="nth_const2">
<proof prover="7" timelimit="60"><result status="valid" time="1.49" steps="254"/></proof>
</goal>
<goal name="nth_const3" expanded="true">
<goal name="nth_const3">
<proof prover="1"><result status="valid" time="0.06"/></proof>
<proof prover="7" timelimit="60"><result status="valid" time="0.08" steps="98"/></proof>
</goal>
<goal name="nth_const4" expanded="true">
<goal name="nth_const4">
<proof prover="1"><result status="valid" time="0.06"/></proof>
<proof prover="7" timelimit="60"><result status="valid" time="0.07" steps="99"/></proof>
</goal>
<goal name="nth_const5" expanded="true">
<goal name="nth_const5">
<proof prover="1"><result status="valid" time="0.06"/></proof>
<proof prover="7" timelimit="60"><result status="valid" time="0.07" steps="99"/></proof>
</goal>
<goal name="nth_const6" expanded="true">
<goal name="nth_const6">
<proof prover="1"><result status="valid" time="0.06"/></proof>
<proof prover="7" timelimit="60"><result status="valid" time="0.10" steps="99"/></proof>
</goal>
<goal name="nth_const7" expanded="true">
<goal name="nth_const7">
<proof prover="1"><result status="valid" time="0.06"/></proof>
<proof prover="7" timelimit="60"><result status="valid" time="0.06" steps="99"/></proof>
</goal>
<goal name="nth_const8" expanded="true">
<goal name="nth_const8">
<proof prover="1"><result status="valid" time="0.05"/></proof>
<proof prover="7" timelimit="60"><result status="valid" time="0.04" steps="78"/></proof>
</goal>
<goal name="nth_const9" expanded="true">
<goal name="nth_const9">
<proof prover="1"><result status="valid" time="0.05"/></proof>