306 lemma adjoint_adjoint: |
306 lemma adjoint_adjoint: |
307 fixes f :: "'n::euclidean_space \<Rightarrow> 'm::euclidean_space" |
307 fixes f :: "'n::euclidean_space \<Rightarrow> 'm::euclidean_space" |
308 assumes lf: "linear f" |
308 assumes lf: "linear f" |
309 shows "adjoint (adjoint f) = f" |
309 shows "adjoint (adjoint f) = f" |
310 by (rule adjoint_unique, simp add: adjoint_clauses [OF lf]) |
310 by (rule adjoint_unique, simp add: adjoint_clauses [OF lf]) |
311 |
|
312 |
|
313 subsection%unimportant \<open>Interlude: Some properties of real sets\<close> |
|
314 |
|
315 lemma seq_mono_lemma: |
|
316 assumes "\<forall>(n::nat) \<ge> m. (d n :: real) < e n" |
|
317 and "\<forall>n \<ge> m. e n \<le> e m" |
|
318 shows "\<forall>n \<ge> m. d n < e m" |
|
319 using assms by force |
|
320 |
|
321 lemma infinite_enumerate: |
|
322 assumes fS: "infinite S" |
|
323 shows "\<exists>r::nat\<Rightarrow>nat. strict_mono r \<and> (\<forall>n. r n \<in> S)" |
|
324 unfolding strict_mono_def |
|
325 using enumerate_in_set[OF fS] enumerate_mono[of _ _ S] fS by auto |
|
326 |
|
327 lemma approachable_lt_le: "(\<exists>(d::real) > 0. \<forall>x. f x < d \<longrightarrow> P x) \<longleftrightarrow> (\<exists>d>0. \<forall>x. f x \<le> d \<longrightarrow> P x)" |
|
328 apply auto |
|
329 apply (rule_tac x="d/2" in exI) |
|
330 apply auto |
|
331 done |
|
332 |
|
333 lemma approachable_lt_le2: \<comment> \<open>like the above, but pushes aside an extra formula\<close> |
|
334 "(\<exists>(d::real) > 0. \<forall>x. Q x \<longrightarrow> f x < d \<longrightarrow> P x) \<longleftrightarrow> (\<exists>d>0. \<forall>x. f x \<le> d \<longrightarrow> Q x \<longrightarrow> P x)" |
|
335 apply auto |
|
336 apply (rule_tac x="d/2" in exI, auto) |
|
337 done |
|
338 |
|
339 lemma triangle_lemma: |
|
340 fixes x y z :: real |
|
341 assumes x: "0 \<le> x" |
|
342 and y: "0 \<le> y" |
|
343 and z: "0 \<le> z" |
|
344 and xy: "x\<^sup>2 \<le> y\<^sup>2 + z\<^sup>2" |
|
345 shows "x \<le> y + z" |
|
346 proof - |
|
347 have "y\<^sup>2 + z\<^sup>2 \<le> y\<^sup>2 + 2 * y * z + z\<^sup>2" |
|
348 using z y by simp |
|
349 with xy have th: "x\<^sup>2 \<le> (y + z)\<^sup>2" |
|
350 by (simp add: power2_eq_square field_simps) |
|
351 from y z have yz: "y + z \<ge> 0" |
|
352 by arith |
|
353 from power2_le_imp_le[OF th yz] show ?thesis . |
|
354 qed |
|
355 |
|
356 |
311 |
357 |
312 |
358 subsection \<open>Archimedean properties and useful consequences\<close> |
313 subsection \<open>Archimedean properties and useful consequences\<close> |
359 |
314 |
360 text\<open>Bernoulli's inequality\<close> |
315 text\<open>Bernoulli's inequality\<close> |