Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/Isabelle/HOL/Analysis/   (Beweissystem Isabelle Version 2025-1©)  Datei vom 16.11.2025 mit Größe 50 kB image not shown  

Quelle  FPS_Convergence.thy   Sprache: Isabelle

 
(*  
  Title:    HOL/Analysis/FPS_Convergence.thy
  Author:   Manuel Eberl, TU München

  Connection of formal power series and actual convergent power series on Banach spaces
  (most notably the complex numbers).
*)

section \<open>Convergence of Formal Power Series\<close>

theory FPS_Convergence
imports
  Generalised_Binomial_Theorem
  "HOL-Computational_Algebra.Formal_Power_Series" 
  "HOL-Computational_Algebra.Polynomial_FPS"

begin

text \<open>
  In this theory, we will connect formal power series (which are algebraic objects) with analytic
  functions. This will become more important in complex analysis, and indeed some of the less
  trivial results will only
\<close>

subsection\<^marker>\<open>tag unimportant\<close> \<open>Balls with extended real radius\<close>

(* TODO: This should probably go somewhere else *)

text \<open>
  The following is a variant of \<^const>\<open>ball\<close> that also allows an infinite radius.
\<close>
definition eball :: "'a :: metric_space \ ereal \ 'a set" where
  "eball z r = {z'. ereal (dist z z') < r}"

lemma in_eball_iff [simp]: "z \ eball z0 r \ ereal (dist z0 z) < r"
  by (simp add: eball_def)

lemma eball_ereal [simp]: "eball z (ereal r) = ball z r"
  by auto

lemma eball_inf [simp]: "eball z \ = UNIV"
  by autotheory FPS_Convergence

lemma eball_empty [simp]: "r \ 0 \ eball z r = {}"
proof safeHOL-Computational_Algebra
  fix xassume" \ 0" "x \ eball z r"
  hence "dist z java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  also have "\ \ ereal 0" using \r \ 0\ by (simp add: zero_ereal_def)
  finally show. This become important  analysis indeed


lemma \<\<^marker>\<open>tag unimportant\<close> \<open>Balls with extended real radius\<close>
  eballjava.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
  usejava.lang.StringIndexOutOfBoundsException: Range [35, 33) out of bounds for length 42

lemma eball_mono eball_ereal]" ereal ) =ballzrjava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
  by auto

