Documentation

Mathlib.RingTheory.Polynomial.GaussNorm

Gauss norm for polynomials #

This file defines the Gauss norm for polynomials. Given a polynomial p in R[X], a function v : R → ℝ and a real number c, the Gauss norm is defined as the supremum of the set of all values of v (p.coeff i) * c ^ i for all i in the support of p.

This is mostly useful when v is an absolute value on R and c is set to be 1, in which case the Gauss norm corresponds to the maximum of the absolute values of the coefficients of p. When R is a subring of and v is the standard absolute value, this is sometimes called the "height" of p.

In the file Mathlib/RingTheory/PowerSeries/GaussNorm.lean, the Gauss norm is defined for power series. This is a generalization of the Gauss norm defined in this file in case v is a nonnegative function with v 0 = 0 and c ≥ 0.

Main Definitions and Results #

def Polynomial.gaussNorm {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) (c : ) (p : Polynomial R) :

Given a polynomial p in R[X], a function v : R → ℝ and a real number c, the Gauss norm is defined as the supremum of the set of all values of v (p.coeff i) * c ^ i for all i in the support of p.

Equations
Instances For
    @[simp]
    theorem Polynomial.gaussNorm_zero {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) (c : ) :
    gaussNorm v c 0 = 0
    theorem Polynomial.exists_eq_gaussNorm {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) (c : ) (p : Polynomial R) [ZeroHomClass F R ] :
    ∃ (i : ), gaussNorm v c p = v (p.coeff i) * c ^ i
    @[simp]
    theorem Polynomial.gaussNorm_C {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) (c : ) [ZeroHomClass F R ] (r : R) :
    gaussNorm v c (C r) = v r
    @[simp]
    theorem Polynomial.gaussNorm_monomial {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) (c : ) [ZeroHomClass F R ] (n : ) (r : R) :
    gaussNorm v c ((monomial n) r) = v r * c ^ n
    @[simp]
    theorem Polynomial.gaussNorm_coe_powerSeries {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) {c : } (p : Polynomial R) [ZeroHomClass F R ] [NonnegHomClass F R ] (hc : 0 c) :

    If v is a nonnegative function with v 0 = 0 and c is nonnegative, the Gauss norm of a polynomial is equal to its Gauss norm as a power series.

    @[simp]
    theorem Polynomial.gaussNorm_eq_zero_iff {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) {c : } (p : Polynomial R) [ZeroHomClass F R ] [NonnegHomClass F R ] (h_eq_zero : ∀ (x : R), v x = 0x = 0) (hc : 0 < c) :
    gaussNorm v c p = 0 p = 0

    If v x = 0 → x = 0 for all x : R and v is nonnegative, then the Gauss norm is zero if and only if the polynomial is zero.

    theorem Polynomial.gaussNorm_nonneg {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) {c : } (p : Polynomial R) [NonnegHomClass F R ] (hc : 0 c) :
    0 gaussNorm v c p

    If v is a nonnegative function, then the Gauss norm is nonnegative.

    theorem Polynomial.le_gaussNorm {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) {c : } (p : Polynomial R) [ZeroHomClass F R ] [NonnegHomClass F R ] (hc : 0 c) (i : ) :
    v (p.coeff i) * c ^ i gaussNorm v c p
    @[simp]
    theorem Polynomial.gaussNorm_zero_right {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) (p : Polynomial R) [ZeroHomClass F R ] [NonnegHomClass F R ] :
    gaussNorm v 0 p = v (p.coeff 0)
    theorem Polynomial.exists_min_eq_gaussNorm {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) {c : } [ZeroHomClass F R ] [NonnegHomClass F R ] (p : Polynomial R) (hc : 0 c) :
    ∃ (i : ), gaussNorm v c p = v (p.coeff i) * c ^ i j < i, v (p.coeff j) * c ^ j < gaussNorm v c p

    If v is a nonnegative function with v 0 = 0 and c is nonnegative, there exists a minimal index i such that the Gauss norm of p at c is attained at i.

    theorem Polynomial.isNonarchimedean_gaussNorm {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) [ZeroHomClass F R ] [NonnegHomClass F R ] (hna : IsNonarchimedean v) {c : } (hc : 0 c) :

    If v is a nonnegative nonarchimedean function with v 0 = 0 and c is nonnegative, the Gauss norm is nonarchimedean.

    theorem Polynomial.gaussNorm_mul_le {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) {c : } [ZeroHomClass F R ] [NonnegHomClass F R ] [MulHomClass F R ] (hna : IsNonarchimedean v) (p q : Polynomial R) (hc : 0 c) :
    gaussNorm v c (p * q) gaussNorm v c p * gaussNorm v c q

    If v is a nonnegative nonarchimedean multiplicative function with v 0 = 0 and c is nonnegative, then the Gauss norm is submultiplicative.

    theorem Polynomial.gaussNorm_mul {c : } {R : Type u_3} [Ring R] {v : AbsoluteValue R } (hna : IsNonarchimedean v) (hc : 0 < c) (p q : Polynomial R) :
    gaussNorm v c (p * q) = gaussNorm v c p * gaussNorm v c q

    If v is a nonarchimedean absolute value, then the Gauss norm is multiplicative.

    theorem Polynomial.gaussNorm_isAbsoluteValue {c : } {R : Type u_3} [Ring R] {v : AbsoluteValue R } (hna : IsNonarchimedean v) (hc : 0 < c) :

    If v is a nonarchimedean absolute value, then the Gauss norm is an absolute value.

    @[simp]
    theorem PowerSeries.gaussNorm_C {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) {c : } (r : R) [ZeroHomClass F R ] [NonnegHomClass F R ] (hc : 0 c) :
    gaussNorm v c (C r) = v r
    @[simp]
    theorem PowerSeries.gaussNorm_monomial {R : Type u_1} {F : Type u_2} [Semiring R] [FunLike F R ] (v : F) {c : } (r : R) [ZeroHomClass F R ] [NonnegHomClass F R ] (hc : 0 c) (n : ) :
    gaussNorm v c ((monomial n) r) = v r * c ^ n