diff -r 19cc354ba625 -r 35b2143aeec6 src/HOL/Complex_Analysis/Contour_Integration.thy --- a/src/HOL/Complex_Analysis/Contour_Integration.thy Thu Mar 28 08:30:42 2024 +0100 +++ b/src/HOL/Complex_Analysis/Contour_Integration.thy Thu Mar 28 13:32:57 2024 +0000 @@ -1278,6 +1278,80 @@ lemma part_circlepath_cnj: "cnj (part_circlepath c r a b x) = part_circlepath (cnj c) r (-a) (-b) x" by (simp add: part_circlepath_def exp_cnj linepath_def algebra_simps) +lemma contour_integrable_on_compose_cnj_iff: + assumes "valid_path \" + shows "f contour_integrable_on (cnj \ \) \ (cnj \ f \ cnj) contour_integrable_on \" +proof - + from assms obtain S where S: "finite S" "\ C1_differentiable_on {0..1} - S" + unfolding valid_path_def piecewise_C1_differentiable_on_def by blast + have "f contour_integrable_on (cnj \ \) \ + ((\t. cnj (cnj (f (cnj (\ t))) * vector_derivative \ (at t))) integrable_on {0..1})" + unfolding contour_integrable_on o_def + proof (intro integrable_spike_finite_eq [OF S(1)]) + fix t :: real assume "t \ {0..1} - S" + hence "\ differentiable at t" + using S(2) by (meson C1_differentiable_on_eq) + hence "vector_derivative (\x. cnj (\ x)) (at t) = cnj (vector_derivative \ (at t))" + by (rule vector_derivative_cnj) + thus "f (cnj (\ t)) * vector_derivative (\x. cnj (\ x)) (at t) = + cnj (cnj (f (cnj (\ t))) * vector_derivative \ (at t))" + by simp + qed + also have "\ \ ((\t. cnj (f (cnj (\ t))) * vector_derivative \ (at t)) integrable_on {0..1})" + by (rule integrable_on_cnj_iff) + also have "\ \ (cnj \ f \ cnj) contour_integrable_on \" + by (simp add: contour_integrable_on o_def) + finally show ?thesis . +qed + +lemma contour_integral_cnj: + assumes "valid_path \" + shows "contour_integral (cnj \ \) f = cnj (contour_integral \ (cnj \ f \ cnj))" +proof - + from assms obtain S where S: "finite S" "\ C1_differentiable_on {0..1} - S" + unfolding valid_path_def piecewise_C1_differentiable_on_def by blast + have "contour_integral (cnj \ \) f = + integral {0..1} (\t. cnj (cnj (f (cnj (\ t))) * vector_derivative \ (at t)))" + unfolding contour_integral_integral + proof (intro integral_spike) + fix t assume "t \ {0..1} - S" + hence "\ differentiable at t" + using S(2) by (meson C1_differentiable_on_eq) + hence "vector_derivative (\x. cnj (\ x)) (at t) = cnj (vector_derivative \ (at t))" + by (rule vector_derivative_cnj) + thus "cnj (cnj (f (cnj (\ t))) * vector_derivative \ (at t)) = + f ((cnj \ \) t) * vector_derivative (cnj \ \) (at t)" + by (simp add: o_def) + qed (use S(1) in auto) + also have "\ = cnj (integral {0..1} (\t. cnj (f (cnj (\ t))) * vector_derivative \ (at t)))" + by (subst integral_cnj [symmetric]) auto + also have "\ = cnj (contour_integral \ (cnj \ f \ cnj))" + by (simp add: contour_integral_integral) + finally show ?thesis . +qed + +lemma contour_integral_negatepath: + assumes "valid_path \" + shows "contour_integral (uminus \ \) f = -(contour_integral \ (\x. f (-x)))" (is "?lhs = ?rhs") +proof (cases "f contour_integrable_on (uminus \ \)") + case True + hence *: "(f has_contour_integral ?lhs) (uminus \ \)" + using has_contour_integral_integral by blast + have "((\z. f (-z)) has_contour_integral - contour_integral (uminus \ \) f) + (uminus \ (uminus \ \))" + by (rule has_contour_integral_negatepath) (use * assms in auto) + hence "((\x. f (-x)) has_contour_integral -?lhs) \" + by (simp add: o_def) + thus ?thesis + by (simp add: contour_integral_unique) +next + case False + hence "\(\z. f (- z)) contour_integrable_on \" + using contour_integrable_negatepath[of \ f] assms by auto + with False show ?thesis + by (simp add: not_integrable_contour_integral) +qed + lemma contour_integral_bound_part_circlepath: assumes "f contour_integrable_on part_circlepath c r a b" assumes "B \ 0" "r \ 0" "\x. x \ path_image (part_circlepath c r a b) \ norm (f x) \ B" @@ -1687,12 +1761,11 @@ { fix e::real assume "0 < e" then have "0 < e / (\B\ + 1)" by simp - then have "\\<^sub>F n in F. \x\path_image \. cmod (f n x - l x) < e / (\B\ + 1)" + then have \
: "\\<^sub>F n in F. \x\path_image \. cmod (f n x - l x) < e / (\B\ + 1)" using ul_f [unfolded uniform_limit_iff dist_norm] by auto - with ev_fint obtain a where fga: "\x. x \ {0..1} \ cmod (f a (\ x) - l (\ x)) < e / (\B\ + 1)" and inta: "(\t. f a (\ t) * vector_derivative \ (at t)) integrable_on {0..1}" - using eventually_happens [OF eventually_conj] + using eventually_happens [OF eventually_conj [OF ev_fint \
]] by (fastforce simp: contour_integrable_on path_image_def) have "\h. (\x\{0..1}. cmod (l (\ x) * vector_derivative \ (at x) - h x) \ e) \ h integrable_on {0..1}" proof (intro exI conjI ballI)