English
There exists an induction principle for finitely presented ring maps: to prove a property for all FP maps, it suffices to verify it for the polynomial map, surjective maps with finitely generated kernels, and to be stable under composition.
Русский
Существует принцип индукции для конечнопредставимых гомоморфизмов колец: для доказательства свойства для всех FP-мэппингов достаточно проверить его на полиномиальном отображении, на сюръективных отображениях с порожденными ядрами, а также сохранить при композиции.
LaTeX
$$$\\text{polynomial_induction} : \\forall P,Q,\\ P(\\text{Polynomial map}),\\ \\forall f,g,\\text{Surj ker},\\ f\\cdot g \\Rightarrow Q$ (формула схватывает суть рассуждения об индукции).$$$
Lean4
/-- Induction principle for finitely presented ring homomorphisms.
For a property to hold for all finitely presented ring homs, it suffices for it to hold for
`Polynomial.C : R → R[X]`, surjective ring homs with finitely generated kernels, and to be closed
under composition.
Note that to state this conveniently for ring homs between rings of different universes, we carry
around two predicates `P` and `Q`, which should be "the same" apart from universes:
* `P`, for ring homs `(R : Type u) → (S : Type u)`.
* `Q`, for ring homs `(R : Type u) → (S : Type v)`.
-/
theorem polynomial_induction (P : ∀ (R : Type u) [CommRing R] (S : Type u) [CommRing S], (R →+* S) → Prop)
(Q : ∀ (R : Type u) [CommRing R] (S : Type v) [CommRing S], (R →+* S) → Prop)
(polynomial : ∀ (R) [CommRing R], P R R[X] C)
(fg_ker : ∀ (R : Type u) [CommRing R] (S : Type v) [CommRing S] (f : R →+* S), Surjective f → (ker f).FG → Q R S f)
(comp :
∀ (R) [CommRing R] (S) [CommRing S] (T) [CommRing T] (f : R →+* S) (g : S →+* T),
P R S f → Q S T g → Q R T (g.comp f))
{R : Type u} {S : Type v} [CommRing R] [CommRing S] (f : R →+* S) (hf : f.FinitePresentation) : Q R S f :=
by
letI := f.toAlgebra
obtain ⟨n, g, hg, hg'⟩ := hf
let g' := g.toRingHom
change Surjective g' at hg
change (ker g').FG at hg'
have : g'.comp MvPolynomial.C = f := g.comp_algebraMap
clear_value g'
subst this
clear g
induction n generalizing R S with
| zero =>
refine fg_ker _ _ _ (hg.comp (MvPolynomial.C_surjective (Fin 0))) ?_
rw [← comap_ker]
convert hg'.map (MvPolynomial.isEmptyRingEquiv R (Fin 0)).toRingHom using 1
simp only [RingEquiv.toRingHom_eq_coe]
exact Ideal.comap_symm (MvPolynomial.isEmptyRingEquiv R (Fin 0))
| succ n
IH =>
let e : MvPolynomial (Fin (n + 1)) R ≃ₐ[R] MvPolynomial (Fin n) R[X] :=
(MvPolynomial.renameEquiv R (finSuccEquiv n)).trans (MvPolynomial.optionEquivRight R (Fin n))
have he : (ker (g'.comp <| RingHomClass.toRingHom e.symm)).FG :=
by
rw [← RingHom.comap_ker]
convert hg'.map e.toAlgHom.toRingHom using 1
exact Ideal.comap_symm e.toRingEquiv
have := IH (R := R[X]) (S := S) (g'.comp e.symm) (hg.comp e.symm.surjective) he
convert comp _ _ _ _ _ (polynomial _) this using 1
rw [comp_assoc, comp_assoc]
congr 1 with r
simp [e]