theory Cartan imports"HOL-Complex_Analysis.Complex_Analysis"
begin
section‹First Cartan Theorem›
text‹Ported from HOL Light. See
Gianni Ciolli, Graziano Gentili, Marco Maggesi.
A Certified Proof of the Cartan Fixed Point Theorems.
J Automated Reasoning (2011) 47:319--336 DOI 10.1007/s10817-010-9198-6›
lemma deriv_left_inverse: assumes"f holomorphic_on S"and"g holomorphic_on T" and"open S"and"open T" and"f ` S ⊆ T" and [simp]: "∧z. z ∈ S ==> g (f z) = z" and"w ∈ S" shows"deriv f w * deriv g (f w) = 1" proof - have"deriv f w * deriv g (f w) = deriv g (f w) * deriv f w" by (simp add: algebra_simps) alsohave"… = deriv (g o f) w" using assms by (metis analytic_on_imp_differentiable_at analytic_on_open deriv_chain image_subset_iff) alsohave"… = deriv id w" apply (rule complex_derivative_transform_within_open [where s=S]) apply (rule assms holomorphic_on_compose_gen holomorphic_intros)+ apply simp done alsohave"… = 1" using higher_deriv_id [of 1] by simp finallyshow ?thesis . qed
lemma Cauchy_higher_deriv_bound: assumes holf: "f holomorphic_on (ball z r)" and contf: "continuous_on (cball z r) f" and"0 < r"and"0 < n" and fin : "∧w. w ∈ ball z r ==> f w ∈ ball y B0" shows"norm ((deriv ^^ n) f z) ≤ (fact n) * B0 / r^n" proof - have"0 < B0"using‹0 < r› fin [of z] by (metis ball_eq_empty ex_in_conv fin not_less) have le_B0: "∧w. cmod (w - z) ≤ r ==> cmod (f w - y) ≤ B0" apply (rule continuous_on_closure_norm_le [of "ball z r""λw. f w - y"]) apply (auto simp: ‹0 < r› dist_norm norm_minus_commute) apply (rule continuous_intros contf)+ using fin apply (simp add: dist_commute dist_norm less_eq_real_def) done have"(deriv ^^ n) f z = (deriv ^^ n) (λw. f w) z - (deriv ^^ n) (λw. y) z" using‹0 < n›by simp alsohave"… = (deriv ^^ n) (λw. f w - y) z" by (rule higher_deriv_diff [OF holf, symmetric]) (auto simp: ‹0 < r› holomorphic_on_const) finallyhave"(deriv ^^ n) f z = (deriv ^^ n) (λw. f w - y) z" . have contf': "continuous_on (cball z r) (λu. f u - y)" by (rule contf continuous_intros)+ have holf': "(λu. (f u - y)) holomorphic_on (ball z r)" by (simp add: holf holomorphic_on_diff holomorphic_on_const)
define a where"a = (2 * pi)/(fact n)" have"0 < a"by (simp add: a_def) have"B0/r^(Suc n)*2 * pi * r = a*((fact n)*B0/r^n)" using‹0 < r›by (simp add: a_def divide_simps) have der_dif: "(deriv ^^ n) (λw. f w - y) z = (deriv ^^ n) f z" using‹0 < r›‹0 < n› by (auto simp: higher_deriv_diff [OF holf holomorphic_on_const]) have"norm ((2 * of_real pi * i)/(fact n) * (deriv ^^ n) (λw. f w - y) z) ≤ (B0/r^(Suc n)) * (2 * pi * r)" apply (rule has_contour_integral_bound_circlepath [of "(λu. (f u - y)/(u - z)^(Suc n))" _ z]) using Cauchy_has_contour_integral_higher_derivative_circlepath [OF contf' holf'] using‹0 < B0›‹0 < r› apply (auto simp: norm_divide norm_mult norm_power divide_simps le_B0) done thenshow ?thesis using‹0 < r› by (auto simp: norm_divide norm_mult norm_power field_simps der_dif le_B0) qed
lemma higher_deriv_comp_lemma: assumes s: "open s"and holf: "f holomorphic_on s" and"z ∈ s" and t: "open t"and holg: "g holomorphic_on t" and fst: "f ` s ⊆ t" and n: "i ≤ n" and dfz: "deriv f z = 1"and zero: "∧i. [1 < i; i ≤ n]==> (deriv ^^ i) f z = 0" shows"(deriv ^^ i) (g o f) z = (deriv ^^ i) g (f z)" using n holg proof (induction i arbitrary: g) case0thenshow ?caseby simp next case (Suc i) have"g ∘ f holomorphic_on s"using"Suc.prems" holf using fst by (simp add: holomorphic_on_compose_gen image_subset_iff) thenhave1: "deriv (g ∘ f) holomorphic_on s" by (simp add: holomorphic_deriv s) have dg: "deriv g holomorphic_on t" using Suc.prems by (simp add: Suc.prems(2) holomorphic_deriv t) thenhave"deriv g holomorphic_on f ` s" using fst by (simp add: holomorphic_on_subset image_subset_iff) thenhave dgf: "(deriv g o f) holomorphic_on s" by (simp add: holf holomorphic_on_compose) thenhave2: "(λw. (deriv g o f) w * deriv f w) holomorphic_on s" by (blast intro: holomorphic_intros holomorphic_on_compose holf s) have"(deriv ^^ i) (deriv (g o f)) z = (deriv ^^ i) (λw. deriv g (f w) * deriv f w) z" apply (rule higher_deriv_transform_within_open [OF 12 [unfolded o_def] s ‹z ∈ s›]) apply (rule deriv_chain) using holf Suc.prems fst apply (auto simp: holomorphic_on_imp_differentiable_at s t) done alsohave"… = (∑j=0..i. of_nat(i choose j) * (deriv ^^ j) (λw. deriv g (f w)) z * (deriv ^^ (i - j)) (deriv f) z)" apply (rule higher_deriv_mult [OF dgf [unfolded o_def] _ s ‹z ∈ s›]) by (simp add: holf holomorphic_deriv s) alsohave"… = (∑j=i..i. of_nat(i choose j) * (deriv ^^ j) (λw. deriv g (f w)) z * (deriv ^^ Suc (i - j)) f z)" proof - have *: "(deriv ^^ j) (λw. deriv g (f w)) z = 0"if"j < i"and nz: "(deriv ^^ (i - j)) (deriv f) z ≠ 0"for j proof - have"1 < Suc (i - j)""Suc (i - j) ≤ n" using‹j < i›‹Suc i ≤ n›by auto thenshow ?thesis by (metis comp_def funpow.simps(2) funpow_swap1 zero nz) qed thenshow ?thesis apply (simp only: funpow_Suc_right o_def) apply (rule comm_monoid_add_class.sum.mono_neutral_right, auto) done qed alsohave"… = (deriv ^^ i) (deriv g) (f z)" using Suc.IH [OF _ dg] Suc.prems by (simp add: dfz) finallyshow ?case by (simp only: funpow_Suc_right o_def) qed
lemma higher_deriv_comp_iter_lemma: assumes s: "open s"and holf: "f holomorphic_on s" and fss: "f ` s ⊆ s" and"z ∈ s"and [simp]: "f z = z" and n: "i ≤ n" and dfz: "deriv f z = 1"and zero: "∧i. [1 < i; i ≤ n]==> (deriv ^^ i) f z = 0" shows"(deriv ^^ i) (f^^m) z = (deriv ^^ i) f z" proof - have holfm: "(f^^m) holomorphic_on s"for m apply (induction m, simp add: holomorphic_on_ident) apply (simp only: funpow_Suc_right holomorphic_on_compose_gen [OF holf _ fss]) done show ?thesis using n proof (induction m) case0with dfz show ?case by (auto simp: zero) next case (Suc m) have"(deriv ^^ i) (f ^^ m ∘ f) z = (deriv ^^ i) (f ^^ m) (f z)" using Suc.prems holfm ‹z ∈ s› dfz fss higher_deriv_comp_lemma holf s zero by blast alsohave"… = (deriv ^^ i) f z" by (simp add: Suc) finallyshow ?case by (simp only: funpow_Suc_right) qed qed
lemma higher_deriv_iter_top_lemma: assumes s: "open s"and holf: "f holomorphic_on s" and fss: "f ` s ⊆ s" and"z ∈ s"and [simp]: "f z = z" and dfz [simp]: "deriv f z = 1" and n: "1 < n""∧i. [1 < i; i < n]==> (deriv ^^ i) f z = 0" shows"(deriv ^^ n) (f ^^ m) z = m * (deriv ^^ n) f z" using n proof (induction n arbitrary: m) case0thenshow ?caseby simp next case (Suc n) have [simp]: "(f^^m) z = z"for m by (induction m) auto have fms_sb: "(f^^m) ` s ⊆ s"for m apply (induction m) using fss apply force+ done have holfm: "(f^^m) holomorphic_on s"for m apply (induction m, simp add: holomorphic_on_ident) apply (simp only: funpow_Suc_right holomorphic_on_compose_gen [OF holf _ fss]) done thenhave holdfm: "deriv (f ^^ m) holomorphic_on s"for m by (simp add: holomorphic_deriv s) have holdffm: "(λz. deriv f ((f ^^ m) z)) holomorphic_on s"for m apply (rule holomorphic_on_compose_gen [where g="deriv f"and t=s, unfolded o_def]) using s ‹z ∈ s› holfm holf fms_sb by (auto intro: holomorphic_intros) have f_cd_w: "∧w. w ∈ s ==> f field_differentiable at w" using holf holomorphic_on_imp_differentiable_at s by blast have f_cd_mw: "∧m w. w ∈ s ==> (f^^m) field_differentiable at w" using holfm holomorphic_on_imp_differentiable_at s by auto have der_fm [simp]: "deriv (f ^^ m) z = 1"for m apply (induction m, simp add: deriv_ident) apply (subst funpow_Suc_right) apply (subst deriv_chain) using‹z ∈ s› holfm holomorphic_on_imp_differentiable_at s f_cd_w apply auto done note Suc(3) [simp] note n_Suc = Suc show ?case proof (induction m) case0with n_Suc show ?case by (metis Zero_not_Suc funpow_simps_right(1) higher_deriv_id lambda_zero nat_neq_iff of_nat_0) next case (Suc m) have deriv_nffm: "(deriv ^^ n) (deriv f o (f ^^ m)) z = (deriv ^^ n) (deriv f) ((f ^^ m) z)" apply (rule higher_deriv_comp_lemma [OF s holfm ‹z ∈ s› s _ fms_sb order_refl]) using‹z ∈ s› fss higher_deriv_comp_iter_lemma holf holf holomorphic_deriv s apply auto done have"deriv (f ^^ m ∘ f) holomorphic_on s" by (metis funpow_Suc_right holdfm) moreoverhave"(λw. deriv f ((f ^^ m) w) * deriv (f ^^ m) w) holomorphic_on s" by (rule holomorphic_on_mult [OF holdffm holdfm]) ultimatelyhave"(deriv ^^ n) (deriv (f ^^ m ∘ f)) z = (deriv ^^ n) (λw. deriv f ((f ^^ m) w) * deriv (f ^^ m) w) z" apply (rule higher_deriv_transform_within_open [OF _ _ s ‹z ∈ s›]) by (metis comp_funpow deriv_chain f_cd_mw f_cd_w fms_sb funpow_swap1 image_subset_iff o_id) alsohave"… = (∑i=0..n. of_nat(n choose i) * (deriv ^^ i) (λw. deriv f ((f ^^ m) w)) z * (deriv ^^ (n - i)) (deriv (f ^^ m)) z)" by (rule higher_deriv_mult [OF holdffm holdfm s ‹z ∈ s›]) alsohave"… = (∑i ∈ {0,n}. of_nat(n choose i) * (deriv ^^ i) (λw. deriv f ((f ^^ m) w)) z * (deriv ^^ (n - i)) (deriv (f ^^ m)) z)" proof - have *: "(deriv ^^ i) (λw. deriv f ((f ^^ m) w)) z = 0"if"i ≤ n""0 < i""i ≠ n"and nz: "(deriv ^^ (n - i)) (deriv (f ^^ m)) z ≠ 0"for i proof - have less: "1 < Suc (n-i)"and le: "Suc (n-i) ≤ n" using that by auto have"(deriv ^^ (Suc (n - i))) (f ^^ m) z = (deriv ^^(Suc (n - i))) f z" apply (rule higher_deriv_comp_iter_lemma [OF s holf fss ‹z ∈ s›‹f z = z› le dfz]) by simp alsohave"… = 0" using n_Suc(3) less le le_imp_less_Suc by blast finallyhave"(deriv ^^ (Suc (n - i))) (f ^^ m) z = 0" . thenshow ?thesis by (simp add: funpow_swap1 nz) qed show ?thesis by (rule comm_monoid_add_class.sum.mono_neutral_right) (auto simp: *) qed alsohave"… = of_nat (Suc m) * (deriv ^^ n) (deriv f) z" apply (subst Groups_Big.comm_monoid_add_class.sum.insert) apply (simp_all add: deriv_nffm [unfolded o_def] of_nat_Suc [of 0] del: of_nat_Suc) using n_Suc(2) Suc apply (auto simp del: funpow.simps simp: algebra_simps funpow_simps_right) done finallyhave"(deriv ^^ n) (deriv (f ^^ m ∘ f)) z = of_nat (Suc m) * (deriv ^^ n) (deriv f) z" . thenshow ?case apply (simp only: funpow_Suc_right) apply (simp add: o_def del: of_nat_Suc) done qed qed
text‹Should be proved for n-dimensional vectors of complex numbers› theorem first_Cartan_dim_1: assumes holf: "f holomorphic_on s" and"open s""connected s""bounded s" and fss: "f ` s ⊆ s" and"z ∈ s"and [simp]: "f z = z" and dfz [simp]: "deriv f z = 1" and"w ∈ s" shows"f w = w" proof - obtain c where"0 < c"and c: "s ⊆ ball z c" using‹bounded s› bounded_subset_ballD by blast obtain r where"0 < r"and r: "cball z r ⊆ s" using‹z ∈ s› open_contains_cball ‹open s›by blast thenhave bzr: "ball z r ⊆ s"using ball_subset_cball by blast have fms_sb: "(f^^m) ` s ⊆ s"for m apply (induction m) using fss apply force+ done have holfm: "(f^^m) holomorphic_on s"for m apply (induction m, simp add: holomorphic_on_ident) apply (simp only: funpow_Suc_right holomorphic_on_compose_gen [OF holf _ fss]) done have *: "(deriv ^^ n) f z = (deriv ^^ n) id z"for n proof -
consider "n = 0" | "n = 1" | "1 < n"by arith thenshow ?thesis proof cases assume"n = 0"thenshow ?thesis by force next assume"n = 1"thenshow ?thesis by force next assume n1: "n > 1" thenhave"(deriv ^^ n) f z = 0" proof (induction n rule: less_induct) case (less n) have le: "real m * cmod ((deriv ^^ n) f z) ≤ fact n * c / r ^ n"if"m≠0"for m proof - have holfm': "(f ^^ m) holomorphic_on ball z r" using holfm bzr holomorphic_on_subset by blast thenhave contfm': "continuous_on (cball z r) (f ^^ m)" using‹cball z r ⊆ s› holfm holomorphic_on_imp_continuous_on holomorphic_on_subset by blast have"real m * cmod ((deriv ^^ n) f z) = cmod (real m * (deriv ^^ n) f z)" by (simp add: norm_mult) alsohave"… = cmod ((deriv ^^ n) (f ^^ m) z)" apply (subst higher_deriv_iter_top_lemma [OF ‹open s› holf fss ‹z ∈ s›‹f z = z› dfz]) using less apply auto done alsohave"…≤ fact n * c / r ^ n" apply (rule Cauchy_higher_deriv_bound [OF holfm' contfm' ‹0 < r›, where y=z]) using less.prems apply linarith using fms_sb c r ball_subset_cball apply blast done finallyshow ?thesis . qed have"cmod ((deriv ^^ n) f z) = 0" proof (rule real_archimedian_rdiv_eq_0) show"∧m. 0 < m ==> real m * cmod ((deriv ^^ n) f z) ≤ fact n * c / r ^ n" using‹0 < r›‹0 < c› le by (simp add: divide_simps) qed auto thenshow ?caseby simp qed with n1 show ?thesis by simp qed qed have"f w = id w" by (rule holomorphic_fun_eq_on_connected
[OF holf holomorphic_on_id ‹open s›‹connected s› * ‹z ∈ s›‹w ∈ s›]) alsohave"… = w"by simp finallyshow ?thesis . qed
text‹Second Cartan Theorem.›
lemma Cartan_is_linear: assumes holf: "f holomorphic_on s" and"open s"and"connected s" and"0 ∈ s" and ins: "∧u z. [norm u = 1; z ∈ s]==> u * z ∈ s" and feq: "∧u z. [norm u = 1; z ∈ s]==> f (u * z) = u * f z" shows"∃c. ∀z ∈ s. f z = c * z" proof - have [simp]: "f 0 = 0" using feq [of "-1"0] assms by simp have uneq: "u^n * (deriv ^^ n) f (u * z) = u * (deriv ^^ n) f z" if"norm u = 1""z ∈ s"for n u z proof - have holfuw: "(λw. f (u * w)) holomorphic_on s" apply (rule holomorphic_on_compose_gen [OF _ holf, unfolded o_def]) using that ins by (auto simp: holomorphic_on_linear) have hol_d_fuw: "(deriv ^^ n) (λw. u * f w) holomorphic_on s"for n by (rule holomorphic_higher_deriv holomorphic_intros holf assms)+ have *: "(deriv ^^ n) (λw. u * f w) z = u * (deriv ^^ n) f z"if"z ∈ s"for z using that proof (induction n arbitrary: z) case0thenshow ?caseby simp next case (Suc n) have"deriv ((deriv ^^ n) (λw. u * f w)) z = deriv (λw. u * (deriv ^^ n) f w) z" apply (rule complex_derivative_transform_within_open [OF hol_d_fuw]) apply (auto intro!: holomorphic_higher_deriv holomorphic_intros assms Suc) done alsohave"… = u * deriv ((deriv ^^ n) f) z" apply (rule deriv_cmult) using Suc ‹open s› holf holomorphic_higher_deriv holomorphic_on_imp_differentiable_at by blast finallyshow ?caseby simp qed have"(deriv ^^ n) (λw. f (u * w)) z = u ^ n * (deriv ^^ n) f (u * z)" apply (rule higher_deriv_compose_linear [OF holf ‹open s›‹open s›]) apply (simp add: that) apply (simp add: ins that) done moreoverhave"(deriv ^^ n) (λw. f (u * w)) z = u * (deriv ^^ n) f z" apply (subst higher_deriv_transform_within_open [OF holfuw, of "λw. u * f w"]) apply (rule holomorphic_intros holf assms that)+ apply blast using * ‹z ∈ s›apply blast done ultimatelyshow ?thesis by metis qed have dnf0: "(deriv ^^ n) f 0 = 0"if len: "2 ≤ n"for n proof - have **: "z = 0"if"∧u::complex. norm u = 1 ==> u ^ n * z = u * z"for z proof - have"∃u::complex. norm u = 1 ∧ u ^ n ≠ u" using complex_not_root_unity [of "n-1"] len apply (simp add: algebra_simps le_diff_conv2, clarify) apply (rule_tac x=u in exI) apply (subst (asm) power_diff) apply auto done with that show ?thesis by auto qed show ?thesis apply (rule **) using uneq [OF _ ‹0 ∈ s›] by force qed show ?thesis apply (rule_tac x = "deriv f 0"in exI, clarify) apply (rule holomorphic_fun_eq_on_connected [OF holf _ ‹open s›‹connected s› _ ‹0 ∈ s›]) using dnf0 apply (auto simp: holomorphic_on_linear) done qed
text‹Should be proved for n-dimensional vectors of complex numbers› theorem second_Cartan_dim_1: assumes holf: "f holomorphic_on ball 0 r" and holg: "g holomorphic_on ball 0 r" and [simp]: "f 0 = 0"and [simp]: "g 0 = 0" and ballf: "∧z. z ∈ ball 0 r ==> f z ∈ ball 0 r" and ballg: "∧z. z ∈ ball 0 r ==> g z ∈ ball 0 r" and fg: "∧z. z ∈ ball 0 r ==> f (g z) = z" and gf: "∧z. z ∈ ball 0 r ==> g (f z) = z" and"0 < r" shows"∃t. ∀z ∈ ball 0 r. g z = exp(i * of_real t) * z" proof - have c_le_1: "c ≤ 1" if"0 ≤ c""∧x. 0 ≤ x ==> x < r ==> c * x < r"for c proof - have rst: "∧r s t::real. 0 = r ∨ s/r < t ∨ r < 0 ∨¬ s < r * t" by (metis (no_types) mult_less_cancel_left_disj nonzero_mult_div_cancel_left times_divide_eq_right)
{ assume"¬ r < c ∧ c * (c * (c * (c * r))) < 1" thenhave"1 ≤ c ==> (∃r. ¬ 1 < r ∧¬ r < c)" using‹0 ≤ c›by (metis (full_types) less_eq_real_def mult.right_neutral mult_left_mono not_less) thenhave"¬ 1 < c ∨¬ 1 ≤ c" by linarith } moreover
{ have"¬ 0 ≤ r / c ==>¬ 1 ≤ c" using‹0 < r›by force thenhave"1 < c ==>¬ 1 ≤ c" using rst ‹0 < r› that by (metis div_by_1 frac_less2 less_le_trans mult.commute not_le order_refl pos_divide_le_eq zero_less_one) } ultimatelyshow ?thesis by (metis (no_types) linear not_less) qed have ugeq: "u * g z = g (u * z)"if nou: "norm u = 1"and z: "z ∈ ball 0 r"for u z proof - have [simp]: "u ≠ 0"using that by auto have hol1: "(λa. f (u * g a) / u) holomorphic_on ball 0 r" apply (rule holomorphic_intros) apply (rule holomorphic_on_compose_gen [OF _ holf, unfolded o_def]) apply (rule holomorphic_intros holg)+ using nou ballg apply (auto simp: dist_norm norm_mult holomorphic_on_const) done have cdf: "f field_differentiable at 0" using‹0 < r› holf holomorphic_on_imp_differentiable_at by auto have cdg: "g field_differentiable at 0" using‹0 < r› holg holomorphic_on_imp_differentiable_at by auto have cd_fug: "(λa. f (u * g a)) field_differentiable at 0" apply (rule field_differentiable_compose [where g=f and f = "λa. (u * g a)", unfolded o_def]) apply (rule derivative_intros)+ using cdf cdg apply auto done have"deriv g 0 = deriv g (f 0)" by simp thenhave"deriv f 0 * deriv g 0 = 1" by (metis open_ball ‹0 < r› ballf centre_in_ball deriv_left_inverse gf holf holg image_subsetI) thenhave equ: "deriv f 0 * deriv (λa. u * g a) 0 = u" by (simp add: cdg deriv_cmult) have der1: "deriv (λa. f (u * g a) / u) 0 = 1" apply (simp add: field_class.field_divide_inverse deriv_cmult_right [OF cd_fug]) apply (subst deriv_chain [where g=f and f = "λa. (u * g a)", unfolded o_def]) apply (rule derivative_intros cdf cdg | simp add: equ)+ done have fugeq: "∧w. w ∈ ball 0 r ==> f (u * g w) / u = w" apply (rule first_Cartan_dim_1 [OF hol1, where z=0]) apply (simp_all add: ‹0 < r›) apply (auto simp: der1) using nou ballf ballg apply (simp add: dist_norm norm_mult norm_divide) done have"f(u * g z) = u * z" by (metis ‹u ≠ 0› fugeq nonzero_mult_div_cancel_left z times_divide_eq_right) alsohave"… = f (g (u * z))" by (metis (no_types, lifting) fg mem_ball_0 mult_cancel_right2 norm_mult nou z) finallyhave"f(u * g z) = f (g (u * z))" . thenhave"g (f (u * g z)) = g (f (g (u * z)))" by simp thenshow ?thesis apply (subst (asm) gf) apply (simp add: dist_norm norm_mult nou) using ballg mem_ball_0 z apply blast apply (subst (asm) gf) apply (simp add: dist_norm norm_mult nou) apply (metis ballg mem_ball_0 mult.left_neutral norm_mult nou z, simp) done qed obtain c where c: "∧z. z ∈ ball 0 r ==> g z = c * z" apply (rule exE [OF Cartan_is_linear [OF holg]]) apply (simp_all add: ‹0 < r› ugeq) apply (auto simp: dist_norm norm_mult) done have gr2: "g (f (r/2)) = c * f(r/2)" apply (rule c) using‹0 < r› ballf mem_ball_0 by force thenhave"norm c > 0" using‹0 < r› by simp (metis ‹f 0 = 0› c dist_commute fg mem_ball mult_zero_left perfect_choose_dist) thenhave [simp]: "c ≠ 0"by auto have xless: "x < r * cmod c"if"0 ≤ x""x < r"for x proof - have"x = norm (g (f (of_real x)))" proof - have"r > cmod (of_real x)" by (simp add: that) thenhave"complex_of_real x ∈ ball 0 r" using mem_ball_0 by blast thenshow ?thesis using gf ‹0 ≤ x›by force qed moreoverhave"f (complex_of_real x) ∈ ball 0 r" using ballf that by auto ultimatelyshow ?thesis by (metis ‹0 < cmod c› c mem_ball_0 mult.commute mult_less_cancel_left_pos norm_mult) qed have11: "1 / norm c ≤ 1" using xless by (intro c_le_1) (auto simp: divide_simps) have"[0 ≤ x; x < r]==> cmod c * x < r"for x using c [of x] ballg [of x] by (auto simp: norm_mult) thenhave"norm c ≤ 1" by (force intro: c_le_1) moreoverhave"1 ≤ norm c" using11by simp ultimatelyhave"norm c = 1"by (rule antisym) with complex_norm_eq_1_exp c show ?thesis by metis qed
end
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.