Skip to content

Commit 224e82e

Browse files
committed
wip linear_continuous
1 parent 6be90c1 commit 224e82e

File tree

1 file changed

+11
-69
lines changed

1 file changed

+11
-69
lines changed

theories/hahn_banach_theorem.v

Lines changed: 11 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -387,13 +387,13 @@ Check ((subspace A : normedModType R)).
387387

388388
End Substructures.
389389

390-
(*
390+
391391
Section HBGeom.
392392

393393
Variable (R : realType) (V : normedModType R) (F : pred V)
394394
(F' : subLmodType F) (f : {linear F' -> R}).
395395

396-
(* once this is rebased over linear_continuous
396+
(* once subnormedspaces are correctly defined replace by
397397
Variable (R : realType) (V : normedModType R) (F : pred V)
398398
(f : {linear_continuous (subspace F) -> R}).
399399
*)
@@ -423,79 +423,21 @@ Proof.
423423
have majfp : forall z : F', f z <= p (\val z).
424424
move => z; rewrite /(p _) ; apply : le_trans; last by [].
425425
by apply : ler_norm.
426-
move: (HahnBanach convp majfp) => [ g [majgp F_eqgf] ] {majfp}.
427-
have cg: continuous g. admit.
428-
have lg: linear g by move => *; apply: linearP.
429-
pose glin := GRing.isLinear.Build _ _ _ _ g lg.
430-
Search "Continuous" "Build".
431-
pose (g' : {linear_continuous V -> R}) := HB.pack g glin
432-
exists g ; split; last by [].
426+
move: (HahnBanach convp majfp) => [g] [majgp F_eqgf] {majfp}.
427+
have ling :(linear (g : V -> R)) by exact:linearP.
428+
have contg: (continuous (g : V -> R)).
433429
move=> x; rewrite /cvgP; apply: (continuousfor0_continuous).
434430
apply: bounded_linear_continuous.
435-
exists r.
436-
split; first by rewrite realE; apply/orP; left; apply: ltW. (* r is Numreal ... *)
431+
exists r; split; first by exact: gtr0_real.
437432
move => M m1; rewrite nbhs_ballP; exists 1 => /=; first by [].
438433
move => y; rewrite -ball_normE //= sub0r => y1.
439434
rewrite ler_norml; apply/andP. split.
440435
- rewrite lerNl -linearN; apply: (le_trans (majgp (-y))).
441436
by rewrite /p -[X in _ <= X]mul1r; apply: ler_pM; rewrite ?normr_ge0 ?ltW //=.
442437
- apply: (le_trans (majgp (y))); rewrite /p -[X in _ <= X]mul1r -normrN.
443438
apply: ler_pM; rewrite ?normr_ge0 ?ltW //=.
444-
Qed.
445-
446-
End HBGeom.
447-
448-
449-
Section newHBGeom.
450-
451-
Variable (R : realType) (V : normedModType R) (F : pred V)
452-
(f : {linear_continuous (subspace F) -> R}).
453-
454-
(*Let setF := [set x : V | exists (z : F'), val z = x].*)
455-
456-
Theorem HB_geom_normed :
457-
(* exists r , (r > 0 ) /\ (forall (z : F'), (`|f z| ) <= `|(val z)| * r)) -> *)
458-
exists g: {linear_continuous V -> R}, (forall x : V, F x -> (g x = f x)).
459-
Proof.
460-
have [r [ltr0 fxrx]] : exists2 r , (r > 0 ) & (forall z, `|f z| <= `| z| * r).
461-
have : bounded_near f (nbhs 0).
462-
Check (@continuous_linear_bounded _ _ _ 0 f).
463-
have H: { for 0, continuous f} by apply: cts_fun.
464-
Fail Check (@continuous_linear_bounded _ _ _ 0 f H).
465-
have H': { for (0 : subspace F), continuous f} by apply: cts_fun.
466-
Fail Check (@continuous_linear_bounded _ _ _ 0 f H').
467-
admit.
468-
Fail apply/linear_boundedP.
469-
(* Lemmas for normedspaces do not seem to work on subspace F *)
470-
pose p:= fun x : V => `|x|*r.
471-
have convp: (@convex_function _ _ [set: V] p).
472-
rewrite /convex_function /conv => l v1 v2 _ _ /=.
473-
rewrite [X in (_ <= X)]/conv /= /p.
474-
apply: le_trans.
475-
have H : `|l%:num *: v1 + (l%:num).~ *: v2| <= `|l%:num *: v1| + `|(l%:num).~ *: v2|.
476-
by apply: ler_normD.
477-
by apply: (@ler_pM _ _ _ r r _ _ H) => //; apply: ltW.
478-
rewrite mulrDl !normrZ -![_ *: _]/(_ * _).
479-
have -> : `|l%:num| = l%:num by apply/normr_idP.
480-
have -> : `|(l%:num).~| = (l%:num).~ by apply/normr_idP; apply: onem_ge0.
481-
by rewrite !mulrA.
482-
have majfp : forall z, f z <= p ( z).
483-
move => z; rewrite /(p _) ; apply : le_trans; last by [].
484-
by apply : ler_norm.
485-
move: (HahnBanach convp majfp) => [ g [majgp F_eqgf] ] {majfp}.
486-
exists g; split; last by [].
487-
move=> x; rewrite /cvgP; apply: (continuousfor0_continuous).
488-
apply: bounded_linear_continuous.
489-
exists r.
490-
split; first by rewrite realE; apply/orP; left; apply: ltW. (* r is Numreal ... *)
491-
move => M m1; rewrite nbhs_ballP; exists 1 => /=; first by [].
492-
move => y; rewrite -ball_normE //= sub0r => y1.
493-
rewrite ler_norml; apply/andP. split.
494-
- rewrite lerNl -linearN; apply: (le_trans (majgp (-y))).
495-
by rewrite /p -[X in _ <= X]mul1r; apply: ler_pM; rewrite ?normr_ge0 ?ltW //=.
496-
- apply: (le_trans (majgp (y))); rewrite /p -[X in _ <= X]mul1r -normrN.
497-
apply: ler_pM; rewrite ?normr_ge0 ?ltW //=.
498-
Qed.
499-
500-
End newHBGeom.
501-
*)
439+
(* TODO : build g with HB.build and HB.pack *)
440+
pose Hg := isLinearContinuous.Build _ _ _ _ g ling contg.
441+
pose g': {linear_continuous V -> R | *%R} := HB.pack (g : V -> R) Hg.
442+
by exists g'.
443+
Qed.

0 commit comments

Comments
 (0)