@@ -3147,40 +3147,25 @@ near: r; apply: nbhs_pinfty_ge_real.
3147
3147
by rewrite rpredM// ?ger0_real ?invr_ge0// ltW.
3148
3148
Grab Existential Variables. by end_near. by end_near. Qed .
3149
3149
3150
-
3151
3150
Lemma linear_continuous0 (f : {linear V -> W}) :
3152
3151
{for 0, continuous f} -> bounded_on f (nbhs (0 : V)).
3153
- Proof . (*TODO : rewrite with near ? *)
3154
- (* move=> /cvg_distP; rewrite linear0 /= => Bf. *)
3155
- (* apply/linear_boundedP; near=> r => x. *)
3156
- (* have [->|x0] := eqVneq x 0; first by rewrite linear0 !normr0 mulr0. *)
3157
- (* rewrite -ler_pdivr_mulr; last by rewrite normr_gt0. *)
3158
- (* rewrite -(normr_id x) mulrC -normrV ?unitfE ?normr_eq0 // -normmZ -linearZ. *)
3159
- (* have le01 : 0 < (1 : R) by []. *)
3160
- (* apply: ltW; move: (Bf 1 le01); rewrite nearE => /nbhs_ex[[d d0]]. *)
3161
- (* have lem: ball 0 d ((d/2) *: (`|x|^-1 *: x)). *)
3162
- (* rewrite -ball_normE /= sub0r normrN normmZ normrZV // mulr1. *)
3163
- (* rewrite ger0_norm; last by rewrite divr_ge0 ?ltW. *)
3164
- (* by rewrite gtr_pmulr ?invf_lt1 ?ltr1n. *)
3165
- (* move => /(_ _ lem) /=; rewrite sub0r normrN linearZ /= normmZ. *)
3166
- (* rewrite -ltr_pdivl_mull ?normr_gt0 ?mulr1. *)
3167
- move=> /cvg_ballP /(_ _ ltr01).
3168
- rewrite linear0 /= nearE => /nbhs_ex[tp ball_f]; apply/linear_boundedP.
3169
- pose t := tp%:num; exists (2 * t^-1) ; split => [|d].
3170
- by apply: ger0_real; apply: divr_ge0.
3171
- move => H x.
3172
- have [->|x0] := eqVneq x 0; first by rewrite linear0 !normr0 mulr0.
3173
- have /ball_f : ball 0 t ((`|x|^-1 * t /2) *: x).
3174
- apply: ball_sym; rewrite -ball_normE /ball_ /= subr0 normmZ mulrC 2!normrM.
3175
- rewrite 2!mulrA normrV ?unitfE ?normr_eq0 // normr_id.
3176
- rewrite divrr ?mul1r ?unitfE ?normr_eq0 // gtr0_norm // gtr_pmulr //.
3177
- by rewrite gtr0_norm // invr_lt1 // ?unitfE // ltr1n.
3178
- rewrite -ball_normE //= sub0r normrN linearZ /= normmZ -mulrA normrM.
3179
- rewrite normrV ?unitfE ?normr_eq0 // normr_id -mulrA.
3180
- rewrite ltr_pdivr_mull ?mulr1 ?normr_gt0 // -ltr_pdivl_mull ?normr_gt0 //.
3181
- rewrite gtr0_norm // invf_div => /ltW H'. apply: le_trans; first by exact: H'.
3182
- by apply: ler_pmul => //; apply: ltW.
3183
- Qed .
3152
+ Proof .
3153
+ move=> /cvg_ballP/(_ _ ltr01); rewrite linear0 nearE => /nbhs_ex[e ef1].
3154
+ apply/linear_boundedP; near=> d; move=> x.
3155
+ have [->|x0] := eqVneq x 0; first by rewrite linear0 !normr0 mulr0.
3156
+ have d0 : 0 < d.
3157
+ by near: d; exists 1; rewrite real1; split => // r; apply le_lt_trans.
3158
+ pose dx := d * `|x|; have dx0 : 0 < dx by rewrite mulr_gt0 // normr_gt0.
3159
+ suff : `| f (dx^-1 *: x) | < 1.
3160
+ rewrite linearZ normmZ normrV ?(unitfE,gt_eqF)//.
3161
+ by rewrite ltr_pdivr_mull ?(normr_gt0,gt_eqF)// mulr1 gtr0_norm// => /ltW.
3162
+ suff /ef1 : ball 0 e%:num (dx^-1 *: x) by rewrite -ball_normE /= sub0r normrN.
3163
+ rewrite -ball_normE /ball_ /= sub0r normrN normmZ normrV ?(unitfE,gt_eqF)//.
3164
+ rewrite normrM normr_id (gtr0_norm d0) invrM ?(unitfE,normr_eq0,gt_eqF)//.
3165
+ rewrite mulrAC mulVr ?(unitfE,normr_eq0)// ltr_pdivr_mulr //.
3166
+ near: d; exists e%:num^-1; rewrite realE invr_ge0 posnum_ge0; split => // r.
3167
+ by rewrite -ltr_pdivr_mull ?mulr1.
3168
+ Grab Existential Variables. by end_near. Qed .
3184
3169
3185
3170
Lemma linear_bounded0 (f : {linear V -> W}) :
3186
3171
bounded_on f (nbhs (0 : V)) -> {for 0, continuous f} .
0 commit comments