Module

Truncation.lean

Nyll.ValuedFieldTheory.Valuation.Henselian.Factorization.Truncation
30 declarations indexed from sourceView source ↗

coefficient truncation for the Hensel correction step

This file contains the finite coefficient-cutting step used in the proof of Hensel's lemma: after the division step, coefficients already zero in the residue field may be omitted to impose the required degree bound.

Declarations

AlgebraicNumberTheory.Valuations.henselFactorization_lowPart

low-degree part of a polynomial up to degree N.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
def henselFactorization_lowPart {R : Type*} [Semiring R] (N : ℕ) (P : R[X]) : R[X]
AlgebraicNumberTheory.Valuations.henselFactorization_lowPart_coeff_of_le

coefficients at degrees kept by lowPart.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_lowPart_coeff_of_le
    {R : Type*} [Semiring R] {N n : ℕ} (P : R[X]) (hn : n ≤ N) :
    (henselFactorization_lowPart N P).coeff n = P.coeff n
AlgebraicNumberTheory.Valuations.henselFactorization_lowPart_coeff_eq_zero_of_lt

coefficients above the cutoff vanish in lowPart.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_lowPart_coeff_eq_zero_of_lt
    {R : Type*} [Semiring R] {N n : ℕ} (P : R[X]) (hn : N < n) :
    (henselFactorization_lowPart N P).coeff n = 0
AlgebraicNumberTheory.Valuations.henselFactorization_lowPart_natDegree_le

lowPart has the intended degree bound.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_lowPart_natDegree_le
    {R : Type*} [Semiring R] (N : ℕ) (P : R[X]) :
    (henselFactorization_lowPart N P).natDegree ≤ N
AlgebraicNumberTheory.Valuations.henselFactorization_lowPart_map_eq_of_high_coeff_mem_ker

omitting high coefficients already in the kernel does not change the residual polynomial.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_lowPart_map_eq_of_high_coeff_mem_ker
    {R k : Type*} [CommRing R] [CommRing k] (φ : R →+* k)
    (N : ℕ) (P : R[X])
    (hhigh : ∀ n : ℕ, N < n → P.coeff n ∈ RingHom.ker φ) :
    (henselFactorization_lowPart N P).map φ = P.map φ
AlgebraicNumberTheory.Valuations.henselFactorization_lowPart_residue_map_eq_of_high_coeff_mem_maximalIdeal

residue-map form of high-coefficient truncation.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_lowPart_residue_map_eq_of_high_coeff_mem_maximalIdeal
    {R : Type*} [CommRing R] [IsLocalRing R] (N : ℕ) (P : R[X])
    (hhigh : ∀ n : ℕ, N < n → P.coeff n ∈ IsLocalRing.maximalIdeal R) :
    (henselFactorization_lowPart N P).map (IsLocalRing.residue R) =
      P.map (IsLocalRing.residue R)
AlgebraicNumberTheory.Valuations.henselFactorization_correction_after_lowPart_ker

kernel-level truncation: the correction congruence survives replacing a provisional correction polynomial by its low-degree part when the omitted coefficients already lie in the same coefficient-map kernel.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_correction_after_lowPart_ker
    {R k : Type*} [CommRing R] [CommRing k] (φ : R →+* k)
    {g0 h0 fn p Q : R[X]} (N : ℕ)
    (hcorr :
      ∀ n : ℕ, (g0 * Q + h0 * p - fn).coeff n ∈ RingHom.ker φ)
    (hhigh : ∀ n : ℕ, N < n → Q.coeff n ∈ RingHom.ker φ) :
    (henselFactorization_lowPart N Q).natDegree ≤ N ∧
      ∀ n : ℕ,
        (g0 * henselFactorization_lowPart N Q + h0 * p - fn).coeff n ∈
          RingHom.ker φ
AlgebraicNumberTheory.Valuations.henselFactorization_correction_after_lowPart_ideal

