@@ -21,7 +21,7 @@ Section Hermite.
2121
2222Variable R : archiRealFieldType.
2323
24- Local Notation " `⌊ x ⌋ " := ((Num.floor x)%:~R) (format "`⌊ x ⌋" ).
24+ Local Notation " `⌊ x ⌋ " := ((Num.floor x)%:~R : R ) (format "`⌊ x ⌋" ).
2525
2626Definition frac_part (x : R) := x - `⌊ x ⌋.
2727
@@ -110,22 +110,21 @@ rewrite [X in _ <= _ + X]splitr -[X in X <= _]add0r mul1r addrA lerD2r.
110110by rewrite addrAC subr_ge0.
111111Qed .
112112
113- Lemma hermite_id (n : nat) x :
114- `⌊n%:R * x⌋ = \sum_(k < n) ( `⌊x + k%:R / (n%:R:R)⌋ : R) .
113+ Lemma hermite_id (n : nat) (x : R) :
114+ `⌊n%:R * x⌋ = \sum_(k < n) `⌊x + k%:R / (n%:R)⌋ .
115115Proof .
116116have [//|n_gt0|->] := ltngtP n 0; last by rewrite big_ord0 mul0r floor0.
117117have n_neq0 : n%:R != 0 :> R by rewrite (eqr_nat _ _ 0); case: (n) n_gt0.
118118have nr_nt0 : (0 : R) < n%:R by rewrite (ltr_nat _ 0).
119- pose g (k : nat) : R := `⌊x + k%:R / ( n%:R : R) ⌋.
119+ pose g (k : nat) : R := `⌊x + k%:R / n%:R⌋.
120120rewrite -(@big_mkord _ _ _ _ xpredT g) {}/g.
121121rewrite (fracE x) mulrDr addrC -(intrM _ (Posz n)) floorDrz // intrD.
122122rewrite [X in _ + X = _]floorK // intrM.
123123under eq_bigr do rewrite -addrA addrC floorDrz // intrD.
124124rewrite big_split /=.
125125rewrite sumr_const_nat subn0.
126126rewrite [in X in _ = _ + X]floorK // [X in _ + X = _]mulr_natl.
127- suff <- : `⌊n%:R * `{ x}⌋ = (\sum_(0 <= i < n) `⌊`{ x} + i%:R / n%:R⌋ : R).
128- by [].
127+ suff <- : `⌊n%:R * `{ x}⌋ = \sum_(0 <= i < n) `⌊`{ x} + i%:R / n%:R⌋ by [].
129128have /andP[x_ge0 x_lt1] := frac_le x.
130129pose fnx := Num.floor (n%:R * `{x}).
131130have fnx_pos : 0 <= fnx by rewrite floor_ge0 mulr_ge0.
@@ -142,11 +141,11 @@ have nLcnx : (`|cnx| <= n)%N.
142141 have /le_ceil : n%:R * (1 - `{x}) <= n%:R.
143142 by rewrite mulrBr mulr1 gerBl mulr_ge0.
144143 rewrite -/cnx -(ler_int R) //.
145- suff /eqP->// : (Num.Def.ceil (n%:R : R))%:~R == ( n%:R : R) by [].
144+ suff /eqP->// : (Num.Def.ceil (n%:R : R))%:~R == n%:R :> R by [].
146145 by rewrite -intrEceil.
147146have tE : t = (`|cnx| : nat).
148147 rewrite /cnx mulrBr mulr1 addrC ceilDrz // ceilNfloor opprK addrC.
149- have -> : Num.Def.ceil (n%:R : R) = ( n : int) .
148+ have -> : Num.Def.ceil (n%:R : R) = n :> int.
150149 by apply/eqP; rewrite -(eqr_int R) -intrEceil.
151150 by rewrite -[LHS]distnEl ?intOrdered.gez0_norm.
152151rewrite (big_cat_nat_idem _ (_ : 0 <= t)%N) //=; last 2 first.
@@ -185,4 +184,4 @@ rewrite hermite_id big_ord_recr /= big_ord1 mul0r addr0.
185184by rewrite mul1r /half_up addrAC subrr add0r.
186185Qed .
187186
188- End Hermite.
187+ End Hermite.
0 commit comments