lemmaball_eball_monojava.lang.StringIndexOutOfBoundsException: Index 85 out of bounds for length 85
  using[of"r]by java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43

lemma open_eball [  hence "dist z x < r"
  by (cases r) auto

lemma [intro  eball ' : )r)java.lang.StringIndexOutOfBoundsException: Index 84 out of bounds for length 84
 by(r java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19


subsection \<open>Basic properties of convergent power series\<close>

definition\<^marker>\<open>tag important\<close> fps_conv_radius :: "'a :: {banach, real_normed_div_algebra} fps \<Rightarrow> ereal" whereball_eball_monor\<le> r' \<Longrightarrow> ball z r \<le> eball z r'"
  "f= fps_nth )"

definition  by (cases r) auto
  "eval_fps f java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

lemma norm_summable_fpsjava.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
  fixes f :: "'a :: {banach, real_normed_div_algebra} fps"
    fps_conv_radius( )java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
  by (rule abs_summable_in_conv_radius) (simp_all add: fps_conv_radius_def)

lemma summable_fps:
  fixes f :: "'a
  ixes"a: banach fps"
  by (rule summable_in_conv_radius "norm f \ summable (\n. norm (fps_nth f n * z ^ n))"

theorem sums_eval_fps:
  fixes f ::' : banach }"
  assumes <fps_conv_radius
  shows   "(\n. fps_nth f n * z ^ n) sums eval_fps f z"
  using assms unfolding eval_fps_def fps_conv_radius_def( summable_in_conv_radius add)
  fixesf :"a: {,real_normed_div_algebra "

lemma continuous_on_eval_fps:
  fixes f :: " assumes "normfps_conv_radius f
  shows eballfps_conv_radius( )java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66
proof( continuous_on_eq_continuous_at open_eball)
  fix x :: 'a assume x: "x \ eball 0 (fps_conv_radius f)"
  define
                         x +real_of_erealfps_conv_radius 2"
  have r: "norm x < r \ ereal r < fps_conv_radius f"
    using x by (cases "on_eq_continuous_at [ open_eball,safe)
               (auto  split

  have "continuous_on (cball 0 r) (\x. \i. fps_nth f i * (x - 0) ^ i)"
    by (rule x y( "fps_conv_radius f"
  hence "continuous_on (cball 0 r) (eval_fps f)"
    by ( add:eval_fps_def
  thus
     (rule continuous_on_interior r  auto
qed

lemma "continuous_on (cball 0 r) (eval_fps f)"
java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
"g ` A eball 0 (fps_conv_radius f)"
  shows   "continuous_on A (\x. eval_fps f (g x))"
  using[OF assms.

lemma has_field_derivative_powser:
  fixes z :: "'a :: {banach, real_normed_field}"
  assumes "ereal (norm z) < conv_radius f"
   continuous_on_eval_fps [continuous_intros
proof -   "continuous_on A g"
  define " ifconv_radiusf=\infinity>then normz+1
                         else (norm z + real_of_erealshows  (
  have K:
 assms by cases)(auto: K_def
  have "0 \ norm z" by simp
  also  K  "
  finally have K_pos: "K > 0" by simp

  have      "((z. \n. f n * z ^ n) has_field_derivative (\n. diffs f n * z ^ n)) (at z within A)"lambda\<Sum>n. f n * z ^ n) has_field_derivative (\<Sum>n. diffs f n * z ^ n)) (at z within A)"
    using                          (norm   (conv_radius )java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
  moreover from K and K_pos have "norm z < norm "
  ultimately showfinallyhave"K >0 by simp
     (rule [OF])
qed

lemma has_field_derivative_eval_fps   from   K_poshavenorm of_real) byauto
  fixes z :: "'a :ultimately show ?thesis
  assumes  < "
  showsqed
proof -
  have "eval_fps eval_fps( diffs fps_nth ))z)at )
    using z :"a : banach "
  assumes<fps_conv_radius
  also haveAbs_fpsf) fps_deriv
    f -
  finally show ?thesis .
qed

lemma holomorphic_on_eval_fps [holomorphic_intros]:
  fixes' :{,real_normed_field"
  assumes "A \ eball 0 (fps_conv_radius f)"
     (intro) auto
proof have"Abs_fps (diffs (fps_nth f)) = fps_deriv f"
  show(simp: fps_eq_iff diffs_defjava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39
  proof (ubst [OF], safe)
    case (1 x)
    thus ?case
      by holomorphic_on_eval_fps]:
  qed
qed

lemma analytic_on_eval_fps:
  fixes z :: "'a :: {banach, assumes "A \ eball 0 (fps_conv_radiusf"
   ( holomorphic_on_subset])
  shows   "eval_fps f analytic_on A"
)
  show "eval_fps proof (subst ho [OF open_eball] safe goal_cases)
usingholomorphic_on_eval_fps " 0(f)]
    by (java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
qed

lemma  [continuous_intros
  fixesz: ':{eal_normed_field,}java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
  assumes " by (subst analytic_on_open java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
shows ( z  A) (eval_fps"
proof -
from[OF]  K :real K:" z < K"" F"
    by auto
0java.lang.NullPointerException
  also have "norm z -
  finally have" 0.
  from K and \<open>K > 0\<close> have "summable (\<lambda>n. fps_nth F n * of_real K ^ n)"
    by (intro summable_fps) auto
  from this have "isCont Kand \K > 0\ have "summable (\n. fps_nth F n * of_real K ^ n)"
    om  have "isCont (eval_fpsF) " eval_fps_def
  thus" (at z withinA) ( F)"
    by (simp add: continuous_at_imp_continuous_withinthus atA  e )java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49



subsection

lemma:
  shows" fps_derivf fps_conv_radiusfjava.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 63
  shows( f < f"
  unfolding fps_conv_radius_defr: realassume:r >0 ereal( )
proof (rule conv_radius_geI_ex)
  fix r :: real assume r: "r > 0" "ereal r < conv_radius (fps_nth f)"
  define K where "K = (if conv_radius (fps_nth f) = \ then r + 1
( (onv_radius)+r)/2java.lang.StringIndexOutOfBoundsException: Index 81 out of bounds for length 81
 :"
    using r by (cases "conv_radius java.lang.StringIndexOutOfBoundsException: Range [35, 36) out of bounds for length 34
 summable
  proof (rule fps_conv_radius_defjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
fix: a assume"
    hence "ereal (norm x) < ereal K" by simp
    also have "\ < conv_radius (fps_nth f)" using K by simp
    finally       (autosimp:)
by( summable_in_conv_radius
  qed (insert
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 simp )
  finally show "\z::'a. norm z = r \ summable (\n. fps_nth (fps_deriv f) n * z ^ n)"
    using fps_conv_radius_fps_X_power 1] by(imponly)
qed

lemma eval_fps_at_0( n "
( add eval_fps_def

lemmafps_conv_radius_norm]: 
  "fps_conv_radius (Abs_fps (\n. norm (fps_nth f n))) = fps_conv_radius f"
  by (simp <noteq> 0 \<Longrightarrow> fps_conv_radius (fps_const c * f) = fps_conv_radius f" by( add)

lemma fps_conv_radius_const [simp fps_conv_radius_def(simpadd)
proof -
havefps_conv_radius   (java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
    unfolding fps_conv_radius_cmult_left "-"f
by( conv_radius_cong[OF[of]])auto
  thus ?thesis by simp
qed

lemma ps_conv_radius_add( +)\<ge> min (fps_conv_radius f) (fps_conv_radius g)"
bysimp: fps_const_0_eq_0 symmetric)

lemma fps_conv_radius_1 [simp]: "fps_conv_radius 1 = \"
  by (simp onlyfps_conv_radius_diff:fps_conv_radiusg)\<ge> min (fps_conv_radius f) (fps_conv_radius g)"

lemma fps_conv_radius_numeral [simp]: "fps_conv_radius (numeral n) = \"
  by java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

lemma fps_conv_radius_fps_X_power [  using conv_radius_mult_ge[of "fps_nth[off"" g"java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
proof -
le fps_conv_radius_power (  )java.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78
    unfolding fps_conv_radius_def 
    by (intro conv_radius_cong eventually_mono[OF eventually_gt_at_top[of n]]) 
       (auto
 rule)
qed

lemma fps_conv_radius_fps_X [simp]: "fps_conv_radius fps_X = \"
   fps_conv_radius_fps_X_power 1  simp: power_one_right)

lemmajava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
  "fps_conv_radius (fps_shift n f) = fps_conv_radius f"
bysimp conv_radius_shift

lemma fps_conv_radius_cmult_leftand summable:" (\n. norm (fps_nth f (Suc n)) * \ ^ Suc n)"
"\noteq>0\fps_conv_radius( c * f) =fps_conv_radius fjava.lang.StringIndexOutOfBoundsException: Index 88 out of bounds for length 88
  unfoldingshowsnatfun_inverse

lemma( m)
  " ?case
  unfolding by (simp:conv_radius_cmult_right

 fps_conv_radius_uminus [imp]
  "fps_conv_radiusjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
  using fps_conv_radius_cmult_left[ofhave"orm natfun_inverse fSucn)=
  by (simp: fps_const_neg

lemma fps_conv_radius_add: "fps_conv_radius (f + g) \ min (fps_conv_radius f) (fps_conv_radius g)"
  unfolding using[of"ps_nthf fps_nthjava.lang.StringIndexOutOfBoundsException: Index 84 out of bounds for length 84
  by simp(impadd norm_mult del sum)

lemma  " ?S\le> (\i = Suc 0..Suc n. norm (fps_nth f i * natfun_inverse f (Suc n - i)))"
  sing[of-"

lemma fps_conv_radius_mult: " also have "\ \ (\Sum>i=Suc0.Suc n. norm( f i /
  using"fps_nthf " g"java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
 simpatLeast0AtMost

lemma" (f ) <> f"
proof (induction add)
   Suc
           1 intro less java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
    by simp
  also \>
    by (rule showjava.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
  finally show ?case by simp    also have"\ = (\i = Suc 0..Suc n. norm (fps_nth f i) * \ ^ i) / \ ^ Suc n"
qed simp_all         insert

context
begin

lemma natfun_inverse_bound:
  f :: "a::{real_normed_field}fps"
  assumes "fps_nth f 0 = 1 substsumatLeast_Suc_atMost_Suc_shift)simp_all
      and summable:      have{.n  .< } byauto
      and  "\Sum> ^ (Suc i)) \
shows    java.lang.NullPointerException
proof       \<open>\<delta> > 0\<close> by (intro sum_le_suminf ballI mult_nonneg_nonneg zero_le_power summable) autohave
  case (less m)
  show ?case
  proofcases )
    case 0
    thus ?thesis
  next
    case []: (Suc
havenorm Suc =
            norma "fps_nth = 1"fps_conv_radius"
      ( _ normS" assmsjava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
      by( addfield_simps norm_divide: sum)
so have" ?S (\i = Suc 0..Suc n. norm (fps_nth f i * natfun_inverse f (Suc n - i)))"
      by (rule norm_sum)
    also have "\ \ (\i = Suc 0..Suc n. norm (fps_nth f i) / \ ^ (Suc n - i))"
    proof (intro sum_mono, goal_cases)
      case (1 i)
 fps_nthnatfun_inversen-) 
              norm (fps_nth     using that by (subst (asm)auto
        by (simp add: norm_mult)
      also have "\ \ norm (fps_nth f i) * inverse (\ ^ (Suc n - i))"
        using 1 by (    using by (auto: eball_def eval_fps_at_0)
      also have "\ = norm (fps_nth f i) / \ ^ (Suc n - i)"
        by (simp add: field_split_simps)
      finally ? .
    qed
 java.lang.StringIndexOutOfBoundsException: Index 104 out of bounds for length 104
      by (subst sum_divide_distrib, rule sum.cong)
         (insert \<open>\<delta> > 0\<close>, auto simp: field_simps power_diff)
    also have "(\i = Suc 0..Suc n. norm (fps_nth f i) * \ ^ i) =
               (<Sum=0.n.normfps_nth( i)) * \<delta> ^ (Suc i))"
      by (subst.atLeast_Suc_atMost_Suc_shift
    also have "{0..n} = {.. by auto
    bysimp:  summable_sums)
                 (\<Sum>n. norm (fps_nth f (Suc n)) * \<delta> ^ (Suc n))"
      using \<open>\<delta> > 0\<close> by (intro sum_le_suminf ballI mult_nonneg_nonneg zero_le_power summable) auto
    also have "\ \ 1" by fact
    finallyshow using \<open>\<delta> > 0\<close> 
      by (simp add \<delta> have "\<delta> \<in> ball 0 \<epsilon>" by auto
  qed
qed

private lemma fps_conv_radius_inverse_pos_aux:
  fixes havele(<n normf( ) *\<delta> ^ Suc n) \<le> 1"
  assumes "ps_nthf0 1"" > 0
  shows   "fps_conv_radius (inverse f from have summable: " (\<lambda>n. norm (fps_nth f (Suc n)) * \<delta> ^ Suc n)"
proof -
  let ?R = "fps_conv_radius f"
  define h where "h = Abs_fps (\n. norm (fps_nth f n))"
  have [simp]: "fps_conv_radius h = also have "\ \ conv_radi (natfun_inverse f"
  have "continuous_on (eball 0 (fps_conv_radius h)) (eval_fps proof (introereal_inverse_antimonoLimsup_mono
     (introcontinuous_on_eval_fps)
  hence *: "open (eval_fps h -` Af n :: assume n: "  0
    using that by (subst (asm) continuous_on_open_vimage) auto
  have "open (eval_fps h -` {..<2} \ eball 0 ?R)"
    by (rule *) auto
  moreover "
    using assms by (auto simp: eball_def n <delta> by (simp add: power_inverse [symmetric] real_root_pos2)
  ultimately obtain \<epsilon> where \<epsilon>: "\<epsilon> > 0" "ball 0 \<epsilon> \<subseteq> eval_fps h -` {..<2} \<inter> eball 0 ?R")
    by( (asm) blast

  define \<delta> where "\<delta> = real_of_ereal (min (ereal \<epsilon> / 2) (?R / 2))"
  have \<delta>: "0 < \<delta> \<and> \<delta> < \<epsilon> \<and> ereal \<delta> < ?R"
    using \<open>\<epsilon> > 0\<close> and assms by (cases ?R) (auto simp: \<delta>_def min_def)  qed

  have summable: "usingassms ( add: fps_conv_radius_def fps_inverse_def)
     show by ( add)
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    by (simp add: eval_fps_def " f 0 0" and "fps_conv_radius f > 0"
  hence "(\n. norm (fps_nth f (Suc n)) * \ ^ Suc n) sums (eval_fps h \ - 1)"
    by (subst sums_Suc_iff) (auto simp assms(ubst fps_conv_radius_cmult_left 
  alsohavefps_constf   fps_const *java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
    from \<delta> have "\<delta> \<in> ball 0 \<epsilon>" by auto
    also have "\ \ eval_fps h -` {..<2} \ eball 0 ?R" by fact
           (auto simp: fps_conv_radius_cmult_left)
  }
  ultimately le:"\n. norm (fps_nth f (Suc n)) * \ ^ Suc n) \ 1"
    by (simp add
  from summable
    by (subst summable_Suc_iff)

  have "0 < \" using \ by blast
  also have " =inverse ( (\n. ereal (inverse \)))"
>bysubst java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
  alsofix : a
    unfolding conv_radius_def
  proof java.lang.StringIndexOutOfBoundsException: Range [49, 50) out of bounds for length 49
           eventually_mono[OF    "java.lang.StringIndexOutOfBoundsException: Index 114 out of bounds for length 114
    fix :nat:" "
    have   have"\" by (simp add: sums_iff)
      n assms\delta> le 
      by (    by (rule)
    alsohave\<dots> = inverse \<delta>"
      using\<delta> by (simp add: power_inverse [symmetric] real_root_pos2)
    finally show "ereal java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
      by subst)
  next
 0=limsup
      by (rule Limsup_const [symmetric ( DERIV_imp_deriv] has_field_derivative_eval_fps)
    also have\<dots> \<le> limsup (\<lambda>n. ereal (root n (norm (natfun_inverse f n))))"
byintroa simp
    finally show "0 \ \" by simp
  qed
  also have " using assms assms
    using by( add fps_conv_radius_def fps_inverse_def
  finally java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
qed

lemmafps_conv_radius_inverse_pos
  fixes:' :: {banach, real_normed_field} fps"
  assumes  0\<noteq> 0" and "fps_conv_radius f > 0"
  shows  have"deriv ^ Suc )(eval_fps f) 0 = (deriv ^^n)(deriv (eval_fps f)) 0"
proof -
  let ?  also "eventually (\z::complex. z \ eball 0 (fps_conv_radius f)) (nhds 0)"
  havefps_conv_radiusf)  fps_constinverse
    using assms by (subst fps_conv_radius_cmult_left   "eventually(lambda>z. deriv (eval_fps f) z = eval_fps (fps_deriv f) z) (nhds 0)"
  also have "fps_const ?c * inverse f = inverse (fps_const hence (^^n ( eval_fpsf)0=( ^n)eval_fps fps_deriv)0java.lang.StringIndexOutOfBoundsException: Index 87 out of bounds for length 87
    using assms by (simp add: fps_inverse_mult fps_const_inverse)
  also have "fps_conv_radius \ > 0" using assms
    by( fps_conv_radius_inverse_pos_aux
       (auto simp:   also have "\<dots> / ( n) = fps_nth n)"
   show .
qed

end

lemma fps_conv_radius_exp
  fixes c :: "'a :: {banach, eval_fps_eqD:
ps_exp
  unfolding fps_conv_radius_def
 (rule''java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
  fix z :: 'a
have(<>.norm z ^n /<sub n)  expnorm )"
    by (rule exp_converges)
  also have "(\n. norm (c * z) ^ n /\<^sub>R fact n) = (\n. norm (fps_nth (fps_exp c) n * z ^ n))"
by( ext( add norm_mult)
  finally have "summable n: nat
  thus "summable (\n. fps_nth (fps_exp c) n * z ^ n)"
    by (rule summable_norm_cancel)
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3


subsection \<open>Evaluating power series\<close>

theorem  "fps_nthfn=fps_nth g n".
  assumes "norm z < fps_conv_radius f"
  shows   "eval_fps (fps_deriv
by introDERIV_imp_deriv [ymmetric assms

theorem fps_nth_conv_deriv:
  fixes f :: "complex fps"
  assumes "fps_conv_radius f > 0"
  shows   "fps_nth f n = (deriv ^^ n) (eval_fps f) 0 / fact n"
  using
proof (induction n arbitrary: f)
  case 0
  thus ?case by (simp add: eval_fps_def)
next
    "\n\{0::nat}. c) = c"
bysimp
 funpow_Suc_right.
  also have "eventually (imp add: eval_fps_def )
    using java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
  hence "eventually (\z. deriv (eval_fps f) z = eval_fps (fps_deriv f) z) (nhds 0)"
      (simp: eval_fps_deriv
  hence "(deriv ^^ n) (deriv (eval_fps f)
   by intro refl
  also have "\ / fact n = fps_nth (fps_deriv f) n"
    using Suc.prems only [symmetric)
    by (intro
have" / of_nat (Suc n) = fps_nth f (Suc n)"
    by (simp add: fps_deriv_def del: of_nat_Suc)
finally?by(:field_split_simps
qed( onlynumeral_fps_const)

theorem eval_fps_eqD eval_fps_X_power]:
  fixes f g : complex
  assumes "fps_conv_radius f > 0" "fps_conv_radius have "\<lambda>n::nat. if n \<in> {m} then z ^ n else 0 :: 'a) sums (\<Sum>n\<in>{m::nat}. z ^ n)"
  assumes "eventually (\z. eval_fps f z = eval_fps g z) (nhds 0)"
  shows   "f = g"
proof (rule fps_ext)
  fix n :: nat
havefps_nth deriveval_fps/fact
    using assms by (intro fps_nth_conv_deriv     ( add sums_iff
  also have "(deriv ^^ nlemma [simp]
    by (intro [ofz]  :)
  also have "\ / fact n = fps_nth g n"
    using assms f :: "'a :: {banach,real_normed_div_algebra} fps"
  finally show "fps_nth f n = fps_nth g n"   assumes" z < fps_conv_radius f"
qed

lemma [simp
  fixes c   ( suminf_minus]) (auto! )
  shows lemma:
proof -
  have "(\n::nat. if n \ {0} then c else 0) sums (\n\{0::nat}. c)"
    by (rule sums_If_finite_set) auto
   have\<longleftrightarrow> (\<lambda>n::nat. fps_nth (fps_const c) n * z ^ n) sums (\<Sum>n\<in>{0::nat}. c)"
    by (intro sums_cong) auto
  also have "(\n\{0::nat}. c) = c"
    by simp
   ( suminf_add( simpring_distribs! )
    by (simpjava.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 0
qed

lemma []java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
  "eval_fps (0 :: 'a :: {banach, real_normed_div_algebra} fps) z = 0"
  by ( only [symmetric)

lemma eval_fps_1
  "eval_fps (1 ::'a : {banach, real_normed_div_algebra} fps) = 1"
  by(imp : fps_const_1_eq_1] eval_fps_const

lemma eval_fps_numeral [simp   "eval_fps( *g f z * eval_fps z"
  "eval_fps (numeral n :: 'a :: {banach, real_normed_div_algebra} fps) z = numeral n"
  by (simp only: numeral_fps_const eval_fps_const)

lemma eval_fps_X_power [simp          \<
  "eval_fps (fps_X ^ m :: 'unfolding
proof ( Cauchy_product
   "\<>n::nat n \ {m} then z ^ n else 0 :: 'a) sums (\n\{m::nat}. z ^ n)"
    b rule assms
   havelongleftrightarrow> (\<lambda>n::nat. fps_nth (fps_X ^ m) n * z ^ n) sums (\<Sum>n\<in>{m::nat}. z ^ n)"
    by (intro sums_cong) (auto simpalso "\k. \i\k. fps_nth f i * fps_nth g (k - i) * (z ^ i * z ^ (k - i))) =
  also have "(\n\{m::nat}. z ^ n) = z ^ m"
    bysimp
  finally show ?thesis
    by (simp add: eval_fps_def sums_iff)
qed

lemma [simp
  "eval_fps (fps_X :: fixes :' :{,real_normed_div_algebra "
  using eval_fps_X_power[of 1 z] by (simp only: power_one_right)

 eval_fps_minus
  fixes f proof"z = 0)
  assumes "norm z < have" (fps_shiftf*fps_X^ )z=eval_fps( n f) z *z ^ n"
  showseval_fps)  eval_fps
  using assms unfolding eval_fps_def
  by ( suminf_minussymmetric intro:summable_fps

lemmabysimp:fps_shift_times_fps_X_power)
  fixes"a:: banach }fpsjava.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
  assumes "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  shows c: ' : banach,real_normed_field}java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
  using unfolding
  by (subst suminf_add) (auto simp: ring_distribss add exp_def field_split_simps

lemma eval_fps_diff:
   f g : "' ::banach real_normed_div_algebra}fps"
  assumesnorm  norm "
  shows   "eval_fps (f - g) z = eval_fps f z - eval_fps g z"
  using assms unfolding eval_fps_def
  by (subst suminf_diff) (auto simp\<close>

lemma eval_fps_mult:
  fixes f g :: "'a :: {banach,lemma fps_conv_radius_fps_of_poly[]:
  assumes " fps_conv_radius f"" fps_conv_radius "
  shows   "eval_fps (f * g) z = eval_fps f z * eval_fps g z"
proof -
  have "eval_fps using unfolding cofinite_eq_sequentiallyby( conv_radius_cong')
          (\<Sum>k. \<Sum>i\<le>k. fps_nth f i * fps_nth g (k - i) * (z ^ i * z ^ (k - i)))"
    unfolding(simp:fps_conv_radius_def
  proof (subst Cauchy_product)
    showsummable
      by (rule norm_summable_fps assms)+
  qed (simp_all add: algebra_simps)
  also have "(\k. \i\k. fps_nth f i * fps_nth g (k - i) * (z ^ i * z ^ (k - i))) =
               (\<lambda>k. \<Sum>i\<le>k. fps_nth f i * fps_nth g (k - i) * z ^ k)"
( add[ymmetric
  also have "suminf \ = eval_fps (f * g) z"
    by (simp add: eval_fps_def 0
  finally show ?thesis ..
qed

fps_shift
  fixes:"a: {anach,real_normed_div_algebra,comm_ring_1}fpsjava.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
  assumes "n \ subdegree f" "norm z < fps_conv_radius f"
  shows fps_shiftz  (   0  f   f  / z ^n)
proof (cases "z = 0")
  case False
   " (fps_shift fps_X ^ )z eval_fps (fps_shift nf z * "
    using assms by (subst eval_fps_mult) simp_all
  also from assms have "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    by (simp add: fps_shift_times_fps_X_power -
  finally show ?thesis using (
 (simp_all:eval_fps_at_0

lemma simp
  fixes c :: "'a :: usingsums_eval_fpsof z fps_of_polyp] bysimp
  shows "eval_fps (fps_exp c) z = exp (c * z)" unfolding    using sums_unique2
  by

text   assumes [holomorphic_intros]: "f holomorphic_on A"
  The case of division   unfolding poly_altdef b holomorphic_intros
  Handling becomes more using analysisand will so
  that is
\<close>

subsection \<open>FPS of a polynomial\<close>

lemma java.lang.StringIndexOutOfBoundsException: Range [55, 9) out of bounds for length 85
  fixes.
  shows "fps_conv_radius (fps_of_poly p) = \"
proofjava.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
  have" (poly.coeff p)= (\_. 0 :: 'a)"
    using  unfolding by ( conv_radius_cong
  also have they be  on set
    by simp
  finally  ?thesis
    by (simp add: fps_conv_radius_def purposes statment  converges the  some
qed

lemma eval_fps_power: 
  fixes F :: "'a :: {banach, real_normed_div_algebra, comm_ring_1} fps"
  assumes z: "norm z < fps_conv_radius F"
  shows         particular one to the ofthe series 
 (induction
  case 0
  thus ?case
    by (auto simp: eval_fps_mult)
next
case( n)
  have "eval_fps (F ^ Suc n) z = eval_fps (F * F ^ n)where( )\java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
    by simp
also from have "\ = eval_fps F z * eval_fps (F ^ n) z"
    by (subst  :
  finally  " has_fps_expansion A = B \ f has_fps_expansion B"
    using Suc.IH by simp
qed   

 eval_fps_of_poly] eval_fpspoly
 
 java.lang.NullPointerException
    unfolding by rule)(uto: coeff_eq_0
  moreover "(n. poly.coeff n* ^n)sums val_fps(fps_of_poly )"
    using sums_eval_fps[of z "fps_of_poly p"by simp
  ultimately show ?thesis   "fps_nth Fn=( ^^ n) (val_fps java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
    using sums_unique2 by blast
qed

lemma poly_holomorphic_on [holomorphic_intros]:
  assumes]: "holomorphic_on A"
  shows   "(\z. poly p (f z)) holomorphic_on A"
  unfolding poly_altdef by (intro

subsection \<open>Power series expansions of analytic functions\<close>

text
  This predicate contains the
  in disc positive around originis to given
  function there.

  This relationship " F"
     "continuous at 0 A) f"
  holomorphic on a connecteda have" (eval_fps F) 0
  expansion must equal that.

  More concrete statements about the radius of convergence can( isCont_cong simphas_fps_expansion_def
   purposes  statment the converges thein neighbourhood
  of the origin is enough,  thus(   A "
  as there are straightforward introduction rules to show this.

In, when one wants relate the coefficients the series to 
  values of the derivatives(<>.c has_fps_expansion
  the coefficients of auto: has_fps_expansion_def
  is enough.
\<close>
definition\<^marker>\<open>tag important\<close>
  "\_. 0) has_fps_expansion 0"
  (infixl \<open>has'_fps'_expansion\<close> 60)  simp has_fps_expansion_def
  where "(f has_fps_expansion F) \ (\_. 1) has_fps_expansion 1"
            fps_conv_radius F >java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

named_theorems

lemma has_fps_expansion_schematicI:
  "f has_fps_expansion A \ A = B \ f has_fps_expansion B"
  by simp

lemma fps_nth_fps_expansionlemma has_fps_expansion_fps_Xfps_expansion_intros]:java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
  fixes f :: "complex \ complex"
  assumes "f has_fps_expansion F"
  shows   "fps_nth F n = (deriv ^^ n) f 0 / fact n"
proof -
  have "fps_nth F n = (deriv ^^ n) (eval_fps F) 0 / fact n"
    using assmscasejava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
  also have "(deriv ^^ n) (eval_fps F) 0 = (deriv ( eventually_nhds_in_open) ( simp: has_fps_expansion_def )
    using assms by (intro higher_deriv_cong_ev) (auto simp: has_fps_expansion_def)
  finally show ?thesis .
qed

 eval_fps_has_fps_expansion
  "fps_conv_radius with assms False show thesis
 has_fps_expansion_def

lemma has_fps_expansion_imp_continuous:
  fixes F :: "'a::{real_normed_field,banach} fps"
  assumes "f has_fps_expansion F"
  shows" (at 0 within A) f"
proof -
  from assms have "isCont (eval_fps F) 0"
    by (intro c ::"a: banach,real_normed_div_algebra }java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
  also have "?this "java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
    by (intro isCont_cong) (auto    has_fps_expansion_cmult_left OF] showthesis
  finally have "isCont f 0" .
  thus "continuous (at 0 within A) f"
    by (simp add: continuous_at_imp_continuous_within)
qed

lemmaproof
  "(\_. c) has_fps_expansion fps_const c"
  by (auto simp: has_fps_expansion_def)

lemma has_fps_expansion_0 [simp  assms(
  "(\_. 0) has_fps_expansion 0"
  by (auto simp: has_fps_expansion_def)

lemma     by eventually_elim  simp)
  "(\_. 1) has_fps_expansion 1"   ?thesis assms  (auto )
  by (auto

lemmahas_fps_expansion_numeral, , fps_expansion_intros
"\lambda>.numeral n numeral n"
  by (auto simp: has_fps_expansion_def)

lemma [] 
  "(\x. x ^ n) has_fps_expansion (fps_X ^ n)"
   auto:has_fps_expansion_def

lemma has_fps_expansion_fps_X [fps_expansion_intros]: 
  "(\x. x) has_fps_expansion fps_X"
  by( simp)

lemma has_fps_expansion_cmult_left [fps_expansion_intros]:
  fixes c :: "'a :: {banach, real_normed_div_algebra, comm_ring_1}"
  assumes "f has_fps_expansion F"
  shows   "(\x. c * f x) has_fps_expansion fps_const c * F"
proof(ases" 0)
  case False
  from assms have "eventually (\z. z \ eball 0 (fps_conv_radius F)) (nhds 0)"
    by (intro ultimatelyeventually
   from haveeventually
    by (auto simpwwith show by (auto:)
  ultimately
by (simp_all: eval_fps_mult
  with assms and Falseassumeshas_fps_expansion" G
by( simp fps_conv_radius_cmult_left
qed auto

lemma has_fps_expansion_cmult_right [fps_expansion_intros has_fps_expansion_mult[]:
fixesc:"a:: {,r comm_ring_1}
  assumes "f has_fps_expansion F"
  shows   "(\x. f x * c) has_fps_expansion F * fps_const c"
proof -
  have "F * fps_const c = fps_const c * F"
    by (intro fps_ext) (auto simp: mult.commute)
  with has_fps_expansion_cmult_left [OF assms] show havejava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
    by (simp add: mult.commute)
qed

lemma has_fps_expansion_minus [fps_expansion_intros]:
  assumes "f has_fps_expansion F"
  shows\<lambda>x. - f x) has_fps_expansion -F"
proof
  from assms and\<lambda>x. eval_fps G x = g x) (nhds 0)"
    by( eventually_nhds_in_open simphas_fps_expansion_def)
  moreover have eventually
 simp: has_fps_expansion_def
havejava.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
    by eventually_elim (auto simp has_fps_expansion_inversefps_expansion_intros
  thusthesis assms by( simp: has_fps_expansion_def
qed

lemma has_fps_expansion_add [fps_expansion_intros]:
  assumes "f has_fps_expansion F" "g has_fps_expansion G"
  shows   "(\x. f x + g x) has_fps_expansion F + G"
proof -
  from assms have "0 < min (fps_conv_radius F) (fps_conv_radius G)"
    byauto
  alsohavejava.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
 fps_conv_radius_add
  finally havelet  min )( )java.lang.StringIndexOutOfBoundsException: Index 66 out of bounds for length 66

  from assms have "eventually (\x. x \ eball 0 (fps_conv_radius F)) (nhds 0)"
                  "eventually (\x. x \ eball 0 (fps_conv_radius G)) (nhds 0)"
    by (intro eventually_nhds_in_open; force simpmoreover " (\z. eval_fps F z = f z) (nhds 0)"
  moreover have "eventually (\x. eval_fps F x = f x) (nhds 0)"
            and "eventually (\x. eval_fps G x = g x) (nhds 0)"
    using assms by (auto      (lim z)
  ultimately have "eventually (\x. eval_fps (F + G) x = f x + g x) (nhds 0)"
    by eventually_elim (auto simp: eval_fps_add)
  with radiusby( eval_fps_mult auto
qed

lemma has_fps_expansion_diff [fps_expansion_intros]:
  assumes F g  Gjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
  shows
  using has_fps_expansion_add[of f F "\x. - g x" "-G"] assms
  by (simp add: has_fps_expansion_minus)

lemma has_fps_expansion_mult [fps_expansion_intros]:
  lemmahas_fps_expansion_sum [ps_expansion_intros]java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
  assumes "f has_fps_expansion F shows (\z. \x\A. f x z) has_fps_expansion (\x\A. F x)"
shows\<lambda>x. f x * g x) has_fps_expansion F * G"
proof -
  from assms have "0 < min (fps_conv_radiuslemma has_fps_expansion_prod fps_expansion_intros]
    by (auto simp: has_fps_expansion_def)
  also have "\ \ fps_conv_radius (F * G)"
    by (rule fps_conv_radius_mult)
  finallyhave"\ > 0" .

  from assms have "eventually (\x. x \ eball 0 (fps_conv_radius F)) (nhds 0)"
                  "eventually (\x. x \ eball 0 (fps_conv_radius G)) (nhds 0)"
    by (intro eventually_nhds_in_openby(uto: has_fps_expansion_def
  moreover have "eventually (\x. eval_fps F x = f x) (nhds 0)"
            and "eventually (\x. eval_fps G x = g x) (nhds 0)"
    using by( simphas_fps_expansion_def)
  ultimately have "eventually (\x. eval_fps (F * G) x = f x * g x) (nhds 0)"
    \<lambda>x::'a :: {banach, real_normed_field}. exp (-x)) has_fps_expansion fps_exp (-1)"
  with radius show ?thesis by (auto simp: has_fps_expansion_def)
qed has_fps_expansion_deriv]:

lemma has_fps_expansion_inverse [fps_expansion_intros]:
  fixes F :: "'a :: {banach, real_normed_field} fps"
assumes"
      sing  (ntro)
     "(x. inverse (f x)) has_fps_expansion inverse F"
proof -
  have radius: "fps_conv_radius (inverse F) > 0"
    using assms auto)
    by( fps_conv_radius_inverse_pos
  let ?R = "min (fps_conv_radius F) (fps_conv_radius java.lang.StringIndexOutOfBoundsException: Range [53, 54) out of bounds for length 35
  from  radius
    have "eventually (\x. x \ eball 0 (fps_conv_radius F)) (nhds 0)"
ntually\<lambda>x. x \<in> eball 0 (fps_conv_radius (inverse F))) (nhds 0)"
    by (intro eventually_nhds_in_open; force simp: has_fps_expansion_def zero_ereal_def)+
  moreover have "eventually (\z. eval_fps F z = f z) (nhds 0)"
    using    hence "val_fps fps_derivF z=deriv(val_fps F)z"
ultimately" (\z. eval_fps (inverse F) z = inverse (f z)) (nhds 0)"
  proof eventually_elim
    case (elimusing and
    hence "eval_fps (inverse F * F) z = eval_fps (inverse F) z hence" (\<lambda>w. eval_fps F w = f w) (nhds z)"
      by (subst eval_fps_mult) auto
    also have "eval_fps (inverse F * F) z = 1"
      using assmsfinally ?case.
    finally show ?case by (auto simp assms fps_conv_radius_deriv F  ?thesis
  qed
  with radius show ?thesis by (auto simp: has_fps_expansion_def
qed

lemma has_fps_expansion_sum [fps_expansion_intros]:
  assumes "\x. x \ A \ f x has_fps_expansion F x"
  shows   "(\z. \x\A. f x z) has_fps_expansion (\x\A. F x)"
  using assms fps_conv_radius_ln

lemmahas_fps_expansion_prod [fps_expansion_intros:
  fixes F :: "'a \ 'b :: {banach, real_normed_div_algebra, comm_ring_1} fps"
assumes
  shows   java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
usingassmsinduction:) (auto!: )

lemma has_fps_expansion_exp [fps_expansion_intros]:
  fixes c :: "'a :: {banach, real_normed_field}"
  shows "(\x. exp (c * x)) has_fps_expansion fps_exp c"
  by (auto simp: has_fps_expansion_def "(n. norm( /of_nat n : a /norm(1 ( )::')\<longlonglongrightarrow> 1"

lemma has_fps_expansion_exp1 [fps_expansion_intros]:
  "(\x::'a :: {banach, real_normed_field}. exp x) has_fps_expansion fps_exp 1"
  using has_fps_expansion_exp" \n. 1 / of_nat n :: 'a) =

lemma has_fps_expansion_exp_neg1 [fps_expansion_introsintro eventually_mono eventually_gt_at_top 0]]
(
  using has_fps_expansion_exp[of "-1"by simp

lemma has_fps_expansion_derivsubst)( add)
  assumes "f assumes "f : fps_ln_def)
  shows   "deriv f has_fps_expansion fps_deriv F"
proof -
  have "eventually (\z. z \ eball 0 (fps_conv_radius F)) (nhds 0)"
    using assms by (intro eventually_nhds_in_open)
                   (auto simp: has_fps_expansion_def zero_ereal_def)
  moreoverassmseventually
    by (auto simp: has_fps_expansion_def)
  then obtain s where "open "fps_conv_radius c) =java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
    by (auto simp: eventually_nhds)
  hence "eventually (\w. w \ s) (nhds 0)"
    by (intro eventually_nhds_in_open) auto
  ultimately " (
  proof eventually_elim
    case (elim z)
    hence "eval_fps (fps_deriv F) z = deriv (eval_fps F) z"
      by (simp add ?caseusing[of]by( addnorm_mult
    also have "eventually (\w. w \ s) (nhds z)"
      using elim and \<open>open s\<close> by (intro eventually_nhds_in_open) auto
    hence "eventually (\w. eval_fps F w = f w) (nhds z)"
      by eventually_elim (simp add: s)
     "deriv(val_fpsF f z"
      by (intro deriv_cong_ev  finally ?thesis
    inallycase.
  qed
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    by (auto simp: has_fps_expansion_def)
qed

lemma fps_conv_radius_binomial:
  fixes c :: "'a :: {real_normed_field,banach}"
  shows "fps_conv_radius (fps_binomial c) = (if c \ \ then \ else 1)"
  unfolding by (simp add)

lemma fps_conv_radius_ln:
  fixes c :: "a ::{banach real_normed_field field_char_0}"
shows)ifthen
proof (ases0
  case     Falsesubst) auto
  have "conv_radius (\n. 1 / of_nat n :: 'a) = 1"
mit_nonzero
    show "lemmaeval_fps_sin[simp]:
      using LIMSEQ_Suc_n_over_n by (simp add: norm_divide del:   "eval_fps (ps_sinc = sin (c )java.lang.StringIndexOutOfBoundsException: Range [46, 47) out of bounds for length 46
  qed auto
  also have "conv_radius (\n. 1 / of_nat n :: 'a) =
               conv_radius java.lang.StringIndexOutOfBoundsException: Index 95 out of bounds for length 95
    by (  ?thesis(simp add  eval_fps_def
       (simp add: norm_mult norm_divide norm_power)
  finallyshow usingFalse fps_ln_def
 (  fps_conv_radius_cmult_leftadd)
qed (auto simp: fps_ln_def)

 
  assumes
  shows   "fps_conv_radius (fps_ln c) = 1"
  using assms "\<>n. cos_coeff *\<^sub>R (c * z) ^ n) sums cos (c * z)" by (rule cos_converges)

 fps_conv_radius_sin]:
  fixes c :: "'a :: {banach, real_normed_field, ( ext) auto : cos_coeff_deffps_cos_def scaleR_conv_of_real)
   "fps_conv_radius( c) = \"
proof (cases "c = 0")
  case False
  have "\ = conv_radius (\n. of_real (sin_coeff n) :: 'a)"
  proof (rule sym, rule conv_radius_inftyI'', rule summable_norm_cancel, goal_cases)
    case (1 z)
    show ?case using summable_norm_sin[of z] by (simp add: norm_mult)
  qed
  also have "\ / norm c = conv_radius (\n. c ^ n * of_real (sin_coeff n) :: 'a)"
    using False by (subst conv_radius_mult_power) auto
  alsohave\<dots> = fps_conv_radius (fps_sin c)" unfolding fps_conv_radius_def
    by (rule conv_radius_cong_weak) (auto simp add: fps_sin_def sin_coeff_def)
  finally show ?thesis by simp
qed simp_all

lemma fps_conv_radius_cos [simp]:
  fixes c :: "'a :: {banach, real_normed_field, field_char_0}"
  showsfps_cos\<infinity>"
proof (cases "c = 0")
  case False
  have"<> conv_radius (\n. of_real (cos_coeff n) :: 'a)"
  proof (rule showby simp
    case (1 z)
    show ?case using summable_norm_cos[of z] by (simp add: norm_mult
  qed
  also have "\ / norm c = conv_radius (\n. c ^ n * of_real (cos_coeff n) :: 'a)"
    usingassumes <"
  also \dots= (fps_cos unfolding
    by (rule conv_radius_cong_weak) (autousing[OF ] by ( add eval_fps_def
  finally show ?thesis by simp
qed simp_all

lemma eval_fps_sin [simp]:
  fixes z :: "'a :: {banach, real_normed_field, field_char_0}"
  shows "eval_fps (fps_sin c) z = sin (c * z)"
proof -
  have(
  also have "(\n. sin_coeff n *\<^sub>R (c * z) ^ n) = (\n. fps_nth (fps_sin c) n * z ^ n)"
    by (rule ext) (auto simp!: eventually_mono *])
  finally show ?thesis by (simp add: sums_iff eval_fps_def)
qed

lemma eval_fps_cos [simp]:
  fixes z :: "'a :: {banach, real_normed_field, field_char_0}"
  shows "eval_fps (fps_cos c) z = cos (c * z)"
proof -
    (
  have
    by (
  finally show ?thesis by (simp add: sums_iff eval_fps_def)
qed

lemmacos_eq_zero_imp_norm_ge
  assumes "cos (z :: complex) = 0"
     norm
proof -
  from assms obtain n where "z = complex_of_real ((of_int n + 1 / 2) * pi)"using[of]by 
    by lemmahas_fps_expansion_shift]:
also norm
    by (subst norm_of_real) (simp_all add: abs_mult)
  also have "real_of_int n + 1 / 2 = of_int (2 * n + 1) / 2" by simp
  also have "\\\ = of_int \2 * n + 1\ / 2" by (subst abs_divide) simp_all
  also have "\ * pi = of_int \2 * n + 1\ * (pi / 2)" by simp
  also have "\ \ of_int 1 * (pi / 2)"
    by (intro mult_right_mono, subst of_int_le_iff) (auto simp:   have" (\x. x \ eball 0 (fps_conv_radius F)) (nhds 0)"
  finally show ?thesis by simp
qed



lemma eval_fps_binomial:
  fixes: complex
  assumes "norm z < 1"
  shows   "eval_fps (fps_binomial c) z = (1 + z) powr c"
  using gen_binomial_complex[OF assms] by (simp add: sums_iff eval_fps_def)

lemma has_fps_expansion_binomial_complex [fps_expansion_intros]:
  fixes c :: complex
  shows\lambda.( +x  c)has_fps_expansioncjava.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
proof -
  have:"ventually(\z::complex. z \ eball 0 1) (nhds 0)"
    by (intro eventually_nhds_in_open) auto
  thus   "(<>x. x f x / g x)has_fps_expansion (F )"
    by (auto simp: has_fps_expansion_def eval_fps_binomial fps_conv_radius_binomial
             intro!: eventually_mono [OF *])
qed

[]java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
  fixes c :: "'a :: {banach, real_normed_field, field_char_0}"
  shows "(\x. sin (c * x)) has_fps_expansion fps_sin c"
  byautojava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 39

lemma has_fps_expansion_sin' by simpadd: fps_divide_unitjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
ambda' :{}. sinx fps_sin 1"
  using has_fps_expansion_sin[inverse x=0 fps_nthelse/  n)has_fps_expansionG"

 has_fps_expansion_cos]:
  fixes c :: "'a :: {banach, real_normed_field, field_char_0}"
  shows "(\x. cos (c * x)) has_fps_expansion fps_cos c"
  by (auto simp: has_fps_expansion_def)

lemma has_fps_expansion_cos' [fps_expansion_intros]:
  "(\x::'a :: {banach, real_normed_field}. cos x) has_fps_expansion fps_cos 1"
using[of  simp

lemma has_fps_expansion_shift [fps_expansion_intros]:
  fixes F :: "'a :: {banach, real_normed_field} fps"
  assumes "f has_fps_expansion F" and "n \ subdegree F"
  assumes "c = fps_nth F n"
  shows   "(\x. if x = 0 then c else f x / x ^ n) has_fps_expansion (fps_shift n F)"
 -
  have "eventually (\x. x \ eball 0 (fps_conv_radius F)) (nhds 0)"
    using assms by (intro eventually_nhds_in_open) (auto simp: has_fps_expansion_def zero_ereal_def)
  moreover "eventually (\x. eval_fps F x = f x) (nhds 0)"
    using assms by ( _") using assms(3 by(intro has_fps_expansion_divide assms java.lang.StringIndexOutOfBoundsException: Index 95 out of bounds for length 95
  ultimately have "eventually (by (auto simp: has_fps_expansion_def eval_fps_at_0 dest: eventually_nhds_x_imp_x)
                     (if x = 0 then c else f x /
    by eventually_elimjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  with assms show ?thesis by (auto simp c: "a: banach real_normed_field,field_char_0}java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
qed

emma [fps_expansion_intros
  fixes F G :: "'a :: {banach by (intro fps_expansion_intros auto
  assumes "f has_fps_expansion F" and "g has_fps_expansion G" and 
          subdegree
          "c = fps_nth F (subdegree G) / fps_nth G (subdegree G)"
  showshas_fps_expansion_tan
proof -
  define n where "n = subdegree G"
  lemma ha
   '* ^ n G '*fps_X ^ n" unfolding_n_def
    by (rule fps_shift_times_fps_X_power [symmetric   s where "0\
moreover  have fps_nth
    by( add_ )
  ultimately have FG: "F / G = F' * inverse G'"
b simpjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34

  have"\x. (if x = 0 then fps_nth F n else f x / x ^ n) *
          (x        x/  )has_fps_expansion
    (is "?h has_fps_expansion _"finally thesis
has_fps_expansion_inverse
              has_fps_expansion_shift assms) auto
  also have "?h = (\x. if x = 0 then c else f x / g x)"
    using assms(5) unfolding n_def 
    by (intro ext) (auto split   "f F"
  finally show ?thesis .
qed

lemma has_fps_expansion_divide' [fps_expansion_intros]:
  fixes F G :: "'a :: {banach, real_normed_field} fps"
  assumes "f has_fps_expansion F" and "g has_fps_expansion G" and "fps_nth G 0 \ 0"
     (<lambda>x. f x / g x) has_fps_expansion (F / G)"
proof -
  have "(\x. if x = 0 then fps_nth F 0 / fps_nth G 0 else f x / g x) has_fps_expansion (F / G)"
    ishhas_fps_expansion using(3) by(introhas_fps_expansion_divide ) auto
  also from assms ( conv_radius_geI
    by (auto simp: has_fps_expansion_def eval_fps_at_0 dest: eventually_nhds_x_imp_x)
  hence "?h = (\x. f x / g x)" by auto
  finally show ?thesis .
qed

lemma [fps_expansion_intros
  fixes c :: "'a :: {banach, real_normed_field qed
  shows "(\x. tan (c * x)) has_fps_expansion fps_tan c"
proof -
  have "(\x. sin (c * x) / cos (c * x)) has_fps_expansion fps_sin c / fps_cos c"
    by (intro fps_expansion_intros) auto
  thus ?thesis by (simp add: tan_def fps_tan_def)
qed

nsion_tan[fps_expansion_intros
  "tan has_fps_expansion fps_tan (1 :: 'a :: {banach, real_normed_field, field_char_0})"
  using has_fps_expansion_tan[of 1] by simp

lemma has_fps_expansion_imp_holomorphic:
  assumes "f has_fps_expansion F"
  obtains
proof -
  from assms obtain s where s: "open s" "0 \ s" "\z. z \ s \ eval_fps F z = f z"
    unfolding has_fps_expansion_def eventually_nhds by blast
  let ?s' = "eball 0 (fps_conv_radius F) \ s"
  have "eval_fps F holomorphic_on ?s'"
    by (intro holomorphic_intros) auto
  also have "?this \ f holomorphic_on ?s'"
    using s by (intro holomorphic_cong) auto
  finally show ?thesis using s assms
    by (intro that[of ?s']) (auto simp: has_fps_expansion_def zero_ereal_def)
qed

lemma has_fps_expansionI:
  fixes f :: "'a :: {banach, real_normed_div_algebra} \ 'a"
  assumes "eventually (\u. (\n. fps_nth F n * u ^ n) sums f u) (nhds 0)"
  shows   "f has_fps_expansion F"
proof -
  from assms obtain X where X: "open X" "0 \ X" "\u. u \ X \ (\n. fps_nth F n * u ^ n) sums f u"
    unfolding eventually_nhds by blast
  obtain r where r: "r > 0" "cball 0 r \ X"
    using X(1,2) open_contains_cball by blast
  have "0 < norm (of_real r :: 'a)"
    using r(1) by simp
  also have "fps_conv_radius F \ norm (of_real r :: 'a)"
    unfolding fps_conv_radius_def
  proof (rule conv_radius_geI)
    have "of_real r \ X"
      using r by auto
    from X(3)[OF this] show "summable (\n. fps_nth F n * of_real r ^ n)"
      by (simp add: sums_iff)
  qed
  finally have "fps_conv_radius F > 0"
    by (simp_all add: zero_ereal_def)
  moreover have "(\\<^sub>F z in nhds 0. eval_fps F z = f z)"
    using assms by eventually_elim (auto simp: sums_iff eval_fps_def)
  ultimately show ?thesis
    unfolding has_fps_expansion_def ..
qed

lemma fps_mult_numeral_left [simp]: "fps_nth (numeral c * f) n = numeral c * fps_nth f n"
  by (simp add: fps_numeral_fps_const)

end

97%


¤ Dauer der Verarbeitung: 0.21 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Die farbliche Syntaxdarstellung ist noch experimentell.

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 ist noch experimentell.