import Mathlib import Definitions.Def_Deformations_ProartinianCat set_option autoImplicit false universe u namespace Deformation open CategoryTheory IsLocalRing MvPowerSeries local notation3:max "𝓴" π“ž:max => (IsLocalRing.ResidueField π“ž) namespace ProartinianCat section Nilpotence variable {R : Type u} [CommRing R] [TopologicalSpace R] [IsTopologicalRing R] variable [IsLocalRing R] [IsProartinian R] lemma isTopologicallyNilpotent_of_mem_maximalIdeal {x : R} (hx : x ∈ maximalIdeal R) : IsTopologicallyNilpotent x := by rw [IsTopologicallyNilpotent, (IsLinearTopology.hasBasis_open_ideal (R := R)).tendsto_right_iff] intro I hI obtain ⟨N, hN⟩ := exists_maximalIdeal_pow_le_of_isProartinian I hI filter_upwards [Filter.eventually_ge_atTop N] with n hn exact hN (Ideal.pow_le_pow_right hn (Ideal.pow_mem_pow hx n)) lemma hasEval_of_forall_mem_maximalIdeal {Οƒ : Type*} [Finite Οƒ] {x : Οƒ β†’ R} (hx : βˆ€ j, x j ∈ maximalIdeal R) : MvPowerSeries.HasEval x where hpow j := isTopologicallyNilpotent_of_mem_maximalIdeal (hx j) tendsto_zero := by rw [Filter.cofinite_eq_bot] exact Filter.tendsto_bot end Nilpotence section Object open MvPowerSeries.WithPiTopology variable (π“ž : Type u) [CommRing π“ž] (Οƒ : Type) omit [CommRing π“ž] in lemma compactSpace_mvPowerSeries [TopologicalSpace π“ž] [CompactSpace π“ž] : CompactSpace (MvPowerSeries Οƒ π“ž) := inferInstanceAs (CompactSpace ((Οƒ β†’β‚€ β„•) β†’ π“ž)) lemma X_mem_maximalIdeal [IsLocalRing π“ž] (j : Οƒ) : MvPowerSeries.X j ∈ maximalIdeal (MvPowerSeries Οƒ π“ž) := by rw [mem_maximalIdeal, mem_nonunits_iff, MvPowerSeries.isUnit_iff_constantCoeff, MvPowerSeries.constantCoeff_X] exact fun h => h.ne_zero rfl lemma isProartinian_mvPowerSeries [IsLocalRing π“ž] [IsNoetherianRing π“ž] [TopologicalSpace π“ž] [IsTopologicalRing π“ž] [IsAdicTopology π“ž] [CompactSpace π“ž] : IsProartinian (MvPowerSeries Οƒ π“ž) := by haveI : CompactSpace (MvPowerSeries Οƒ π“ž) := compactSpace_mvPowerSeries π“ž Οƒ exact { isArtinianRing_quotient := fun I hI => by have : Finite (MvPowerSeries Οƒ π“ž β§Έ I) := AddSubgroup.quotient_finite_of_isOpen _ hI exact isArtinian_of_finite } lemma isLocalHom_algebraMap_mvPowerSeries [IsLocalRing π“ž] : IsLocalHom (algebraMap π“ž (MvPowerSeries Οƒ π“ž)) := by constructor intro a ha rw [← MvPowerSeries.c_eq_algebraMap, MvPowerSeries.isUnit_iff_constantCoeff, MvPowerSeries.constantCoeff_C] at ha exact ha lemma isResidueAlgebra_mvPowerSeries [IsLocalRing π“ž] : IsResidueAlgebra π“ž (MvPowerSeries Οƒ π“ž) := by constructor intro y obtain ⟨f, rfl⟩ := Ideal.Quotient.mk_surjective y refine ⟨MvPowerSeries.constantCoeff f, ?_⟩ show residue _ _ = residue _ _ rw [← sub_eq_zero, ← map_sub, residue_eq_zero_iff, mem_maximalIdeal, mem_nonunits_iff, MvPowerSeries.isUnit_iff_constantCoeff] simp [← MvPowerSeries.c_eq_algebraMap] lemma isLocalProartinianAlgebra_mvPowerSeries [IsLocalRing π“ž] [IsNoetherianRing π“ž] [TopologicalSpace π“ž] [IsTopologicalRing π“ž] [IsAdicTopology π“ž] [CompactSpace π“ž] : IsLocalProartinianAlgebra π“ž (MvPowerSeries Οƒ π“ž) := by haveI : IsProartinian (MvPowerSeries Οƒ π“ž) := isProartinian_mvPowerSeries π“ž Οƒ haveI : IsLocalHom (algebraMap π“ž (MvPowerSeries Οƒ π“ž)) := isLocalHom_algebraMap_mvPowerSeries π“ž Οƒ haveI : IsResidueAlgebra π“ž (MvPowerSeries Οƒ π“ž) := isResidueAlgebra_mvPowerSeries π“ž Οƒ exact ⟨⟩ end Object section Category variable (π“ž : Type u) [CommRing π“ž] [IsLocalRing π“ž] [IsNoetherianRing π“ž] variable [Finite (ResidueField π“ž)] [IsAdicComplete (maximalIdeal π“ž) π“ž] noncomputable def mvPowerSeriesObj (n : β„•) : ProartinianCat π“ž where carrier := MvPowerSeries (Fin n) π“ž topologicalSpace := letI := (maximalIdeal π“ž).adicTopology WithPiTopology.instTopologicalSpace π“ž isLocalProartinianAlgebra := letI := (maximalIdeal π“ž).adicTopology letI : IsTopologicalRing π“ž := (RingSubgroupsBasis.toRingFilterBasis _).isTopologicalRing letI : IsAdicTopology π“ž := ⟨rfl⟩ letI : CompactSpace π“ž := compactSpace_of_finite_residueField isLocalProartinianAlgebra_mvPowerSeries π“ž (Fin n) variable {π“ž} noncomputable def mvPowerSeriesObjX {n : β„•} (j : Fin n) : (mvPowerSeriesObj π“ž n).carrier := MvPowerSeries.X j lemma mvPowerSeriesObjX_mem_maximalIdeal {n : β„•} (j : Fin n) : mvPowerSeriesObjX (π“ž := π“ž) j ∈ maximalIdeal (mvPowerSeriesObj π“ž n).carrier := X_mem_maximalIdeal π“ž (Fin n) j end Category end ProartinianCat end Deformation