Documentation

Mathlib.Analysis.Analytic.ChangeOrigin

Changing origin in a power series #

If a function is analytic in a disk D(x, R), then it is analytic in any disk contained in that one. Indeed, one can write $$ f (x + y + z) = \sum_{n} p_n (y + z)^n = \sum_{n, k} \binom{n}{k} p_n y^{n-k} z^k = \sum_{k} \Bigl(\sum_{n} \binom{n}{k} p_n y^{n-k}\Bigr) z^k. $$ The corresponding power series has thus a k-th coefficient equal to $\sum_{n} \binom{n}{k} p_n y^{n-k}$. In the general case where pₙ is a multilinear map, this has to be interpreted suitably: instead of having a binomial coefficient, one should sum over all possible subsets s of Fin n of cardinality k, and attribute z to the indices in s and y to the indices outside of s.

In this file, we implement this. The new power series is called p.changeOrigin y. Then, we check its convergence and the fact that its sum coincides with the original sum. The outcome of this discussion is that the set of points where a function is analytic is open. All these arguments require the target space to be complete, as otherwise the series might not converge.

Main results #

In a complete space, if a function admits a power series in a ball, then it is analytic at any point y of this ball, and the power series there can be expressed in terms of the initial power series p as p.changeOrigin y. See HasFPowerSeriesOnBall.changeOrigin. It follows in particular that the set of points at which a given function is analytic is open, see isOpen_analyticAt.

def FormalMultilinearSeries.changeOriginSeriesTerm {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) (k l : ) (s : Finset (Fin (k + l))) (hs : s.card = l) :
ContinuousMultilinearMap 𝕜 (fun (i : Fin l) => E) (ContinuousMultilinearMap 𝕜 (fun (i : Fin k) => E) F)

A term of FormalMultilinearSeries.changeOriginSeries.

Given a formal multilinear series p and a point x in its ball of convergence, p.changeOrigin x is a formal multilinear series such that p.sum (x+y) = (p.changeOrigin x).sum y when this makes sense. Each term of p.changeOrigin x is itself an analytic function of x given by the series p.changeOriginSeries. Each term in changeOriginSeries is the sum of changeOriginSeriesTerm's over all s of cardinality l. The definition is such that p.changeOriginSeriesTerm k l s hs (fun _ ↦ x) (fun _ ↦ y) = p (k + l) (s.piecewise (fun _ ↦ x) (fun _ ↦ y))

