Definitions/Def_Deformations_DualNumbers.lean
Dual numbers as an object of the pro-Artinian category
Fix a commutative local ring \mathcal O and write k = \mathcal O/\mathfrak m_{\mathcal O} for its residue field, denoted π΄ π. This module equips Mathlib's ring of dual numbers k[\varepsilon] = k \oplus k\varepsilon with \varepsilon^2 = 0 (the trivial square-zero extension of k by k) with all the structure needed to view it as an object of the category ProartinianCat π, whose objects are topological commutative \mathcal O-algebras R that are local rings with linear, T_0, complete topology in which every quotient by an open ideal is Artinian, such that \mathcal O \to R is a local homomorphism and \mathcal O \to \mathrm{ResidueField}(R) is surjective, and whose morphisms are continuous \mathcal O-algebra homomorphisms. Accordingly it is recorded that k[\varepsilon] is a finite k-module, hence an Artinian ring; that it carries the discrete topology; that \mathcal O \to k[\varepsilon], a \mapsto \mathrm{inl}(\bar a), is local; and that \mathcal O surjects onto the residue field of k[\varepsilon]. The auxiliary lemma residue_inl_fst_eq states that for y \in k[\varepsilon] the elements \mathrm{inl}(y_{\mathrm{fst}}) and y have the same image in the residue field of k[\varepsilon], i.e. k\varepsilon \subseteq \mathfrak m_{k[\varepsilon]}.
The object itself is dualNumbers π, the object of ProartinianCat π with carrier k[\varepsilon]; its topology is discrete. The morphism dualNumbersFst π : dualNumbers π βΆ residueField is given by the first-coordinate \mathcal O-algebra homomorphism k[\varepsilon] \to k, a + b\varepsilon \mapsto a, which is continuous since the source is discrete. Finally eq_dualNumbersFst asserts that every morphism from dualNumbers π to residueField equals this projection, residueField being terminal in ProartinianCat π.
Relation to Mathlib
The carrier is Mathlib's DualNumber, i.e. TrivSqZeroExt of a ring over itself, together with its fstHom; the ambient category ProartinianCat, the classes IsProartinian, IsResidueAlgebra and IsLocalProartinianAlgebra, and the terminal object residueField are the project's own notions.
Where it is used
The dual numbers are the test object of deformation theory: morphisms from a universal deformation ring to k[\varepsilon] compute the tangent space of the deformation functor, which is identified with a Galois cohomology group and bounded in the modularity-lifting argument.
References
- M. Schlessinger, Functors of Artin rings, Transactions of the American Mathematical Society 130 (1968), 208β222
- B. Mazur, Deforming Galois representations, in: Galois Groups over β, Mathematical Sciences Research Institute Publications 16, Springer, 1989, 385β437
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1β154, Β§2
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 76 lines
- 12 declarations
- used in the statements of 0 theorems and imported by 1 proofs
- imports 1 definition modules
Source file: Definitions/Def_Deformations_DualNumbers.lean
Imported by
- no other definition module
Declarations
- lemma
Deformation.ProartinianCat.residue_inl_fst_eq - def
Deformation.ProartinianCat.dualNumbers - def
Deformation.ProartinianCat.dualNumbersFst - lemma
Deformation.ProartinianCat.eq_dualNumbersFst
Source
import Mathlib import Definitions.Def_Deformations_ProartinianCat set_option autoImplicit false universe u open CategoryTheory IsLocalRing TrivSqZeroExt open scoped DualNumber namespace Deformation local notation3:max "π΄" π:max => (IsLocalRing.ResidueField π) namespace ProartinianCat variable (π : Type u) [CommRing π] [IsLocalRing π] instance : Module.Finite (π΄ π) ((π΄ π)[Ξ΅]) := inferInstanceAs (Module.Finite (π΄ π) ((π΄ π) Γ (π΄ π))) instance : IsArtinianRing ((π΄ π)[Ξ΅]) := IsArtinianRing.of_finite (π΄ π) ((π΄ π)[Ξ΅]) instance : TopologicalSpace ((π΄ π)[Ξ΅]) := β₯ instance : DiscreteTopology ((π΄ π)[Ξ΅]) := β¨rflβ© instance : IsLocalHom (algebraMap π ((π΄ π)[Ξ΅])) where map_nonunit a ha := by rw [show algebraMap π ((π΄ π)[Ξ΅]) a = TrivSqZeroExt.inl (algebraMap π (π΄ π) a) from rfl, TrivSqZeroExt.isUnit_inl_iff] at ha exact (isUnit_map_iff (algebraMap π (π΄ π)) a).mp ha lemma residue_inl_fst_eq (y : (π΄ π)[Ξ΅]) : residue ((π΄ π)[Ξ΅]) (TrivSqZeroExt.inl y.fst) = residue ((π΄ π)[Ξ΅]) y := by refine Ideal.Quotient.eq.mpr ?_ have h3 : TrivSqZeroExt.inl y.fst - y = -TrivSqZeroExt.inr y.snd := by ext <;> simp rw [h3] refine neg_mem (IsLocalRing.mem_maximalIdeal _ |>.mpr ?_) rw [mem_nonunits_iff, TrivSqZeroExt.isUnit_inr_iff] exact fun h => (not_subsingleton (π΄ π)) h instance : IsResidueAlgebra π ((π΄ π)[Ξ΅]) where isSurjective' := by intro x obtain β¨y, rflβ© := Ideal.Quotient.mk_surjective x obtain β¨a, haβ© := IsLocalRing.residue_surjective (R := π) y.fst refine β¨a, ?_β© have h1 : algebraMap π ((π΄ π)[Ξ΅]) a = TrivSqZeroExt.inl y.fst := by rw [show algebraMap π ((π΄ π)[Ξ΅]) a = TrivSqZeroExt.inl (algebraMap π (π΄ π) a) from rfl, show algebraMap π (π΄ π) a = residue π a from rfl, ha] calc algebraMap π (π΄ ((π΄ π)[Ξ΅])) a = residue ((π΄ π)[Ξ΅]) (algebraMap π ((π΄ π)[Ξ΅]) a) := rfl _ = residue ((π΄ π)[Ξ΅]) (TrivSqZeroExt.inl y.fst) := by rw [h1] _ = (Ideal.Quotient.mk (maximalIdeal ((π΄ π)[Ξ΅]))) y := residue_inl_fst_eq π y instance : IsLocalProartinianAlgebra π ((π΄ π)[Ξ΅]) := β¨β© noncomputable def dualNumbers : ProartinianCat π := .of π ((π΄ π)[Ξ΅]) instance : DiscreteTopology (dualNumbers π) := inferInstanceAs (DiscreteTopology ((π΄ π)[Ξ΅])) noncomputable def dualNumbersFst : dualNumbers π βΆ residueField where hom := β¨TrivSqZeroExt.fstHom π (π΄ π) (π΄ π), continuous_of_discreteTopologyβ© lemma eq_dualNumbersFst (f : dualNumbers π βΆ residueField) : f = dualNumbersFst π := Subsingleton.elim _ _ end ProartinianCat end Deformation
Statements phrased using this module (0)
No statement module imports it directly (it is used through other definition modules or by proofs).