Skip to content

Commit ee5ef8e

Browse files
authored
Merge pull request #68 from math-comp/semi-poly
Adapt to math-comp/math-comp#1395
2 parents 371af24 + f468be5 commit ee5ef8e

12 files changed

Lines changed: 89 additions & 87 deletions

theories/BGappendixC.v

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ have [_ /(mem_dprod defQ)[z [y [/setIP[_ cP0z] QP0y -> _]]]] := nU_P0Q.
237237
by rewrite conjsgM (normsP (cent_sub P0)) //; exists y.
238238
Qed.
239239

240-
Let E := [set x : galF | Nm x == 1 & Nm (2%:R - x) == 1].
240+
Let E := [set x : galF | Nm x == 1 & Nm (2 - x) == 1].
241241

242242
Let E_1 : 1 \in E.
243243
Proof. by rewrite !inE -addrA subrr addr0 galNorm1 eqxx. Qed.
@@ -246,7 +246,7 @@ Proof. by rewrite !inE -addrA subrr addr0 galNorm1 eqxx. Qed.
246246
Let Einv_gt1_le_pq : E = [set x^-1 | x in E] -> (1 < #|E|)%N -> (p <= q)%N.
247247
Proof.
248248
rewrite (cardsD1 1) E_1 ltnS card_gt0 => Einv /set0Pn[/= a /setD1P[not_a1 Ea]].
249-
pose tau (x : F) := (2%:R - x)^-1.
249+
pose tau (x : F) := (2 - x)^-1.
250250
have Etau x: x \in E -> tau x \in E.
251251
rewrite inE => Ex; rewrite Einv (imset_f (fun y => y^-1)) //.
252252
by rewrite inE andbC opprD addNKr opprK.
@@ -376,7 +376,7 @@ have [q_gt4 | q_le4] := ltnP 4 q.
376376
by rewrite ltn_sub2l ?(ltn_exp2l 0) // prime_gt1.
377377
rewrite -mulrDr -natrX -expnM muln2 -subn1 doubleB -addnn -addnBA // subn2.
378378
rewrite expnD natrM -oP ler_wpM2l ?ler0n //.
379-
apply: le_trans (_ : 2%:R * sqrtC #|P|%:R <= _).
379+
apply: le_trans (_ : 2 * sqrtC #|P|%:R <= _).
380380
rewrite mulrDl mul1r lerD2l -(@expr_ge1 _ 2) ?(ltW sqrtP_gt0) // sqrtCK.
381381
by rewrite oP natrX expr_ge1 ?ler0n ?ler1n.
382382
rewrite -ler_sqr ?rpredM ?rpred_nat ?qualifE ?(ltW sqrtP_gt0) //.
@@ -385,10 +385,14 @@ have [q_gt4 | q_le4] := ltnP 4 q.
385385
by rewrite ?leq_exp2l // !doubleS !ltnS -addnn leq_addl.
386386
have q3: q = 3%N by apply/eqP; rewrite eqn_leq qgt2 andbT -ltnS -(odd_ltn 5).
387387
rewrite (cardsD1 1) E_1 ltnS card_gt0; apply/set0Pn => /=.
388-
pose f (c : 'F_p) : {poly 'F_p} := 'X * ('X - 2%:R%:P) * ('X - c%:P) + ('X - 1).
389-
have fc0 c: (f c).[0] = -1 by rewrite !hornerE /= !hornerE; apply/val_inj.
390-
have fc2 c: (f c).[2%:R] = 1.
391-
by rewrite !(subrr, hornerE) /= addrK; apply/val_inj.
388+
pose f (c : 'F_p) : {poly 'F_p} := 'X * ('X - 2%:P) * ('X - c%:P) + ('X - 1).
389+
(* TODO when requiring mathcomp >= 2.4.0, the following three lines
390+
can be simplified to
391+
have fc0 c: (f c).[0] = -1 by rewrite !hornerE.
392+
have fc2 c: (f c).[2] = 1 by rewrite !(subrr, hornerE) /= addrK.
393+
c.f. https://github.com/math-comp/odd-order/pull/68#discussion_r2030878922 *)
394+
have fc0 c: (f c).[0] = -1 by rewrite !hornerE //= !hornerE.
395+
have fc2 c: (f c).[2] = 1 by rewrite !(subrr, hornerE) /= addrK; apply/val_inj.
392396
have /existsP[c nz_fc]: [exists c, ~~ [exists d, root (f c) d]].
393397
have nz_f_0 c: ~~ root (f c) 0 by rewrite /root fc0 oppr_eq0.
394398
rewrite -negb_forall; apply/negP=> /'forall_existsP/fin_all_exists[/= rf rfP].
@@ -400,7 +404,7 @@ have /existsP[c nz_fc]: [exists c, ~~ [exists d, root (f c) d]].
400404
rewrite mulf_neq0 ?subr_eq0 1?(contraTneq _ (rfP a)) // => -> //.
401405
by rewrite /root fc2.
402406
have{nz_fc} /= nz_fc: ~~ root (f c) _ by apply/forallP; rewrite -negb_exists.
403-
have sz_fc_lhs: size ('X * ('X - 2%:R%:P) * ('X - c%:P)) = 4%N.
407+
have sz_fc_lhs: size ('X * ('X - 2%:P) * ('X - c%:P)) = 4%N.
404408
by rewrite !(size_mul, =^~ size_poly_eq0) ?size_polyX ?size_XsubC.
405409
have sz_fc: size (f c) = 4%N by rewrite size_addl ?size_XsubC sz_fc_lhs.
406410
have irr_fc: irreducible_poly (f c) by apply: cubic_irreducible; rewrite ?sz_fc.
@@ -448,7 +452,7 @@ exists a; rewrite !inE; apply/and3P; split.
448452
rewrite DfcF horner_prod -prodrN; apply: eq_bigr => beta _.
449453
by rewrite rmorph0 hornerXsubC add0r opprK.
450454
by rewrite -signr_odd mulr_sign oG horner_map fc0 rmorphN1 opprK.
451-
apply/eqP; transitivity (fcF.[inF 2%:R]); last by rewrite horner_map fc2 rmorph1.
455+
apply/eqP; transitivity (fcF.[inF 2]); last by rewrite horner_map fc2 rmorph1.
452456
rewrite DfcF horner_prod; apply: eq_bigr => beta _.
453457
by rewrite hornerXsubC rmorphB !rmorph_nat.
454458
Qed.
@@ -615,7 +619,7 @@ suffices EpsiV a: a \in U -> psi a \in E -> psi (a^-1 ^ t ^+ 3) \in E.
615619
rewrite -(odd_double_half #|P|) odd_P addnC.
616620
elim: _./2 => [|n /EpsiV/EpsiV/=]; first by rewrite EpsiV -?Dx.
617621
by rewrite conjVg invgK -!conjgM -!expgD -!mulnSr !(groupV, nUtn) //; apply.
618-
move=> Ua Ea; have{Ea} [b Ub Dab]: exists2 b, b \in U & psi a + psi b = 2%:R.
622+
move=> Ua Ea; have{Ea} [b Ub Dab]: exists2 b, b \in U & psi a + psi b = 2.
619623
case/setIdP: Ea => _; rewrite -im_psi => /imsetP[b Ub Db]; exists b => //.
620624
by rewrite -Db addrC subrK.
621625
(* In the book k is arbitrary in Fp; however only k := 3 is used. *)

theories/BGsection14.v

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1326,7 +1326,7 @@ Theorem Ptype_embedding M K :
13261326
{in Kstar^#, forall y, 'C_Mstar[y] = Z}
13271327
& {in K^# & Kstar^#, forall x y, 'C[x * y] = Z}]
13281328
& [/\ (*e*) [/\ normedTI Zhat G Z, {in ~: M, forall g, [disjoint Zhat & M :^ g]}
1329-
& (#|G|%:R / 2%:R < #|class_support Zhat G|%:R :> rat)%R ],
1329+
& (#|G|%:R / 2 < #|class_support Zhat G|%:R :> rat)%R ],
13301330
(*f*) M \in 'M_'P2 /\ prime #|K| \/ Mstar \in 'M_'P2 /\ prime #|Kstar|,
13311331
(*g*) {in 'M_'P, forall H, gval H \in M :^: G :|: Mstar :^: G}
13321332
& (*h*) M^`(1) ><| K = M]].
@@ -1768,7 +1768,7 @@ have hallKs: \sigma(M).-Hall(Mstar) Ks.
17681768
by rewrite subsetI sYMs (subset_trans sYMstar) ?gFnorm.
17691769
rewrite subsetI -{1}defKs_star subsetIl.
17701770
by rewrite (subset_trans (pHall_sub hallK)) ?gFnorm.
1771-
have oTGgt_g2: (g / 2%:R < #|TG|%:R)%R.
1771+
have oTGgt_g2: (g / 2 < #|TG|%:R)%R.
17721772
rewrite oTG big_setU1 //= /n defMNX big_set1 cards1 mulrC mul1r.
17731773
rewrite ltr_pM2r ?(ltr_nat _ 0) ?cardG_gt0 // /k_ K0 -defKs.
17741774
rewrite /z -defZ -(dprod_card defNK) natrM invfM opprD.
@@ -1867,15 +1867,15 @@ split=> // [||H PmaxH].
18671867
have [maxH _] := setDP PmaxH.
18681868
have{maxH}[L hallL] := Hall_exists \kappa(H) (mmax_sol maxH).
18691869
pose Ls := 'C_(H`_\sigma)(L); pose S := (L <*> Ls) :\: (L :|: Ls).
1870-
have{IHn} oSGgt_g2: (g / 2%:R < #|class_support S G|%:R)%R.
1870+
have{IHn} oSGgt_g2: (g / 2 < #|class_support S G|%:R)%R.
18711871
have [|nTG_leS] := ltnP #|class_support S G| nTG.
18721872
by case/IHn=> // Sstar _ [_ _ _ _ [[_ _ -> //]]].
18731873
apply: lt_le_trans oTGgt_g2 _; rewrite ler_nat /TG -defZhat.
18741874
exact: leq_trans leTGn nTG_leS.
18751875
have{oSGgt_g2 oTGgt_g2} meetST: ~~ [disjoint TG & class_support S G].
18761876
rewrite -leq_card_setU; apply: contraTneq (leqnn #|G|) => tiTGS.
18771877
rewrite -ltnNge -(ltr_nat rat) -/g.
1878-
rewrite -{1}[g](@divfK _ 2%:R) // mulr_natr.
1878+
rewrite -{1}[g](@divfK _ 2) // mulr_natr.
18791879
apply: lt_le_trans (ltrD oTGgt_g2 oSGgt_g2) _.
18801880
by rewrite -natrD -tiTGS ler_nat cardsT max_card.
18811881
have{meetST} [x Tx [a Sx]]: exists2 x, x \in T & exists a, x \in S :^ a.

theories/PFsection1.v

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,7 @@ by rewrite cfdotZl [d in _ * d]cfdotC Cmu rmorph0 mulr0.
140140
Qed.
141141

142142
Let vchar_isometry_base3 f f' :
143-
f \in 'Z[irr G, G^#] -> '[f]_G = 2%:R ->
144-
f' \in 'Z[irr G, G^#] -> '[f']_G = 2%:R ->
143+
f \in 'Z[irr G, G^#] -> '[f]_G = 2 -> f' \in 'Z[irr G, G^#] -> '[f']_G = 2 ->
145144
'[f, f'] = 1 ->
146145
exists es : _ * bool, let: (i, j, k, epsilon) := es in
147146
[/\ f = (-1) ^+ epsilon *: ('chi_j - 'chi_i),
@@ -206,7 +205,7 @@ pose F i j := chi i - chi j.
206205
have DF i j : F i j = F i 0 - F j 0 by rewrite /F opprB addrA subrK.
207206
have ZF i j: F i j \in 'Z[Chi, L].
208207
by rewrite zchar_split rpredB ?mem_zchar // DF memvB // /F !chiE.
209-
have htau2 i j: i != j -> '[tau (F i j)] = 2%:R.
208+
have htau2 i j: i != j -> '[tau (F i j)] = 2.
210209
rewrite iso_tau // cfnormB -cfdotC !dot_chi !eqxx eq_sym => /negbTE->.
211210
by rewrite -!natrD subr0.
212211
have htau1 i j: j != 0 -> j != i -> i != 0 -> '[tau (F i 0), tau (F j 0)] = 1.

theories/PFsection10.v

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -312,8 +312,7 @@ Local Notation Zalpha_tau := vchar_Dade_FTtype345_bridge.
312312
(* This covers the last paragraph in the proof of (10.5); it's isolated here *)
313313
(* because it is reused in the proof of (10.10) and (11.8). *)
314314

315-
Lemma norm_FTtype345_bridge i j :
316-
j != 0 -> '[(alpha_ i j)^\tau] = 2%:R + n ^+ 2.
315+
Lemma norm_FTtype345_bridge i j : j != 0 -> '[(alpha_ i j)^\tau] = 2 + n ^+ 2.
317316
Proof.
318317
move=> nz_j; rewrite Dade_isometry ?alpha_on // cfnormBd ?cfnormZ; last first.
319318
by rewrite cfdotZr cfdotBl cfdotZl !o_mu2_zeta !(mulr0, subr0).
@@ -337,7 +336,7 @@ have [[_ Ddelta _ Nn] [[Itau1 Ztau1] _]] := (FTtype345_constants, cohS1).
337336
have [|z Zz defY] := zchar_expansion _ S1_Y.
338337
rewrite map_inj_in_uniq; first by case: sS10.
339338
by apply: sub_in2 (Zisometry_inj Itau1); apply: mem_zchar.
340-
have nX_2: '[X] = 2%:R.
339+
have nX_2: '[X] = 2.
341340
apply: (addrI '[Y]); rewrite -cfnormDd // addrC -Dalpha norm_alpha //.
342341
by rewrite addrC nY_n2.
343342
have Z_X: X \in 'Z[irr G].
@@ -417,7 +416,7 @@ have al_ij_zeta_s: '[al_ij^\tau, zeta^*^\tau1] = a.
417416
have Zal_ij: al_ij^\tau \in 'Z[irr G] by apply: Zalpha_tau.
418417
have Za: a \in Num.int.
419418
by rewrite rpredD ?(intr_nat Nn) ?Cint_cfdot_vchar ?Ztau1 ?(mem_zchar Szeta).
420-
have{al_ij_zeta_s} ub_da2: (d ^ 2)%:R * a ^+ 2 <= (2%:R + n ^+ 2) * w1%:R.
419+
have{al_ij_zeta_s} ub_da2: (d ^ 2)%:R * a ^+ 2 <= (2 + n ^+ 2) * w1%:R.
421420
have [k nz_k j'k]: exists2 k, k != 0 & k != j.
422421
have:= w2gt2; rewrite -nirrW2 (cardD1 0) (cardD1 j) !inE nz_j !ltnS lt0n.
423422
by case/pred0Pn=> k /and3P[]; exists k.
@@ -431,7 +430,7 @@ have{al_ij_zeta_s} ub_da2: (d ^ 2)%:R * a ^+ 2 <= (2%:R + n ^+ 2) * w1%:R.
431430
rewrite !(cfdot_prTIirr_red pddM) cfdotC o_mu_zeta conjC0 !mulr0 mulr1.
432431
by rewrite 2![_ == k](negPf _) 1?eq_sym // mulr0 -mulrN opprB !subr0 add0r.
433432
have ZSmuk: mu_ k \in 'Z[calS] by rewrite mem_zchar ?calSmu.
434-
have <-: '[al_ij^\tau] * '[(mu_ k)^\tau1] = (2%:R + n ^+ 2) * w1%:R.
433+
have <-: '[al_ij^\tau] * '[(mu_ k)^\tau1] = (2 + n ^+ 2) * w1%:R.
435434
by rewrite Itau1 // cfdot_prTIred eqxx mul1n norm_alpha.
436435
by rewrite -intr_normK ?cfCauchySchwarz // Cint_cfdot_vchar // Ztau1.
437436
suffices a0 : a = 0.
@@ -460,7 +459,7 @@ apply: le_lt_trans (_ : n ^+ 2 * (w1%:R - 1) < _).
460459
rewrite -(ltr_pM2l (gt0CG W1)) -/w1 2!mulrBr mulr1 mulrCA -exprMn.
461460
rewrite mulrDr ltrBlDl addrCA -mulrDr mulrCA mulrA -ltrBlDl.
462461
rewrite -mulrBr mulNr opprK divfK ?neq0CG // mulr_natr addrA subrK -subr_sqr.
463-
rewrite sqrr_sign mulrC [_ + 2%:R]addrC (lt_le_trans _ ub_da2) //.
462+
rewrite sqrr_sign mulrC [_ + 2]addrC (lt_le_trans _ ub_da2) //.
464463
apply: lt_le_trans (ler_wpM2l (ler0n _ _) a2_ge1).
465464
by rewrite mulr1 ltrBlDl -mulrS -natrX ltC_nat.
466465
Qed.
@@ -777,14 +776,14 @@ rewrite cards1 natrB ?addn_gt0 ?cardG_gt0 // addnC natrD -addrA mulrDl mulrBl.
777776
rewrite {1}mulnC !natrM !invfM !mulVKf ?natrG_neq0 // opprD -addrA lerD2l.
778777
rewrite mul1r -{1}[_^-1]mul1r addrC lerNr [- _]opprB -!mulrBl.
779778
rewrite -addrA -opprD ler_pdivlMr; last by rewrite natrG_gt0.
780-
apply: le_trans (_ : 1 - (3%:R^-1 + 7%:R^-1) <= _); last first.
779+
apply: le_trans (_ : 1 - (3^-1 + 7^-1) <= _); last first.
781780
rewrite lerD2l lerN2.
782781
rewrite lerD // lef_pV2 ?qualifE/= ?gt0CG ?ltr0n ?ler_nat //.
783782
have notStype5: FTtype S != 5%N by rewrite (eqP Stype2).
784783
have frobUW2 := Ptype_compl_Frobenius maxS StypeP notStype5.
785784
apply: leq_ltn_trans (ltn_odd_Frobenius_ker frobUW2 (mFT_odd _)).
786785
by rewrite (leq_double 3).
787-
apply: le_trans (_ : 2%:R^-1 <= _); last by rewrite -!CratrE; compute.
786+
apply: le_trans (_ : 2^-1 <= _); last by rewrite -!CratrE; compute.
788787
rewrite mulrAC ler_pdivrMr 1?gt0CG // ler_pdivlMl ?ltr0n //.
789788
rewrite -!natrM ler_nat mulnA -(Lagrange (normal_sub nsM''M')) mulnC leq_mul //.
790789
by rewrite subset_leq_card //; have [_ _ _ []] := MtypeP.
@@ -964,7 +963,7 @@ have [j nz_j] := has_nonprincipal_irr ntW2.
964963
have [Dmu2_1 Ddelta_ lt1d Nn] := FTtype345_constants.
965964
have{lt1d} [defS szS1 Dd Ddel Dn]:
966965
[/\ perm_eq calS (S1 ++ S2), size S1 = (p ^ 2 - 1) %/ w1,
967-
d = p, delta = -1 & n = 2%:R].
966+
d = p, delta = -1 & n = 2].
968967
- pose X_ (S0 : seq 'CF(M)) := [set s | 'Ind[M, H] 'chi_s \in S0].
969968
pose sumX_ cS0 := \sum_(s in X_ cS0) 'chi_s 1%g ^+ 2.
970969
have defX1: X_ S1 = Iirr_kerD H H H'.
@@ -1076,17 +1075,17 @@ have Dalpha i (al_ij := alpha_ i j) :
10761075
by rewrite Da_z' // intr_normK.
10771076
rewrite big_tnth sumr_const card_ord size_rem ?map_f // size_map.
10781077
by rewrite mulr_natl subn1.
1079-
have{lb_n2alij} ub_a2: (size S1)%:R * a ^+ 2 <= 2%:R * a * n + 2%:R.
1078+
have{lb_n2alij} ub_a2: (size S1)%:R * a ^+ 2 <= 2 * a * n + 2.
10801079
rewrite norm_alpha // addrC sqrrB !addrA lerD2r in lb_n2alij.
10811080
rewrite mulr_natl -mulrSr lerBlDl subn1 in lb_n2alij.
10821081
by rewrite -mulrA !mulr_natl; case: (S1) => // in S1zeta lb_n2alij *.
1083-
have{ub_a2} ub_8a2: 8%:R * a ^+ 2 <= 4%:R * a + 2%:R.
1082+
have{ub_a2} ub_8a2: 8 * a ^+ 2 <= 4 * a + 2.
10841083
rewrite mulrAC Dn -natrM in ub_a2; apply: le_trans ub_a2.
10851084
rewrite -intr_normK // ler_wpM2r ?exprn_ge0 ?normr_ge0 // leC_nat szS1.
10861085
rewrite (subn_sqr p 1) def_p_w1 subnK ?muln_gt0 // mulnA mulnK // mulnC.
10871086
by rewrite -subnDA -(mulnBr 2%N _ 1%N) mulnA (@leq_pmul2l 4 2) ?ltn_subRL.
1088-
have Z_4a1: 4%:R * a - 1%:R \in Num.int by rewrite rpredB ?rpredM ?rpred_nat.
1089-
have{ub_8a2} ub_4a1: `|4%:R * a - 1| < 3%:R.
1087+
have Z_4a1: 4 * a - 1 \in Num.int by rewrite rpredB ?rpredM ?rpred_nat/=.
1088+
have{ub_8a2} ub_4a1: `|4 * a - 1| < 3.
10901089
rewrite -ltr_sqr ?rpred_nat ?qualifE/= ?normr_ge0 // -natrX intr_normK //.
10911090
rewrite sqrrB1 exprMn -natrX -mulrnAl -mulrnA (natrD _ 8 1) ltrD2r.
10921091
rewrite (natrM _ 2 4) (natrM _ 2 8) -!mulrA -mulrBr ltr_pM2l ?ltr0n //.

theories/PFsection11.v

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ Lemma bounded_proper_coherent H1 :
227227
(#|HU : H1| <= 2 * q * #|U : C| + 1)%N.
228228
Proof.
229229
move=> nsH1_M psH1_M' cohH1; have [nsHHU _ _ _ _] := sdprod_context defHU.
230-
suffices: #|HU : H1|%:R - 1 <= 2%:R * #|M : HC|%:R * sqrtC #|HC : HC|%:R :> algC.
230+
suffices: #|HU : H1|%:R - 1 <= 2 * #|M : HC|%:R * sqrtC #|HC : HC|%:R :> algC.
231231
rewrite indexgg sqrtC1 mulr1 -leC_nat natrD -lerBlDr -mulnA natrM.
232232
congr (_ <= _ * _%:R); apply/eqP; rewrite -(eqn_pmul2l (cardG_gt0 HC)).
233233
rewrite Lagrange ?normal_sub // mulnCA -(dprod_card defHC) -mulnA mulnC.
@@ -884,18 +884,18 @@ have tau_alpha i: tau (alpha_ i j) = eta_ i j - eta_ i 0 - n *: zeta1.
884884
rewrite cfRes_cfun1 !cfdotBl deltaZ !cfdotZl -!/(mu2_ 0 _).
885885
rewrite -(prTIirr00 ptiWM) !cfdot_prTIirr cfdotC omu2S1 // conjC0 mulr0.
886886
by rewrite (negPf nz_j1) add0r subr0 subrr rpred0.
887-
have nY: '[Y] = n * a * (a - 2%:R) + n ^+ 2. (* Resuming step (11.8.2). *)
887+
have nY: '[Y] = n * a * (a - 2) + n ^+ 2. (* Resuming step (11.8.2). *)
888888
rewrite defY cfnormD cfnormN !cfnormZ cfdotNr cfdotZr.
889889
rewrite cfnorm_map_orthonormal // -Dn Itau1 ?mem_zchar ?n1S1 // mulr1.
890890
rewrite scaler_sumr cfproj_sum_orthonormal // rmorphN addrAC.
891891
rewrite Dn rmorphM/= !intr_normK ?rpred_nat // !rmorph_nat conj_intr // -Dn.
892892
by rewrite -mulr2n mulrC mulrA -[in LHS]mulr_natr mulNr -mulrBr.
893-
have{a_even} Da: (a == 0) || (a == 2%:R). (* Second part of (11.8.2). *)
893+
have{a_even} Da: (a == 0) || (a == 2). (* Second part of (11.8.2). *)
894894
suffices (b := a - 1): b ^+ 2 == 1.
895895
by rewrite -!(can_eq (subrK 1) a) add0r addrK orbC -eqf_sqr expr1n.
896896
have S1gt0: (0 < size S1)%N by case: (S1) S1zeta.
897897
have: n * b ^+ 2 <= n *+ 3.
898-
have: 2%:R + n <= n *+ 3 by rewrite addrC lerD2l lerMn2r Dn ler1n.
898+
have: 2 + n <= n *+ 3 by rewrite addrC lerD2l lerMn2r Dn ler1n.
899899
apply: le_trans; rewrite sqrrB1 -(mulr_natr a) -mulrBr mulrDr mulrA mulr1.
900900
rewrite lerD2r -(lerD2r (n ^+ 2 + '[X])) !addrA -nY -cfnormDd //.
901901
by rewrite -Dphi norm_FTtype345_bridge ?S1_1 // lerDl cfnorm_ge0.

theories/PFsection12.v

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -982,7 +982,7 @@ have norm_alpha: '[tauL_H alpha] = e%:R + 1.
982982
rewrite Dade_isometry ?(cfInd1_sub_lin_on _ Schi) ?De //.
983983
rewrite cfnormBd; last by rewrite cfdotC (seqInd_ortho_Ind1 _ _ Schi) ?conjC0.
984984
by rewrite cfnorm_Ind_cfun1 // De irrWnorm.
985-
pose h := #|H|; have ub_a: a ^+ 2 * ((h%:R - 1) / e%:R) - 2%:R * a <= e%:R - 1.
985+
pose h := #|H|; have ub_a: a ^+ 2 * ((h%:R - 1) / e%:R) - 2 * a <= e%:R - 1.
986986
rewrite -[h%:R - 1](mulKf (neq0CiG L H)) -sum_seqIndC1_square // De -/calS.
987987
rewrite -[lhs in lhs - 1](addrK 1) -norm_alpha -[tauL_H _](subrK 1).
988988
rewrite cfnormDd; last by rewrite cfdotBl tau_alpha_1 cfnorm1 subrr.
@@ -1002,7 +1002,7 @@ have [pr_p p_dv_M]: prime p /\ p %| #|M|.
10021002
by rewrite mem_primes => /and3P[].
10031003
have odd_p: odd p by rewrite (dvdn_odd p_dv_M) ?mFT_odd.
10041004
have pgt2: (2 < p)%N := odd_prime_gt2 odd_p pr_p.
1005-
have ub_e: e%:R <= (p%:R + 1) / 2%:R :> algC.
1005+
have ub_e: e%:R <= (p%:R + 1) / 2 :> algC.
10061006
rewrite ler_pdivlMr ?ltr0n // -natrM -mulrSr leC_nat muln2.
10071007
have [b e_dv_pb]: exists b : bool, e %| (b.*2 + p).-1.
10081008
by have [_ /orP[]] := Ecyclic_le_p; [exists false | exists true].
@@ -1013,7 +1013,7 @@ have ub_e: e%:R <= (p%:R + 1) / 2%:R :> algC.
10131013
have lb_h: p%:R ^+ 2 <= h%:R :> algC.
10141014
rewrite -natrX leC_nat dvdn_leq ?pfactor_dvdn ?cardG_gt0 //.
10151015
by rewrite -prankP0 (leq_trans (p_rankS p sP0H)) ?p_rank_le_logn.
1016-
have{ub_e} ub_a: p.-1.*2%:R * a ^+ 2 - 2%:R * a <= p.-1%:R / 2%:R :> algC.
1016+
have{ub_e} ub_a: p.-1.*2%:R * a ^+ 2 - 2 * a <= p.-1%:R / 2 :> algC.
10171017
apply: le_trans (le_trans ub_a _); last first.
10181018
rewrite -subn1 -subSS natrB ?ltnS ?prime_gt0 // mulrSr mulrBl.
10191019
by rewrite divff ?pnatr_eq0 ?lerD2r.
@@ -1026,11 +1026,11 @@ have a0: a = 0.
10261026
apply: contraTeq ub_a => nz_a; rewrite lt_geF // ltr_pdivrMr ?ltr0n //.
10271027
rewrite mulrC -{1}mulr_natl -muln2 natrM -mulrA mulrBr mulrCA ltrBrDl.
10281028
rewrite -ltrBrDr -mulrBr mulr_natl mulrA -expr2 -exprMn.
1029-
apply: lt_le_trans (_ : 2%:R * ((a *+ 2) ^+ 2 - 1) <= _); last first.
1029+
apply: lt_le_trans (_ : 2 * ((a *+ 2) ^+ 2 - 1) <= _); last first.
10301030
rewrite (mulr_natl a 2) ler_wpM2r // ?subr_ge0.
10311031
by rewrite sqr_intr_ge1 ?rpredMn // mulrn_eq0.
10321032
by rewrite leC_nat -subn1 ltn_subRL.
1033-
rewrite -(@ltr_pM2l _ 2%:R) ?ltr0n // !mulrA -expr2 mulrBr -exprMn mulr1.
1033+
rewrite -(@ltr_pM2l _ 2) ?ltr0n // !mulrA -expr2 mulrBr -exprMn mulr1.
10341034
rewrite -natrX 2!mulrnAr -[in rhs in _ < rhs]mulrnAl -mulrnA.
10351035
rewrite ltrBrDl -ltrBrDr -(ltrD2r 1) -mulrSr -sqrrB1.
10361036
rewrite -intr_normK ?rpredB ?rpredM ?rpred_nat ?rpred1 //.
@@ -1228,7 +1228,7 @@ have{lb_psiM lb_psiL ub_rhoML ubM} ubK: (#|K / K'|%g < 4)%N.
12281228
rewrite ler_pdivrMr ?gt0CG // ler_pdivlMl ?gt0CG //.
12291229
by rewrite ler_pdivrMr ?gt0CG // mulrC -natrM leC_nat.
12301230
rewrite -(ler_pM2l (gt0CG E)) -/e mulrA -expr2 invfM -exprMn.
1231-
apply: le_trans (_ : (1 + 2%:R^-1) ^+ 2 <= _).
1231+
apply: le_trans (_ : (1 + 2^-1) ^+ 2 <= _).
12321232
rewrite ler_sqr ?rpred_div ?rpredD ?rpred1 ?rpredV ?rpred_nat //.
12331233
rewrite -{1}(ltn_predK egt2) mulrSr mulrDl divff ?gt_eqF // lerD2l.
12341234
rewrite ler_pdivrMr // ler_pdivlMl ?ltr0n //.

0 commit comments

Comments
 (0)