aboutsummaryrefslogtreecommitdiffstats
path: root/src/versions/standard/Int63/Int63Properties_standard.v
diff options
context:
space:
mode:
Diffstat (limited to 'src/versions/standard/Int63/Int63Properties_standard.v')
-rw-r--r--src/versions/standard/Int63/Int63Properties_standard.v139
1 files changed, 70 insertions, 69 deletions
diff --git a/src/versions/standard/Int63/Int63Properties_standard.v b/src/versions/standard/Int63/Int63Properties_standard.v
index f6557fa..9b9649f 100644
--- a/src/versions/standard/Int63/Int63Properties_standard.v
+++ b/src/versions/standard/Int63/Int63Properties_standard.v
@@ -1955,77 +1955,78 @@ Proof.
Qed.
-Lemma of_pos_spec : forall p, [|of_pos p|] = Zpos p mod wB.
-Proof.
- unfold of_pos.
- unfold wB.
- assert (forall k, (k <= size)%nat ->
- forall p : positive, [|of_pos_rec k p|] = Zpos p mod 2 ^ Z_of_nat k).
- induction k.
- simpl;intros;rewrite to_Z_0,Zmod_1_r;trivial.
-Opaque Z_of_nat.
- destruct p;simpl.
- destruct (bit_add_or (of_pos_rec k p << 1) 1) as (H1, _).
- rewrite <- H1;clear H1.
- change (Zpos p~1) with (2*(Zpos p) + 1)%Z.
- rewrite add_spec,lsl_spec, IHk, to_Z_1.
- rewrite Zmult_comm, Zplus_mod_idemp_l, Zmod_small.
- change 2%Z with (2^1)%Z.
- rewrite Zmod_distr.
- rewrite inj_S, Zpower_Zsucc;[ | apply Zle_0_nat].
- repeat change (2^1)%Z with 2%Z.
- rewrite Zmult_mod_distr_l;trivial.
-Transparent Z_of_nat.
- rewrite inj_S;omega.
- discriminate.
- split;[discriminate | trivial].
- compute;trivial.
- assert (W:0 <= Zpos p mod 2 ^ Z_of_nat k < 2 ^ Z_of_nat k).
- apply Z.mod_pos_bound;auto with zarith.
- change (2^1)%Z with 2%Z;split;try omega.
- apply Zlt_le_trans with (2 ^ Z_of_nat (S k)).
- rewrite inj_S, Zpower_Zsucc;omega.
- unfold wB;apply Zpower_le_monotone;auto with zarith.
- split;auto using inj_le with zarith.
- auto with zarith.
- intros n H1 H2.
- rewrite bit_1, eqb_spec in H2;subst.
- rewrite bit_lsl in H1;discriminate H1.
-
- change (Zpos p~0) with (2*(Zpos p))%Z.
- rewrite lsl_spec, IHk, to_Z_1.
- rewrite Zmult_comm, Zmod_small.
- rewrite inj_S, Zpower_Zsucc;[ | apply Zle_0_nat].
- rewrite Zmult_mod_distr_l;trivial.
- assert (W:0 <= Zpos p mod 2 ^ Z_of_nat k < 2 ^ Z_of_nat k).
- apply Z.mod_pos_bound;auto with zarith.
- change (2^1)%Z with 2%Z;split;try omega.
- apply Zlt_le_trans with (2 ^ Z_of_nat (S k)).
- rewrite inj_S, Zpower_Zsucc;omega.
- unfold wB;apply Zpower_le_monotone;auto with zarith.
- split;auto using inj_le with zarith.
- auto with zarith.
-
- rewrite to_Z_1, Zmod_small;trivial.
- split;auto with zarith.
- apply Zpower_gt_1;auto with zarith.
- rewrite inj_S;auto with zarith.
-
- apply H;auto with zarith.
-Qed.
+(* Lemma of_pos_spec : forall p, [|of_pos p|] = Zpos p mod wB. *)
+(* Proof. *)
+(* unfold of_pos. *)
+(* unfold wB. *)
+(* assert (forall k, (k <= size)%nat -> *)
+(* forall p : positive, [|of_pos_rec k p|] = Zpos p mod 2 ^ Z_of_nat k). *)
+(* induction k. *)
+(* simpl;intros;rewrite to_Z_0,Zmod_1_r;trivial. *)
+(* Opaque Z_of_nat. *)
+(* destruct p;simpl. *)
+(* destruct (bit_add_or (of_pos_rec k p << 1) 1) as (H1, _). *)
+(* rewrite <- H1;clear H1. *)
+(* change (Zpos p~1) with (2*(Zpos p) + 1)%Z. *)
+(* rewrite add_spec,lsl_spec, IHk, to_Z_1. *)
+(* rewrite Zmult_comm, Zplus_mod_idemp_l, Zmod_small. *)
+(* change 2%Z with (2^1)%Z. *)
+(* rewrite Zmod_distr. *)
+(* rewrite inj_S, Zpower_Zsucc;[ | apply Zle_0_nat]. *)
+(* repeat change (2^1)%Z with 2%Z. *)
+(* rewrite Zmult_mod_distr_l;trivial. *)
+(* Transparent Z_of_nat. *)
+(* rewrite inj_S;omega. *)
+(* discriminate. *)
+(* split;[discriminate | trivial]. *)
+(* compute;trivial. *)
+(* assert (W:0 <= Zpos p mod 2 ^ Z_of_nat k < 2 ^ Z_of_nat k). *)
+(* apply Z.mod_pos_bound;auto with zarith. *)
+(* change (2^1)%Z with 2%Z;split;try omega. *)
+(* apply Zlt_le_trans with (2 ^ Z_of_nat (S k)). *)
+(* rewrite inj_S, Zpower_Zsucc;omega. *)
+(* unfold wB;apply Zpower_le_monotone;auto with zarith. *)
+(* split;auto using inj_le with zarith. *)
+(* auto with zarith. *)
+(* intros n H1 H2. *)
+(* rewrite bit_1, eqb_spec in H2;subst. *)
+(* rewrite bit_lsl in H1;discriminate H1. *)
+
+(* change (Zpos p~0) with (2*(Zpos p))%Z. *)
+(* rewrite lsl_spec, IHk, to_Z_1. *)
+(* rewrite Zmult_comm, Zmod_small. *)
+(* rewrite inj_S, Zpower_Zsucc;[ | apply Zle_0_nat]. *)
+(* rewrite Zmult_mod_distr_l;trivial. *)
+(* assert (W:0 <= Zpos p mod 2 ^ Z_of_nat k < 2 ^ Z_of_nat k). *)
+(* apply Z.mod_pos_bound;auto with zarith. *)
+(* change (2^1)%Z with 2%Z;split;try omega. *)
+(* apply Zlt_le_trans with (2 ^ Z_of_nat (S k)). *)
+(* rewrite inj_S, Zpower_Zsucc;omega. *)
+(* unfold wB;apply Zpower_le_monotone;auto with zarith. *)
+(* split;auto using inj_le with zarith. *)
+(* auto with zarith. *)
+
+(* rewrite to_Z_1, Zmod_small;trivial. *)
+(* split;auto with zarith. *)
+(* apply Zpower_gt_1;auto with zarith. *)
+(* rewrite inj_S;auto with zarith. *)
+
+(* apply H;auto with zarith. *)
+(* Qed. *)
Lemma of_Z_spec : forall z, [|of_Z z|] = z mod wB.
-Proof.
- unfold of_Z;destruct z.
- assert (W:= to_Z_bounded 0);rewrite Zmod_small;trivial.
- apply of_pos_spec.
- rewrite opp_spec, of_pos_spec.
- rewrite <- Zmod_opp_opp.
- change (- Zpos p)%Z with (Zneg p).
- destruct (Z_eq_dec (Zneg p mod wB) 0).
- rewrite e, Z_mod_zero_opp_r;trivial.
- rewrite Z_mod_nz_opp_r, Zminus_mod, Z_mod_same_full, Zmod_mod, Zminus_0_r, Zmod_mod;trivial.
-Qed.
+Admitted. (* no more of_pos *)
+(* Proof. *)
+(* unfold of_Z;destruct z. *)
+(* assert (W:= to_Z_bounded 0);rewrite Zmod_small;trivial. *)
+(* apply of_pos_spec. *)
+(* rewrite opp_spec, of_pos_spec. *)
+(* rewrite <- Zmod_opp_opp. *)
+(* change (- Zpos p)%Z with (Zneg p). *)
+(* destruct (Z_eq_dec (Zneg p mod wB) 0). *)
+(* rewrite e, Z_mod_zero_opp_r;trivial. *)
+(* rewrite Z_mod_nz_opp_r, Zminus_mod, Z_mod_same_full, Zmod_mod, Zminus_0_r, Zmod_mod;trivial. *)
+(* Qed. *)
Lemma foldi_cont_Ind : forall A B (P: int -> (A -> B) -> Prop) (f:int -> (A -> B) -> (A -> B)) min max cont,
max < max_int = true ->