src/HOL/Analysis/Complex_Analysis_Basics.thy
changeset 65587 16a8991ab398
parent 64394 141e1ed8d5a0
child 66089 def95e0bc529
equal deleted inserted replaced
65586:91e451bc0f1f 65587:16a8991ab398
   479 subsection\<open>Analyticity on a set\<close>
   479 subsection\<open>Analyticity on a set\<close>
   480 
   480 
   481 definition analytic_on (infixl "(analytic'_on)" 50)
   481 definition analytic_on (infixl "(analytic'_on)" 50)
   482   where
   482   where
   483    "f analytic_on s \<equiv> \<forall>x \<in> s. \<exists>e. 0 < e \<and> f holomorphic_on (ball x e)"
   483    "f analytic_on s \<equiv> \<forall>x \<in> s. \<exists>e. 0 < e \<and> f holomorphic_on (ball x e)"
       
   484 
       
   485 named_theorems analytic_intros "introduction rules for proving analyticity"
   484 
   486 
   485 lemma analytic_imp_holomorphic: "f analytic_on s \<Longrightarrow> f holomorphic_on s"
   487 lemma analytic_imp_holomorphic: "f analytic_on s \<Longrightarrow> f holomorphic_on s"
   486   by (simp add: at_within_open [OF _ open_ball] analytic_on_def holomorphic_on_def)
   488   by (simp add: at_within_open [OF _ open_ball] analytic_on_def holomorphic_on_def)
   487      (metis centre_in_ball field_differentiable_at_within)
   489      (metis centre_in_ball field_differentiable_at_within)
   488 
   490 
   529   also have "... \<longleftrightarrow> ?rhs"
   531   also have "... \<longleftrightarrow> ?rhs"
   530     by (auto simp: analytic_on_open)
   532     by (auto simp: analytic_on_open)
   531   finally show ?thesis .
   533   finally show ?thesis .
   532 qed
   534 qed
   533 
   535 
   534 lemma analytic_on_linear: "(op * c) analytic_on s"
   536 lemma analytic_on_linear [analytic_intros,simp]: "(op * c) analytic_on s"
   535   by (auto simp add: analytic_on_holomorphic holomorphic_on_linear)
   537   by (auto simp add: analytic_on_holomorphic)
   536 
   538 
   537 lemma analytic_on_const: "(\<lambda>z. c) analytic_on s"
   539 lemma analytic_on_const [analytic_intros,simp]: "(\<lambda>z. c) analytic_on s"
   538   by (metis analytic_on_def holomorphic_on_const zero_less_one)
   540   by (metis analytic_on_def holomorphic_on_const zero_less_one)
   539 
   541 
   540 lemma analytic_on_ident: "(\<lambda>x. x) analytic_on s"
   542 lemma analytic_on_ident [analytic_intros,simp]: "(\<lambda>x. x) analytic_on s"
   541   by (simp add: analytic_on_def holomorphic_on_ident gt_ex)
   543   by (simp add: analytic_on_def gt_ex)
   542 
   544 
   543 lemma analytic_on_id: "id analytic_on s"
   545 lemma analytic_on_id [analytic_intros]: "id analytic_on s"
   544   unfolding id_def by (rule analytic_on_ident)
   546   unfolding id_def by (rule analytic_on_ident)
   545 
   547 
   546 lemma analytic_on_compose:
   548 lemma analytic_on_compose:
   547   assumes f: "f analytic_on s"
   549   assumes f: "f analytic_on s"
   548       and g: "g analytic_on (f ` s)"
   550       and g: "g analytic_on (f ` s)"
   570 lemma analytic_on_compose_gen:
   572 lemma analytic_on_compose_gen:
   571   "f analytic_on s \<Longrightarrow> g analytic_on t \<Longrightarrow> (\<And>z. z \<in> s \<Longrightarrow> f z \<in> t)
   573   "f analytic_on s \<Longrightarrow> g analytic_on t \<Longrightarrow> (\<And>z. z \<in> s \<Longrightarrow> f z \<in> t)
   572              \<Longrightarrow> g o f analytic_on s"
   574              \<Longrightarrow> g o f analytic_on s"
   573 by (metis analytic_on_compose analytic_on_subset image_subset_iff)
   575 by (metis analytic_on_compose analytic_on_subset image_subset_iff)
   574 
   576 
   575 lemma analytic_on_neg:
   577 lemma analytic_on_neg [analytic_intros]:
   576   "f analytic_on s \<Longrightarrow> (\<lambda>z. -(f z)) analytic_on s"
   578   "f analytic_on s \<Longrightarrow> (\<lambda>z. -(f z)) analytic_on s"
   577 by (metis analytic_on_holomorphic holomorphic_on_minus)
   579 by (metis analytic_on_holomorphic holomorphic_on_minus)
   578 
   580 
   579 lemma analytic_on_add:
   581 lemma analytic_on_add [analytic_intros]:
   580   assumes f: "f analytic_on s"
   582   assumes f: "f analytic_on s"
   581       and g: "g analytic_on s"
   583       and g: "g analytic_on s"
   582     shows "(\<lambda>z. f z + g z) analytic_on s"
   584     shows "(\<lambda>z. f z + g z) analytic_on s"
   583 unfolding analytic_on_def
   585 unfolding analytic_on_def
   584 proof (intro ballI)
   586 proof (intro ballI)
   594     by (metis gh holomorphic_on_subset min.bounded_iff order_refl subset_ball)
   596     by (metis gh holomorphic_on_subset min.bounded_iff order_refl subset_ball)
   595   then show "\<exists>e>0. (\<lambda>z. f z + g z) holomorphic_on ball z e"
   597   then show "\<exists>e>0. (\<lambda>z. f z + g z) holomorphic_on ball z e"
   596     by (metis e e' min_less_iff_conj)
   598     by (metis e e' min_less_iff_conj)
   597 qed
   599 qed
   598 
   600 
   599 lemma analytic_on_diff:
   601 lemma analytic_on_diff [analytic_intros]:
   600   assumes f: "f analytic_on s"
   602   assumes f: "f analytic_on s"
   601       and g: "g analytic_on s"
   603       and g: "g analytic_on s"
   602     shows "(\<lambda>z. f z - g z) analytic_on s"
   604     shows "(\<lambda>z. f z - g z) analytic_on s"
   603 unfolding analytic_on_def
   605 unfolding analytic_on_def
   604 proof (intro ballI)
   606 proof (intro ballI)
   614     by (metis gh holomorphic_on_subset min.bounded_iff order_refl subset_ball)
   616     by (metis gh holomorphic_on_subset min.bounded_iff order_refl subset_ball)
   615   then show "\<exists>e>0. (\<lambda>z. f z - g z) holomorphic_on ball z e"
   617   then show "\<exists>e>0. (\<lambda>z. f z - g z) holomorphic_on ball z e"
   616     by (metis e e' min_less_iff_conj)
   618     by (metis e e' min_less_iff_conj)
   617 qed
   619 qed
   618 
   620 
   619 lemma analytic_on_mult:
   621 lemma analytic_on_mult [analytic_intros]:
   620   assumes f: "f analytic_on s"
   622   assumes f: "f analytic_on s"
   621       and g: "g analytic_on s"
   623       and g: "g analytic_on s"
   622     shows "(\<lambda>z. f z * g z) analytic_on s"
   624     shows "(\<lambda>z. f z * g z) analytic_on s"
   623 unfolding analytic_on_def
   625 unfolding analytic_on_def
   624 proof (intro ballI)
   626 proof (intro ballI)
   634     by (metis gh holomorphic_on_subset min.bounded_iff order_refl subset_ball)
   636     by (metis gh holomorphic_on_subset min.bounded_iff order_refl subset_ball)
   635   then show "\<exists>e>0. (\<lambda>z. f z * g z) holomorphic_on ball z e"
   637   then show "\<exists>e>0. (\<lambda>z. f z * g z) holomorphic_on ball z e"
   636     by (metis e e' min_less_iff_conj)
   638     by (metis e e' min_less_iff_conj)
   637 qed
   639 qed
   638 
   640 
   639 lemma analytic_on_inverse:
   641 lemma analytic_on_inverse [analytic_intros]:
   640   assumes f: "f analytic_on s"
   642   assumes f: "f analytic_on s"
   641       and nz: "(\<And>z. z \<in> s \<Longrightarrow> f z \<noteq> 0)"
   643       and nz: "(\<And>z. z \<in> s \<Longrightarrow> f z \<noteq> 0)"
   642     shows "(\<lambda>z. inverse (f z)) analytic_on s"
   644     shows "(\<lambda>z. inverse (f z)) analytic_on s"
   643 unfolding analytic_on_def
   645 unfolding analytic_on_def
   644 proof (intro ballI)
   646 proof (intro ballI)
   656     by (metis nz' mem_ball min_less_iff_conj)
   658     by (metis nz' mem_ball min_less_iff_conj)
   657   then show "\<exists>e>0. (\<lambda>z. inverse (f z)) holomorphic_on ball z e"
   659   then show "\<exists>e>0. (\<lambda>z. inverse (f z)) holomorphic_on ball z e"
   658     by (metis e e' min_less_iff_conj)
   660     by (metis e e' min_less_iff_conj)
   659 qed
   661 qed
   660 
   662 
   661 lemma analytic_on_divide:
   663 lemma analytic_on_divide [analytic_intros]:
   662   assumes f: "f analytic_on s"
   664   assumes f: "f analytic_on s"
   663       and g: "g analytic_on s"
   665       and g: "g analytic_on s"
   664       and nz: "(\<And>z. z \<in> s \<Longrightarrow> g z \<noteq> 0)"
   666       and nz: "(\<And>z. z \<in> s \<Longrightarrow> g z \<noteq> 0)"
   665     shows "(\<lambda>z. f z / g z) analytic_on s"
   667     shows "(\<lambda>z. f z / g z) analytic_on s"
   666 unfolding divide_inverse
   668 unfolding divide_inverse
   667 by (metis analytic_on_inverse analytic_on_mult f g nz)
   669 by (metis analytic_on_inverse analytic_on_mult f g nz)
   668 
   670 
   669 lemma analytic_on_power:
   671 lemma analytic_on_power [analytic_intros]:
   670   "f analytic_on s \<Longrightarrow> (\<lambda>z. (f z) ^ n) analytic_on s"
   672   "f analytic_on s \<Longrightarrow> (\<lambda>z. (f z) ^ n) analytic_on s"
   671 by (induct n) (auto simp: analytic_on_const analytic_on_mult)
   673 by (induct n) (auto simp: analytic_on_mult)
   672 
   674 
   673 lemma analytic_on_sum:
   675 lemma analytic_on_sum [analytic_intros]:
   674   "(\<And>i. i \<in> I \<Longrightarrow> (f i) analytic_on s) \<Longrightarrow> (\<lambda>x. sum (\<lambda>i. f i x) I) analytic_on s"
   676   "(\<And>i. i \<in> I \<Longrightarrow> (f i) analytic_on s) \<Longrightarrow> (\<lambda>x. sum (\<lambda>i. f i x) I) analytic_on s"
   675   by (induct I rule: infinite_finite_induct) (auto simp: analytic_on_const analytic_on_add)
   677   by (induct I rule: infinite_finite_induct) (auto simp: analytic_on_const analytic_on_add)
   676 
   678 
   677 lemma deriv_left_inverse:
   679 lemma deriv_left_inverse:
   678   assumes "f holomorphic_on S" and "g holomorphic_on T"
   680   assumes "f holomorphic_on S" and "g holomorphic_on T"