ideal-level truncation: the correction congruence survives replacing a provisional correction polynomial by its low-degree part when the omitted coefficients already lie in the same ideal.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_correction_after_lowPart_ideal
    {R : Type*} [CommRing R] {I : Ideal R}
    {g0 h0 fn p Q : R[X]} (N : ℕ)
    (hcorr :
      ∀ n : ℕ, (g0 * Q + h0 * p - fn).coeff n ∈ I)
    (hhigh : ∀ n : ℕ, N < n → Q.coeff n ∈ I) :
    (henselFactorization_lowPart N Q).natDegree ≤ N ∧
      ∀ n : ℕ,
        (g0 * henselFactorization_lowPart N Q + h0 * p - fn).coeff n ∈ I
AlgebraicNumberTheory.Valuations.henselFactorization_correction_after_lowPart_span_singleton

principal-ideal truncation: if the provisional correction is congruent modulo (π) and all omitted coefficients are divisible by π, then the truncated correction keeps the same congruence modulo (π).

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_correction_after_lowPart_span_singleton
    {R : Type*} [CommRing R] {π : R}
    {g0 h0 fn p Q : R[X]} (N : ℕ)
    (hcorr :
      ∀ n : ℕ, (g0 * Q + h0 * p - fn).coeff n ∈
        Ideal.span ({π} : Set R))
    (hhigh : ∀ n : ℕ, N < n → Q.coeff n ∈
      Ideal.span ({π} : Set R)) :
    (henselFactorization_lowPart N Q).natDegree ≤ N ∧
      ∀ n : ℕ,
        (g0 * henselFactorization_lowPart N Q + h0 * p - fn).coeff n ∈
          Ideal.span ({π} : Set R)
AlgebraicNumberTheory.Valuations.henselFactorization_natDegree_right_le_tsub_of_mul_natDegree_le

residue-field degree division: if the product with a nonzero degree-m polynomial has degree at most d, then the right factor has degree at most d - m.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_natDegree_right_le_tsub_of_mul_natDegree_le
    {k : Type*} [Field k] {g Q : k[X]} {m d : ℕ}
    (hgdeg : g.natDegree = m) (hg : g ≠ 0)
    (hprod : (g * Q).natDegree ≤ d) :
    Q.natDegree ≤ d - m
AlgebraicNumberTheory.Valuations.henselFactorization_natDegree_right_le_tsub_of_unit_leading_mul_natDegree_le

unit-leading degree division over an arbitrary commutative ring: if the product with a degree-m polynomial whose leading coefficient is a unit has degree at most d, then the right factor has degree at most d - m. This is the form needed over O/(π) in the iterative proof.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_natDegree_right_le_tsub_of_unit_leading_mul_natDegree_le
    {R : Type*} [CommRing R] {g Q : R[X]} {m d : ℕ}
    (hgunit : IsUnit g.leadingCoeff) (hgdeg : g.natDegree = m)
    (hprod : (g * Q).natDegree ≤ d) :
    Q.natDegree ≤ d - m
AlgebraicNumberTheory.Valuations.henselFactorization_map_unit_leadingCoeff_natDegree_eq

a unit-leading polynomial remains unit-leading with the same natural degree after mapping to a nontrivial target ring. This supplies the unit-leading input used over O/(π).

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_map_unit_leadingCoeff_natDegree_eq
    {R S : Type*} [CommRing R] [CommRing S] [Nontrivial S]
    (φ : R →+* S) {g : R[X]} {m : ℕ}
    (hgunit : IsUnit g.leadingCoeff) (hgdeg : g.natDegree = m) :
    IsUnit (g.map φ).leadingCoeff ∧ (g.map φ).natDegree = m
AlgebraicNumberTheory.Valuations.henselFactorization_quotient_unit_leadingCoeff_natDegree_eq

quotient specialization of henselFactorization_map_unit_leadingCoeff_natDegree_eq.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_quotient_unit_leadingCoeff_natDegree_eq
    {R : Type*} [CommRing R] {I : Ideal R} [Nontrivial (R ⧸ I)]
    {g : R[X]} {m : ℕ}
    (hgunit : IsUnit g.leadingCoeff) (hgdeg : g.natDegree = m) :
    IsUnit (g.map (Ideal.Quotient.mk I)).leadingCoeff ∧
      (g.map (Ideal.Quotient.mk I)).natDegree = m
AlgebraicNumberTheory.Valuations.henselFactorization_span_singleton_quotient_nontrivial_of_mem_maximalIdeal

