354 fixes V and norm ("\<parallel>_\<parallel>") |
354 fixes V and norm ("\<parallel>_\<parallel>") |
355 fixes B defines "\<And>V f. B V f \<equiv> {0} \<union> {\<bar>f x\<bar> / \<parallel>x\<parallel> | x. x \<noteq> 0 \<and> x \<in> V}" |
355 fixes B defines "\<And>V f. B V f \<equiv> {0} \<union> {\<bar>f x\<bar> / \<parallel>x\<parallel> | x. x \<noteq> 0 \<and> x \<in> V}" |
356 fixes fn_norm ("\<parallel>_\<parallel>\<hyphen>_" [0, 1000] 999) |
356 fixes fn_norm ("\<parallel>_\<parallel>\<hyphen>_" [0, 1000] 999) |
357 defines "\<And>V f. \<parallel>f\<parallel>\<hyphen>V \<equiv> \<Squnion>(B V f)" |
357 defines "\<And>V f. \<parallel>f\<parallel>\<hyphen>V \<equiv> \<Squnion>(B V f)" |
358 assumes E_norm: "normed_vectorspace E norm" and FE: "subspace F E" |
358 assumes E_norm: "normed_vectorspace E norm" and FE: "subspace F E" |
359 and linearform: "linearform F f" and "continuous F norm f" |
359 and linearform: "linearform F f" and "continuous F f norm" |
360 shows "\<exists>g. linearform E g |
360 shows "\<exists>g. linearform E g |
361 \<and> continuous E norm g |
361 \<and> continuous E g norm |
362 \<and> (\<forall>x \<in> F. g x = f x) |
362 \<and> (\<forall>x \<in> F. g x = f x) |
363 \<and> \<parallel>g\<parallel>\<hyphen>E = \<parallel>f\<parallel>\<hyphen>F" |
363 \<and> \<parallel>g\<parallel>\<hyphen>E = \<parallel>f\<parallel>\<hyphen>F" |
364 proof - |
364 proof - |
365 interpret normed_vectorspace E norm by fact |
365 interpret normed_vectorspace E norm by fact |
366 interpret normed_vectorspace_with_fn_norm E norm B fn_norm |
366 interpret normed_vectorspace_with_fn_norm E norm B fn_norm |
367 by (auto simp: B_def fn_norm_def) intro_locales |
367 by (auto simp: B_def fn_norm_def) intro_locales |
368 interpret subspace F E by fact |
368 interpret subspace F E by fact |
369 interpret linearform F f by fact |
369 interpret linearform F f by fact |
370 interpret continuous F norm f by fact |
370 interpret continuous F f norm by fact |
371 have E: "vectorspace E" by intro_locales |
371 have E: "vectorspace E" by intro_locales |
372 have F: "vectorspace F" by rule intro_locales |
372 have F: "vectorspace F" by rule intro_locales |
373 have F_norm: "normed_vectorspace F norm" |
373 have F_norm: "normed_vectorspace F norm" |
374 using FE E_norm by (rule subspace_normed_vs) |
374 using FE E_norm by (rule subspace_normed_vs) |
375 have ge_zero: "0 \<le> \<parallel>f\<parallel>\<hyphen>F" |
375 have ge_zero: "0 \<le> \<parallel>f\<parallel>\<hyphen>F" |
376 by (rule normed_vectorspace_with_fn_norm.fn_norm_ge_zero |
376 by (rule normed_vectorspace_with_fn_norm.fn_norm_ge_zero |
377 [OF normed_vectorspace_with_fn_norm.intro, |
377 [OF normed_vectorspace_with_fn_norm.intro, |
378 OF F_norm `continuous F norm f` , folded B_def fn_norm_def]) |
378 OF F_norm `continuous F f norm` , folded B_def fn_norm_def]) |
379 txt {* We define a function @{text p} on @{text E} as follows: |
379 txt {* We define a function @{text p} on @{text E} as follows: |
380 @{text "p x = \<parallel>f\<parallel> \<cdot> \<parallel>x\<parallel>"} *} |
380 @{text "p x = \<parallel>f\<parallel> \<cdot> \<parallel>x\<parallel>"} *} |
381 def p \<equiv> "\<lambda>x. \<parallel>f\<parallel>\<hyphen>F * \<parallel>x\<parallel>" |
381 def p \<equiv> "\<lambda>x. \<parallel>f\<parallel>\<hyphen>F * \<parallel>x\<parallel>" |
382 |
382 |
383 txt {* @{text p} is a seminorm on @{text E}: *} |
383 txt {* @{text p} is a seminorm on @{text E}: *} |
420 txt {* @{text f} is bounded by @{text p}. *} |
420 txt {* @{text f} is bounded by @{text p}. *} |
421 |
421 |
422 have "\<forall>x \<in> F. \<bar>f x\<bar> \<le> p x" |
422 have "\<forall>x \<in> F. \<bar>f x\<bar> \<le> p x" |
423 proof |
423 proof |
424 fix x assume "x \<in> F" |
424 fix x assume "x \<in> F" |
425 with `continuous F norm f` and linearform |
425 with `continuous F f norm` and linearform |
426 show "\<bar>f x\<bar> \<le> p x" |
426 show "\<bar>f x\<bar> \<le> p x" |
427 unfolding p_def by (rule normed_vectorspace_with_fn_norm.fn_norm_le_cong |
427 unfolding p_def by (rule normed_vectorspace_with_fn_norm.fn_norm_le_cong |
428 [OF normed_vectorspace_with_fn_norm.intro, |
428 [OF normed_vectorspace_with_fn_norm.intro, |
429 OF F_norm, folded B_def fn_norm_def]) |
429 OF F_norm, folded B_def fn_norm_def]) |
430 qed |
430 qed |
440 and b: "\<forall>x \<in> E. \<bar>g x\<bar> \<le> p x" |
440 and b: "\<forall>x \<in> E. \<bar>g x\<bar> \<le> p x" |
441 by (rule abs_Hahn_Banach [elim_format]) iprover |
441 by (rule abs_Hahn_Banach [elim_format]) iprover |
442 |
442 |
443 txt {* We furthermore have to show that @{text g} is also continuous: *} |
443 txt {* We furthermore have to show that @{text g} is also continuous: *} |
444 |
444 |
445 have g_cont: "continuous E norm g" using linearformE |
445 have g_cont: "continuous E g norm" using linearformE |
446 proof |
446 proof |
447 fix x assume "x \<in> E" |
447 fix x assume "x \<in> E" |
448 with b show "\<bar>g x\<bar> \<le> \<parallel>f\<parallel>\<hyphen>F * \<parallel>x\<parallel>" |
448 with b show "\<bar>g x\<bar> \<le> \<parallel>f\<parallel>\<hyphen>F * \<parallel>x\<parallel>" |
449 by (simp only: p_def) |
449 by (simp only: p_def) |
450 qed |
450 qed |