@@ -387,13 +387,13 @@ Check ((subspace A : normedModType R)).
387387
388388End Substructures.
389389
390- (*
390+
391391Section HBGeom.
392392
393393Variable (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
397397Variable (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