if π lies in the maximal ideal of a local ring, then the quotient O/(π) is nontrivial. This is the displayed-factor source for the nontriviality needed in the degree argument modulo (π).

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_span_singleton_quotient_nontrivial_of_mem_maximalIdeal
    {R : Type*} [CommRing R] [IsLocalRing R] {π : R}
    (hπ : π ∈ IsLocalRing.maximalIdeal R) :
    Nontrivial (R ⧸ Ideal.span ({π} : Set R))
AlgebraicNumberTheory.Valuations.henselFactorization_span_singleton_quotient_unit_leadingCoeff_natDegree_eq

local-ring specialization: a unit-leading polynomial of degree m stays unit-leading of degree m after reducing modulo (π), for π in the maximal ideal.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_span_singleton_quotient_unit_leadingCoeff_natDegree_eq
    {R : Type*} [CommRing R] [IsLocalRing R] {π : R}
    {g : R[X]} {m : ℕ}
    (hπ : π ∈ IsLocalRing.maximalIdeal R)
    (hgunit : IsUnit g.leadingCoeff) (hgdeg : g.natDegree = m) :
    IsUnit
        ((g.map (Ideal.Quotient.mk (Ideal.span ({π} : Set R)))).leadingCoeff) ∧
      (g.map (Ideal.Quotient.mk (Ideal.span ({π} : Set R)))).natDegree = m
AlgebraicNumberTheory.Valuations.henselFactorization_residue_sub_mul_natDegree_le

residual degree bound for the polynomial fn - h0 * p that appears after the division step.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_residue_sub_mul_natDegree_le
    {R : Type*} [CommRing R] [IsLocalRing R]
    {fn h0 P : R[X]} {a b d : ℕ}
    (hfn : (fn.map (IsLocalRing.residue R)).natDegree ≤ d)
    (hh0 : (h0.map (IsLocalRing.residue R)).natDegree ≤ a)
    (hP : (P.map (IsLocalRing.residue R)).natDegree ≤ b)
    (hab : a + b ≤ d) :
    ((fn - h0 * P).map (IsLocalRing.residue R)).natDegree ≤ d
AlgebraicNumberTheory.Valuations.henselFactorization_map_sub_mul_natDegree_le_of_degree_bounds

mapped degree bound for the polynomial fn - h0*p from degree bounds already available before mapping. This is the quotient-level replacement for the residue-field degree bound in the principal (π) route.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_map_sub_mul_natDegree_le_of_degree_bounds
    {R S : Type*} [CommRing R] [CommRing S] (φ : R →+* S)
    {fn h0 P : R[X]} {a b d : ℕ}
    (hfn : fn.natDegree ≤ d)
    (hh0 : h0.natDegree ≤ a)
    (hP : P.natDegree ≤ b)
    (hab : a + b ≤ d) :
    ((fn - h0 * P).map φ).natDegree ≤ d
AlgebraicNumberTheory.Valuations.henselFactorization_span_singleton_quotient_sub_mul_natDegree_le_of_degree_bounds

quotient specialization of the degree bound for fn - h0*p used before truncating the Hensel correction.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_span_singleton_quotient_sub_mul_natDegree_le_of_degree_bounds
    {R : Type*} [CommRing R] {π : R}
    {fn h0 P : R[X]} {a b d : ℕ}
    (hfn : fn.natDegree ≤ d)
    (hh0 : h0.natDegree ≤ a)
    (hP : P.natDegree ≤ b)
    (hab : a + b ≤ d) :
    ((fn - h0 * P).map
      (Ideal.Quotient.mk (Ideal.span ({π} : Set R)))).natDegree ≤ d
AlgebraicNumberTheory.Valuations.henselFactorization_product_congruence_of_correction

the correction congruence can be read in the product form needed for the high-coefficient degree argument.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_product_congruence_of_correction
    {R : Type*} [CommRing R] [IsLocalRing R]
    {g0 h0 fn p Q : R[X]}
    (hcorr :
      ∀ n : ℕ, (g0 * Q + h0 * p - fn).coeff n ∈ IsLocalRing.maximalIdeal R) :
    ∀ n : ℕ, (g0 * Q - (fn - h0 * p)).coeff n ∈
      IsLocalRing.maximalIdeal R
