3 Author: Gertrud Bauer, TU Munich |
3 Author: Gertrud Bauer, TU Munich |
4 *) |
4 *) |
5 |
5 |
6 header {* Extending non-maximal functions *} |
6 header {* Extending non-maximal functions *} |
7 |
7 |
8 theory HahnBanachExtLemmas imports FunctionNorm begin |
8 theory HahnBanachExtLemmas |
|
9 imports FunctionNorm |
|
10 begin |
9 |
11 |
10 text {* |
12 text {* |
11 In this section the following context is presumed. Let @{text E} be |
13 In this section the following context is presumed. Let @{text E} be |
12 a real vector space with a seminorm @{text q} on @{text E}. @{text |
14 a real vector space with a seminorm @{text q} on @{text E}. @{text |
13 F} is a subspace of @{text E} and @{text f} a linear function on |
15 F} is a subspace of @{text E} and @{text f} a linear function on |
96 assumes E: "vectorspace E" |
98 assumes E: "vectorspace E" |
97 shows "linearform H' h'" |
99 shows "linearform H' h'" |
98 proof - |
100 proof - |
99 interpret linearform [H h] by fact |
101 interpret linearform [H h] by fact |
100 interpret vectorspace [E] by fact |
102 interpret vectorspace [E] by fact |
101 show ?thesis proof |
103 show ?thesis |
|
104 proof |
102 note E = `vectorspace E` |
105 note E = `vectorspace E` |
103 have H': "vectorspace H'" |
106 have H': "vectorspace H'" |
104 proof (unfold H'_def) |
107 proof (unfold H'_def) |
105 from `x0 \<in> E` |
108 from `x0 \<in> E` |
106 have "lin x0 \<unlhd> E" .. |
109 have "lin x0 \<unlhd> E" .. |
114 by (rule vectorspace.add_closed) |
117 by (rule vectorspace.add_closed) |
115 with x1 x2 obtain y y1 y2 a a1 a2 where |
118 with x1 x2 obtain y y1 y2 a a1 a2 where |
116 x1x2: "x1 + x2 = y + a \<cdot> x0" and y: "y \<in> H" |
119 x1x2: "x1 + x2 = y + a \<cdot> x0" and y: "y \<in> H" |
117 and x1_rep: "x1 = y1 + a1 \<cdot> x0" and y1: "y1 \<in> H" |
120 and x1_rep: "x1 = y1 + a1 \<cdot> x0" and y1: "y1 \<in> H" |
118 and x2_rep: "x2 = y2 + a2 \<cdot> x0" and y2: "y2 \<in> H" |
121 and x2_rep: "x2 = y2 + a2 \<cdot> x0" and y2: "y2 \<in> H" |
119 by (unfold H'_def sum_def lin_def) blast |
122 unfolding H'_def sum_def lin_def by blast |
120 |
123 |
121 have ya: "y1 + y2 = y \<and> a1 + a2 = a" using E HE _ y x0 |
124 have ya: "y1 + y2 = y \<and> a1 + a2 = a" using E HE _ y x0 |
122 proof (rule decomp_H') txt_raw {* \label{decomp-H-use} *} |
125 proof (rule decomp_H') txt_raw {* \label{decomp-H-use} *} |
123 from HE y1 y2 show "y1 + y2 \<in> H" |
126 from HE y1 y2 show "y1 + y2 \<in> H" |
124 by (rule subspace.add_closed) |
127 by (rule subspace.add_closed) |
152 show "h' (c \<cdot> x1) = c * (h' x1)" |
155 show "h' (c \<cdot> x1) = c * (h' x1)" |
153 proof - |
156 proof - |
154 from H' x1 have ax1: "c \<cdot> x1 \<in> H'" |
157 from H' x1 have ax1: "c \<cdot> x1 \<in> H'" |
155 by (rule vectorspace.mult_closed) |
158 by (rule vectorspace.mult_closed) |
156 with x1 obtain y a y1 a1 where |
159 with x1 obtain y a y1 a1 where |
157 cx1_rep: "c \<cdot> x1 = y + a \<cdot> x0" and y: "y \<in> H" |
160 cx1_rep: "c \<cdot> x1 = y + a \<cdot> x0" and y: "y \<in> H" |
158 and x1_rep: "x1 = y1 + a1 \<cdot> x0" and y1: "y1 \<in> H" |
161 and x1_rep: "x1 = y1 + a1 \<cdot> x0" and y1: "y1 \<in> H" |
159 by (unfold H'_def sum_def lin_def) blast |
162 unfolding H'_def sum_def lin_def by blast |
160 |
163 |
161 have ya: "c \<cdot> y1 = y \<and> c * a1 = a" using E HE _ y x0 |
164 have ya: "c \<cdot> y1 = y \<and> c * a1 = a" using E HE _ y x0 |
162 proof (rule decomp_H') |
165 proof (rule decomp_H') |
163 from HE y1 show "c \<cdot> y1 \<in> H" |
166 from HE y1 show "c \<cdot> y1 \<in> H" |
164 by (rule subspace.mult_closed) |
167 by (rule subspace.mult_closed) |
202 proof - |
205 proof - |
203 interpret vectorspace [E] by fact |
206 interpret vectorspace [E] by fact |
204 interpret subspace [H E] by fact |
207 interpret subspace [H E] by fact |
205 interpret seminorm [E p] by fact |
208 interpret seminorm [E p] by fact |
206 interpret linearform [H h] by fact |
209 interpret linearform [H h] by fact |
207 show ?thesis proof |
210 show ?thesis |
|
211 proof |
208 fix x assume x': "x \<in> H'" |
212 fix x assume x': "x \<in> H'" |
209 show "h' x \<le> p x" |
213 show "h' x \<le> p x" |
210 proof - |
214 proof - |
211 from a' have a1: "\<forall>ya \<in> H. - p (ya + x0) - h ya \<le> xi" |
215 from a' have a1: "\<forall>ya \<in> H. - p (ya + x0) - h ya \<le> xi" |
212 and a2: "\<forall>ya \<in> H. xi \<le> p (ya + x0) - h ya" by auto |
216 and a2: "\<forall>ya \<in> H. xi \<le> p (ya + x0) - h ya" by auto |
213 from x' obtain y a where |
217 from x' obtain y a where |
214 x_rep: "x = y + a \<cdot> x0" and y: "y \<in> H" |
218 x_rep: "x = y + a \<cdot> x0" and y: "y \<in> H" |
215 by (unfold H'_def sum_def lin_def) blast |
219 unfolding H'_def sum_def lin_def by blast |
216 from y have y': "y \<in> E" .. |
220 from y have y': "y \<in> E" .. |
217 from y have ay: "inverse a \<cdot> y \<in> H" by simp |
221 from y have ay: "inverse a \<cdot> y \<in> H" by simp |
218 |
222 |
219 from h'_def x_rep E HE y x0 have "h' x = h y + a * xi" |
223 from h'_def x_rep E HE y x0 have "h' x = h y + a * xi" |
220 by (rule h'_definite) |
224 by (rule h'_definite) |
226 also from x0 y' z have "p y = p (y + a \<cdot> x0)" by simp |
230 also from x0 y' z have "p y = p (y + a \<cdot> x0)" by simp |
227 finally show ?thesis . |
231 finally show ?thesis . |
228 next |
232 next |
229 txt {* In the case @{text "a < 0"}, we use @{text "a\<^sub>1"} |
233 txt {* In the case @{text "a < 0"}, we use @{text "a\<^sub>1"} |
230 with @{text ya} taken as @{text "y / a"}: *} |
234 with @{text ya} taken as @{text "y / a"}: *} |
231 assume lz: "a < 0" hence nz: "a \<noteq> 0" by simp |
235 assume lz: "a < 0" then have nz: "a \<noteq> 0" by simp |
232 from a1 ay |
236 from a1 ay |
233 have "- p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y) \<le> xi" .. |
237 have "- p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y) \<le> xi" .. |
234 with lz have "a * xi \<le> |
238 with lz have "a * xi \<le> |
235 a * (- p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y))" |
239 a * (- p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y))" |
236 by (simp add: mult_left_mono_neg order_less_imp_le) |
240 by (simp add: mult_left_mono_neg order_less_imp_le) |
248 finally have "a * xi \<le> p (y + a \<cdot> x0) - h y" . |
252 finally have "a * xi \<le> p (y + a \<cdot> x0) - h y" . |
249 then show ?thesis by simp |
253 then show ?thesis by simp |
250 next |
254 next |
251 txt {* In the case @{text "a > 0"}, we use @{text "a\<^sub>2"} |
255 txt {* In the case @{text "a > 0"}, we use @{text "a\<^sub>2"} |
252 with @{text ya} taken as @{text "y / a"}: *} |
256 with @{text ya} taken as @{text "y / a"}: *} |
253 assume gz: "0 < a" hence nz: "a \<noteq> 0" by simp |
257 assume gz: "0 < a" then have nz: "a \<noteq> 0" by simp |
254 from a2 ay |
258 from a2 ay |
255 have "xi \<le> p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y)" .. |
259 have "xi \<le> p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y)" .. |
256 with gz have "a * xi \<le> |
260 with gz have "a * xi \<le> |
257 a * (p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y))" |
261 a * (p (inverse a \<cdot> y + x0) - h (inverse a \<cdot> y))" |
258 by simp |
262 by simp |
259 also have "... = a * p (inverse a \<cdot> y + x0) - a * h (inverse a \<cdot> y)" |
263 also have "\<dots> = a * p (inverse a \<cdot> y + x0) - a * h (inverse a \<cdot> y)" |
260 by (simp add: right_diff_distrib) |
264 by (simp add: right_diff_distrib) |
261 also from gz x0 y' |
265 also from gz x0 y' |
262 have "a * p (inverse a \<cdot> y + x0) = p (a \<cdot> (inverse a \<cdot> y + x0))" |
266 have "a * p (inverse a \<cdot> y + x0) = p (a \<cdot> (inverse a \<cdot> y + x0))" |
263 by (simp add: abs_homogenous) |
267 by (simp add: abs_homogenous) |
264 also from nz x0 y' have "\<dots> = p (y + a \<cdot> x0)" |
268 also from nz x0 y' have "\<dots> = p (y + a \<cdot> x0)" |