Documentation

Mathlib.FieldTheory.RatFunc.AsPolynomial

Generalities on the polynomial structure of rational functions #

Main definitions #

Polynomial structure: C, X, eval #

noncomputable def RatFunc.C {K : Type u} [CommRing K] [IsDomain K] :

RatFunc.C a is the constant rational function a.

Instances For
    theorem RatFunc.smul_eq_C_mul {K : Type u} [CommRing K] [IsDomain K] (r : K) (x : RatFunc K) :
    r โ€ข x = C r * x
    theorem RatFunc.C_injective {K : Type u} [CommRing K] [IsDomain K] :
    Function.Injective โ‡‘C
    noncomputable def RatFunc.X {K : Type u} [CommRing K] [IsDomain K] :

    RatFunc.X is the polynomial variable (aka indeterminate).

    Instances For
      @[simp]
      theorem RatFunc.algebraMap_monomial {K : Type u} [CommRing K] [IsDomain K] (n : โ„•) (a : K) :
      (algebraMap (Polynomial K) (RatFunc K)) ((Polynomial.monomial n) a) = C a * X ^ n
      @[simp]
      theorem RatFunc.liftRingHom_C {K : Type u} [CommRing K] [IsDomain K] {L : Type u_1} [Field L] (ฯ† : Polynomial K โ†’+* L) (hฯ† : nonZeroDivisors (Polynomial K) โ‰ค Submonoid.comap ฯ† (nonZeroDivisors L)) (x : K) :
      (liftRingHom ฯ† hฯ†) (C x) = ฯ† (Polynomial.C x)
      @[simp]
      theorem RatFunc.liftRingHom_X {K : Type u} [CommRing K] [IsDomain K] {L : Type u_1} [Field L] (ฯ† : Polynomial K โ†’+* L) (hฯ† : nonZeroDivisors (Polynomial K) โ‰ค Submonoid.comap ฯ† (nonZeroDivisors L)) :
      (liftRingHom ฯ† hฯ†) X = ฯ† Polynomial.X
      @[simp]
      theorem RatFunc.num_C {K : Type u} [Field K] (c : K) :
      @[simp]
      theorem RatFunc.denom_C {K : Type u} [Field K] (c : K) :
      (C c).denom = 1
      @[simp]
      theorem RatFunc.denom_X {K : Type u} [Field K] :
      X.denom = 1
      theorem RatFunc.X_ne_zero {K : Type u} [Field K] :
      X โ‰  0
      theorem RatFunc.eq_C_iff {K : Type u} [Field K] (f : RatFunc K) :
      (โˆƒ (c : K), f = C c) โ†” f.num.natDegree = 0 โˆง f.denom.natDegree = 0
      noncomputable def RatFunc.eval {K : Type u} [Field K] {L : Type u} [Field L] (f : K โ†’+* L) (a : L) (p : RatFunc K) :
      L

      Evaluate a rational function p given a ring hom f from the scalar field to the target and a value x for the variable in the target.

      Fractions are reduced by clearing common denominators before evaluating: eval id 1 ((X^2 - 1) / (X - 1)) = eval id 1 (X + 1) = 2, not 0 / 0 = 0.

      Instances For
        theorem RatFunc.eval_eq_zero_of_evalโ‚‚_denom_eq_zero {K : Type u} [Field K] {L : Type u} [Field L] {f : K โ†’+* L} {a : L} {x : RatFunc K} (h : Polynomial.evalโ‚‚ f a x.denom = 0) :
        eval f a x = 0
        theorem RatFunc.evalโ‚‚_denom_ne_zero {K : Type u} [Field K] {L : Type u} [Field L] {f : K โ†’+* L} {a : L} {x : RatFunc K} (h : eval f a x โ‰  0) :
        @[simp]
        theorem RatFunc.eval_C {K : Type u} [Field K] {L : Type u} [Field L] (f : K โ†’+* L) (a : L) {c : K} :
        eval f a (C c) = f c
        @[simp]
        theorem RatFunc.eval_X {K : Type u} [Field K] {L : Type u} [Field L] (f : K โ†’+* L) (a : L) :
        eval f a X = a
        @[simp]
        theorem RatFunc.eval_zero {K : Type u} [Field K] {L : Type u} [Field L] (f : K โ†’+* L) (a : L) :
        eval f a 0 = 0
        @[simp]
        theorem RatFunc.eval_one {K : Type u} [Field K] {L : Type u} [Field L] (f : K โ†’+* L) (a : L) :
        eval f a 1 = 1
        @[simp]
        theorem RatFunc.eval_algebraMap {K : Type u} [Field K] {L : Type u} [Field L] (f : K โ†’+* L) (a : L) {S : Type u_1} [CommSemiring S] [Algebra S (Polynomial K)] (p : S) :
        theorem RatFunc.eval_add {K : Type u} [Field K] {L : Type u} [Field L] (f : K โ†’+* L) (a : L) {x y : RatFunc K} (hx : Polynomial.evalโ‚‚ f a x.denom โ‰  0) (hy : Polynomial.evalโ‚‚ f a y.denom โ‰  0) :
        eval f a (x + y) = eval f a x + eval f a y

        eval is an additive homomorphism except when a denominator evaluates to 0.

        Counterexample: eval _ 1 (X / (X-1)) + eval _ 1 (-1 / (X-1)) = 0 ... โ‰  1 = eval _ 1 ((X-1) / (X-1)).

        See also RatFunc.evalโ‚‚_denom_ne_zero to make the hypotheses simpler but less general.

        theorem RatFunc.eval_mul {K : Type u} [Field K] {L : Type u} [Field L] (f : K โ†’+* L) (a : L) {x y : RatFunc K} (hx : Polynomial.evalโ‚‚ f a x.denom โ‰  0) (hy : Polynomial.evalโ‚‚ f a y.denom โ‰  0) :
        eval f a (x * y) = eval f a x * eval f a y

        eval is a multiplicative homomorphism except when a denominator evaluates to 0.

        Counterexample: eval _ 0 X * eval _ 0 (1/X) = 0 โ‰  1 = eval _ 0 1 = eval _ 0 (X * 1/X).

        See also RatFunc.evalโ‚‚_denom_ne_zero to make the hypotheses simpler but less general.

        noncomputable def RatFunc.algEquivOfTranscendental {K : Type u_1} {L : Type u_2} [Field K] [Field L] [Algebra K L] (f : L) (h : Transcendental K f) :
        RatFunc K โ‰ƒโ‚[K] โ†ฅKโŸฎfโŸฏ

        Given a transcendental f : L, the K-algebra isomorphism between RatFunc K and L given by sending X to f.

        Instances For
          @[simp]
          theorem RatFunc.algEquivOfTranscendental_X {K : Type u_1} {L : Type u_2} [Field K] [Field L] [Algebra K L] (f : L) (h : Transcendental K f) :
          โ†‘((algEquivOfTranscendental f h) X) = f
          theorem RatFunc.algEquivOfTranscendental_apply {K : Type u_1} {L : Type u_2} [Field K] [Field L] [Algebra K L] (f : L) (h : Transcendental K f) (u : RatFunc K) :

          This is the principal ideal generated by X in the ring of polynomials over a field K, regarded as an element of the height-one-spectrum.

          Instances For
            theorem Polynomial.valuation_aeval_monomial_eq_valuation_pow (K : Type u_1) [Field K] {ฮ“ : Type u_2} [LinearOrderedCommGroupWithZero ฮ“] (L : Type u_3) [Field L] [Algebra K L] {v : Valuation L ฮ“} [hv : Valuation.IsTrivialOn K v] (w : L) (n : โ„•) {a : K} (ha : a โ‰  0) :
            v ((aeval w) ((monomial n) a)) = v w ^ n
            theorem Polynomial.valuation_aeval_eq_valuation_X_pow_natDegree_of_one_lt_valuation_X (K : Type u_1) [Field K] {ฮ“ : Type u_2} [LinearOrderedCommGroupWithZero ฮ“] (L : Type u_3) [Field L] [Algebra K L] {v : Valuation L ฮ“} [hv : Valuation.IsTrivialOn K v] (w : L) (hpos : 1 < v w) {p : Polynomial K} (hp : p โ‰  0) :
            v ((aeval w) p) = v w ^ p.natDegree
            theorem Polynomial.valuation_monomial_eq_valuation_X_pow (K : Type u_1) [Field K] {ฮ“ : Type u_2} [LinearOrderedCommGroupWithZero ฮ“] {v : Valuation (RatFunc K) ฮ“} [hv : Valuation.IsTrivialOn K v] (n : โ„•) {a : K} (ha : a โ‰  0) :
            v โ†‘((monomial n) a) = v RatFunc.X ^ n

            If a valuation v is trivial on constants then for every n : โ„• the valuation of (monomial n a) is equal to (v RatFunc.X) ^ n.

            theorem Polynomial.valuation_eq_valuation_X_pow_natDegree_of_one_lt_valuation_X (K : Type u_1) [Field K] {ฮ“ : Type u_2} [LinearOrderedCommGroupWithZero ฮ“] {v : Valuation (RatFunc K) ฮ“} [hv : Valuation.IsTrivialOn K v] (hlt : 1 < v RatFunc.X) {p : Polynomial K} (hp : p โ‰  0) :
            v โ†‘p = v RatFunc.X ^ p.natDegree

            If a valuation v is trivial on constants and 1 < v RatFunc.X then for every polynomial p, v p = v RatFunc.X ^ p.natDegree.

            Note: The condition 1 < v RatFunc.X is typically satisfied by the valuation at infinity.

            theorem Polynomial.valuation_le_one_of_valuation_X_le_one (K : Type u_1) [Field K] {ฮ“ : Type u_2} [LinearOrderedCommGroupWithZero ฮ“] {v : Valuation (RatFunc K) ฮ“} [hv : Valuation.IsTrivialOn K v] (hle : v RatFunc.X โ‰ค 1) (p : Polynomial K) :
            v โ†‘p โ‰ค 1

            If a valuation v is trivial on constants and v RatFunc.X โ‰ค 1 then for every polynomial p, v p โ‰ค 1.

            theorem Polynomial.valuation_inv_monomial_eq_valuation_X_zpow (K : Type u_1) [Field K] {ฮ“ : Type u_2} [LinearOrderedCommGroupWithZero ฮ“] {v : Valuation (RatFunc K) ฮ“} [hv : Valuation.IsTrivialOn K v] (n : โ„•) {a : K} (ha : a โ‰  0) :
            v (1 / โ†‘((monomial n) a)) = v RatFunc.X ^ (-โ†‘n)

            If a valuation v is trivial on constants then for every n : โ„• the valuation of 1 / (monomial n a) (as an element of the field of rational functions) is equal to (v RatFunc.X) ^ (- n).

            @[implicit_reducible]
            noncomputable instance RatFunc.valuedRatFunc (K : Type u_1) [Field K] :
            theorem RatFunc.valuation_surjective (K : Type u_1) [Field K] :
            Function.Surjective โ‡‘Valued.v