AlgebraicNumberTheory.Valuations.henselFactorization_high_coeff_mem_maximalIdeal_of_product_congruence_degree

high-coefficient source for the correction truncation: if g0 * Q is congruent to a polynomial of residual degree at most d, and the residual degree of g0 is m, then every coefficient of Q above d - m lies in the maximal ideal.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_high_coeff_mem_maximalIdeal_of_product_congruence_degree
    {R : Type*} [CommRing R] [IsLocalRing R]
    {g0 Q A : R[X]} {m d : ℕ}
    (hgdeg : (g0.map (IsLocalRing.residue R)).natDegree = m)
    (hg : g0.map (IsLocalRing.residue R) ≠ 0)
    (hcong : ∀ n : ℕ, (g0 * Q - A).coeff n ∈ IsLocalRing.maximalIdeal R)
    (hAdeg : (A.map (IsLocalRing.residue R)).natDegree ≤ d) :
    ∀ n : ℕ, d - m < n → Q.coeff n ∈ IsLocalRing.maximalIdeal R
AlgebraicNumberTheory.Valuations.henselFactorization_high_coeff_mem_span_singleton_of_product_congruence_degree

high-coefficient source modulo (π): if g0 * Q is congruent to a polynomial of degree at most d modulo (π), and g0 has degree m with unit leading coefficient after reduction modulo (π), then every coefficient of Q above d - m is divisible by π.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_high_coeff_mem_span_singleton_of_product_congruence_degree
    {R : Type*} [CommRing R] {π : R}
    {g0 Q A : R[X]} {m d : ℕ}
    (hgunit :
      IsUnit
        ((g0.map (Ideal.Quotient.mk (Ideal.span ({π} : Set R)))).leadingCoeff))
    (hgdeg :
      (g0.map (Ideal.Quotient.mk (Ideal.span ({π} : Set R)))).natDegree = m)
    (hcong : ∀ n : ℕ, (g0 * Q - A).coeff n ∈
      Ideal.span ({π} : Set R))
    (hAdeg :
      (A.map (Ideal.Quotient.mk (Ideal.span ({π} : Set R)))).natDegree ≤ d) :
    ∀ n : ℕ, d - m < n → Q.coeff n ∈ Ideal.span ({π} : Set R)
AlgebraicNumberTheory.Valuations.henselFactorization_high_coeff_mem_maximalIdeal_of_correction_degree

high-coefficient source specialized to the correction congruence produced by the division step.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_high_coeff_mem_maximalIdeal_of_correction_degree
    {R : Type*} [CommRing R] [IsLocalRing R]
    {g0 h0 fn p Q : R[X]} {m d : ℕ}
    (hgdeg : (g0.map (IsLocalRing.residue R)).natDegree = m)
    (hg : g0.map (IsLocalRing.residue R) ≠ 0)
    (hcorr :
      ∀ n : ℕ, (g0 * Q + h0 * p - fn).coeff n ∈
        IsLocalRing.maximalIdeal R)
    (hAdeg : ((fn - h0 * p).map (IsLocalRing.residue R)).natDegree ≤ d) :
    ∀ n : ℕ, d - m < n → Q.coeff n ∈ IsLocalRing.maximalIdeal R
AlgebraicNumberTheory.Valuations.henselFactorization_high_coeff_mem_span_singleton_of_correction_degree

high-coefficient source modulo (π) specialized to the correction congruence produced by the division step.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_high_coeff_mem_span_singleton_of_correction_degree
    {R : Type*} [CommRing R] {π : R}
    {g0 h0 fn p Q : R[X]} {m d : ℕ}
    (hgunit :
      IsUnit
        ((g0.map (Ideal.Quotient.mk (Ideal.span ({π} : Set R)))).leadingCoeff))
    (hgdeg :
      (g0.map (Ideal.Quotient.mk (Ideal.span ({π} : Set R)))).natDegree = m)
    (hcorr :
      ∀ n : ℕ, (g0 * Q + h0 * p - fn).coeff n ∈
        Ideal.span ({π} : Set R))
    (hAdeg :
      ((fn - h0 * p).map
        (Ideal.Quotient.mk (Ideal.span ({π} : Set R)))).natDegree ≤ d) :
    ∀ n : ℕ, d - m < n → Q.coeff n ∈ Ideal.span ({π} : Set R)
