import Mathlib.RingTheory.AdicCompletion.Basic import Mathlib.RingTheory.DiscreteValuationRing.Basic import Mathlib.RingTheory.Noetherian.Basic import Definitions.Def_GaloisRep_Adic namespace GaloisRep structure DeformationRingData (π’ͺ : Type) [CommRing π’ͺ] [IsDomain π’ͺ] [IsDiscreteValuationRing π’ͺ] [IsAdicComplete (IsLocalRing.maximalIdeal π’ͺ) π’ͺ] (ρbar : ResidualGaloisRep (IsLocalRing.ResidueField π’ͺ)) (π’Ÿ : βˆ€ ⦃A : Type⦄ [CommRing A] [IsLocalRing A] [Algebra π’ͺ A], GaloisRepAdic A β†’ Prop) : Type 1 where R : Type [instCommRing : CommRing R] [instIsLocalRing : IsLocalRing R] [instIsNoetherianRing : IsNoetherianRing R] [instIsAdicComplete : IsAdicComplete (IsLocalRing.maximalIdeal R) R] [instAlgebra : Algebra π’ͺ R] [instIsLocalHom : IsLocalHom (algebraMap π’ͺ R)] residue_surjective : Function.Surjective (IsLocalRing.residue R ∘ algebraMap π’ͺ R) absIrr : ρbar.IsAbsolutelyIrreducible ρ : GaloisRepAdic R isOfType : π’Ÿ ρ residual_isEquiv : ρ.residual.IsEquiv (ρbar.baseChangeAlong (IsLocalRing.ResidueField.map (algebraMap π’ͺ R))) universal : βˆ€ (A : Type) [CommRing A] [IsLocalRing A] [IsNoetherianRing A] [IsAdicComplete (IsLocalRing.maximalIdeal A) A] [Algebra π’ͺ A] [IsLocalHom (algebraMap π’ͺ A)], Function.Surjective (IsLocalRing.residue A ∘ algebraMap π’ͺ A) β†’ βˆ€ ρA : GaloisRepAdic A, π’Ÿ ρA β†’ ρA.residual.IsEquiv (ρbar.baseChangeAlong (IsLocalRing.ResidueField.map (algebraMap π’ͺ A))) β†’ βˆƒ! Ο† : R →ₐ[π’ͺ] A, βˆƒ hΟ† : IsLocalHom (Ο† : R β†’+* A), (ρ.baseChangeAlong (Ο† : R β†’+* A) hΟ†).IsEquiv ρA attribute [instance] DeformationRingData.instCommRing DeformationRingData.instIsLocalRing DeformationRingData.instIsNoetherianRing DeformationRingData.instIsAdicComplete DeformationRingData.instAlgebra DeformationRingData.instIsLocalHom end GaloisRep