equal
deleted
inserted
replaced
837 by (auto simp: closed_segment_def scaleR_conv_of_real algebra_simps) |
837 by (auto simp: closed_segment_def scaleR_conv_of_real algebra_simps) |
838 from u(1) show "z \<in> closed_segment a b" using assms |
838 from u(1) show "z \<in> closed_segment a b" using assms |
839 by (intro closed_segmentI[of u]) (auto simp: u algebra_simps scaleR_conv_of_real complex_eq_iff) |
839 by (intro closed_segmentI[of u]) (auto simp: u algebra_simps scaleR_conv_of_real complex_eq_iff) |
840 qed |
840 qed |
841 |
841 |
842 definition%important rectpath where |
842 definition\<^marker>\<open>tag important\<close> rectpath where |
843 "rectpath a1 a3 = (let a2 = Complex (Re a3) (Im a1); a4 = Complex (Re a1) (Im a3) |
843 "rectpath a1 a3 = (let a2 = Complex (Re a3) (Im a1); a4 = Complex (Re a1) (Im a3) |
844 in linepath a1 a2 +++ linepath a2 a3 +++ linepath a3 a4 +++ linepath a4 a1)" |
844 in linepath a1 a2 +++ linepath a2 a3 +++ linepath a3 a4 +++ linepath a4 a1)" |
845 |
845 |
846 lemma path_rectpath [simp, intro]: "path (rectpath a b)" |
846 lemma path_rectpath [simp, intro]: "path (rectpath a b)" |
847 by (simp add: Let_def rectpath_def) |
847 by (simp add: Let_def rectpath_def) |
927 shows "winding_number (rectpath a1 a3) z = 0" |
927 shows "winding_number (rectpath a1 a3) z = 0" |
928 using assms by (intro winding_number_zero_outside[OF _ _ _ assms(3)] |
928 using assms by (intro winding_number_zero_outside[OF _ _ _ assms(3)] |
929 path_image_rectpath_subset_cbox) simp_all |
929 path_image_rectpath_subset_cbox) simp_all |
930 |
930 |
931 text\<open>A per-function version for continuous logs, a kind of monodromy\<close> |
931 text\<open>A per-function version for continuous logs, a kind of monodromy\<close> |
932 proposition%unimportant winding_number_compose_exp: |
932 proposition\<^marker>\<open>tag unimportant\<close> winding_number_compose_exp: |
933 assumes "path p" |
933 assumes "path p" |
934 shows "winding_number (exp \<circ> p) 0 = (pathfinish p - pathstart p) / (2 * of_real pi * \<i>)" |
934 shows "winding_number (exp \<circ> p) 0 = (pathfinish p - pathstart p) / (2 * of_real pi * \<i>)" |
935 proof - |
935 proof - |
936 obtain e where "0 < e" and e: "\<And>t. t \<in> {0..1} \<Longrightarrow> e \<le> norm(exp(p t))" |
936 obtain e where "0 < e" and e: "\<And>t. t \<in> {0..1} \<Longrightarrow> e \<le> norm(exp(p t))" |
937 proof |
937 proof |
1018 using \<open>g 0 = p 0\<close> \<open>g 1 = p 1\<close> by auto |
1018 using \<open>g 0 = p 0\<close> \<open>g 1 = p 1\<close> by auto |
1019 qed |
1019 qed |
1020 finally show ?thesis . |
1020 finally show ?thesis . |
1021 qed |
1021 qed |
1022 |
1022 |
1023 subsection%unimportant \<open>The winding number defines a continuous logarithm for the path itself\<close> |
1023 subsection\<^marker>\<open>tag unimportant\<close> \<open>The winding number defines a continuous logarithm for the path itself\<close> |
1024 |
1024 |
1025 lemma winding_number_as_continuous_log: |
1025 lemma winding_number_as_continuous_log: |
1026 assumes "path p" and \<zeta>: "\<zeta> \<notin> path_image p" |
1026 assumes "path p" and \<zeta>: "\<zeta> \<notin> path_image p" |
1027 obtains q where "path q" |
1027 obtains q where "path q" |
1028 "pathfinish q - pathstart q = 2 * of_real pi * \<i> * winding_number p \<zeta>" |
1028 "pathfinish q - pathstart q = 2 * of_real pi * \<i> * winding_number p \<zeta>" |