Equations
Instances For
    theorem FormalMultilinearSeries.changeOriginSeriesTerm_apply {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) (k l : ) (s : Finset (Fin (k + l))) (hs : s.card = l) (x y : E) :
    (((p.changeOriginSeriesTerm k l s hs) fun (x_1 : Fin l) => x) fun (x : Fin k) => y) = (p (k + l)) (s.piecewise (fun (x_1 : Fin (k + l)) => x) fun (x : Fin (k + l)) => y)
    @[simp]
    theorem FormalMultilinearSeries.norm_changeOriginSeriesTerm {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) (k l : ) (s : Finset (Fin (k + l))) (hs : s.card = l) :
    p.changeOriginSeriesTerm k l s hs = p (k + l)
    @[simp]
    theorem FormalMultilinearSeries.nnnorm_changeOriginSeriesTerm {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) (k l : ) (s : Finset (Fin (k + l))) (hs : s.card = l) :
    p.changeOriginSeriesTerm k l s hs‖₊ = p (k + l)‖₊
    theorem FormalMultilinearSeries.nnnorm_changeOriginSeriesTerm_apply_le {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) (k l : ) (s : Finset (Fin (k + l))) (hs : s.card = l) (x y : E) :
    ((p.changeOriginSeriesTerm k l s hs) fun (x_1 : Fin l) => x) fun (x : Fin k) => y‖₊ p (k + l)‖₊ * x‖₊ ^ l * y‖₊ ^ k

    The power series for f.changeOrigin k.

    Given a formal multilinear series p and a point x in its ball of convergence, p.changeOrigin x is a formal multilinear series such that p.sum (x+y) = (p.changeOrigin x).sum y when this makes sense. Its k-th term is the sum of the series p.changeOriginSeries k.

    Equations
    • p.changeOriginSeries k l = s : { s : Finset (Fin (k + l)) // s.card = l }, p.changeOriginSeriesTerm k l s
    Instances For
      theorem FormalMultilinearSeries.nnnorm_changeOriginSeries_le_tsum {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) (k l : ) :
      p.changeOriginSeries k l‖₊ ∑' (x : { s : Finset (Fin (k + l)) // s.card = l }), p (k + l)‖₊
      theorem FormalMultilinearSeries.nnnorm_changeOriginSeries_apply_le_tsum {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) (k l : ) (x : E) :
      (p.changeOriginSeries k l) fun (x_1 : Fin l) => x‖₊ ∑' (x_1 : { s : Finset (Fin (k + l)) // s.card = l }), p (k + l)‖₊ * x‖₊ ^ l

      Changing the origin of a formal multilinear series p, so that p.sum (x+y) = (p.changeOrigin x).sum y when this makes sense.

      Equations
      • p.changeOrigin x k = (p.changeOriginSeries k).sum x
      Instances For
        def FormalMultilinearSeries.changeOriginIndexEquiv :
        (k : ) × (l : ) × { s : Finset (Fin (k + l)) // s.card = l } (n : ) × Finset (Fin n)

        An auxiliary equivalence useful in the proofs about FormalMultilinearSeries.changeOriginSeries: the set of triples (k, l, s), where s is a Finset (Fin (k + l)) of cardinality l is equivalent to the set of pairs (n, s), where s is a Finset (Fin n).

        The forward map sends (k, l, s) to (k + l, s) and the inverse map sends (n, s) to (n - Finset.card s, Finset.card s, s). The actual definition is less readable because of problems with non-definitional equalities.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem FormalMultilinearSeries.changeOriginIndexEquiv_apply_snd (s : (k : ) × (l : ) × { s : Finset (Fin (k + l)) // s.card = l }) :
          @[simp]
          theorem FormalMultilinearSeries.changeOriginIndexEquiv_apply_fst (s : (k : ) × (l : ) × { s : Finset (Fin (k + l)) // s.card = l }) :
          theorem FormalMultilinearSeries.changeOriginSeriesTerm_changeOriginIndexEquiv_symm {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) {x y : E} (n : ) (t : Finset (Fin n)) :
          let s := FormalMultilinearSeries.changeOriginIndexEquiv.symm n, t; (((p.changeOriginSeriesTerm s.fst s.snd.fst s.snd.snd ) fun (x_1 : Fin s.snd.fst) => x) fun (x : Fin s.fst) => y) = (p n) (t.piecewise (fun (x_1 : Fin n) => x) fun (x : Fin n) => y)
          theorem FormalMultilinearSeries.changeOriginSeries_summable_aux₁ {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) {r r' : NNReal} (hr : r + r' < p.radius) :
          Summable fun (s : (k : ) × (l : ) × { s : Finset (Fin (k + l)) // s.card = l }) => p (s.fst + s.snd.fst)‖₊ * r ^ s.snd.fst * r' ^ s.fst
          theorem FormalMultilinearSeries.changeOriginSeries_summable_aux₂ {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) {r : NNReal} (hr : r < p.radius) (k : ) :
          Summable fun (s : (l : ) × { s : Finset (Fin (k + l)) // s.card = l }) => p (k + s.fst)‖₊ * r ^ s.fst
          theorem FormalMultilinearSeries.changeOriginSeries_summable_aux₃ {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) {r : NNReal} (hr : r < p.radius) (k : ) :
          Summable fun (l : ) => p.changeOriginSeries k l‖₊ * r ^ l
          theorem FormalMultilinearSeries.le_changeOriginSeries_radius {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) (k : ) :
          p.radius (p.changeOriginSeries k).radius
          theorem FormalMultilinearSeries.nnnorm_changeOrigin_le {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) {x : E} (k : ) (h : x‖₊ < p.radius) :
          p.changeOrigin x k‖₊ ∑' (s : (l : ) × { s : Finset (Fin (k + l)) // s.card = l }), p (k + s.fst)‖₊ * x‖₊ ^ s.fst
          theorem FormalMultilinearSeries.changeOrigin_radius {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) {x : E} :
          p.radius - x‖₊ (p.changeOrigin x).radius

          The radius of convergence of p.changeOrigin x is at least p.radius - ‖x‖. In other words, p.changeOrigin x is well defined on the largest ball contained in the original ball of convergence.

          derivSeries p is a power series for fderiv 𝕜 f if p is a power series for f, see HasFPowerSeriesOnBall.fderiv.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem FormalMultilinearSeries.radius_le_radius_derivSeries {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) :
            p.radius p.derivSeries.radius
            theorem FormalMultilinearSeries.derivSeries_eq_zero {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] (p : FormalMultilinearSeries 𝕜 E F) {n : } (hp : p (n + 1) = 0) :
            p.derivSeries n = 0
            theorem FormalMultilinearSeries.hasFPowerSeriesOnBall_changeOrigin {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] (p : FormalMultilinearSeries 𝕜 E F) (k : ) (hr : 0 < p.radius) :
            HasFPowerSeriesOnBall (fun (x : E) => p.changeOrigin x k) (p.changeOriginSeries k) 0 p.radius
            theorem FormalMultilinearSeries.changeOrigin_eval {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] (p : FormalMultilinearSeries 𝕜 E F) {x y : E} (h : x‖₊ + y‖₊ < p.radius) :
            (p.changeOrigin x).sum y = p.sum (x + y)

            Summing the series p.changeOrigin x at a point y gives back p (x + y).

            theorem FormalMultilinearSeries.analyticAt_changeOrigin {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] (p : FormalMultilinearSeries 𝕜 E F) (rp : p.radius > 0) (n : ) :
            AnalyticAt 𝕜 (fun (x : E) => p.changeOrigin x n) 0

            Power series terms are analytic as we vary the origin

            theorem HasFPowerSeriesWithinOnBall.changeOrigin {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] {f : EF} {p : FormalMultilinearSeries 𝕜 E F} {s : Set E} {x y : E} {r : ENNReal} (hf : HasFPowerSeriesWithinOnBall f p s x r) (h : y‖₊ < r) (hy : x + y insert x s) :
            HasFPowerSeriesWithinOnBall f (p.changeOrigin y) s (x + y) (r - y‖₊)

            If a function admits a power series expansion p within a set s on a ball B (x, r), then it also admits a power series on any subball of this ball (even with a different center provided it belongs to s), given by p.changeOrigin.

            theorem HasFPowerSeriesOnBall.changeOrigin {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] {f : EF} {p : FormalMultilinearSeries 𝕜 E F} {x y : E} {r : ENNReal} (hf : HasFPowerSeriesOnBall f p x r) (h : y‖₊ < r) :
            HasFPowerSeriesOnBall f (p.changeOrigin y) (x + y) (r - y‖₊)

            If a function admits a power series expansion p on a ball B (x, r), then it also admits a power series on any subball of this ball (even with a different center), given by p.changeOrigin.

            theorem HasFPowerSeriesWithinOnBall.analyticWithinAt_of_mem {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] {f : EF} {p : FormalMultilinearSeries 𝕜 E F} {s : Set E} {x y : E} {r : ENNReal} (hf : HasFPowerSeriesWithinOnBall f p s x r) (h : y insert x s EMetric.ball x r) :
            AnalyticWithinAt 𝕜 f s y

            If a function admits a power series expansion p on an open ball B (x, r), then it is analytic at every point of this ball.

            theorem HasFPowerSeriesOnBall.analyticAt_of_mem {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] {f : EF} {p : FormalMultilinearSeries 𝕜 E F} {x y : E} {r : ENNReal} (hf : HasFPowerSeriesOnBall f p x r) (h : y EMetric.ball x r) :
            AnalyticAt 𝕜 f y

            If a function admits a power series expansion p on an open ball B (x, r), then it is analytic at every point of this ball.

            theorem HasFPowerSeriesWithinOnBall.analyticOn {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] {f : EF} {p : FormalMultilinearSeries 𝕜 E F} {s : Set E} {x : E} {r : ENNReal} (hf : HasFPowerSeriesWithinOnBall f p s x r) :
            theorem HasFPowerSeriesOnBall.analyticOnNhd {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] {f : EF} {p : FormalMultilinearSeries 𝕜 E F} {x : E} {r : ENNReal} (hf : HasFPowerSeriesOnBall f p x r) :
            @[deprecated HasFPowerSeriesOnBall.analyticOnNhd]
            theorem HasFPowerSeriesOnBall.analyticOn {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] {f : EF} {p : FormalMultilinearSeries 𝕜 E F} {x : E} {r : ENNReal} (hf : HasFPowerSeriesOnBall f p x r) :

            Alias of HasFPowerSeriesOnBall.analyticOnNhd.

            theorem isOpen_analyticAt (𝕜 : Type u_1) {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] (f : EF) :
            IsOpen {x : E | AnalyticAt 𝕜 f x}

            For any function f from a normed vector space to a Banach space, the set of points x such that f is analytic at x is open.

            theorem AnalyticAt.eventually_analyticAt {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] {f : EF} {x : E} (h : AnalyticAt 𝕜 f x) :
            ∀ᶠ (y : E) in nhds x, AnalyticAt 𝕜 f y
            theorem AnalyticAt.exists_mem_nhds_analyticOnNhd {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] {f : EF} {x : E} (h : AnalyticAt 𝕜 f x) :
            snhds x, AnalyticOnNhd 𝕜 f s
            @[deprecated AnalyticAt.exists_mem_nhds_analyticOnNhd]
            theorem AnalyticAt.exists_mem_nhds_analyticOn {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] {f : EF} {x : E} (h : AnalyticAt 𝕜 f x) :
            snhds x, AnalyticOnNhd 𝕜 f s

            Alias of AnalyticAt.exists_mem_nhds_analyticOnNhd.

            theorem AnalyticAt.exists_ball_analyticOnNhd {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] {f : EF} {x : E} (h : AnalyticAt 𝕜 f x) :
            ∃ (r : ), 0 < r AnalyticOnNhd 𝕜 f (Metric.ball x r)

            If we're analytic at a point, we're analytic in a nonempty ball

            @[deprecated AnalyticAt.exists_ball_analyticOnNhd]
            theorem AnalyticAt.exists_ball_analyticOn {𝕜 : Type u_1} {E : Type u_2} {F : Type u_3} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [NormedAddCommGroup F] [NormedSpace 𝕜 F] [CompleteSpace F] {f : EF} {x : E} (h : AnalyticAt 𝕜 f x) :
            ∃ (r : ), 0 < r AnalyticOnNhd 𝕜 f (Metric.ball x r)

            Alias of AnalyticAt.exists_ball_analyticOnNhd.


            If we're analytic at a point, we're analytic in a nonempty ball