Commit 017817c8 authored by Thi-Minh-Tuyen Nguyen's avatar Thi-Minh-Tuyen Nguyen Committed by ntmtuyen

add *.v

parent fc2bc72c
......@@ -95,12 +95,16 @@ theory Pow2real
lemma Power_p_all : forall n:int. pow2 (n-1) = 0.5 *. pow2 n
lemma Power_1_2: 0.5 = 1.0 /. 2.0
lemma Power_1 : pow2 1 = 2.0
lemma Power_neg1 : pow2 (-1) = 0.5
lemma Power_non_null_aux: forall n:int.n>=0 -> pow2 n <> 0.0
lemma Power_non_null: forall n:int. pow2 n <> 0.0
lemma Power_neg_aux : forall n:int. n>=0 ->pow2 (-n) = 1.0 /. pow2 n
lemma Power_neg : forall n:int. pow2 (-n) = 1.0 /. pow2 n
lemma Power_sum_aux : forall n m: int. m >= 0 -> pow2 (n+m) = pow2 n *. pow2 m
......
......@@ -343,6 +343,19 @@ rewrite Power_0;auto with zarith.
replace (x) with (x-1+1) by omega.
rewrite Power_s;auto with *.
Require Export ZArith Classical_Prop.
Open Scope Z_scope.
Lemma Zmult_neq_0_compat : forall (x y : Z), x <> 0 -> y <> 0 -> x * y <> 0.
Proof.
intros x y Hx Hy Hxy.
apply (@absurd (x = 0 \/ y = 0)).
apply Zmult_integral, Hxy.
apply and_not_or ; intuition.
Qed.
apply Zmult_neq_0_compat.
auto with zarith.
apply Hind;auto with zarith.
Qed.
(* DO NOT EDIT BELOW *)
......
(* This file is generated by Why3's Coq driver *)
(* Beware! Only edit allowed sections below *)
Require Import ZArith.
Require Import Rbase.
Parameter pow2: Z -> R.
Axiom Power_0 : ((pow2 0%Z) = 1%R).
Axiom Power_s : forall (n:Z), (0%Z <= n)%Z ->
((pow2 (n + 1%Z)%Z) = (2%R * (pow2 n))%R).
Axiom Power_p : forall (n:Z), (n <= 0%Z)%Z ->
((pow2 (n - 1%Z)%Z) = ((05 / 10)%R * (pow2 n))%R).
Axiom Power_s_all : forall (n:Z), ((pow2 (n + 1%Z)%Z) = (2%R * (pow2 n))%R).
Axiom Power_p_all : forall (n:Z),
((pow2 (n - 1%Z)%Z) = ((05 / 10)%R * (pow2 n))%R).
Axiom Power_1_2 : ((05 / 10)%R = (Rdiv 1%R 2%R)%R).
Axiom Power_1 : ((pow2 1%Z) = 2%R).
Axiom Power_neg1 : ((pow2 (-1%Z)%Z) = (05 / 10)%R).
Axiom Power_non_null : forall (n:Z), ~ ((pow2 n) = 0%R).
(* YOU MAY EDIT THE CONTEXT BELOW *)
Open Scope R_scope.
Open Scope Z_scope.
(* DO NOT EDIT BELOW *)
Theorem Power_neg_aux : forall (n:Z), (0%Z <= n)%Z ->
((pow2 (-n)%Z) = (Rdiv 1%R (pow2 n))%R).
(* YOU MAY EDIT THE PROOF BELOW *)
intros n H.
cut (0 <=n);auto.
apply Z_lt_induction with
(P:= fun n =>
0 <= n -> pow2 (- n) = (1 / pow2 n)%R);
auto with zarith.
intros x Hind Hxpos.
assert (hx:x>0\/x=0) by omega.
destruct hx.
replace (x) with (x-1+1) by omega.
replace (- (x - 1 + 1)) with (-(x-1) -1) by omega.
rewrite Power_p;auto with zarith.
rewrite Power_s;auto with zarith.
rewrite Hind;auto with *.
rewrite Power_1_2.
unfold Rdiv in |-*.
repeat rewrite Rmult_1_l.
rewrite<-Rinv_mult_distr;auto.
apply Rgt_not_eq;auto with *.
apply Power_non_null.
(*x = 0*)
subst x.
replace (-0) with 0 by omega.
rewrite Power_0.
unfold Rdiv in |-*.
rewrite Rinv_r;auto with *.
Qed.
(* DO NOT EDIT BELOW *)
(* This file is generated by Why3's Coq driver *)
(* Beware! Only edit allowed sections below *)
Require Import ZArith.
Require Import Rbase.
Parameter pow2: Z -> R.
Axiom Power_0 : ((pow2 0%Z) = 1%R).
Axiom Power_s : forall (n:Z), (0%Z <= n)%Z ->
((pow2 (n + 1%Z)%Z) = (2%R * (pow2 n))%R).
Axiom Power_p : forall (n:Z), (n <= 0%Z)%Z ->
((pow2 (n - 1%Z)%Z) = ((05 / 10)%R * (pow2 n))%R).
Axiom Power_s_all : forall (n:Z), ((pow2 (n + 1%Z)%Z) = (2%R * (pow2 n))%R).
Axiom Power_p_all : forall (n:Z),
((pow2 (n - 1%Z)%Z) = ((05 / 10)%R * (pow2 n))%R).
Axiom Power_1 : ((pow2 1%Z) = 2%R).
Axiom Power_neg1 : ((pow2 (-1%Z)%Z) = (05 / 10)%R).
(* YOU MAY EDIT THE CONTEXT BELOW *)
Open Scope Z_scope.
(* DO NOT EDIT BELOW *)
Theorem Power_non_null : forall (n:Z), ~ ((pow2 n) = 0%R).
(* YOU MAY EDIT THE PROOF BELOW *)
intro n.
assert (h:n>=0 \/ n<=0) by omega.
destruct h.
cut (0 <= n); auto with zarith.
apply Z_lt_induction with
(P:= fun n =>
0 <= n -> pow2 n <> 0%R);auto with zarith.
intros x Hind Hxpos.
assert (hx:x = 0 \/ x >0) by omega.
destruct hx.
subst x.
rewrite Power_0;auto with *.
replace (x) with (x-1+1) by omega.
rewrite Power_s;auto with *.
rewrite Rmult_neq_0_reg with (r1:=2%R) (r2:=pow2 (x - 1)).
apply Hind.
Qed.
(* DO NOT EDIT BELOW *)
(* This file is generated by Why3's Coq driver *)
(* Beware! Only edit allowed sections below *)
Require Import ZArith.
Require Import Rbase.
Parameter pow2: Z -> R.
Axiom Power_0 : ((pow2 0%Z) = 1%R).
Axiom Power_s : forall (n:Z), (0%Z <= n)%Z ->
((pow2 (n + 1%Z)%Z) = (2%R * (pow2 n))%R).
Axiom Power_p : forall (n:Z), (n <= 0%Z)%Z ->
((pow2 (n - 1%Z)%Z) = ((05 / 10)%R * (pow2 n))%R).
Axiom Power_s_all : forall (n:Z), ((pow2 (n + 1%Z)%Z) = (2%R * (pow2 n))%R).
Axiom Power_p_all : forall (n:Z),
((pow2 (n - 1%Z)%Z) = ((05 / 10)%R * (pow2 n))%R).
Axiom Power_1_2 : ((05 / 10)%R = (Rdiv 1%R 2%R)%R).
Axiom Power_1 : ((pow2 1%Z) = 2%R).
Axiom Power_neg1 : ((pow2 (-1%Z)%Z) = (05 / 10)%R).
Axiom Power_non_null_aux : forall (n:Z), (0%Z <= n)%Z -> ~ ((pow2 n) = 0%R).
(* YOU MAY EDIT THE CONTEXT BELOW *)
Open Scope Z_scope.
(* DO NOT EDIT BELOW *)
Theorem Power_non_null : forall (n:Z), ~ ((pow2 n) = 0%R).
(* YOU MAY EDIT THE PROOF BELOW *)
intro n.
assert (h:n>=0 \/ n<0) by omega.
destruct h.
apply Power_non_null_aux;auto with zarith.
pose (n':=-n).
replace n with (-n') by (subst n';omega).
replace (n') with (n'-1+1) by omega.
replace (- (n' - 1 + 1)) with (-(n'-1)-1) by omega.
rewrite Power_p.
apply Rmult_integral_contrapositive.
split.
rewrite Power_1_2.
unfold Rdiv in |-*.
rewrite Rmult_1_l.
apply Rinv_neq_0_compat.
apply Rgt_not_eq;auto with *.
cut(n'>0);auto with zarith.
apply Z_lt_induction with
(P:= fun n' =>
n' > 0 -> pow2 (- n') <> 0%R);auto with zarith.
intros x Hind Hnxpos.
replace (x) with (x-1+1) by omega.
replace (- (x - 1 + 1)) with (-(x-1)-1) by omega.
rewrite Power_p_all;auto with zarith.
apply Rmult_integral_contrapositive.
split.
rewrite Power_1_2.
unfold Rdiv in |-*.
rewrite Rmult_1_l.
apply Rinv_neq_0_compat.
apply Rgt_not_eq;auto with *.
apply Hind;auto with zarith.
Qed.
(* DO NOT EDIT BELOW *)
(* This file is generated by Why3's Coq driver *)
(* Beware! Only edit allowed sections below *)
Require Import ZArith.
Require Import Rbase.
Parameter pow2: Z -> R.
Axiom Power_0 : ((pow2 0%Z) = 1%R).
Axiom Power_s : forall (n:Z), (0%Z <= n)%Z ->
((pow2 (n + 1%Z)%Z) = (2%R * (pow2 n))%R).
Axiom Power_p : forall (n:Z), (n <= 0%Z)%Z ->
((pow2 (n - 1%Z)%Z) = ((05 / 10)%R * (pow2 n))%R).
Axiom Power_s_all : forall (n:Z), ((pow2 (n + 1%Z)%Z) = (2%R * (pow2 n))%R).
Axiom Power_p_all : forall (n:Z),
((pow2 (n - 1%Z)%Z) = ((05 / 10)%R * (pow2 n))%R).
Axiom Power_1_2 : ((05 / 10)%R = (Rdiv 1%R 2%R)%R).
Axiom Power_1 : ((pow2 1%Z) = 2%R).
Axiom Power_neg1 : ((pow2 (-1%Z)%Z) = (05 / 10)%R).
(* YOU MAY EDIT THE CONTEXT BELOW *)
Open Scope Z_scope.
(* DO NOT EDIT BELOW *)
Theorem Power_non_null_aux : forall (n:Z), (0%Z <= n)%Z ->
~ ((pow2 n) = 0%R).
(* YOU MAY EDIT THE PROOF BELOW *)
intros n H.
cut (0 <= n); auto with zarith.
apply Z_lt_induction with
(P:= fun n =>
0 <= n -> (pow2 n <> 0)%R);auto with zarith.
intros x Hind Hxpos.
assert (hx:x = 0 \/ x >0) by omega.
destruct hx.
subst x.
rewrite Power_0;auto with *.
(*x>0*)
replace (x) with (x-1+1) by omega.
rewrite Power_s;auto with *.
apply Rmult_integral_contrapositive.
split.
apply Rgt_not_eq;auto with *.
apply Hind;auto with *.
Qed.
(* DO NOT EDIT BELOW *)
......@@ -22,6 +22,8 @@ Axiom Power_1 : ((pow2 1%Z) = 2%R).
Axiom Power_neg1 : ((pow2 (-1%Z)%Z) = (05 / 10)%R).
Axiom Power_non_null : forall (n:Z), ~ ((pow2 n) = 0%R).
Axiom Power_neg : forall (n:Z), ((pow2 (-n)%Z) = (Rdiv 1%R (pow2 n))%R).
Axiom Power_sum_aux : forall (n:Z) (m:Z), (0%Z <= m)%Z ->
......@@ -45,7 +47,11 @@ repeat rewrite Power_neg.
rewrite Power_sum_aux.
rewrite Power_neg.
field.
split.
apply Power_non_null.
apply Power_non_null.
subst m'.
auto with zarith.
Qed.
(* DO NOT EDIT BELOW *)
......
This diff is collapsed.
......@@ -585,10 +585,30 @@ Axiom Power_s1 : forall (n:Z), (0%Z <= n)%Z ->
Axiom Power_p : forall (n:Z), (n <= 0%Z)%Z ->
((pow21 (n - 1%Z)%Z) = ((05 / 10)%R * (pow21 n))%R).
Axiom Power_s_all : forall (n:Z),
((pow21 (n + 1%Z)%Z) = (2%R * (pow21 n))%R).
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_11 : ((pow21 1%Z) = 2%R).
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_non_null : forall (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).
Axiom Power_neg : forall (n:Z), ((pow21 (-n)%Z) = (Rdiv 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).
Axiom Power_sum1 : forall (n:Z) (m:Z),
((pow21 (n + m)%Z) = ((pow21 n) * (pow21 m))%R).
......@@ -746,7 +766,8 @@ Open Scope Z_scope.
Theorem sign_of_x : forall (x:Z), ((nth (from_int2c x) 31%Z) = false) ->
(0%Z < x)%Z.
(* YOU MAY EDIT THE PROOF BELOW *)
intro x.
intros x H.
Qed.
......
This diff is collapsed.
(* This file is generated by Why3's Coq driver *)
(* Beware! Only edit allowed sections below *)
Require Import ZArith.
Require Import Rbase.
Definition implb(x:bool) (y:bool): bool := match (x,
y) with
| (true, false) => false
| (_, _) => true
end.
Parameter pow2: Z -> Z.
Axiom Power_0 : ((pow2 0%Z) = 1%Z).
Axiom Power_s : forall (n:Z), (0%Z <= n)%Z ->
((pow2 (n + 1%Z)%Z) = (2%Z * (pow2 n))%Z).
Axiom Power_1 : ((pow2 1%Z) = 2%Z).
Axiom Power_sum : forall (n:Z) (m:Z), ((0%Z <= n)%Z /\ (0%Z <= m)%Z) ->
((pow2 (n + m)%Z) = ((pow2 n) * (pow2 m))%Z).
Axiom pow2_0 : ((pow2 0%Z) = 1%Z).
Axiom pow2_1 : ((pow2 1%Z) = 2%Z).
Axiom pow2_2 : ((pow2 2%Z) = 4%Z).
Axiom pow2_3 : ((pow2 3%Z) = 8%Z).
Axiom pow2_4 : ((pow2 4%Z) = 16%Z).
Axiom pow2_5 : ((pow2 5%Z) = 32%Z).
Axiom pow2_6 : ((pow2 6%Z) = 64%Z).
Axiom pow2_7 : ((pow2 7%Z) = 128%Z).
Axiom pow2_8 : ((pow2 8%Z) = 256%Z).
Axiom pow2_9 : ((pow2 9%Z) = 512%Z).
Axiom pow2_10 : ((pow2 10%Z) = 1024%Z).
Axiom pow2_11 : ((pow2 11%Z) = 2048%Z).
Axiom pow2_12 : ((pow2 12%Z) = 4096%Z).
Axiom pow2_13 : ((pow2 13%Z) = 8192%Z).
Axiom pow2_14 : ((pow2 14%Z) = 16384%Z).
Axiom pow2_15 : ((pow2 15%Z) = 32768%Z).
Axiom pow2_16 : ((pow2 16%Z) = 65536%Z).
Axiom pow2_17 : ((pow2 17%Z) = 131072%Z).
Axiom pow2_18 : ((pow2 18%Z) = 262144%Z).
Axiom pow2_19 : ((pow2 19%Z) = 524288%Z).
Axiom pow2_20 : ((pow2 20%Z) = 1048576%Z).
Axiom pow2_21 : ((pow2 21%Z) = 2097152%Z).
Axiom pow2_22 : ((pow2 22%Z) = 4194304%Z).
Axiom pow2_23 : ((pow2 23%Z) = 8388608%Z).
Axiom pow2_24 : ((pow2 24%Z) = 16777216%Z).
Axiom pow2_25 : ((pow2 25%Z) = 33554432%Z).
Axiom pow2_26 : ((pow2 26%Z) = 67108864%Z).
Axiom pow2_27 : ((pow2 27%Z) = 134217728%Z).
Axiom pow2_28 : ((pow2 28%Z) = 268435456%Z).
Axiom pow2_29 : ((pow2 29%Z) = 536870912%Z).
Axiom pow2_30 : ((pow2 30%Z) = 1073741824%Z).
Axiom pow2_31 : ((pow2 31%Z) = 2147483648%Z).
Axiom pow2_32 : ((pow2 32%Z) = 4294967296%Z).
Axiom pow2_33 : ((pow2 33%Z) = 8589934592%Z).
Axiom pow2_34 : ((pow2 34%Z) = 17179869184%Z).
Axiom pow2_35 : ((pow2 35%Z) = 34359738368%Z).
Axiom pow2_36 : ((pow2 36%Z) = 68719476736%Z).
Axiom pow2_37 : ((pow2 37%Z) = 137438953472%Z).
Axiom pow2_38 : ((pow2 38%Z) = 274877906944%Z).
Axiom pow2_39 : ((pow2 39%Z) = 549755813888%Z).
Axiom pow2_40 : ((pow2 40%Z) = 1099511627776%Z).
Axiom pow2_41 : ((pow2 41%Z) = 2199023255552%Z).
Axiom pow2_42 : ((pow2 42%Z) = 4398046511104%Z).
Axiom pow2_43 : ((pow2 43%Z) = 8796093022208%Z).
Axiom pow2_44 : ((pow2 44%Z) = 17592186044416%Z).
Axiom pow2_45 : ((pow2 45%Z) = 35184372088832%Z).
Axiom pow2_46 : ((pow2 46%Z) = 70368744177664%Z).
Axiom pow2_47 : ((pow2 47%Z) = 140737488355328%Z).
Axiom pow2_48 : ((pow2 48%Z) = 281474976710656%Z).
Axiom pow2_49 : ((pow2 49%Z) = 562949953421312%Z).
Axiom pow2_50 : ((pow2 50%Z) = 1125899906842624%Z).
Axiom pow2_51 : ((pow2 51%Z) = 2251799813685248%Z).
Axiom pow2_52 : ((pow2 52%Z) = 4503599627370496%Z).
Axiom pow2_53 : ((pow2 53%Z) = 9007199254740992%Z).
Axiom pow2_54 : ((pow2 54%Z) = 18014398509481984%Z).
Axiom pow2_55 : ((pow2 55%Z) = 36028797018963968%Z).
Axiom pow2_56 : ((pow2 56%Z) = 72057594037927936%Z).
Axiom pow2_57 : ((pow2 57%Z) = 144115188075855872%Z).
Axiom pow2_58 : ((pow2 58%Z) = 288230376151711744%Z).
Axiom pow2_59 : ((pow2 59%Z) = 576460752303423488%Z).
Axiom pow2_60 : ((pow2 60%Z) = 1152921504606846976%Z).
Axiom pow2_61 : ((pow2 61%Z) = 2305843009213693952%Z).
Axiom pow2_62 : ((pow2 62%Z) = 4611686018427387904%Z).
Axiom pow2_63 : ((pow2 63%Z) = 9223372036854775808%Z).
Parameter bv : Type.
Axiom size_positive : (0%Z < 64%Z)%Z.
Parameter nth: bv -> Z -> bool.
Parameter bvzero: bv.
Axiom Nth_zero : forall (n:Z), ((0%Z <= n)%Z /\ (n < 64%Z)%Z) ->
((nth bvzero n) = false).
Parameter bvone: bv.
Axiom Nth_one : forall (n:Z), ((0%Z <= n)%Z /\ (n < 64%Z)%Z) -> ((nth bvone
n) = true).
Definition eq(v1:bv) (v2:bv): Prop := forall (n:Z), ((0%Z <= n)%Z /\
(n < 64%Z)%Z) -> ((nth v1 n) = (nth v2 n)).
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 < 64%Z)%Z) -> ((nth (bw_and v1 v2) n) = (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 < 64%Z)%Z) -> ((nth (bw_or v1 v2) n) = (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 < 64%Z)%Z) -> ((nth (bw_xor v1 v2) n) = (xorb (nth v1 n) (nth v2 n))).
Axiom Nth_bw_xor_v1true : forall (v1:bv) (v2:bv) (n:Z), (((0%Z <= n)%Z /\
(n < 64%Z)%Z) /\ ((nth v1 n) = true)) -> ((nth (bw_xor v1 v2)