(* 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 alsohave"\ \ ereal 0" using \r \ 0\ by (simp add: zero_ereal_def) finallyshow. 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
a "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 " finallyhave 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 moreoverfrom K and K_pos have"norm z < norm "0 ultimatelyshowfinallyhave: "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 alsohaveAbs_fpsf) fps_deriv
f - finallyshow ?thesis . qed
lemma holomorphic_on_eval_fps [holomorphic_intros]: fixes: ' :{,real_normed_field" assumes"A \ eball 0 (fps_conv_radius f)"
(intro) auto proofhave"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 alsohave"norm z - finallyhave" 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 alsohave"\ < 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 ) finallyshow"\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 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
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 unfoldingby (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)" unfoldingusing[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 finallyshow ?caseby simp alsohave"\ = (\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) alsohave"\ \ (\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) alsohave"\ \ norm (fps_nth f i) * inverse (\ ^ (Suc n - i))" using 1 by ( usingby (auto: eball_def eval_fps_at_0) alsohave"\ = 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) alsohave"(\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 alsohave"{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 alsohave"\ \ 1" by fact finallyshowusing\<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: fixeshavele(<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) ultimatelyobtain\<epsilon> where \<epsilon>: "\<epsilon> > 0" "ball 0 \<epsilon> \<subseteq> eval_fps h -` {..<2} \<inter> eball 0 ?R") by( (asm) blast
have summable: "usingassms ( add: fps_conv_radius_def fps_inverse_def) showby ( 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 alsohave"\ \ 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 alsohave" =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:" " havehave"\" 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) finallyshow"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) alsohave\<dots> \<le> limsup (\<lambda>n. ereal (root n (norm (natfun_inverse f n))))" byintroa simp finallyshow"0 \ \" by simp qed alsohave" using assms assms usingby( 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" showshave"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)" alsohave"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) alsohave"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) alsohave"(\n. norm (c * z) ^ n /\<^sub>R fact n) = (\n. norm (fps_nth (fps_exp c) n * z ^ n))" by( ext( add norm_mult) finallyhave"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 ?caseby (simp add: eval_fps_def) next "\n\{0::nat}. c) = c" bysimp
funpow_Suc_right. alsohave"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 alsohave"\ / 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 alsohave"(deriv ^^ nlemma [simp] by (intro [ofz] :) alsohave"\ / fact n = fps_nth g n" using assms f :: "'a :: {banach,real_normed_div_algebra} fps" finallyshow"fps_nth f n = fps_nth g n"assumes" z < fps_conv_radius f" qed
lemma [simp fixes c ( suminf_minus]) (auto! ) showslemma: 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 alsohave"(\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_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 have? longleftrightarrow> (\<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))) = alsohave"(\n\{m::nat}. z ^ n) = z ^ m" bysimp finallyshow ?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 usingunfolding 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) alsohave"(\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 alsohave"suminf \ = eval_fps (f * g) z" by (simp add: eval_fps_def 0 finallyshow ?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 alsofrom assms have"java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 by (simp add: fps_shift_times_fps_X_power - finallyshow ?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)"unfoldingusing 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)" usingunfoldingby ( conv_radius_cong alsohave 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 alsofromhave"\ = 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 unfoldingby 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 ultimatelyshow ?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 originisto 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 toshow 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 alsohave"(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) finallyshow ?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 alsohave"?this "java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67 by (intro isCont_cong) (auto has_fps_expansion_cmult_left OF] showthesis finallyhave"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_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 fromhaveeventually by (auto simpwwithshowby (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] showhavejava.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) moreoverhave 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 finallyhavelet 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)" moreoverhave"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) ultimatelyhave"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. \ using assms by (auto (intro) (auto: zero_ereal_def ultimately" (\x. eval_fps (F * G) x = f x * g x) (nhds 0)" by by (auto) with radius showultimatelyhave"eventually (\x. eval_fps (-F) x = -f x) (nhds 0)" qed
lemma has_fps_expansion_inverse []: fixes ? using auto) assumes"f has_fps_expansion java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51 assumesjava.lang.StringIndexOutOfBoundsException: Range [7, 8) out of bounds for length 7 shows"(\x. inverse (f x)) has_fps_expansion inverse F" proof ( simp: has_fps_expansion_def) have radius: "fps_conv_radius also have "<dots> \<le> fps_conv_radius (F + G)" using assms unfolding has_fps_expansion_def by ( by (rule)
?R=" (fps_conv_radius F (fps_conv_radius inverseF)" from assms radius have"eventually (\x. x \ eball 0 (fps_conv_radius F)) (nhds 0)" "eventually (\x. x \ eball 0 (fps_conv_radius (inverse F))) (nhds 0)" by (intro eventually_nhds_in_open; force simp: has_fps_expansion_def zero_ereal_def)+ haveeventually using assms by (auto simp: has_fps_expansion_def) ultimatelyhave"eventually (\z. eval_fps (inverse F) z = inverse (f z)) (nhds 0)" proof eventually_elim case(lim henceely have"eventually (\x. eval_fps (F + G) x = f x + g x) (nhds 0)"
subst)auto alsohave"eval_fps (inverse F java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 using"f has_fps_expansion "" has_fps_expansionG" finallyshow ?caseby (auto simp: "(\x. f x - g x) has_fps_expansion F - G" qed with radius show ?thesis qed
lemma has_fps_expansion_sum[ps_expansion_intros]: assumes"\x. x \ A \ f x has_fps_expansion F x" " using assms by (induction A rule: "(\x. f x * g x) has_fps_expansion F * G"
lemma[]: fixes F :: "'a \ 'b :: {banach, real_normed_div_algebra, comm_ring_1} fps" 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 radius
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"
a simp)
lemma [fps_expansion_intros assumes"f has_fps_expansion F" shows"deriv f has_fps_expansion fps_deriv F" proof - have"f has_fps_expansion F"
u assms by( eventually_nhds_in_open showsjava.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67 moreoverfrom assms have"eventually (\z. eval_fps F z = f z) (nhds 0)" by( simp: has_fps_expansion_def then intro) auto by (auto simp: eventually_nhds) hence"eventually (\w. w \ s) (nhds 0)" by (introassms ultimately "eve (java.lang.StringIndexOutOfBoundsException: Index 90 out of bounds for length 90 proof eventually_elim case (elim z) hence"( ) ( " have eventually alsohave"eventually (\w. w \ s) (nhds z)"
elim \<open>open s\<close> by (intro eventually_nhds_in_open) auto
eventually by eventually_elim (simp add: s) hence"deriv (eval_fps F) z = deriv f z" by (intro deriv_cong_ev refl) show . qed withand[of]show 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 fps_conv_radius_def by (simp add: conv_radius_gchoose)
lemma: fixes c :: "'a :: {banach, real_normed_field, field_char_0}" has_fps_expansion_prod]: shows"fps_conv_radius (fps_ln c) = (if c = 0 then \ else 1)" proof (cases "\x. x \ A \ f x has_fps_expansion F x"
se have"conv_radius (\n. 1 / of_nat n :: 'a) = 1" proof ( usingby ( A rule infinite_finite_induct introfps_expansion_intros show(lambda 1 n:')/ 1/of_nat Sucn ::a) \ 1" using LIMSEQ_Suc_n_over_n by (simp java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 qed auto alsohave"conv_radius(
conv_radius (\<lambda>n. if n = 0 then 0 else (- 1) ^ (n - 1) / of_nat n :: 'a)" by (intro conv_radius_cong[OFeventually_gt_at_top[of)
(simp add: norm_mult "\x::'a :: {banach, real_normed_field}. exp (-x)) has_fps_expansion fps_exp (-1)" finallyshow ?thesis using False unfolding fps_ln_def by ( fps_conv_radius_cmult_left simp_all: fps_conv_radius_def
p fps_ln_def
lemma fps_conv_radius_ln_nonzero [simp]: assumes"c \ (0 :: 'a :: {banach,real_normed_field,field_char_0})" shows"fps_conv_radius (fps_ln c) = 1" using assms by (simp add: fps_conv_radius_ln)
lemma fps_conv_radius_sin moreoverfrom assms have" (\z. eval_fps F z = f z) (nhds 0)" fixes c :: "'a :: {banach, real_normed_field, field_char_0}" shows (fps_sin <infinity>" 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 have"eventually (.eval_fps (ps_deriv F) derivf z)( 0java.lang.StringIndexOutOfBoundsException: Index 90 out of bounds for length 90 case (1 z) show summable_norm_sin z simp: ) qed alsohave"\ / norm c = conv_radius (\n. c ^ n * of_real (sin_coeff n) :: 'a)" using False by (subst conv_radius_mult_power) auto alsohave"\ = fps_conv_radius (fps_sin c)" unfolding fps_conv_radius_def by (rule conv_radius_cong_weak) (auto simp add: fps_sin_defhence ( )z=deriv showby simp qedf show ?case java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
lemma fps_conv_radius_cos [simp]: fixes c :: "'a :: {banach, real_normed_field, field_char_0}" shows"fps_conv_radius (fps_cos c) = \" proof (cases "c = 0") case False have"\ = conv_radius (\n. of_real (cos_coeff n) :: 'a)" proof fps_conv_radius_def(simp : conv_radius_gchoose case (1 z) show ?caseusing summable_norm_cos[of z] by (simp add: norm_mult ' ,," "fps_conv_radius (fps_ln c = (if c = 0 \ else 1)" proof( "c = 0) usingby ( conv_radius_mult_power alsohave"\ = fps_conv_radius (fps_cos c)" unfolding fps_conv_radius_def by (rule conv_radius_cong_weak) finallyshow ?thesis by simp qed simp_all
[]: fixes z :: "'a :: {banach, real_normed_field, field_char_0}" shows( )z sin*z)" proof - have"(\n. sin_coeff n *\<^sub>R (c * z) ^ n) sums sin (c * z)" by (rule sin_converges) alsohave"(\n. sin_coeff n *\<^sub>R (c * z) ^ n) = (\n. fps_nth (fps_sin c) n * z ^ n)" by (rule extconv_radius(<lambda>n. if n = 0 then 0 else (- 1) ^ (n - 1) / of_nat n :: 'a)"
yshowby (simpadd:sums_iff) qed
lemma eval_fps_cos ?thesis unfolding fixesby subst) (simp_all : fps_conv_radius_defjava.lang.StringIndexOutOfBoundsException: Index 78 out of bounds for length 78 shows"eval_fps lemma fps_conv_radius_ln_nonzero[simp]:
java.lang.StringIndexOutOfBoundsException: Range [9, 7) out of bounds for length 7 have(lambdan*\<^sub>R (c * z) ^ n) sums cos (c * z)" by (rule cos_converges) alsohavelemma [simp byrule(simp power_mult_distrib finallyshow ?thesis by (simpshows fps_sin qed
lemma cos_eq_zero_imp_norm_ge: assumes"cos (z :: complex) =java.lang.StringIndexOutOfBoundsException: Index 84 out of bounds for length 84 shows"norm z \ pi / 2" proof - from assms obtain n where"z = complex_of_real ((of_int n + 1 / 2) * pi)" by (auto simp: cos_eq_0 algebra_simps " alsohave"norm \ = \real_of_int n + 1 / 2\ * pi" by (subst norm_of_real) (simp_all add: abs_mult) alsohave"real_of_int n + 1 / 2 = of_int (2 * n + 1) / 2"by simp alsohave"\\\ = of_int \2 * n + 1\ / 2" by (subst abs_divide) simp_all alsohave"fps_conv_radius ( c) = alsohave"\ \ of_int 1 * (pi / 2)" by (intro mult_right_monohave\infinity=conv_radius finallyshow thesis qed
lemma eval_fps_binomial: fixes c :: complex "norm z <1 shows"eval_fps (fps_binomial c) have"<> fps_conv_radius c)" fps_conv_radius_def
gen_binomial_complex assmssimp: sums_iff)
lemma has_fps_expansion_binomial_complex [fps_expansion_intros]: fixes c :: complex shows"(\x. (1 + x) powr c) has_fps_expansion fps_binomial c" proof - have *: "eventually (\z::complex. z \ eball 0 1) (nhds 0)" by (intro eventually_nhds_in_open) auto thus"\n. sin_coeff n *\<^sub>R (c * z) ^ n) sums sin (c * z)" by (rule sin_converges) by (auto simp: has_fps_expansion_def eval_fps_binomial fps_conv_radius_binomial
intro [OF qed
lemma has_fps_expansion_sin [fps_expansion_intros fixes c :: "'a :: {banach, real_normed_field, field_char_0}" shows"(\x. sin (c * x)) has_fps_expansion fps_sin c" by (auto simp: has_fps_expansion_def)
lemma has_fps_expansion_sin' [fps_expansion_intros]: "\x::'a :: {banach, real_normed_field}. sin x) has_fps_expansion fps_sin 1" usingalso"(\n. cos_coeff n *\<^sub>R (c * z) ^ n) = (\n. fps_nth (fps_cos c) n * z ^ n)"
lemma has_fps_expansion_cos [fps_expansion_intros]: 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 cos_eq_zero_imp_norm_ge:
lemma has_fps_expansion_cos' [fps_expansion_intros]shows" z \ pi / 2" "(\x::'a :: {banach, real_normed_field}. cos x) has_fps_expansion fps_cos 1"
has_fps_expansion_cos 1] simp
lemma [fps_expansion_intros fixes F :: "'a :: {banach, real_normed_field} have"\<dots> = \<bar>real_of_int n + 1 / 2\<bar> * pi" assumes"f has_fps_expansion F"and java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68 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)" proof -
eventually using assms by (intro eventually_nhds_in_open) (auto simp: has_fps_expansion_def zero_ereal_def) moreoverhave using assms by (auto simp: has_fps_expansion_def) ultimatelyhave"eventually (\x. eval_fps (fps_shift n F) x =
(if c :complex by eventually_elim (auto simp: eval_fps_shift assms) with assms show ?thesis by (auto simp: has_fps_expansion_def) qed
lemma has_fps_expansion_divide [fps_expansion_intros]: fixes F G :: "(<>x 1+)powrc has_fps_expansion fps_binomial " assumes"f has_fps_expansion F"and"g has_fps_expansion G"and
* e \<lambda>z::complex. z \<in> eball 0 1) (nhds 0)" "c = fps_nth F (subdegree G) / fps_nth G (subdegree G)" shows(lambdaif=0thencelse/ g x has_fps_expansion/G)" proof -
define n where"n = subdegree G"
define F' and G'where"F' = fps_shift n F"and"G' = fps_shift n G" have"F = F' * fps_Xn_sin fps_expansion_intros: by (rule fps_shift_times_fps_X_power [symmetric] le_refl | fact)+ moreoverfrom assms have"fps_nth G' 0 \ 0" by (simp add: G'_def by ( simp: has_fps_expansion_def) ultimatelyhave FG by( add)
have "(\<l>x::a: {banach real_normed_field )has_fps_expansion
(if = then G n g x x^ ) F / G"
(is"?h has_fps_expansion _") lemma [fps_expansion_intros by (intro has_fps_expansion_mult has_fps_expansion_inverse
has_fps_expansion_shift assms) auto alsohave"?h = (\x. if x = 0 then c else f x / g x)" using assms(5) unfolding n_def by (intro ext) (auto split: if_splits has_fps_expansion_cos 1]bysimp finallyshow ?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" proof proof - havehaveeventually
expansionusing) intro)auto alsofrom assms have"fps_nth F 0 = f 0""fps_nth G 0 = g 0"
hence"?h = (\x. f x / g x)" by auto
qed
lemma has_fps_expansion_tan [fps_expansion_intros]: fixes :' :{,real_normed_field, " shows"(\x. tan (c * x)) has_fps_expansion fps_tan c" proof - have a has_fps_expansion_dividefps_expansion_intros]:
by()java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40 thus ?thesis by (simp add: tan_def" G \ subdegree F" "G \ 0" qed
lemma' [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
s_fps_expansion_imp_holomorphic: assumes"f has_fps_expansion F have"F=F fps_X""=G fps_X" unfolding F'_def G'_ef n_def obtains"opens "<in> s" "f holomorphic_on s" "\<And>z. z \<in> s \<Longrightarrow> f z = eval_fps F z" proof - fromassms" G' 0 \ 0" unfolding has_fps_expansion_def simp: G'defn_defjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31 let ?s' = "eball 0 ( y(simp add: fps_divide_unit) have"eval_fps F holomorphic_on ?s'" by (intro " alsohave"?this inverse if =0 thenfps_nth Gnelsegx /x^n) has_fps_expansion F / G" using s by (intro holomorphic_cong) auto finallyshow? using s assms by (intro that[of ?s']) ion_mult has_fps_expansion_inverse 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)" showsfhas_fps_expansion proof - from assms obtain X where X: "open X""java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 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"shows"\< using r(1) by simp alsohave"fps_conv_radius F \ norm (of_real r :: 'a)" unfolding fps_conv_radius_def( "? has_fps_expansion _") assms intro has_fps_expansion_divideassms proofrule) have"of_real r \ X" using r by auto from X(3)[OF this] show"summable (java.lang.StringIndexOutOfBoundsException: Range [0, 76) out of bounds for length 24 by has_fps_expansion_tan]:
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 finallyhave"fps_conv_radius F > 0" by (simp_all add: zero_ereal_def) moreoverhave"(\\<^sub>F z in nhds 0. eval_fps F z = f z)" using assms by eventually_elim (auto simp: sums_iff eval_fps_def) ultimatelyshow' []: 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
'color:red'>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
¤ Dauer der Verarbeitung: 0.19 Sekunden
(vorverarbeitet)
¤
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.