mathlib documentation

data.polynomial.lifts

Polynomials that lift #

Given semirings R and S with a morphism f : R →+* S, we define a subsemiring lifts of polynomial S by the image of ring_hom.of (map f). Then, we prove that a polynomial that lifts can always be lifted to a polynomial of the same degree and that a monic polynomial that lifts can be lifted to a monic polynomial (of the same degree).

Main definition #

Main results #

Implementation details #

In general R and S are semiring, so lifts is a semiring. In the case of rings, see lifts_iff_lifts_ring.

Since we do not assume R to be commutative, we cannot say in general that the set of polynomials that lift is a subalgebra. (By lift_iff this is true if R is commutative.)

noncomputable def polynomial.lifts {R : Type u} [semiring R] {S : Type v} [semiring S] (f : R →+* S) :

We define the subsemiring of polynomials that lifts as the image of ring_hom.of (map f).

Equations
theorem polynomial.mem_lifts {R : Type u} [semiring R] {S : Type v} [semiring S] {f : R →+* S} (p : polynomial S) :
theorem polynomial.lifts_iff_set_range {R : Type u} [semiring R] {S : Type v} [semiring S] {f : R →+* S} (p : polynomial S) :
theorem polynomial.lifts_iff_ring_hom_srange {R : Type u} [semiring R] {S : Type v} [semiring S] {f : R →+* S} (p : polynomial S) :
theorem polynomial.lifts_iff_coeff_lifts {R : Type u} [semiring R] {S : Type v} [semiring S] {f : R →+* S} (p : polynomial S) :
theorem polynomial.C_mem_lifts {R : Type u} [semiring R] {S : Type v} [semiring S] (f : R →+* S) (r : R) :

If (r : R), then C (f r) lifts.

theorem polynomial.C'_mem_lifts {R : Type u} [semiring R] {S : Type v} [semiring S] {f : R →+* S} {s : S} (h : s set.range f) :

If (s : S) is in the image of f, then C s lifts.

theorem polynomial.X_mem_lifts {R : Type u} [semiring R] {S : Type v} [semiring S] (f : R →+* S) :

The polynomial X lifts.

theorem polynomial.X_pow_mem_lifts {R : Type u} [semiring R] {S : Type v} [semiring S] (f : R →+* S) (n : ) :

The polynomial X ^ n lifts.

theorem polynomial.base_mul_mem_lifts {R : Type u} [semiring R] {S : Type v} [semiring S] {f : R →+* S} {p : polynomial S} (r : R) (hp : p polynomial.lifts f) :

If p lifts and (r : R) then r * p lifts.

theorem polynomial.monomial_mem_lifts {R : Type u} [semiring R] {S : Type v} [semiring S] {f : R →+* S} {s : S} (n : ) (h : s set.range f) :

If (s : S) is in the image of f, then monomial n s lifts.

theorem polynomial.erase_mem_lifts {R : Type u} [semiring R] {S : Type v} [semiring S] {f : R →+* S} {p : polynomial S} (n : ) (h : p polynomial.lifts f) :

If p lifts then p.erase n lifts.

theorem polynomial.monomial_mem_lifts_and_degree_eq {R : Type u} [semiring R] {S : Type v} [semiring S] {f : R →+* S} {s : S} {n : } (hl : (polynomial.monomial n) s polynomial.lifts f) :
theorem polynomial.mem_lifts_and_degree_eq {R : Type u} [semiring R] {S : Type v} [semiring S] {f : R →+* S} {p : polynomial S} (hlifts : p polynomial.lifts f) :
∃ (q : polynomial R), polynomial.map f q = p q.degree = p.degree

A polynomial lifts if and only if it can be lifted to a polynomial of the same degree.

theorem polynomial.lifts_and_degree_eq_and_monic {R : Type u} [semiring R] {S : Type v} [semiring S] {f : R →+* S} [nontrivial S] {p : polynomial S} (hlifts : p polynomial.lifts f) (hp : p.monic) :
∃ (q : polynomial R), polynomial.map f q = p q.degree = p.degree q.monic

A monic polynomial lifts if and only if it can be lifted to a monic polynomial of the same degree.

theorem polynomial.lifts_and_nat_degree_eq_and_monic {R : Type u} [semiring R] {S : Type v} [semiring S] {f : R →+* S} {p : polynomial S} (hlifts : p polynomial.lifts f) (hp : p.monic) :
noncomputable def polynomial.lifts_ring {R : Type u} [ring R] {S : Type v} [ring S] (f : R →+* S) :

The subring of polynomials that lift.

Equations
theorem polynomial.lifts_iff_lifts_ring {R : Type u} [ring R] {S : Type v} [ring S] (f : R →+* S) (p : polynomial S) :

If R and S are rings, p is in the subring of polynomials that lift if and only if it is in the subsemiring of polynomials that lift.

noncomputable def polynomial.map_alg (R : Type u) [comm_semiring R] (S : Type v) [semiring S] [algebra R S] :

The map polynomial R → S[X] as an algebra homomorphism.

Equations
theorem polynomial.map_alg_eq_map {R : Type u} [comm_semiring R] {S : Type v} [semiring S] [algebra R S] (p : polynomial R) :

map_alg is the morphism induced by R → S.

theorem polynomial.mem_lifts_iff_mem_alg (R : Type u) [comm_semiring R] {S : Type v} [semiring S] [algebra R S] (p : polynomial S) :

A polynomial p lifts if and only if it is in the image of map_alg.

theorem polynomial.smul_mem_lifts {R : Type u} [comm_semiring R] {S : Type v} [semiring S] [algebra R S] {p : polynomial S} (r : R) (hp : p polynomial.lifts (algebra_map R S)) :

If p lifts and (r : R) then r • p lifts.