Skip to content

Commit 946ddb5

Browse files
committed
linear_continuous0 with near
1 parent 0306dfc commit 946ddb5

File tree

1 file changed

+17
-32
lines changed

1 file changed

+17
-32
lines changed

Diff for: theories/normedtype.v

+17-32
Original file line numberDiff line numberDiff line change
@@ -3147,40 +3147,25 @@ near: r; apply: nbhs_pinfty_ge_real.
31473147
by rewrite rpredM// ?ger0_real ?invr_ge0// ltW.
31483148
Grab Existential Variables. by end_near. by end_near. Qed.
31493149

3150-
31513150
Lemma linear_continuous0 (f : {linear V -> W}) :
31523151
{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.
31843169

31853170
Lemma linear_bounded0 (f : {linear V -> W}) :
31863171
bounded_on f (nbhs (0 : V)) -> {for 0, continuous f} .

0 commit comments

Comments
 (0)