Skip to content

Commit 0a685a5

Browse files
committed
Partially revert "Adapt to rocq-prover/rocq#19530"
This partially reverts commit d8a6fca.
1 parent 41ad322 commit 0a685a5

File tree

2 files changed

+12
-46
lines changed

2 files changed

+12
-46
lines changed

src/IEEE754/BinarySingleNaN.v

Lines changed: 11 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -158,21 +158,12 @@ Proof.
158158
now intros T fz fi fn ff [sx|sx| |sx mx ex] Hx.
159159
Qed.
160160

161-
Lemma canonical_mantissa_compat mx ex :
162-
canonical_mantissa mx ex
163-
= match (fexp (Z.pos (digits2_pos mx) + ex) ?= ex)%Z with
164-
| Eq => true
165-
| _ => false
166-
end.
167-
Proof. now unfold canonical_mantissa; rewrite ?Z.eqb_compare. Qed.
168-
169161
Theorem canonical_canonical_mantissa :
170162
forall (sx : bool) mx ex,
171163
canonical_mantissa mx ex = true ->
172164
canonical radix2 fexp (Float radix2 (cond_Zopp sx (Zpos mx)) ex).
173165
Proof.
174166
intros sx mx ex H.
175-
rewrite ?canonical_mantissa_compat in H.
176167
assert (Hx := Zeq_bool_eq _ _ H). clear H.
177168
apply sym_eq.
178169
simpl.
@@ -708,7 +699,6 @@ apply Rle_trans with ((bpow radix2 (Zdigits radix2 (Z.pos mx)) - 1) * bpow radix
708699
{ rewrite Rmult_minus_distr_r, Rmult_1_l, <- bpow_plus.
709700
apply Rplus_le_compat_r.
710701
apply bpow_le.
711-
rewrite ?canonical_mantissa_compat in H1.
712702
apply Zeq_bool_eq in H1.
713703
rewrite Zpos_digits2_pos in H1.
714704
unfold fexp, FLT_exp in H1.
@@ -734,7 +724,6 @@ Theorem bounded_lt_emax :
734724
Proof.
735725
intros mx ex Hx.
736726
destruct (andb_prop _ _ Hx) as (H1,H2).
737-
rewrite ?canonical_mantissa_compat in H1.
738727
generalize (Zeq_bool_eq _ _ H1). clear H1. intro H1.
739728
generalize (Zle_bool_imp_le _ _ H2). clear H2. intro H2.
740729
generalize (mag_F2R_Zdigits radix2 (Zpos mx) ex).
@@ -783,7 +772,6 @@ Theorem bounded_ge_emin :
783772
Proof.
784773
intros mx ex Hx.
785774
destruct (andb_prop _ _ Hx) as [H1 _].
786-
rewrite ?canonical_mantissa_compat in H1.
787775
apply Zeq_bool_eq in H1.
788776
generalize (mag_F2R_Zdigits radix2 (Zpos mx) ex).
789777
destruct (mag radix2 (F2R (Float radix2 (Zpos mx) ex))) as [e' Ex].
@@ -848,7 +836,6 @@ Proof.
848836
intros mx ex Cx Bx.
849837
apply andb_true_intro.
850838
split.
851-
rewrite ?canonical_mantissa_compat.
852839
unfold canonical_mantissa.
853840
unfold canonical, Fexp in Cx.
854841
rewrite Cx at 2.
@@ -1216,7 +1203,6 @@ easy.
12161203
unfold valid_binary, bounded.
12171204
rewrite Zle_bool_refl.
12181205
rewrite Bool.andb_true_r.
1219-
rewrite ?canonical_mantissa_compat.
12201206
apply Zeq_bool_true.
12211207
rewrite Zpos_digits2_pos.
12221208
replace (Zdigits radix2 _) with prec.
@@ -1378,7 +1364,6 @@ elim Rgt_not_eq with (2 := H3).
13781364
rewrite F2R_0.
13791365
now apply F2R_gt_0.
13801366
destruct (binary_fit_aux_correct m (Rlt_bool x 0) m2 e2) as [H5 H6].
1381-
rewrite ?canonical_mantissa_compat.
13821367
apply Zeq_bool_true.
13831368
rewrite Zpos_digits2_pos.
13841369
rewrite <- mag_F2R_Zdigits by easy.
@@ -1503,7 +1488,6 @@ elim Rgt_not_eq with (2 := H3).
15031488
rewrite F2R_0.
15041489
now apply F2R_gt_0.
15051490
destruct (binary_fit_aux_correct m (Rlt_bool x 0) m2 e2) as [H5 H6].
1506-
rewrite ?canonical_mantissa_compat.
15071491
apply Zeq_bool_true.
15081492
rewrite Zpos_digits2_pos.
15091493
rewrite <- mag_F2R_Zdigits by easy.
@@ -1568,7 +1552,6 @@ assert (forall m e, bounded m e = true -> fexp (Zdigits radix2 (Zpos m) + e) = e
15681552
clear. intros m e Hb.
15691553
destruct (andb_prop _ _ Hb) as (H,_).
15701554
apply Zeq_bool_eq.
1571-
rewrite ?canonical_mantissa_compat in H.
15721555
now rewrite <- Zpos_digits2_pos.
15731556
generalize (H _ _ Hx) (H _ _ Hy).
15741557
clear x y sx sy Hx Hy H.
@@ -2306,11 +2289,10 @@ apply binary_round_aux_correct'.
23062289
+ rewrite <- 2!F2R_Zabs, 2!abs_cond_Zopp; simpl.
23072290
replace (SpecFloat.new_location _ _) with (Bracket.new_location (Z.pos my) r loc_Exact);
23082291
[exact Bz|].
2309-
case my as [p|p|]; unfold new_location, SpecFloat.new_location; simpl.
2310-
* now unfold SpecFloat.new_location_odd; rewrite ?Z.eqb_compare.
2311-
* unfold SpecFloat.new_location_even; rewrite ?Z.eqb_compare.
2312-
now unfold new_location_even; case (2 * r ?= Z.pos p~0)%Z.
2313-
* now unfold SpecFloat.new_location_odd; rewrite ?Z.eqb_compare.
2292+
case my as [p|p|]; [reflexivity| |reflexivity].
2293+
unfold Bracket.new_location, SpecFloat.new_location; simpl.
2294+
unfold Bracket.new_location_even, SpecFloat.new_location_even; simpl.
2295+
now case Zeq_bool; [|case r as [|rp|rp]; case Z.compare].
23142296
+ now apply F2R_neq_0 ; case sy.
23152297
- rewrite <- cexp_abs, Rabs_mult, Rabs_Rinv.
23162298
rewrite 2!F2R_cond_Zopp, 2!abs_cond_Ropp, <- Rabs_Rinv.
@@ -2399,8 +2381,7 @@ assert (mx' = Zpos mx * Zpower radix2 (ex - 2 * e'))%Z as <-.
23992381
easy. }
24002382
clearbody mx'.
24012383
destruct Z.sqrtrem as [mz r].
2402-
rewrite ?Z.eqb_compare; unfold Zeq_bool.
2403-
set (lz := if match (r ?= 0)%Z with Eq => true | _ => _ end then _ else _).
2384+
set (lz := if Zeq_bool r 0 then _ else _).
24042385
clearbody lz.
24052386
intros Bz.
24062387
refine (_ (binary_round_aux_correct' m (sqrt (F2R (Float radix2 (Zpos mx) ex))) mz e' lz _ _ _)) ; cycle 1.
@@ -2563,8 +2544,7 @@ Proof.
25632544
{ unfold mrs'. case Zlt_bool_spec; [ | easy]. intros Hex1. symmetry.
25642545
apply shr_limit; simpl; [now left |]. apply Z.lt_le_trans with (radix2 ^ prec)%Z.
25652546
- unfold bounded, canonical_mantissa, fexp in Hmxex. apply andb_prop in Hmxex.
2566-
destruct Hmxex as [Hmxex _].
2567-
rewrite ?Z.eqb_compare in Hmxex. apply Zeq_bool_eq in Hmxex.
2547+
destruct Hmxex as [Hmxex _]. apply Zeq_bool_eq in Hmxex.
25682548
rewrite Zpos_digits2_pos in Hmxex. apply Z.eq_le_incl in Hmxex.
25692549
apply Z.max_lub_l in Hmxex.
25702550
assert (Hmx : (Zdigits radix2 (Z.pos mx) <= prec)%Z) by lia.
@@ -2606,9 +2586,7 @@ Proof.
26062586
* apply Z.opp_pos_neg in Hex0. apply Z.div_le_compat_l; [lia |].
26072587
split; [lia |]. apply Z.pow_le_mono_r; lia.
26082588
+ rewrite Zdigits_div_Zpower; [| lia |].
2609-
* rewrite Z.sub_add.
2610-
rewrite ?Z.eqb_compare in Hmxex. apply Zeq_bool_eq in Hmxex.
2611-
unfold fexp in *.
2589+
* rewrite Z.sub_add. apply Zeq_bool_eq in Hmxex. unfold fexp in *.
26122590
rewrite Z.max_lub_iff. split; [| lia]. apply (Zplus_le_reg_l _ _ ex).
26132591
rewrite Zplus_0_r. rewrite Z.add_sub_assoc. rewrite Z.add_comm.
26142592
rewrite <-Hmxex at 2. apply Z.le_max_l.
@@ -2617,8 +2595,7 @@ Proof.
26172595
refine (_ (shl_align_correct' p 0 (fexp (Z.pos (digits2_pos p) + 0)) _)).
26182596
+ rewrite H1. intros [H2 H3]. rewrite <-H3 in H2.
26192597
apply andb_true_intro; split.
2620-
* rewrite ?Z.eqb_compare.
2621-
apply Zeq_bool_true. rewrite H3 at 2. rewrite !Zpos_digits2_pos.
2598+
* apply Zeq_bool_true. rewrite H3 at 2. rewrite !Zpos_digits2_pos.
26222599
rewrite <-!mag_F2R_Zdigits; [| lia | lia].
26232600
now apply (f_equal (fun f => fexp (mag radix2 f))).
26242601
* apply Zle_bool_true. rewrite H3. transitivity 0%Z; [assumption|].
@@ -2808,7 +2785,7 @@ Lemma Bmax_float_proof :
28082785
= true.
28092786
Proof.
28102787
unfold valid_binary, bounded; apply andb_true_intro; split.
2811-
- rewrite ?canonical_mantissa_compat; unfold canonical_mantissa; apply Zeq_bool_true.
2788+
- unfold canonical_mantissa; apply Zeq_bool_true.
28122789
set (p := Z.pos (digits2_pos _)).
28132790
assert (H : p = prec).
28142791
{ unfold p; rewrite Zpos_digits2_pos, Pos2Z.inj_sub.
@@ -2871,7 +2848,7 @@ cut (Z.pos (digits2_pos m) = prec)%Z.
28712848
{ now intro H; split; [ |exact H]; ring_simplify; rewrite H. }
28722849
revert B; unfold bounded, canonical_mantissa.
28732850
intro H; generalize (andb_prop _ _ H); clear H; intros [H _]; revert H.
2874-
intro H; rewrite ?Z.eqb_compare in H; generalize (Zeq_bool_eq _ _ H); clear H.
2851+
intro H; generalize (Zeq_bool_eq _ _ H); clear H.
28752852
unfold fexp, emin.
28762853
unfold Prec_gt_0 in prec_gt_0_; unfold Prec_lt_emax in prec_lt_emax_.
28772854
lia.
@@ -2969,10 +2946,7 @@ set (z := fst _).
29692946
set (e := snd _); simpl.
29702947
assert (Dmx_le_prec : (Z.pos (digits2_pos mx) <= prec)%Z).
29712948
{ revert Bx; unfold bounded; rewrite Bool.andb_true_iff.
2972-
rewrite ?canonical_mantissa_compat.
2973-
unfold canonical_mantissa.
2974-
fold (Zeq_bool (fexp (Z.pos (digits2_pos mx) + ex)) ex).
2975-
rewrite <-Zeq_is_eq_bool; unfold fexp, FLT_exp.
2949+
unfold canonical_mantissa; rewrite <-Zeq_is_eq_bool; unfold fexp, FLT_exp.
29762950
case (Z.max_spec (Z.pos (digits2_pos mx) + ex - prec) emin); lia. }
29772951
assert (Dmx_le_prec' : (digits2_pos mx <= Z.to_pos prec)%positive).
29782952
{ change (_ <= _)%positive
@@ -2994,7 +2968,6 @@ case (Pos.leb_spec _ _); simpl; intro Dmx.
29942968
+ apply andb_true_intro.
29952969
split ; cycle 1.
29962970
{ apply Zle_bool_true. clear -Hp ; lia. }
2997-
rewrite ?canonical_mantissa_compat.
29982971
apply Zeq_bool_true; unfold fexp, FLT_exp.
29992972
rewrite Dmx', Z2Pos.id by apply prec_gt_0_.
30002973
rewrite Z.max_l.
@@ -3028,7 +3001,6 @@ case (Pos.leb_spec _ _); simpl; intro Dmx.
30283001
+ unfold bounded; apply andb_true_intro.
30293002
split ; cycle 1.
30303003
{ apply Zle_bool_true. clear -Hp ; lia. }
3031-
rewrite ?canonical_mantissa_compat.
30323004
apply Zeq_bool_true; unfold fexp, FLT_exp.
30333005
rewrite Zpos_digits2_pos, shift_pos_correct, Z.pow_pos_fold.
30343006
rewrite Z2Pos.id; [|lia].
@@ -3115,8 +3087,6 @@ Lemma Bulp_correct_aux :
31153087
bounded 1 emin = true.
31163088
Proof.
31173089
unfold bounded, canonical_mantissa.
3118-
rewrite ?Z.eqb_compare.
3119-
fold (Zeq_bool (fexp (Z.pos (digits2_pos 1) + emin)) emin).
31203090
rewrite Zeq_bool_true.
31213091
apply Zle_bool_true.
31223092
apply Z.max_l_iff, fexp_emax.

src/IEEE754/Bits.v

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,6 @@ assert (Hf: (emin <= ex /\ Zdigits radix2 (Zpos mx) <= prec)%Z).
264264
destruct (andb_prop _ _ Hx) as (Hx', _).
265265
unfold canonical_mantissa in Hx'.
266266
rewrite Zpos_digits2_pos in Hx'.
267-
rewrite ?Z.eqb_compare in Hx'.
268267
generalize (Zeq_bool_eq _ _ Hx').
269268
unfold fexp, FLT_exp, emin.
270269
clear ; lia.
@@ -321,8 +320,7 @@ intros [sx|sx|sx pl pl_range|sx mx ex H].
321320
- unfold bounded in H.
322321
apply Bool.andb_true_iff in H ; destruct H as [A B].
323322
apply Z.leb_le in B.
324-
unfold canonical_mantissa, fexp, FLT_exp in A.
325-
rewrite ?Z.eqb_compare in A; apply Zeq_bool_eq in A.
323+
unfold canonical_mantissa, fexp, FLT_exp in A. apply Zeq_bool_eq in A.
326324
case Zle_bool_spec ; intros H.
327325
+ apply join_bits_range.
328326
* split.
@@ -535,7 +533,6 @@ apply refl_equal.
535533
discriminate.
536534
clear -Hew ; lia.
537535
destruct (andb_prop _ _ Bx) as (H1, _).
538-
rewrite ?canonical_mantissa_compat in H1.
539536
generalize (Zeq_bool_eq _ _ H1).
540537
rewrite Zpos_digits2_pos.
541538
unfold FLT_exp, emin.
@@ -548,7 +545,6 @@ rewrite Zeq_bool_true. 2: apply refl_equal.
548545
simpl.
549546
apply f_equal.
550547
destruct (andb_prop _ _ Bx) as (H1, _).
551-
rewrite ?canonical_mantissa_compat in H1.
552548
generalize (Zeq_bool_eq _ _ H1).
553549
rewrite Zpos_digits2_pos.
554550
unfold FLT_exp, emin, prec.

0 commit comments

Comments
 (0)