Added some theorems (from Wetzel)
authorpaulson <lp15@cam.ac.uk>
Tue, 01 Mar 2022 15:05:27 +0000
changeset 75168 ff60b4acd6dd
parent 75167 0a300751fdf5
child 75177 74f0110bbd0a
Added some theorems (from Wetzel)
src/HOL/Analysis/Complex_Analysis_Basics.thy
src/HOL/Complex_Analysis/Conformal_Mappings.thy
--- a/src/HOL/Analysis/Complex_Analysis_Basics.thy	Mon Feb 28 13:10:22 2022 +0100
+++ b/src/HOL/Analysis/Complex_Analysis_Basics.thy	Tue Mar 01 15:05:27 2022 +0000
@@ -532,6 +532,10 @@
   "(\<And>i. i \<in> I \<Longrightarrow> (f i) analytic_on S) \<Longrightarrow> (\<lambda>x. sum (\<lambda>i. f i x) I) analytic_on S"
   by (induct I rule: infinite_finite_induct) (auto simp: analytic_on_add)
 
+lemma analytic_on_prod [analytic_intros]:
+  "(\<And>i. i \<in> I \<Longrightarrow> (f i) analytic_on S) \<Longrightarrow> (\<lambda>x. prod (\<lambda>i. f i x) I) analytic_on S"
+  by (induct I rule: infinite_finite_induct) (auto simp: analytic_on_mult)
+
 lemma deriv_left_inverse:
   assumes "f holomorphic_on S" and "g holomorphic_on T"
       and "open S" and "open T"
--- a/src/HOL/Complex_Analysis/Conformal_Mappings.thy	Mon Feb 28 13:10:22 2022 +0100
+++ b/src/HOL/Complex_Analysis/Conformal_Mappings.thy	Tue Mar 01 15:05:27 2022 +0000
@@ -114,6 +114,45 @@
     by blast
 qed
 
+lemma holomorphic_countable_zeros:
+  assumes S: "f holomorphic_on S" "open S" "connected S" and "fsigma S"
+      and "\<not> f constant_on S"
+    shows "countable {z\<in>S. f z = 0}"
+proof -
+  obtain F::"nat \<Rightarrow> complex set" 
+      where F: "range F \<subseteq> Collect compact" and Seq: "S = (\<Union>i. F i)"
+    using \<open>fsigma S\<close> by (meson fsigma_Union_compact)
+  have fin: "finite {z \<in> F i. f z = 0}" for i
+    using holomorphic_compact_finite_zeros assms F Seq Union_iff by blast
+  have "{z \<in> S. f z = 0} = (\<Union>i. {z \<in> F i. f z = 0})"
+    using Seq by auto
+  with fin show ?thesis
+    by (simp add: countable_finite)
+qed
+
+lemma holomorphic_countable_equal:
+  assumes "f holomorphic_on S" "g holomorphic_on S" "open S" "connected S" and "fsigma S"
+    and eq: "uncountable {z\<in>S. f z = g z}"
+  shows "S \<subseteq> {z\<in>S. f z = g z}"
+proof -
+  obtain z where z: "z\<in>S" "f z = g z"
+    using eq not_finite_existsD uncountable_infinite by blast
+  have "(\<lambda>x. f x - g x) holomorphic_on S"
+    by (simp add: assms holomorphic_on_diff)
+  then have "(\<lambda>x. f x - g x) constant_on S"
+    using holomorphic_countable_zeros assms by force
+  with z have "\<And>x. x\<in>S \<Longrightarrow> f x - g x = 0"
+    unfolding constant_on_def by force
+  then show ?thesis
+    by auto
+qed
+
+lemma holomorphic_countable_equal_UNIV:
+  assumes fg: "f holomorphic_on UNIV" "g holomorphic_on UNIV"
+    and eq: "uncountable {z. f z = g z}"
+  shows "f=g"
+  using holomorphic_countable_equal [OF fg] eq by fastforce
+
 subsection\<open>Open mapping theorem\<close>
 
 lemma holomorphic_contract_to_zero: