33 \begin{matharray}{l} \All |
33 \begin{matharray}{l} \All |
34 {u\in F}{\All {v\in F}{a\ap u \leq b \ap v}} |
34 {u\in F}{\All {v\in F}{a\ap u \leq b \ap v}} |
35 \end{matharray} *}; |
35 \end{matharray} *}; |
36 |
36 |
37 lemma ex_xi: |
37 lemma ex_xi: |
38 "[| is_vectorspace F; !! u v. [| u \\<in> F; v \\<in> F |] ==> a u <= b v |] |
38 "[| is_vectorspace F; !! u v. [| u \<in> F; v \<in> F |] ==> a u <= b v |] |
39 ==> \\<exists>xi::real. \\<forall>y \\<in> F. a y <= xi \\<and> xi <= b y"; |
39 ==> \<exists>xi::real. \<forall>y \<in> F. a y <= xi \<and> xi <= b y"; |
40 proof -; |
40 proof -; |
41 assume vs: "is_vectorspace F"; |
41 assume vs: "is_vectorspace F"; |
42 assume r: "(!! u v. [| u \\<in> F; v \\<in> F |] ==> a u <= (b v::real))"; |
42 assume r: "(!! u v. [| u \<in> F; v \<in> F |] ==> a u <= (b v::real))"; |
43 |
43 |
44 txt {* From the completeness of the reals follows: |
44 txt {* From the completeness of the reals follows: |
45 The set $S = \{a\: u\dt\: u\in F\}$ has a supremum, if |
45 The set $S = \{a\: u\dt\: u\in F\}$ has a supremum, if |
46 it is non-empty and has an upper bound. *}; |
46 it is non-empty and has an upper bound. *}; |
47 |
47 |
48 let ?S = "{a u :: real | u. u \\<in> F}"; |
48 let ?S = "{a u :: real | u. u \<in> F}"; |
49 |
49 |
50 have "\\<exists>xi. isLub UNIV ?S xi"; |
50 have "\<exists>xi. isLub UNIV ?S xi"; |
51 proof (rule reals_complete); |
51 proof (rule reals_complete); |
52 |
52 |
53 txt {* The set $S$ is non-empty, since $a\ap\zero \in S$: *}; |
53 txt {* The set $S$ is non-empty, since $a\ap\zero \in S$: *}; |
54 |
54 |
55 from vs; have "a 0 \\<in> ?S"; by force; |
55 from vs; have "a 0 \<in> ?S"; by force; |
56 thus "\\<exists>X. X \\<in> ?S"; ..; |
56 thus "\<exists>X. X \<in> ?S"; ..; |
57 |
57 |
58 txt {* $b\ap \zero$ is an upper bound of $S$: *}; |
58 txt {* $b\ap \zero$ is an upper bound of $S$: *}; |
59 |
59 |
60 show "\\<exists>Y. isUb UNIV ?S Y"; |
60 show "\<exists>Y. isUb UNIV ?S Y"; |
61 proof; |
61 proof; |
62 show "isUb UNIV ?S (b 0)"; |
62 show "isUb UNIV ?S (b 0)"; |
63 proof (intro isUbI setleI ballI); |
63 proof (intro isUbI setleI ballI); |
64 show "b 0 \\<in> UNIV"; ..; |
64 show "b 0 \<in> UNIV"; ..; |
65 next; |
65 next; |
66 |
66 |
67 txt {* Every element $y\in S$ is less than $b\ap \zero$: *}; |
67 txt {* Every element $y\in S$ is less than $b\ap \zero$: *}; |
68 |
68 |
69 fix y; assume y: "y \\<in> ?S"; |
69 fix y; assume y: "y \<in> ?S"; |
70 from y; have "\\<exists>u \\<in> F. y = a u"; by fast; |
70 from y; have "\<exists>u \<in> F. y = a u"; by fast; |
71 thus "y <= b 0"; |
71 thus "y <= b 0"; |
72 proof; |
72 proof; |
73 fix u; assume "u \\<in> F"; |
73 fix u; assume "u \<in> F"; |
74 assume "y = a u"; |
74 assume "y = a u"; |
75 also; have "a u <= b 0"; by (rule r) (simp!)+; |
75 also; have "a u <= b 0"; by (rule r) (simp!)+; |
76 finally; show ?thesis; .; |
76 finally; show ?thesis; .; |
77 qed; |
77 qed; |
78 qed; |
78 qed; |
79 qed; |
79 qed; |
80 qed; |
80 qed; |
81 |
81 |
82 thus "\\<exists>xi. \\<forall>y \\<in> F. a y <= xi \\<and> xi <= b y"; |
82 thus "\<exists>xi. \<forall>y \<in> F. a y <= xi \<and> xi <= b y"; |
83 proof (elim exE); |
83 proof (elim exE); |
84 fix xi; assume "isLub UNIV ?S xi"; |
84 fix xi; assume "isLub UNIV ?S xi"; |
85 show ?thesis; |
85 show ?thesis; |
86 proof (intro exI conjI ballI); |
86 proof (intro exI conjI ballI); |
87 |
87 |
88 txt {* For all $y\in F$ holds $a\ap y \leq \xi$: *}; |
88 txt {* For all $y\in F$ holds $a\ap y \leq \xi$: *}; |
89 |
89 |
90 fix y; assume y: "y \\<in> F"; |
90 fix y; assume y: "y \<in> F"; |
91 show "a y <= xi"; |
91 show "a y <= xi"; |
92 proof (rule isUbD); |
92 proof (rule isUbD); |
93 show "isUb UNIV ?S xi"; ..; |
93 show "isUb UNIV ?S xi"; ..; |
94 qed (force!); |
94 qed (force!); |
95 next; |
95 next; |
96 |
96 |
97 txt {* For all $y\in F$ holds $\xi\leq b\ap y$: *}; |
97 txt {* For all $y\in F$ holds $\xi\leq b\ap y$: *}; |
98 |
98 |
99 fix y; assume "y \\<in> F"; |
99 fix y; assume "y \<in> F"; |
100 show "xi <= b y"; |
100 show "xi <= b y"; |
101 proof (intro isLub_le_isUb isUbI setleI); |
101 proof (intro isLub_le_isUb isUbI setleI); |
102 show "b y \\<in> UNIV"; ..; |
102 show "b y \<in> UNIV"; ..; |
103 show "\\<forall>ya \\<in> ?S. ya <= b y"; |
103 show "\<forall>ya \<in> ?S. ya <= b y"; |
104 proof; |
104 proof; |
105 fix au; assume au: "au \\<in> ?S "; |
105 fix au; assume au: "au \<in> ?S "; |
106 hence "\\<exists>u \\<in> F. au = a u"; by fast; |
106 hence "\<exists>u \<in> F. au = a u"; by fast; |
107 thus "au <= b y"; |
107 thus "au <= b y"; |
108 proof; |
108 proof; |
109 fix u; assume "u \\<in> F"; assume "au = a u"; |
109 fix u; assume "u \<in> F"; assume "au = a u"; |
110 also; have "... <= b y"; by (rule r); |
110 also; have "... <= b y"; by (rule r); |
111 finally; show ?thesis; .; |
111 finally; show ?thesis; .; |
112 qed; |
112 qed; |
113 qed; |
113 qed; |
114 qed; |
114 qed; |
119 text{* \medskip The function $h'$ is defined as a |
119 text{* \medskip The function $h'$ is defined as a |
120 $h'\ap x = h\ap y + a\cdot \xi$ where $x = y + a\mult \xi$ |
120 $h'\ap x = h\ap y + a\cdot \xi$ where $x = y + a\mult \xi$ |
121 is a linear extension of $h$ to $H'$. *}; |
121 is a linear extension of $h$ to $H'$. *}; |
122 |
122 |
123 lemma h'_lf: |
123 lemma h'_lf: |
124 "[| h' == (\\<lambda>x. let (y, a) = SOME (y, a). x = y + a \\<cdot> x0 \\<and> y \\<in> H |
124 "[| h' == (\<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x0 \<and> y \<in> H |
125 in h y + a * xi); |
125 in h y + a * xi); |
126 H' == H + lin x0; is_subspace H E; is_linearform H h; x0 \\<notin> H; |
126 H' == H + lin x0; is_subspace H E; is_linearform H h; x0 \<notin> H; |
127 x0 \\<in> E; x0 \\<noteq> 0; is_vectorspace E |] |
127 x0 \<in> E; x0 \<noteq> 0; is_vectorspace E |] |
128 ==> is_linearform H' h'"; |
128 ==> is_linearform H' h'"; |
129 proof -; |
129 proof -; |
130 assume h'_def: |
130 assume h'_def: |
131 "h' == (\\<lambda>x. let (y, a) = SOME (y, a). x = y + a \\<cdot> x0 \\<and> y \\<in> H |
131 "h' == (\<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x0 \<and> y \<in> H |
132 in h y + a * xi)" |
132 in h y + a * xi)" |
133 and H'_def: "H' == H + lin x0" |
133 and H'_def: "H' == H + lin x0" |
134 and vs: "is_subspace H E" "is_linearform H h" "x0 \\<notin> H" |
134 and vs: "is_subspace H E" "is_linearform H h" "x0 \<notin> H" |
135 "x0 \\<noteq> 0" "x0 \\<in> E" "is_vectorspace E"; |
135 "x0 \<noteq> 0" "x0 \<in> E" "is_vectorspace E"; |
136 |
136 |
137 have h': "is_vectorspace H'"; |
137 have h': "is_vectorspace H'"; |
138 proof (unfold H'_def, rule vs_sum_vs); |
138 proof (unfold H'_def, rule vs_sum_vs); |
139 show "is_subspace (lin x0) E"; ..; |
139 show "is_subspace (lin x0) E"; ..; |
140 qed; |
140 qed; |
141 |
141 |
142 show ?thesis; |
142 show ?thesis; |
143 proof; |
143 proof; |
144 fix x1 x2; assume x1: "x1 \\<in> H'" and x2: "x2 \\<in> H'"; |
144 fix x1 x2; assume x1: "x1 \<in> H'" and x2: "x2 \<in> H'"; |
145 |
145 |
146 txt{* We now have to show that $h'$ is additive, i.~e.\ |
146 txt{* We now have to show that $h'$ is additive, i.~e.\ |
147 $h' \ap (x_1\plus x_2) = h'\ap x_1 + h'\ap x_2$ |
147 $h' \ap (x_1\plus x_2) = h'\ap x_1 + h'\ap x_2$ |
148 for $x_1, x_2\in H$. *}; |
148 for $x_1, x_2\in H$. *}; |
149 |
149 |
150 have x1x2: "x1 + x2 \\<in> H'"; |
150 have x1x2: "x1 + x2 \<in> H'"; |
151 by (rule vs_add_closed, rule h'); |
151 by (rule vs_add_closed, rule h'); |
152 from x1; |
152 from x1; |
153 have ex_x1: "\\<exists>y1 a1. x1 = y1 + a1 \\<cdot> x0 \\<and> y1 \\<in> H"; |
153 have ex_x1: "\<exists>y1 a1. x1 = y1 + a1 \<cdot> x0 \<and> y1 \<in> H"; |
154 by (unfold H'_def vs_sum_def lin_def) fast; |
154 by (unfold H'_def vs_sum_def lin_def) fast; |
155 from x2; |
155 from x2; |
156 have ex_x2: "\\<exists>y2 a2. x2 = y2 + a2 \\<cdot> x0 \\<and> y2 \\<in> H"; |
156 have ex_x2: "\<exists>y2 a2. x2 = y2 + a2 \<cdot> x0 \<and> y2 \<in> H"; |
157 by (unfold H'_def vs_sum_def lin_def) fast; |
157 by (unfold H'_def vs_sum_def lin_def) fast; |
158 from x1x2; |
158 from x1x2; |
159 have ex_x1x2: "\\<exists>y a. x1 + x2 = y + a \\<cdot> x0 \\<and> y \\<in> H"; |
159 have ex_x1x2: "\<exists>y a. x1 + x2 = y + a \<cdot> x0 \<and> y \<in> H"; |
160 by (unfold H'_def vs_sum_def lin_def) fast; |
160 by (unfold H'_def vs_sum_def lin_def) fast; |
161 |
161 |
162 from ex_x1 ex_x2 ex_x1x2; |
162 from ex_x1 ex_x2 ex_x1x2; |
163 show "h' (x1 + x2) = h' x1 + h' x2"; |
163 show "h' (x1 + x2) = h' x1 + h' x2"; |
164 proof (elim exE conjE); |
164 proof (elim exE conjE); |
165 fix y1 y2 y a1 a2 a; |
165 fix y1 y2 y a1 a2 a; |
166 assume y1: "x1 = y1 + a1 \\<cdot> x0" and y1': "y1 \\<in> H" |
166 assume y1: "x1 = y1 + a1 \<cdot> x0" and y1': "y1 \<in> H" |
167 and y2: "x2 = y2 + a2 \\<cdot> x0" and y2': "y2 \\<in> H" |
167 and y2: "x2 = y2 + a2 \<cdot> x0" and y2': "y2 \<in> H" |
168 and y: "x1 + x2 = y + a \\<cdot> x0" and y': "y \\<in> H"; |
168 and y: "x1 + x2 = y + a \<cdot> x0" and y': "y \<in> H"; |
169 txt {* \label{decomp-H-use}*} |
169 txt {* \label{decomp-H-use}*} |
170 have ya: "y1 + y2 = y \\<and> a1 + a2 = a"; |
170 have ya: "y1 + y2 = y \<and> a1 + a2 = a"; |
171 proof (rule decomp_H') |
171 proof (rule decomp_H') |
172 show "y1 + y2 + (a1 + a2) \\<cdot> x0 = y + a \\<cdot> x0"; |
172 show "y1 + y2 + (a1 + a2) \<cdot> x0 = y + a \<cdot> x0"; |
173 by (simp! add: vs_add_mult_distrib2 [of E]); |
173 by (simp! add: vs_add_mult_distrib2 [of E]); |
174 show "y1 + y2 \\<in> H"; ..; |
174 show "y1 + y2 \<in> H"; ..; |
175 qed; |
175 qed; |
176 |
176 |
177 have "h' (x1 + x2) = h y + a * xi"; |
177 have "h' (x1 + x2) = h y + a * xi"; |
178 by (rule h'_definite); |
178 by (rule h'_definite); |
179 also; have "... = h (y1 + y2) + (a1 + a2) * xi"; |
179 also; have "... = h (y1 + y2) + (a1 + a2) * xi"; |
195 i.~e.\ $h'\ap (c \mult x_1) = c \cdot h'\ap x_1$ |
195 i.~e.\ $h'\ap (c \mult x_1) = c \cdot h'\ap x_1$ |
196 for $x\in H$ and $c\in \bbbR$. |
196 for $x\in H$ and $c\in \bbbR$. |
197 *}; |
197 *}; |
198 |
198 |
199 next; |
199 next; |
200 fix c x1; assume x1: "x1 \\<in> H'"; |
200 fix c x1; assume x1: "x1 \<in> H'"; |
201 have ax1: "c \\<cdot> x1 \\<in> H'"; |
201 have ax1: "c \<cdot> x1 \<in> H'"; |
202 by (rule vs_mult_closed, rule h'); |
202 by (rule vs_mult_closed, rule h'); |
203 from x1; |
203 from x1; |
204 have ex_x: "!! x. x\\<in> H' ==> \\<exists>y a. x = y + a \\<cdot> x0 \\<and> y \\<in> H"; |
204 have ex_x: "!! x. x\<in> H' ==> \<exists>y a. x = y + a \<cdot> x0 \<and> y \<in> H"; |
205 by (unfold H'_def vs_sum_def lin_def) fast; |
205 by (unfold H'_def vs_sum_def lin_def) fast; |
206 |
206 |
207 from x1; have ex_x1: "\\<exists>y1 a1. x1 = y1 + a1 \\<cdot> x0 \\<and> y1 \\<in> H"; |
207 from x1; have ex_x1: "\<exists>y1 a1. x1 = y1 + a1 \<cdot> x0 \<and> y1 \<in> H"; |
208 by (unfold H'_def vs_sum_def lin_def) fast; |
208 by (unfold H'_def vs_sum_def lin_def) fast; |
209 with ex_x [of "c \\<cdot> x1", OF ax1]; |
209 with ex_x [of "c \<cdot> x1", OF ax1]; |
210 show "h' (c \\<cdot> x1) = c * (h' x1)"; |
210 show "h' (c \<cdot> x1) = c * (h' x1)"; |
211 proof (elim exE conjE); |
211 proof (elim exE conjE); |
212 fix y1 y a1 a; |
212 fix y1 y a1 a; |
213 assume y1: "x1 = y1 + a1 \\<cdot> x0" and y1': "y1 \\<in> H" |
213 assume y1: "x1 = y1 + a1 \<cdot> x0" and y1': "y1 \<in> H" |
214 and y: "c \\<cdot> x1 = y + a \\<cdot> x0" and y': "y \\<in> H"; |
214 and y: "c \<cdot> x1 = y + a \<cdot> x0" and y': "y \<in> H"; |
215 |
215 |
216 have ya: "c \\<cdot> y1 = y \\<and> c * a1 = a"; |
216 have ya: "c \<cdot> y1 = y \<and> c * a1 = a"; |
217 proof (rule decomp_H'); |
217 proof (rule decomp_H'); |
218 show "c \\<cdot> y1 + (c * a1) \\<cdot> x0 = y + a \\<cdot> x0"; |
218 show "c \<cdot> y1 + (c * a1) \<cdot> x0 = y + a \<cdot> x0"; |
219 by (simp! add: vs_add_mult_distrib1); |
219 by (simp! add: vs_add_mult_distrib1); |
220 show "c \\<cdot> y1 \\<in> H"; ..; |
220 show "c \<cdot> y1 \<in> H"; ..; |
221 qed; |
221 qed; |
222 |
222 |
223 have "h' (c \\<cdot> x1) = h y + a * xi"; |
223 have "h' (c \<cdot> x1) = h y + a * xi"; |
224 by (rule h'_definite); |
224 by (rule h'_definite); |
225 also; have "... = h (c \\<cdot> y1) + (c * a1) * xi"; |
225 also; have "... = h (c \<cdot> y1) + (c * a1) * xi"; |
226 by (simp add: ya); |
226 by (simp add: ya); |
227 also; from vs y1'; have "... = c * h y1 + c * a1 * xi"; |
227 also; from vs y1'; have "... = c * h y1 + c * a1 * xi"; |
228 by (simp add: linearform_mult [of H]); |
228 by (simp add: linearform_mult [of H]); |
229 also; from vs y1'; have "... = c * (h y1 + a1 * xi)"; |
229 also; from vs y1'; have "... = c * (h y1 + a1 * xi)"; |
230 by (simp add: real_add_mult_distrib2 real_mult_assoc); |
230 by (simp add: real_add_mult_distrib2 real_mult_assoc); |
237 |
237 |
238 text{* \medskip The linear extension $h'$ of $h$ |
238 text{* \medskip The linear extension $h'$ of $h$ |
239 is bounded by the seminorm $p$. *}; |
239 is bounded by the seminorm $p$. *}; |
240 |
240 |
241 lemma h'_norm_pres: |
241 lemma h'_norm_pres: |
242 "[| h' == (\\<lambda>x. let (y, a) = SOME (y, a). x = y + a \\<cdot> x0 \\<and> y \\<in> H |
242 "[| h' == (\<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x0 \<and> y \<in> H |
243 in h y + a * xi); |
243 in h y + a * xi); |
244 H' == H + lin x0; x0 \\<notin> H; x0 \\<in> E; x0 \\<noteq> 0; is_vectorspace E; |
244 H' == H + lin x0; x0 \<notin> H; x0 \<in> E; x0 \<noteq> 0; is_vectorspace E; |
245 is_subspace H E; is_seminorm E p; is_linearform H h; |
245 is_subspace H E; is_seminorm E p; is_linearform H h; |
246 \\<forall>y \\<in> H. h y <= p y; |
246 \<forall>y \<in> H. h y <= p y; |
247 \\<forall>y \\<in> H. - p (y + x0) - h y <= xi \\<and> xi <= p (y + x0) - h y |] |
247 \<forall>y \<in> H. - p (y + x0) - h y <= xi \<and> xi <= p (y + x0) - h y |] |
248 ==> \\<forall>x \\<in> H'. h' x <= p x"; |
248 ==> \<forall>x \<in> H'. h' x <= p x"; |
249 proof; |
249 proof; |
250 assume h'_def: |
250 assume h'_def: |
251 "h' == (\\<lambda>x. let (y, a) = SOME (y, a). x = y + a \\<cdot> x0 \\<and> y \\<in> H |
251 "h' == (\<lambda>x. let (y, a) = SOME (y, a). x = y + a \<cdot> x0 \<and> y \<in> H |
252 in (h y) + a * xi)" |
252 in (h y) + a * xi)" |
253 and H'_def: "H' == H + lin x0" |
253 and H'_def: "H' == H + lin x0" |
254 and vs: "x0 \\<notin> H" "x0 \\<in> E" "x0 \\<noteq> 0" "is_vectorspace E" |
254 and vs: "x0 \<notin> H" "x0 \<in> E" "x0 \<noteq> 0" "is_vectorspace E" |
255 "is_subspace H E" "is_seminorm E p" "is_linearform H h" |
255 "is_subspace H E" "is_seminorm E p" "is_linearform H h" |
256 and a: "\\<forall>y \\<in> H. h y <= p y"; |
256 and a: "\<forall>y \<in> H. h y <= p y"; |
257 presume a1: "\\<forall>ya \\<in> H. - p (ya + x0) - h ya <= xi"; |
257 presume a1: "\<forall>ya \<in> H. - p (ya + x0) - h ya <= xi"; |
258 presume a2: "\\<forall>ya \\<in> H. xi <= p (ya + x0) - h ya"; |
258 presume a2: "\<forall>ya \<in> H. xi <= p (ya + x0) - h ya"; |
259 fix x; assume "x \\<in> H'"; |
259 fix x; assume "x \<in> H'"; |
260 have ex_x: |
260 have ex_x: |
261 "!! x. x \\<in> H' ==> \\<exists>y a. x = y + a \\<cdot> x0 \\<and> y \\<in> H"; |
261 "!! x. x \<in> H' ==> \<exists>y a. x = y + a \<cdot> x0 \<and> y \<in> H"; |
262 by (unfold H'_def vs_sum_def lin_def) fast; |
262 by (unfold H'_def vs_sum_def lin_def) fast; |
263 have "\\<exists>y a. x = y + a \\<cdot> x0 \\<and> y \\<in> H"; |
263 have "\<exists>y a. x = y + a \<cdot> x0 \<and> y \<in> H"; |
264 by (rule ex_x); |
264 by (rule ex_x); |
265 thus "h' x <= p x"; |
265 thus "h' x <= p x"; |
266 proof (elim exE conjE); |
266 proof (elim exE conjE); |
267 fix y a; assume x: "x = y + a \\<cdot> x0" and y: "y \\<in> H"; |
267 fix y a; assume x: "x = y + a \<cdot> x0" and y: "y \<in> H"; |
268 have "h' x = h y + a * xi"; |
268 have "h' x = h y + a * xi"; |
269 by (rule h'_definite); |
269 by (rule h'_definite); |
270 |
270 |
271 txt{* Now we show |
271 txt{* Now we show |
272 $h\ap y + a \cdot \xi\leq p\ap (y\plus a \mult x_0)$ |
272 $h\ap y + a \cdot \xi\leq p\ap (y\plus a \mult x_0)$ |
273 by case analysis on $a$. *}; |
273 by case analysis on $a$. *}; |
274 |
274 |
275 also; have "... <= p (y + a \\<cdot> x0)"; |
275 also; have "... <= p (y + a \<cdot> x0)"; |
276 proof (rule linorder_less_split); |
276 proof (rule linorder_less_split); |
277 |
277 |
278 assume z: "a = #0"; |
278 assume z: "a = #0"; |
279 with vs y a; show ?thesis; by simp; |
279 with vs y a; show ?thesis; by simp; |
280 |
280 |
281 txt {* In the case $a < 0$, we use $a_1$ with $\idt{ya}$ |
281 txt {* In the case $a < 0$, we use $a_1$ with $\idt{ya}$ |
282 taken as $y/a$: *}; |
282 taken as $y/a$: *}; |
283 |
283 |
284 next; |
284 next; |
285 assume lz: "a < #0"; hence nz: "a \\<noteq> #0"; by simp; |
285 assume lz: "a < #0"; hence nz: "a \<noteq> #0"; by simp; |
286 from a1; |
286 from a1; |
287 have "- p (rinv a \\<cdot> y + x0) - h (rinv a \\<cdot> y) <= xi"; |
287 have "- p (rinv a \<cdot> y + x0) - h (rinv a \<cdot> y) <= xi"; |
288 by (rule bspec) (simp!); |
288 by (rule bspec) (simp!); |
289 |
289 |
290 txt {* The thesis for this case now follows by a short |
290 txt {* The thesis for this case now follows by a short |
291 calculation. *}; |
291 calculation. *}; |
292 hence "a * xi <= a * (- p (rinv a \\<cdot> y + x0) - h (rinv a \\<cdot> y))"; |
292 hence "a * xi <= a * (- p (rinv a \<cdot> y + x0) - h (rinv a \<cdot> y))"; |
293 by (rule real_mult_less_le_anti [OF lz]); |
293 by (rule real_mult_less_le_anti [OF lz]); |
294 also; |
294 also; |
295 have "... = - a * (p (rinv a \\<cdot> y + x0)) - a * (h (rinv a \\<cdot> y))"; |
295 have "... = - a * (p (rinv a \<cdot> y + x0)) - a * (h (rinv a \<cdot> y))"; |
296 by (rule real_mult_diff_distrib); |
296 by (rule real_mult_diff_distrib); |
297 also; from lz vs y; |
297 also; from lz vs y; |
298 have "- a * (p (rinv a \\<cdot> y + x0)) = p (a \\<cdot> (rinv a \\<cdot> y + x0))"; |
298 have "- a * (p (rinv a \<cdot> y + x0)) = p (a \<cdot> (rinv a \<cdot> y + x0))"; |
299 by (simp add: seminorm_abs_homogenous abs_minus_eqI2); |
299 by (simp add: seminorm_abs_homogenous abs_minus_eqI2); |
300 also; from nz vs y; have "... = p (y + a \\<cdot> x0)"; |
300 also; from nz vs y; have "... = p (y + a \<cdot> x0)"; |
301 by (simp add: vs_add_mult_distrib1); |
301 by (simp add: vs_add_mult_distrib1); |
302 also; from nz vs y; have "a * (h (rinv a \\<cdot> y)) = h y"; |
302 also; from nz vs y; have "a * (h (rinv a \<cdot> y)) = h y"; |
303 by (simp add: linearform_mult [RS sym]); |
303 by (simp add: linearform_mult [RS sym]); |
304 finally; have "a * xi <= p (y + a \\<cdot> x0) - h y"; .; |
304 finally; have "a * xi <= p (y + a \<cdot> x0) - h y"; .; |
305 |
305 |
306 hence "h y + a * xi <= h y + p (y + a \\<cdot> x0) - h y"; |
306 hence "h y + a * xi <= h y + p (y + a \<cdot> x0) - h y"; |
307 by (simp add: real_add_left_cancel_le); |
307 by (simp add: real_add_left_cancel_le); |
308 thus ?thesis; by simp; |
308 thus ?thesis; by simp; |
309 |
309 |
310 txt {* In the case $a > 0$, we use $a_2$ with $\idt{ya}$ |
310 txt {* In the case $a > 0$, we use $a_2$ with $\idt{ya}$ |
311 taken as $y/a$: *}; |
311 taken as $y/a$: *}; |
312 |
312 |
313 next; |
313 next; |
314 assume gz: "#0 < a"; hence nz: "a \\<noteq> #0"; by simp; |
314 assume gz: "#0 < a"; hence nz: "a \<noteq> #0"; by simp; |
315 from a2; have "xi <= p (rinv a \\<cdot> y + x0) - h (rinv a \\<cdot> y)"; |
315 from a2; have "xi <= p (rinv a \<cdot> y + x0) - h (rinv a \<cdot> y)"; |
316 by (rule bspec) (simp!); |
316 by (rule bspec) (simp!); |
317 |
317 |
318 txt {* The thesis for this case follows by a short |
318 txt {* The thesis for this case follows by a short |
319 calculation: *}; |
319 calculation: *}; |
320 |
320 |
321 with gz; |
321 with gz; |
322 have "a * xi <= a * (p (rinv a \\<cdot> y + x0) - h (rinv a \\<cdot> y))"; |
322 have "a * xi <= a * (p (rinv a \<cdot> y + x0) - h (rinv a \<cdot> y))"; |
323 by (rule real_mult_less_le_mono); |
323 by (rule real_mult_less_le_mono); |
324 also; have "... = a * p (rinv a \\<cdot> y + x0) - a * h (rinv a \\<cdot> y)"; |
324 also; have "... = a * p (rinv a \<cdot> y + x0) - a * h (rinv a \<cdot> y)"; |
325 by (rule real_mult_diff_distrib2); |
325 by (rule real_mult_diff_distrib2); |
326 also; from gz vs y; |
326 also; from gz vs y; |
327 have "a * p (rinv a \\<cdot> y + x0) = p (a \\<cdot> (rinv a \\<cdot> y + x0))"; |
327 have "a * p (rinv a \<cdot> y + x0) = p (a \<cdot> (rinv a \<cdot> y + x0))"; |
328 by (simp add: seminorm_abs_homogenous abs_eqI2); |
328 by (simp add: seminorm_abs_homogenous abs_eqI2); |
329 also; from nz vs y; have "... = p (y + a \\<cdot> x0)"; |
329 also; from nz vs y; have "... = p (y + a \<cdot> x0)"; |
330 by (simp add: vs_add_mult_distrib1); |
330 by (simp add: vs_add_mult_distrib1); |
331 also; from nz vs y; have "a * h (rinv a \\<cdot> y) = h y"; |
331 also; from nz vs y; have "a * h (rinv a \<cdot> y) = h y"; |
332 by (simp add: linearform_mult [RS sym]); |
332 by (simp add: linearform_mult [RS sym]); |
333 finally; have "a * xi <= p (y + a \\<cdot> x0) - h y"; .; |
333 finally; have "a * xi <= p (y + a \<cdot> x0) - h y"; .; |
334 |
334 |
335 hence "h y + a * xi <= h y + (p (y + a \\<cdot> x0) - h y)"; |
335 hence "h y + a * xi <= h y + (p (y + a \<cdot> x0) - h y)"; |
336 by (simp add: real_add_left_cancel_le); |
336 by (simp add: real_add_left_cancel_le); |
337 thus ?thesis; by simp; |
337 thus ?thesis; by simp; |
338 qed; |
338 qed; |
339 also; from x; have "... = p x"; by simp; |
339 also; from x; have "... = p x"; by simp; |
340 finally; show ?thesis; .; |
340 finally; show ?thesis; .; |