Documentation

TauCeti.RingTheory.PowerSeries.EvalAt

Evaluation of power series as infinite sums #

For a power series f = ∑ aₙ Xⁿ over a commutative ring R and an element b of an R-algebra A with a topology, PowerSeries.evalAt f b is the infinite sum ∑ₙ aₙ • bⁿ, with the junk value 0 when the sum does not converge. The algebra A need not be commutative: the scalars aₙ act centrally, so the values of f at b commute with b.

Unlike Mathlib's PowerSeries.aeval, which evaluates every power series at a topologically nilpotent point of a complete linearly topologized algebra, evalAt makes sense at every point; it is meaningful for series whose coefficients decay fast enough, such as entire series over a normed ring (TauCeti.RingTheory.PowerSeries.Entire.Eval). This file first records the values of evalAt that need no convergence hypothesis. In an ultrametric normed algebra, ‖f(b)‖ is bounded by the Gauss norm of f at every radius r ≥ ‖b‖ at which that Gauss norm is defined. In any normed algebra, it is bounded by (‖1‖ + 1) * (1 - q)⁻¹ times that Gauss norm once ‖b‖ ≤ q * r with 0 ≤ q < 1. In a complete normed algebra, evaluation is additive and multiplicative on series whose terms at the point are absolutely summable, such as entire series or series on an open disc containing the point.

In a complete ultrametric normed algebra, a series restricted at a radius c can be evaluated at every b with ‖b‖ ≤ c: the terms aₙ • bⁿ tend to zero, so they are summable, and the Cauchy product formula makes evaluation at b a ring homomorphism on the restricted series. The algebra need not be commutative, so this evaluates restricted series at bounded operators as well as at points of complete normed field extensions.

A power series F = ∑ Fₙ Xⁿ whose coefficients lie in a ring A acted on by R, such as a series of operators, is instead evaluated at a scalar a : R: PowerSeries.evalScalar F a is the infinite sum ∑ₙ aⁿ • Fₙ.

Over a field 𝕜, the same sum is Mathlib's FormalMultilinearSeries.ofScalarsSum (PowerSeries.evalAt_eq_ofScalarsSum); that construction needs a field of scalars, while the coefficient rings here may have nilpotents.

Main definitions #

Main results #

