import Definitions.Def_ModularCurve_FullLevelSemistableCoveringW2 set_option autoImplicit false noncomputable section namespace ModularCurve.FullLevel open AlgebraicCurve IsLocalRing DrinfeldCurve CongruenceSubgroup open scoped MatrixGroups attribute [local instance] ModularCurve.instDecidableEqResidueFieldSemistable ModularCurve.instAlgebraResidueFieldModularFunctionFieldCSemistable variable {q : β„•} [Fact q.Prime] {M' : β„•} [NeZero M'] {A : ValuationSubring (AlgebraicClosure β„š)} variable {W : Finset (Place (ResidueField A) (modularFunctionFieldC (ResidueField A) M'))} namespace SemistableCovering def NaturalityClauses (π’ž : SemistableCovering q M' A W) : Prop := (βˆ€ Ο„ ∈ A.inertiaSubgroupIn β„š, let g := ModularCurve.arithmeticGalois (xHFunctionField (q ^ 2 * M') (levelH q M')) Ο„ βˆ€ s, (βˆ€ f : fieldBar q M', f ∈ (π’ž.CSS s).integers ↔ g β€’ f ∈ (π’ž.CSS s).integers) ∧ (βˆ€ P, P ∈ (π’ž.CSS s).dom ↔ g β€’ P ∈ (π’ž.CSS s).dom) ∧ βˆƒ Ο† : π’ž.FSS s ≃ₐ[ResidueField A] π’ž.FSS s, InducesOnChart (π’ž.CSS s) g Ο†.toRingEquiv ∧ βˆ€ P ∈ (π’ž.CSS s).dom, (π’ž.CSS s).placeMap (g β€’ P) = SemilinearAut.ofAlgAut Ο† β€’ (π’ž.CSS s).placeMap P) ∧ (βˆ€ (ΞΆ : Idx q) (Ξ³ : SL(2, β„€)), Ξ³ ∈ Gamma0 M' β†’ βˆ€ s, let g := SemilinearAut.ofAlgAut (levelAutBar q M' ΞΆ γ⁻¹) βˆƒ Ο† : π’ž.FSS s ≃ₐ[ResidueField A] π’ž.FSS s, InducesOnChart (π’ž.CSS s) g Ο†.toRingEquiv ∧ βˆ€ P ∈ (π’ž.CSS s).dom, (π’ž.CSS s).placeMap (g β€’ P) = SemilinearAut.ofAlgAut Ο† β€’ (π’ž.CSS s).placeMap P) ∧ (βˆ€ (ΞΆ : Idx q) (Ξ³ : SL(2, β„€)), Ξ³ ∈ Gamma0 M' β†’ (βˆƒ t : ZMod q, redQ q Ξ³ = CuspidalType.unipotent q t) β†’ let g := SemilinearAut.ofAlgAut (levelAutBar q M' ΞΆ γ⁻¹) (βˆ€ P, P ∈ (π’ž.CIg (lineInfty q)).dom ↔ g β€’ P ∈ (π’ž.CIg (lineInfty q)).dom) ∧ InducesOnChart (π’ž.CIg (lineInfty q)) g (RingEquiv.refl _) ∧ (βˆ€ P ∈ (π’ž.CIg (lineInfty q)).dom, (π’ž.CIg (lineInfty q)).placeMap (g β€’ P) = (π’ž.CIg (lineInfty q)).placeMap P)) ∧ (βˆƒ ΞΆβ‚€ : Idx q, βˆ€ (Ξ³ : SL(2, β„€)), Ξ³ ∈ Gamma0 M' β†’ βˆ€ β„“, ((π’ž.CIg β„“).comap (levelAutBar q M' ΞΆβ‚€ γ⁻¹)).integers = (π’ž.CIg ((redQ q Ξ³)⁻¹ β€’ β„“)).integers ∧ ((π’ž.CIg β„“).comap (levelAutBar q M' ΞΆβ‚€ γ⁻¹)).dom = (π’ž.CIg ((redQ q Ξ³)⁻¹ β€’ β„“)).dom ∧ βˆ€ s, ((π’ž.An β„“ s).comap (levelAutBar q M' ΞΆβ‚€ γ⁻¹)).dom = (π’ž.An ((redQ q Ξ³)⁻¹ β€’ β„“) s).dom) end SemistableCovering end ModularCurve.FullLevel end