equal
deleted
inserted
replaced
573 have finite_S1: "\<And>n. finite (?S1 n)" by simp |
573 have finite_S1: "\<And>n. finite (?S1 n)" by simp |
574 with S2_le_S1 have finite_S2: "\<And>n. finite (?S2 n)" by (rule finite_subset) |
574 with S2_le_S1 have finite_S2: "\<And>n. finite (?S2 n)" by (rule finite_subset) |
575 |
575 |
576 let ?g = "\<lambda>(i,j). a i * b j" |
576 let ?g = "\<lambda>(i,j). a i * b j" |
577 let ?f = "\<lambda>(i,j). norm (a i) * norm (b j)" |
577 let ?f = "\<lambda>(i,j). norm (a i) * norm (b j)" |
578 have f_nonneg: "\<And>x. 0 \<le> ?f x" |
578 have f_nonneg: "\<And>x. 0 \<le> ?f x" by (auto) |
579 by (auto simp add: mult_nonneg_nonneg) |
|
580 hence norm_setsum_f: "\<And>A. norm (setsum ?f A) = setsum ?f A" |
579 hence norm_setsum_f: "\<And>A. norm (setsum ?f A) = setsum ?f A" |
581 unfolding real_norm_def |
580 unfolding real_norm_def |
582 by (simp only: abs_of_nonneg setsum_nonneg [rule_format]) |
581 by (simp only: abs_of_nonneg setsum_nonneg [rule_format]) |
583 |
582 |
584 have "(\<lambda>n. (\<Sum>k<n. a k) * (\<Sum>k<n. b k)) ----> (\<Sum>k. a k) * (\<Sum>k. b k)" |
583 have "(\<lambda>n. (\<Sum>k<n. a k) * (\<Sum>k<n. b k)) ----> (\<Sum>k. a k) * (\<Sum>k. b k)" |