# HG changeset patch # User Manuel Eberl # Date 1513069274 -3600 # Node ID 88d1c9d86f4853bfb2cabe6da3553ea720572da6 # Parent a77d54ef718b905696f291dd36a7e902903bae17 Moved analysis material from AFP diff -r a77d54ef718b -r 88d1c9d86f48 src/HOL/Analysis/Complex_Analysis_Basics.thy --- a/src/HOL/Analysis/Complex_Analysis_Basics.thy Mon Dec 11 17:28:32 2017 +0100 +++ b/src/HOL/Analysis/Complex_Analysis_Basics.thy Tue Dec 12 10:01:14 2017 +0100 @@ -379,6 +379,28 @@ "f holomorphic_on A \ (\x. c *\<^sub>R f x) holomorphic_on A" by (auto simp: scaleR_conv_of_real intro!: holomorphic_intros) +lemma holomorphic_on_Un [holomorphic_intros]: + assumes "f holomorphic_on A" "f holomorphic_on B" "open A" "open B" + shows "f holomorphic_on (A \ B)" + using assms by (auto simp: holomorphic_on_def at_within_open[of _ A] + at_within_open[of _ B] at_within_open[of _ "A \ B"] open_Un) + +lemma holomorphic_on_If_Un [holomorphic_intros]: + assumes "f holomorphic_on A" "g holomorphic_on B" "open A" "open B" + assumes "\z. z \ A \ z \ B \ f z = g z" + shows "(\z. if z \ A then f z else g z) holomorphic_on (A \ B)" (is "?h holomorphic_on _") +proof (intro holomorphic_on_Un) + note \f holomorphic_on A\ + also have "f holomorphic_on A \ ?h holomorphic_on A" + by (intro holomorphic_cong) auto + finally show \ . +next + note \g holomorphic_on B\ + also have "g holomorphic_on B \ ?h holomorphic_on B" + using assms by (intro holomorphic_cong) auto + finally show \ . +qed (insert assms, auto) + lemma DERIV_deriv_iff_field_differentiable: "DERIV f x :> deriv f x \ f field_differentiable at x" unfolding field_differentiable_def by (metis DERIV_imp_deriv) diff -r a77d54ef718b -r 88d1c9d86f48 src/HOL/Analysis/Infinite_Set_Sum.thy --- a/src/HOL/Analysis/Infinite_Set_Sum.thy Mon Dec 11 17:28:32 2017 +0100 +++ b/src/HOL/Analysis/Infinite_Set_Sum.thy Tue Dec 12 10:01:14 2017 +0100 @@ -256,6 +256,27 @@ show "f abs_summable_on insert x A" by simp qed +lemma abs_summable_sum: + assumes "\x. x \ A \ f x abs_summable_on B" + shows "(\y. \x\A. f x y) abs_summable_on B" + using assms unfolding abs_summable_on_def by (intro Bochner_Integration.integrable_sum) + +lemma abs_summable_Re: "f abs_summable_on A \ (\x. Re (f x)) abs_summable_on A" + by (simp add: abs_summable_on_def) + +lemma abs_summable_Im: "f abs_summable_on A \ (\x. Im (f x)) abs_summable_on A" + by (simp add: abs_summable_on_def) + +lemma abs_summable_on_finite_diff: + assumes "f abs_summable_on A" "A \ B" "finite (B - A)" + shows "f abs_summable_on B" +proof - + have "f abs_summable_on (A \ (B - A))" + by (intro abs_summable_on_union assms abs_summable_on_finite) + also from assms have "A \ (B - A) = B" by blast + finally show ?thesis . +qed + lemma abs_summable_on_reindex_bij_betw: assumes "bij_betw g A B" shows "(\x. f (g x)) abs_summable_on A \ f abs_summable_on B" @@ -407,6 +428,27 @@ lemma infsetsum_all_0: "(\x. x \ A \ f x = 0) \ infsetsum f A = 0" by simp +lemma infsetsum_nonneg: "(\x. x \ A \ f x \ (0::real)) \ infsetsum f A \ 0" + unfolding infsetsum_def by (rule Bochner_Integration.integral_nonneg) auto + +lemma sum_infsetsum: + assumes "\x. x \ A \ f x abs_summable_on B" + shows "(\x\A. \\<^sub>ay\B. f x y) = (\\<^sub>ay\B. \x\A. f x y)" + using assms by (simp add: infsetsum_def abs_summable_on_def Bochner_Integration.integral_sum) + +lemma Re_infsetsum: "f abs_summable_on A \ Re (infsetsum f A) = (\\<^sub>ax\A. Re (f x))" + by (simp add: infsetsum_def abs_summable_on_def) + +lemma Im_infsetsum: "f abs_summable_on A \ Im (infsetsum f A) = (\\<^sub>ax\A. Im (f x))" + by (simp add: infsetsum_def abs_summable_on_def) + +lemma infsetsum_of_real: + shows "infsetsum (\x. of_real (f x) + :: 'a :: {real_normed_algebra_1,banach,second_countable_topology,real_inner}) A = + of_real (infsetsum f A)" + unfolding infsetsum_def + by (rule integral_bounded_linear'[OF bounded_linear_of_real bounded_linear_inner_left[of 1]]) auto + lemma infsetsum_finite [simp]: "finite A \ infsetsum f A = (\x\A. f x)" by (simp add: infsetsum_def lebesgue_integral_count_space_finite) diff -r a77d54ef718b -r 88d1c9d86f48 src/HOL/Computational_Algebra/Euclidean_Algorithm.thy --- a/src/HOL/Computational_Algebra/Euclidean_Algorithm.thy Mon Dec 11 17:28:32 2017 +0100 +++ b/src/HOL/Computational_Algebra/Euclidean_Algorithm.thy Tue Dec 12 10:01:14 2017 +0100 @@ -602,6 +602,9 @@ by (simp add: fun_eq_iff Euclidean_Algorithm.Gcd_def semiring_Gcd_class.Gcd_Lcm) qed +lemma prime_factorization_Suc_0 [simp]: "prime_factorization (Suc 0) = {#}" + unfolding One_nat_def [symmetric] using prime_factorization_1 . + instance int :: normalization_euclidean_semiring .. instance int :: euclidean_ring_gcd diff -r a77d54ef718b -r 88d1c9d86f48 src/HOL/Series.thy --- a/src/HOL/Series.thy Mon Dec 11 17:28:32 2017 +0100 +++ b/src/HOL/Series.thy Tue Dec 12 10:01:14 2017 +0100 @@ -1223,4 +1223,32 @@ ultimately show ?thesis by simp qed +lemma summable_bounded_partials: + fixes f :: "nat \ 'a :: {real_normed_vector,complete_space}" + assumes bound: "eventually (\x0. \a\x0. \b>a. norm (sum f {a<..b}) \ g a) sequentially" + assumes g: "g \ 0" + shows "summable f" unfolding summable_iff_convergent' +proof (intro Cauchy_convergent CauchyI', goal_cases) + case (1 \) + with g have "eventually (\x. \g x\ < \) sequentially" + by (auto simp: tendsto_iff) + from eventually_conj[OF this bound] obtain x0 where x0: + "\x. x \ x0 \ \g x\ < \" "\a b. x0 \ a \ a < b \ norm (sum f {a<..b}) \ g a" + unfolding eventually_at_top_linorder by auto + + show ?case + proof (intro exI[of _ x0] allI impI) + fix m n assume mn: "x0 \ m" "m < n" + have "dist (sum f {..m}) (sum f {..n}) = norm (sum f {..n} - sum f {..m})" + by (simp add: dist_norm norm_minus_commute) + also have "sum f {..n} - sum f {..m} = sum f ({..n} - {..m})" + using mn by (intro Groups_Big.sum_diff [symmetric]) auto + also have "{..n} - {..m} = {m<..n}" using mn by auto + also have "norm (sum f {m<..n}) \ g m" using mn by (intro x0) auto + also have "\ \ \g m\" by simp + also have "\ < \" using mn by (intro x0) auto + finally show "dist (sum f {..m}) (sum f {..n}) < \" . + qed +qed + end