AlgebraicNumberTheory.Valuations.henselFactorization_correction_after_degree_truncation_span_singleton

one-step degree truncation modulo (π): under the principal correction congruence, the quotient-degree bound for fn - h0*p, and the unit-leading degree data for g0 modulo (π), the low-degree part of Q has degree at most d-m and keeps the correction congruence modulo (π).

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_correction_after_degree_truncation_span_singleton
    {R : Type*} [CommRing R] {π : R}
    {g0 h0 fn p Q : R[X]} {m d : ℕ}
    (hgunit :
      IsUnit
        ((g0.map (Ideal.Quotient.mk (Ideal.span ({π} : Set R)))).leadingCoeff))
    (hgdeg :
      (g0.map (Ideal.Quotient.mk (Ideal.span ({π} : Set R)))).natDegree = m)
    (hcorr :
      ∀ n : ℕ, (g0 * Q + h0 * p - fn).coeff n ∈
        Ideal.span ({π} : Set R))
    (hAdeg :
      ((fn - h0 * p).map
        (Ideal.Quotient.mk (Ideal.span ({π} : Set R)))).natDegree ≤ d) :
    (henselFactorization_lowPart (d - m) Q).natDegree ≤ d - m ∧
      ∀ n : ℕ,
        (g0 * henselFactorization_lowPart (d - m) Q + h0 * p - fn).coeff n ∈
          Ideal.span ({π} : Set R)
AlgebraicNumberTheory.Valuations.henselFactorization_correction_after_division_degree_truncation_span_singleton

principal-ideal one-step correction after Bezout and division. This is the displayed-factor route: the displayed factor a*g0 + b*h0 - 1 = C π * e, not an equality m = (π), supplies the correction congruence modulo (π).

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_correction_after_division_degree_truncation_span_singleton
    {R : Type*} [CommRing R] [IsLocalRing R] {π : R}
    {a b g0 h0 fn q p e : R[X]} {m d : ℕ}
    (hπ : π ∈ IsLocalRing.maximalIdeal R)
    (hgunit : IsUnit g0.leadingCoeff)
    (hg0nat : g0.natDegree = m)
    (hbezFactor : a * g0 + b * h0 - 1 = Polynomial.C π * e)
    (hdiv : b * fn = g0 * q + p)
    (hfn : fn.natDegree ≤ d)
    (hh0 : h0.natDegree ≤ d - m)
    (hp : p.natDegree ≤ m)
    (hmd : m ≤ d) :
    (henselFactorization_lowPart (d - m) (a * fn + h0 * q)).natDegree ≤ d - m ∧
      ∀ n : ℕ,
        (g0 * henselFactorization_lowPart (d - m) (a * fn + h0 * q) +
            h0 * p - fn).coeff n ∈ Ideal.span ({π} : Set R)
AlgebraicNumberTheory.Valuations.henselFactorization_correction_after_lowPart

the correction congruence survives replacing a provisional correction polynomial by its low-degree part when the omitted coefficients are already zero in the residue field.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_correction_after_lowPart
    {R : Type*} [CommRing R] [IsLocalRing R]
    {g0 h0 fn p Q : R[X]} (N : ℕ)
    (hcorr :
      ∀ n : ℕ, (g0 * Q + h0 * p - fn).coeff n ∈ IsLocalRing.maximalIdeal R)
    (hhigh : ∀ n : ℕ, N < n → Q.coeff n ∈ IsLocalRing.maximalIdeal R) :
    (henselFactorization_lowPart N Q).natDegree ≤ N ∧
      ∀ n : ℕ,
        (g0 * henselFactorization_lowPart N Q + h0 * p - fn).coeff n ∈
          IsLocalRing.maximalIdeal R
AlgebraicNumberTheory.Valuations.henselFactorization_correction_after_degree_truncation

