import Mathlib import Definitions.Def_Deformations_TraceAlgebra set_option autoImplicit false universe u open CategoryTheory Function IsLocalRing namespace Deformation section ConjQuot variable {n : Type} [Fintype n] [DecidableEq n] variable {G : Type u} [Group G] [TopologicalSpace G] variable {π“ž : Type u} [CommRing π“ž] [IsLocalRing π“ž] open ProartinianCat variable (n) in noncomputable def conjQuotSubfunctor (F : Subfunctor (repnFunctor n G π“ž)) : Subfunctor (repnQuotFunctor n G π“ž) where obj R := (toRepnQuot n G π“ž).app R '' F.obj R map {R S} f := by rintro _ ⟨ρ', hρ', rfl⟩ exact ⟨(repnFunctor n G π“ž).map f ρ', F.map f hρ', rfl⟩ variable (n) in lemma mem_conjQuotSubfunctor_obj_iff {F : Subfunctor (repnFunctor n G π“ž)} {R : ProartinianCat π“ž} (q : (repnQuotFunctor n G π“ž).obj R) : q ∈ (conjQuotSubfunctor n F).obj R ↔ βˆƒ ρ' ∈ F.obj R, (Quotient.mk'' ρ' : (repnQuotFunctor n G π“ž).obj R) = q := by constructor Β· rintro ⟨ρ', hρ', rfl⟩ exact ⟨ρ', hρ', rfl⟩ Β· rintro ⟨ρ', hρ', rfl⟩ exact ⟨ρ', hρ', rfl⟩ variable (n) in lemma mk_mem_conjQuotSubfunctor_obj {F : Subfunctor (repnFunctor n G π“ž)} {R : ProartinianCat π“ž} {ρ' : G β†’β‚œ* GL n R} (hρ' : ρ' ∈ F.obj R) : (Quotient.mk'' ρ' : (repnQuotFunctor n G π“ž).obj R) ∈ (conjQuotSubfunctor n F).obj R := ⟨ρ', hρ', rfl⟩ variable (n) in lemma conjQuotSubfunctor_mono {F F' : Subfunctor (repnFunctor n G π“ž)} (h : F ≀ F') : conjQuotSubfunctor n F ≀ conjQuotSubfunctor n F' := by rintro R _ ⟨ρ', hρ', rfl⟩ exact ⟨ρ', h _ hρ', rfl⟩ variable (n) in noncomputable def condLiftToDeformation (F : Subfunctor (repnFunctor n G π“ž)) : F.toFunctor ⟢ (conjQuotSubfunctor n F).toFunctor where app R := TypeCat.ofHom fun ρ' => ⟨Quotient.mk'' ρ'.1, mk_mem_conjQuotSubfunctor_obj n ρ'.2⟩ naturality R S f := by ext ρ' rfl variable (n) in lemma condLiftToDeformation_surjective (F : Subfunctor (repnFunctor n G π“ž)) (R : ProartinianCat π“ž) : Function.Surjective ((condLiftToDeformation n F).app R) := by rintro ⟨q, hq⟩ obtain ⟨ρ', hρ', hq'⟩ := (mem_conjQuotSubfunctor_obj_iff n q).mp hq exact ⟨⟨ρ', hρ'⟩, Subtype.ext hq'⟩ end ConjQuot section Assembly variable {n : Type} [Fintype n] [DecidableEq n] variable {G : Type u} [Group G] [TopologicalSpace G] variable {π“ž : Type u} [CommRing π“ž] [IsLocalRing π“ž] open ProartinianCat variable (n) in def ConjStable (F : Subfunctor (repnFunctor n G π“ž)) : Prop := βˆ€ {A : ProartinianCat π“ž} {ρ' : G β†’β‚œ* GL n A}, ρ' ∈ F.obj A β†’ βˆ€ {Ξ³ : ConjAct (GL n A)}, Ξ³ ∈ conjKer (n := n) A β†’ Ξ³ β€’ ρ' ∈ F.obj A variable (n) in def ReflectedByInjective (F : Subfunctor (repnFunctor n G π“ž)) : Prop := βˆ€ {T A : ProartinianCat π“ž} (ΞΉ : T ⟢ A), Function.Injective ΞΉ.hom β†’ βˆ€ {Οƒ : G β†’β‚œ* GL n T}, (repnFunctor n G π“ž).map ΞΉ Οƒ ∈ F.obj A β†’ Οƒ ∈ F.obj T end Assembly end Deformation