noncomputable def PowerSeries.evalAt {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [TopologicalSpace A] (f : PowerSeries R) (b : A) :
A

The value f(b) = ∑ₙ aₙ • bⁿ of the power series f = ∑ aₙ Xⁿ at an element b of a topological R-algebra, defined as an infinite sum. It takes the junk value 0 when the sum does not converge; for entire f over a normed ring it converges in every complete normed algebra (PowerSeries.IsEntire.hasSum_evalAt).

Instances For
    theorem PowerSeries.evalAt_def {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [TopologicalSpace A] (f : PowerSeries R) (b : A) :
    f.evalAt b = ∑' (n : ℕ), (coeff n) f • b ^ n

    The value f(b) is the infinite sum ∑ₙ aₙ • bⁿ.

    @[simp]
    theorem PowerSeries.evalAt_coe {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [TopologicalSpace A] (p : Polynomial R) (b : A) :
    (↑p).evalAt b = (Polynomial.aeval b) p

    On polynomials, evaluation is Polynomial.aeval.

    theorem PowerSeries.evalAt_hasseDeriv_coe {R : Type u_1} [CommSemiring R] [TopologicalSpace R] {a : R} (p : Polynomial R) (j : ℕ) :
    ((hasseDeriv j) ↑p).evalAt a = ((Polynomial.taylor a) p).coeff j

    The value at a of a Hasse derivative of a polynomial is a coefficient of its Taylor expansion at a.

    @[simp]
    theorem PowerSeries.evalAt_zero {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [TopologicalSpace A] (b : A) :
    evalAt 0 b = 0

    The zero series evaluates to zero.

    @[simp]
    theorem PowerSeries.evalAt_C {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [TopologicalSpace A] (a : R) (b : A) :
    (C a).evalAt b = (algebraMap R A) a

    A constant series evaluates to its constant, mapped into the algebra.

    @[simp]
    theorem PowerSeries.evalAt_one {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [TopologicalSpace A] (b : A) :
    evalAt 1 b = 1

    The series 1 evaluates to 1.

    @[simp]
    theorem PowerSeries.evalAt_X {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [TopologicalSpace A] (b : A) :
    X.evalAt b = b

    The variable X evaluates to the point of evaluation.

    @[simp]
    theorem PowerSeries.evalAt_monomial {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [TopologicalSpace A] (n : ℕ) (a : R) (b : A) :
    ((monomial n) a).evalAt b = a • b ^ n

    The monomial a Xⁿ evaluates to a • bⁿ.

    @[simp]
    theorem PowerSeries.evalAt_at_zero {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [TopologicalSpace A] (f : PowerSeries R) :

    At the point 0, a power series evaluates to its constant coefficient.

    @[simp]
    theorem PowerSeries.evalAt_map_algebraMap {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [TopologicalSpace A] {S : Type u_3} [CommSemiring S] [Algebra R S] [Algebra S A] [IsScalarTower R S A] (f : PowerSeries R) (b : A) :
    ((map (algebraMap R S)) f).evalAt b = f.evalAt b

    Evaluation is compatible with extension of scalars: mapping the coefficients along R → S does not change the value at a point of an S-algebra.

    @[simp]
    theorem PowerSeries.evalAt_rescale {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [TopologicalSpace A] (f : PowerSeries R) (a : R) (b : A) :
    ((rescale a) f).evalAt b = f.evalAt (a • b)

    Rescaling the variable by a evaluates at the rescaled point: f(a X) at b is f(a • b).

    theorem PowerSeries.evalAt_eq_ofScalarsSum {𝕜 : Type u_3} {E : Type u_4} [Field 𝕜] [Ring E] [Algebra 𝕜 E] [TopologicalSpace E] [IsTopologicalRing E] (f : PowerSeries 𝕜) (x : E) :

    Over a field, evalAt is the sum FormalMultilinearSeries.ofScalarsSum of the scalar series with the same coefficients.

    theorem PowerSeries.commute_evalAt {R : Type u_1} {A : Type u_2} [CommSemiring R] [Semiring A] [Algebra R A] [TopologicalSpace A] [IsTopologicalSemiring A] [T2Space A] (f : PowerSeries R) (b : A) :
    Commute b (f.evalAt b)

    The values of a series at b commute with b.

    @[simp]
    theorem PowerSeries.evalAt_neg {R : Type u_1} {A : Type u_2} [CommRing R] [Ring A] [Algebra R A] [TopologicalSpace A] [IsTopologicalAddGroup A] [T2Space A] (f : PowerSeries R) (b : A) :
    (-f).evalAt b = -f.evalAt b

    Evaluation commutes with negation.

    @[simp]
    theorem PowerSeries.evalAt_X_sub_C {R : Type u_1} {A : Type u_2} [CommRing R] [Ring A] [Algebra R A] [TopologicalSpace A] (a : R) (b : A) :
    (X - C a).evalAt b = b - (algebraMap R A) a

    The value of X - a at b is b - a.

    @[simp]
    theorem PowerSeries.evalAt_hasseDeriv_X_sub_C_pow {R : Type u_1} [CommRing R] [TopologicalSpace R] (a : R) (i m : ℕ) :
    ((hasseDeriv i) ((X - C a) ^ m)).evalAt a = if i = m then 1 else 0

    The Hasse derivative of order i of (X - a) ^ m is 1 at a if i = m, and 0 otherwise.

    noncomputable def PowerSeries.evalScalar {R : Type u_1} {A : Type u_2} [Monoid R] [Semiring A] [SMul R A] [TopologicalSpace A] (F : PowerSeries A) (a : R) :
    A

    The value F(a) = ∑ₙ aⁿ • Fₙ at a scalar a : R of a power series F = ∑ Fₙ Xⁿ whose coefficients lie in a topological semiring A acted on by R, defined as an infinite sum. Unlike PowerSeries.evalAt, the coefficients need not be scalars, so this evaluates series of operators at scalars. It takes the junk value 0 when the sum does not converge; for entire F over a complete normed ring it converges at every a (PowerSeries.IsEntire.hasSum_evalScalar).

    Instances For
      theorem PowerSeries.evalScalar_def {R : Type u_1} {A : Type u_2} [Monoid R] [Semiring A] [SMul R A] [TopologicalSpace A] (F : PowerSeries A) (a : R) :
      F.evalScalar a = ∑' (n : ℕ), a ^ n • (coeff n) F

      The value F(a) at a scalar is the infinite sum ∑ₙ aⁿ • Fₙ.

      theorem PowerSeries.commute_evalScalar {R : Type u_1} {A : Type u_2} [Monoid R] [Semiring A] [SMul R A] [TopologicalSpace A] [IsTopologicalSemiring A] [T2Space A] [SMulCommClass R A A] [IsScalarTower R A A] {b : A} {F : PowerSeries A} (h : ∀ (n : ℕ), Commute b ((coeff n) F)) (a : R) :

      An element commuting with every coefficient of a series commutes with its value at a scalar.

      @[simp]
      theorem PowerSeries.evalScalar_zero {R : Type u_1} {A : Type u_2} [Monoid R] [Semiring A] [DistribMulAction R A] [TopologicalSpace A] (a : R) :

      The zero series evaluates to zero at every scalar.

      @[simp]
      theorem PowerSeries.evalScalar_monomial {R : Type u_1} {A : Type u_2} [Monoid R] [Semiring A] [DistribMulAction R A] [TopologicalSpace A] (n : ℕ) (c : A) (a : R) :
      ((monomial n) c).evalScalar a = a ^ n • c

      The monomial c Xⁿ evaluates to aⁿ • c at the scalar a.

      @[simp]
      theorem PowerSeries.evalScalar_C {R : Type u_1} {A : Type u_2} [Monoid R] [Semiring A] [DistribMulAction R A] [TopologicalSpace A] (c : A) (a : R) :
      (C c).evalScalar a = c

      A constant series evaluates to its constant at every scalar.

      @[simp]
      theorem PowerSeries.evalScalar_X {R : Type u_1} {A : Type u_2} [Monoid R] [Semiring A] [DistribMulAction R A] [TopologicalSpace A] (a : R) :

      The variable X evaluates to a • 1 at the scalar a.

      @[simp]
      theorem PowerSeries.evalScalar_one {R : Type u_1} {A : Type u_2} [Monoid R] [Semiring A] [DistribMulAction R A] [TopologicalSpace A] (a : R) :

      The series 1 evaluates to 1 at every scalar.

      theorem PowerSeries.evalScalar_add {R : Type u_1} {A : Type u_2} [Monoid R] [Semiring A] [DistribMulAction R A] [TopologicalSpace A] [ContinuousAdd A] [T2Space A] {F G : PowerSeries A} {a : R} (hF : Summable fun (n : ℕ) => a ^ n • (coeff n) F) (hG : Summable fun (n : ℕ) => a ^ n • (coeff n) G) :

      Evaluation at a scalar is additive on series whose defining sums converge there.

      @[simp]

      At the scalar 0, a power series evaluates to its constant coefficient.

      @[simp]
      theorem PowerSeries.evalScalar_neg {R : Type u_1} {A : Type u_2} [Monoid R] [Ring A] [DistribMulAction R A] [TopologicalSpace A] [IsTopologicalAddGroup A] [T2Space A] (F : PowerSeries A) (a : R) :

      Evaluation at a scalar commutes with negation.

      theorem PowerSeries.norm_evalAt_le_mul_gaussNorm_of_norm_algebraMap_le {R : Type u_1} {A : Type u_2} [NormedCommRing R] [NormedRing A] [Algebra R A] {f : PowerSeries R} [IsUltrametricDist A] {r C : ℝ} (hf : HasGaussNorm norm r f) (hφ : ∀ (a : R), ‖(algebraMap R A) a‖ ≤ C * ‖a‖) {b : A} (hb : ‖b‖ ≤ r) :

      A coefficient map bounded by C gives the same bound for evaluation in an ultrametric algebra, at every radius where the Gauss norm is defined and bounds the argument. Neither a norm-one identity nor completeness nor a bounded scalar action is required. For negative C the coefficient bound forces the series to be zero.

      theorem PowerSeries.norm_evalAt_le_gaussNorm_of_norm_algebraMap_le {R : Type u_1} {A : Type u_2} [NormedCommRing R] [NormedRing A] [Algebra R A] {f : PowerSeries R} [IsUltrametricDist A] {r : ℝ} (hf : HasGaussNorm norm r f) (hφ : ∀ (a : R), ‖(algebraMap R A) a‖ ≤ ‖a‖) {b : A} (hb : ‖b‖ ≤ r) :

      Contractive coefficient maps give a contractive evaluation estimate without requiring that the target algebra have norm-one identity. The target may be noncommutative.

      theorem PowerSeries.norm_evalAt_le_gaussNorm {R : Type u_1} {A : Type u_2} [NormedCommRing R] [NormedRing A] [Algebra R A] [IsBoundedSMul R A] {f : PowerSeries R} [IsUltrametricDist A] [NormOneClass A] {r : ℝ} (hf : HasGaussNorm norm r f) {b : A} (hb : ‖b‖ ≤ r) :

      In an ultrametric normed algebra with ‖1‖ = 1, the value of a series at a point b with ‖b‖ ≤ r is bounded by the Gauss norm of the series at the radius r, whenever the latter is defined. This needs no convergence: the junk value 0 satisfies the bound too.

      theorem PowerSeries.norm_evalAt_le_mul_gaussNorm {R : Type u_1} {A : Type u_2} [NormedCommRing R] [NormedRing A] [Algebra R A] [IsBoundedSMul R A] {f : PowerSeries R} {r q : ℝ} (hf : HasGaussNorm norm r f) (hq₀ : 0 ≤ q) (hq₁ : q < 1) {b : A} (hb : ‖b‖ ≤ q * r) :

      In any normed algebra, the value of a series at a point b with ‖b‖ ≤ q * r, where 0 ≤ q < 1, is bounded by (‖1‖ + 1) * (1 - q)⁻¹ times the Gauss norm of the series at the radius r, whenever the latter is defined: the terms of the sum are dominated by a geometric series of ratio q. This needs neither an ultrametric norm nor convergence: the junk value 0 satisfies the bound too.

      theorem PowerSeries.norm_evalScalar_le {R : Type u_3} {A : Type u_4} [SeminormedRing R] [NormedRing A] [Module R A] [IsBoundedSMul R A] [IsUltrametricDist A] {F : PowerSeries A} {a : R} {c : ℝ} (h : ∀ (n : ℕ), ‖a‖ ^ n * ‖(coeff n) F‖ ≤ c) :

      In an ultrametric normed ring, if c bounds ‖a‖ ^ n * ‖Fₙ‖ for every n, then it bounds the value at the scalar a of the series F = ∑ Fₙ Xⁿ. This needs no convergence: the junk value 0 satisfies the bound too.

      theorem PowerSeries.summable_norm_smul_pow_of_summable_norm_mul_pow {R : Type u_1} {A : Type u_2} [NormedRing R] [SeminormedRing A] [SMulZeroClass R A] [IsBoundedSMul R A] {f : PowerSeries R} {b : A} (h : Summable fun (n : ℕ) => ‖(coeff n) f‖ * ‖b‖ ^ n) :
      Summable fun (n : ℕ) => ‖(coeff n) f • b ^ n‖

      If the weighted coefficient norms ‖aₙ‖ ‖b‖ⁿ of a series f = ∑ aₙ Xⁿ are summable, then so are the norms of its terms aₙ • bⁿ at b, in any seminormed ring with a bounded scalar action.

      theorem PowerSeries.hasSum_evalAt_of_summable_norm {R : Type u_1} {A : Type u_2} [CommSemiring R] [SeminormedRing A] [Algebra R A] [CompleteSpace A] {f : PowerSeries R} {b : A} (hf : Summable fun (n : ℕ) => ‖(coeff n) f • b ^ n‖) :
      HasSum (fun (n : ℕ) => (coeff n) f • b ^ n) (f.evalAt b)

      In a complete seminormed algebra, if the terms aₙ • bⁿ of a series f = ∑ aₙ Xⁿ are absolutely summable, then they sum to f(b).

      theorem PowerSeries.evalAt_add_of_summable_norm {R : Type u_1} {A : Type u_2} [CommSemiring R] [NormedRing A] [Algebra R A] [CompleteSpace A] {f g : PowerSeries R} {b : A} (hf : Summable fun (n : ℕ) => ‖(coeff n) f • b ^ n‖) (hg : Summable fun (n : ℕ) => ‖(coeff n) g • b ^ n‖) :
      (f + g).evalAt b = f.evalAt b + g.evalAt b

      Evaluation at b is additive on series whose terms at b are absolutely summable.

      theorem PowerSeries.evalAt_sum_of_summable_norm {R : Type u_1} {A : Type u_2} [CommSemiring R] [NormedRing A] [Algebra R A] [CompleteSpace A] {b : A} {ι : Type u_3} (s : Finset ι) {f : ι → PowerSeries R} (hf : ∀ i ∈ s, Summable fun (n : ℕ) => ‖(coeff n) (f i) • b ^ n‖) :
      (∑ i ∈ s, f i).evalAt b = ∑ i ∈ s, (f i).evalAt b

      Evaluation commutes with finite sums of series whose terms at b are absolutely summable.

      theorem PowerSeries.evalAt_mul_of_summable_norm {R : Type u_1} {A : Type u_2} [CommSemiring R] [NormedRing A] [Algebra R A] [CompleteSpace A] {f g : PowerSeries R} {b : A} (hf : Summable fun (n : ℕ) => ‖(coeff n) f • b ^ n‖) (hg : Summable fun (n : ℕ) => ‖(coeff n) g • b ^ n‖) :
      (f * g).evalAt b = f.evalAt b * g.evalAt b

      Evaluation at b is multiplicative on series whose terms at b are absolutely summable: this is the Cauchy product formula for absolutely convergent series.

      theorem PowerSeries.IsRestricted.tendsto_smul_pow {R : Type u_1} {A : Type u_2} [NormedCommRing R] [NormedRing A] [Algebra R A] [IsBoundedSMul R A] {c : ℝ} {f : PowerSeries R} {b : A} (hf : IsRestricted c f) (hb : ‖b‖ ≤ c) :
      Filter.Tendsto (fun (n : ℕ) => (coeff n) f • b ^ n) Filter.cofinite (nhds 0)

      At a point b with ‖b‖ ≤ c, the terms aₙ • bⁿ of a series restricted at the radius c tend to zero.

      theorem PowerSeries.IsRestricted.hasSum_evalAt {R : Type u_1} {A : Type u_2} [NormedCommRing R] [NormedRing A] [Algebra R A] [IsBoundedSMul R A] {c : ℝ} {f : PowerSeries R} {b : A} [IsUltrametricDist A] [CompleteSpace A] (hf : IsRestricted c f) (hb : ‖b‖ ≤ c) :
      HasSum (fun (n : ℕ) => (coeff n) f • b ^ n) (f.evalAt b)

      Evaluation of restricted series. In a complete ultrametric normed algebra, for a series f = ∑ aₙ Xⁿ restricted at the radius c and a point b with ‖b‖ ≤ c, the series ∑ aₙ • bⁿ converges to f(b).

      theorem PowerSeries.IsRestricted.evalAt_add {R : Type u_1} {A : Type u_2} [NormedCommRing R] [NormedRing A] [Algebra R A] [IsBoundedSMul R A] {c : ℝ} {f g : PowerSeries R} {b : A} [IsUltrametricDist A] [CompleteSpace A] (hf : IsRestricted c f) (hg : IsRestricted c g) (hb : ‖b‖ ≤ c) :
      (f + g).evalAt b = f.evalAt b + g.evalAt b

      Evaluation at a point of norm at most c is additive on series restricted at c.

      theorem PowerSeries.IsRestricted.evalAt_smul {R : Type u_1} {A : Type u_2} [NormedCommRing R] [NormedRing A] [Algebra R A] [IsBoundedSMul R A] {c : ℝ} {f : PowerSeries R} {b : A} [IsUltrametricDist A] [CompleteSpace A] (hf : IsRestricted c f) (a : R) (hb : ‖b‖ ≤ c) :
      (a • f).evalAt b = a • f.evalAt b

      Evaluation at a point of norm at most c commutes with scalar multiplication of a series restricted at c.

      theorem PowerSeries.IsRestricted.evalAt_sum {R : Type u_1} {A : Type u_2} [NormedCommRing R] [NormedRing A] [Algebra R A] [IsBoundedSMul R A] {c : ℝ} {b : A} [IsUltrametricDist A] [CompleteSpace A] {ι : Type u_3} (s : Finset ι) {f : ι → PowerSeries R} (hf : ∀ i ∈ s, IsRestricted c (f i)) (hb : ‖b‖ ≤ c) :
      (∑ i ∈ s, f i).evalAt b = ∑ i ∈ s, (f i).evalAt b

      Evaluation at a point of norm at most c commutes with finite sums of series restricted at c.

      theorem PowerSeries.IsRestricted.evalAt_mul {R : Type u_1} {A : Type u_2} [NormedCommRing R] [NormedRing A] [Algebra R A] [IsBoundedSMul R A] {c : ℝ} {f g : PowerSeries R} {b : A} [IsUltrametricDist A] [CompleteSpace A] (hf : IsRestricted c f) (hg : IsRestricted c g) (hb : ‖b‖ ≤ c) :
      (f * g).evalAt b = f.evalAt b * g.evalAt b

      Evaluation at a point of norm at most c is multiplicative on series restricted at c: this is the Cauchy product formula, which holds in a complete ultrametric ring as soon as the terms of both series tend to zero.

      noncomputable def PowerSeries.IsRestricted.evalAtHom (R : Type u_1) {A : Type u_2} [NormedCommRing R] [NormedRing A] [Algebra R A] [IsBoundedSMul R A] {c : ℝ} {b : A} [IsUltrametricDist A] [CompleteSpace A] [IsUltrametricDist R] (hb : ‖b‖ ≤ c) :
      ↥(subring c) →+* A

      Evaluation of restricted series at b as a ring homomorphism from the series restricted at c to a complete ultrametric normed algebra, for a point b with ‖b‖ ≤ c.

      Instances For
        @[simp]
        theorem PowerSeries.IsRestricted.evalAtHom_apply {R : Type u_1} {A : Type u_2} [NormedCommRing R] [NormedRing A] [Algebra R A] [IsBoundedSMul R A] {c : ℝ} {b : A} [IsUltrametricDist A] [CompleteSpace A] [IsUltrametricDist R] (hb : ‖b‖ ≤ c) (f : ↥(subring c)) :
        (evalAtHom R hb) f = (↑f).evalAt b

        The evaluation homomorphism at b sends a restricted series f to f(b).

        theorem PowerSeries.evalAt_eq_zero_iff_of_isUnit_X_pow_mul_finprod_eq {R : Type u_1} {A : Type u_2} {ι : Type u_3} [NormedCommRing R] [IsUltrametricDist R] [NormedCommRing A] [IsDomain A] [Algebra R A] [IsBoundedSMul R A] [IsUltrametricDist A] [CompleteSpace A] {f : PowerSeries R} {r : ℝ} {u : ↥(IsRestricted.subring r)} (hu : IsUnit u) {a : ℕ} {g : ι → Polynomial R} (hfin : (Function.mulSupport g).Finite) (hmul : ↑u * ↑(Polynomial.X ^ a * ∏ᶠ (m : ι), g m) = f) {x : A} (hx : ‖x‖ ≤ r) :
        f.evalAt x = 0 ↔ x = 0 ∧ 0 < a ∨ ∃ m ∈ Function.mulSupport g, (Polynomial.aeval x) (g m) = 0

        Suppose f = u * (X ^ a * ∏ᶠ m, g m) on the closed disc of radius r, where u is a unit of the ring of series restricted at r and g is a finitely supported family of polynomials. Then in any complete ultrametric normed domain A over R, for every x : A with ‖x‖ ≤ r, f.evalAt x = 0 iff (x = 0 ∧ 0 < a) or x is a root of some factor g m (m ∈ Function.mulSupport g).