one-step degree truncation of the provisional correction: under the correction congruence and the residual degree bound for fn - h0*p, the low-degree part of Q has degree at most d - m and keeps the correction congruence.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_correction_after_degree_truncation
    {R : Type*} [CommRing R] [IsLocalRing R]
    {g0 h0 fn p Q : R[X]} {m d : ℕ}
    (hgdeg : (g0.map (IsLocalRing.residue R)).natDegree = m)
    (hg : g0.map (IsLocalRing.residue R) ≠ 0)
    (hcorr :
      ∀ n : ℕ, (g0 * Q + h0 * p - fn).coeff n ∈
        IsLocalRing.maximalIdeal R)
    (hAdeg : ((fn - h0 * p).map (IsLocalRing.residue R)).natDegree ≤ d) :
    (henselFactorization_lowPart (d - m) Q).natDegree ≤ d - m ∧
      ∀ n : ℕ,
        (g0 * henselFactorization_lowPart (d - m) Q + h0 * p - fn).coeff n ∈
          IsLocalRing.maximalIdeal R
AlgebraicNumberTheory.Valuations.henselFactorization_correction_after_division_degree_truncation

one-step correction after Bezout and division. If b*fn = g0*q + p is the division output and the residual degree bounds from the proof are available, then the truncated provisional correction has degree at most d-m and gives the required congruence.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_correction_after_division_degree_truncation
    {R : Type*} [CommRing R] [IsLocalRing R]
    {a b g0 h0 fn q p : R[X]} {m d : ℕ}
    (hgdeg : (g0.map (IsLocalRing.residue R)).natDegree = m)
    (hg : g0.map (IsLocalRing.residue R) ≠ 0)
    (hbez : (a * g0 + b * h0).map (IsLocalRing.residue R) = 1)
    (hdiv : b * fn = g0 * q + p)
    (hfn : (fn.map (IsLocalRing.residue R)).natDegree ≤ d)
    (hh0 : (h0.map (IsLocalRing.residue R)).natDegree ≤ d - m)
    (hp : (p.map (IsLocalRing.residue R)).natDegree ≤ m)
    (hmd : m ≤ d) :
    (henselFactorization_lowPart (d - m) (a * fn + h0 * q)).natDegree ≤ d - m ∧
      ∀ n : ℕ,
        (g0 * henselFactorization_lowPart (d - m) (a * fn + h0 * q) +
            h0 * p - fn).coeff n ∈ IsLocalRing.maximalIdeal R
AlgebraicNumberTheory.Valuations.henselFactorization_correction_congruence_replace_initial_factors

replacement of the initial lifted factors by the current inductive approximants in the correction congruence. If g and h still reduce to g0 and h0, then a correction congruence for g0,h0 is also a correction congruence for g,h.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_correction_congruence_replace_initial_factors
    {R : Type*} [CommRing R] [IsLocalRing R]
    {g0 h0 g h fn p q : R[X]}
    (hg : ∀ n : ℕ, (g - g0).coeff n ∈ IsLocalRing.maximalIdeal R)
    (hh : ∀ n : ℕ, (h - h0).coeff n ∈ IsLocalRing.maximalIdeal R)
    (hcorr :
      ∀ n : ℕ, (g0 * q + h0 * p - fn).coeff n ∈
        IsLocalRing.maximalIdeal R) :
    ∀ n : ℕ, (g * q + h * p - fn).coeff n ∈
      IsLocalRing.maximalIdeal R
AlgebraicNumberTheory.Valuations.henselFactorization_correction_congruence_replace_initial_factors_span_singleton

principal-ideal version of replacement of the initial lifted factors by the current inductive approximants. If g and h are still congruent to g0 and h0 modulo (π), then a correction congruence for g0,h0 modulo (π) is also one for g,h.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
open scoped BigOperators
namespace AlgebraicNumberTheory
namespace Valuations
theorem henselFactorization_correction_congruence_replace_initial_factors_span_singleton
    {R : Type*} [CommRing R] {π : R}
    {g0 h0 g h fn p q : R[X]}
    (hg : ∀ n : ℕ, (g - g0).coeff n ∈ Ideal.span ({π} : Set R))
    (hh : ∀ n : ℕ, (h - h0).coeff n ∈ Ideal.span ({π} : Set R))
    (hcorr :
      ∀ n : ℕ, (g0 * q + h0 * p - fn).coeff n ∈
        Ideal.span ({π} : Set R)) :
    ∀ n : ℕ, (g * q + h * p - fn).coeff n ∈
      Ideal.span ({π} : Set R)