import Definitions.Def_ModularCurve_FullLevelSemistableCovering set_option autoImplicit false noncomputable section namespace ModularCurve.FullLevel.SemistableCovering open AlgebraicCurve IsLocalRing 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'))} variable (๐’ž : SemistableCovering q M' A W) def sumFbar : CuspidalType.ProjLine q โŠ• โ†ฅW โ†’ Type | .inl โ„“ => ๐’ž.FIg โ„“ | .inr s => ๐’ž.FSS s instance instFieldSumFbar : โˆ€ j, Field (๐’ž.sumFbar j) | .inl โ„“ => ๐’ž.instFieldIg โ„“ | .inr s => ๐’ž.instFieldSS s instance instAlgebraSumFbar : โˆ€ j, Algebra (ResidueField A) (๐’ž.sumFbar j) | .inl โ„“ => ๐’ž.instAlgebraIg โ„“ | .inr s => ๐’ž.instAlgebraSS s def sumChart : โˆ€ j, ComponentChart A (fieldBar q M') (๐’ž.sumFbar j) | .inl โ„“ => ๐’ž.CIg โ„“ | .inr s => ๐’ž.CSS s def sumNode : โˆ€ j, CuspidalType.ProjLine q ร— โ†ฅW โ†’ Place (ResidueField A) (๐’ž.sumFbar j) | .inl โ„“ => fun p => ๐’ž.xs โ„“ p.2 | .inr s => fun p => ๐’ž.xt p.1 s instance instHasPrincipalDivisorsSumFbar : โˆ€ j, HasPrincipalDivisors (ResidueField A) (๐’ž.sumFbar j) | .inl โ„“ => ๐’ž.hasPrincipalDivisors_Ig โ„“ | .inr s => ๐’ž.hasPrincipalDivisors_SS s theorem isRational_sumFbar : โˆ€ j (x : Place (ResidueField A) (๐’ž.sumFbar j)), x.IsRational | .inl โ„“, x => ๐’ž.isRational_Ig โ„“ x | .inr s, x => ๐’ž.isRational_SS s x @[simp] theorem sumChart_inl (โ„“ : CuspidalType.ProjLine q) : ๐’ž.sumChart (Sum.inl โ„“) = ๐’ž.CIg โ„“ := rfl @[simp] theorem sumChart_inr (s : โ†ฅW) : ๐’ž.sumChart (Sum.inr s) = ๐’ž.CSS s := rfl @[simp] theorem sumNode_inl (โ„“ : CuspidalType.ProjLine q) (p : CuspidalType.ProjLine q ร— โ†ฅW) : ๐’ž.sumNode (Sum.inl โ„“) p = ๐’ž.xs โ„“ p.2 := rfl @[simp] theorem sumNode_inr (s : โ†ฅW) (p : CuspidalType.ProjLine q ร— โ†ฅW) : ๐’ž.sumNode (Sum.inr s) p = ๐’ž.xt p.1 s := rfl theorem sumFbar_inl (โ„“ : CuspidalType.ProjLine q) : ๐’ž.sumFbar (Sum.inl โ„“) = ๐’ž.FIg โ„“ := rfl theorem sumFbar_inr (s : โ†ฅW) : ๐’ž.sumFbar (Sum.inr s) = ๐’ž.FSS s := rfl abbrev teleN (_๐’ž : SemistableCovering q M' A W) : โ„• := Nat.card (CuspidalType.ProjLine q โŠ• โ†ฅW) abbrev teleM (_๐’ž : SemistableCovering q M' A W) : โ„• := Nat.card (CuspidalType.ProjLine q ร— โ†ฅW) def eIdx (๐’ž : SemistableCovering q M' A W) : CuspidalType.ProjLine q โŠ• โ†ฅW โ‰ƒ Fin ๐’ž.teleN := Finite.equivFin _ def eEdge (๐’ž : SemistableCovering q M' A W) : CuspidalType.ProjLine q ร— โ†ฅW โ‰ƒ Fin ๐’ž.teleM := Finite.equivFin _ def eIg (๐’ž : SemistableCovering q M' A W) (โ„“ : CuspidalType.ProjLine q) : Fin ๐’ž.teleN := ๐’ž.eIdx (Sum.inl โ„“) def eSS (๐’ž : SemistableCovering q M' A W) (s : โ†ฅW) : Fin ๐’ž.teleN := ๐’ž.eIdx (Sum.inr s) abbrev eAn (๐’ž : SemistableCovering q M' A W) : CuspidalType.ProjLine q ร— โ†ฅW โ‰ƒ Fin ๐’ž.teleM := ๐’ž.eEdge def teleFbar (i : Fin ๐’ž.teleN) : Type := ๐’ž.sumFbar (๐’ž.eIdx.symm i) instance instFieldTeleFbar (i : Fin ๐’ž.teleN) : Field (๐’ž.teleFbar i) := ๐’ž.instFieldSumFbar _ instance instAlgebraTeleFbar (i : Fin ๐’ž.teleN) : Algebra (ResidueField A) (๐’ž.teleFbar i) := ๐’ž.instAlgebraSumFbar _ instance instHasPrincipalDivisorsTeleFbar (i : Fin ๐’ž.teleN) : HasPrincipalDivisors (ResidueField A) (๐’ž.teleFbar i) := ๐’ž.instHasPrincipalDivisorsSumFbar _ theorem isRational_teleFbar (i : Fin ๐’ž.teleN) (x : Place (ResidueField A) (๐’ž.teleFbar i)) : x.IsRational := ๐’ž.isRational_sumFbar _ x def teleChart (i : Fin ๐’ž.teleN) : ComponentChart A (fieldBar q M') (๐’ž.teleFbar i) := ๐’ž.sumChart (๐’ž.eIdx.symm i) def teleAn (e : Fin ๐’ž.teleM) : Annulus A (fieldBar q M') := ๐’ž.An (๐’ž.eEdge.symm e).1 (๐’ž.eEdge.symm e).2 def teleAn' (e : Fin ๐’ž.teleM) : Annulus A (fieldBar q M') := ๐’ž.An' (๐’ž.eEdge.symm e).1 (๐’ž.eEdge.symm e).2 def teleWidth (ฯ€ : A) (e : Fin ๐’ž.teleM) : โ„• := by classical exact if h : โˆƒ w : โ„•, 1 โ‰ค w โˆง โˆƒ u : Aหฃ, (๐’ž.teleAn e).modulus = u * ฯ€ ^ w then h.choose else 0 theorem teleWidth_spec (ฯ€ : A) (e : Fin ๐’ž.teleM) (h : โˆƒ w : โ„•, 1 โ‰ค w โˆง โˆƒ u : Aหฃ, (๐’ž.teleAn e).modulus = u * ฯ€ ^ w) : 1 โ‰ค ๐’ž.teleWidth ฯ€ e โˆง โˆƒ u : Aหฃ, (๐’ž.teleAn e).modulus = u * ฯ€ ^ ๐’ž.teleWidth ฯ€ e := by classical have : ๐’ž.teleWidth ฯ€ e = h.choose := by unfold teleWidth; exact dif_pos h rw [this]; exact h.choose_spec def teleSrc (e : Fin ๐’ž.teleM) : Fin ๐’ž.teleN := ๐’ž.eIdx (Sum.inl (๐’ž.eEdge.symm e).1) def teleTgt (e : Fin ๐’ž.teleM) : Fin ๐’ž.teleN := ๐’ž.eIdx (Sum.inr (๐’ž.eEdge.symm e).2) def teleXs (e : Fin ๐’ž.teleM) : Place (ResidueField A) (๐’ž.teleFbar (๐’ž.teleSrc e)) := ๐’ž.sumNode (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inl (๐’ž.eEdge.symm e).1))) (๐’ž.eEdge.symm e) def teleXt (e : Fin ๐’ž.teleM) : Place (ResidueField A) (๐’ž.teleFbar (๐’ž.teleTgt e)) := ๐’ž.sumNode (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inr (๐’ž.eEdge.symm e).2))) (๐’ž.eEdge.symm e) theorem teleFbar_def (i : Fin ๐’ž.teleN) : ๐’ž.teleFbar i = ๐’ž.sumFbar (๐’ž.eIdx.symm i) := rfl theorem teleChart_def (i : Fin ๐’ž.teleN) : ๐’ž.teleChart i = ๐’ž.sumChart (๐’ž.eIdx.symm i) := rfl theorem teleFbar_eIdx (j : CuspidalType.ProjLine q โŠ• โ†ฅW) : ๐’ž.teleFbar (๐’ž.eIdx j) = ๐’ž.sumFbar j := by rw [teleFbar_def, Equiv.symm_apply_apply] @[simp] theorem teleSrc_eEdge (โ„“ : CuspidalType.ProjLine q) (s : โ†ฅW) : ๐’ž.teleSrc (๐’ž.eEdge (โ„“, s)) = ๐’ž.eIdx (Sum.inl โ„“) := by simp [teleSrc] @[simp] theorem teleTgt_eEdge (โ„“ : CuspidalType.ProjLine q) (s : โ†ฅW) : ๐’ž.teleTgt (๐’ž.eEdge (โ„“, s)) = ๐’ž.eIdx (Sum.inr s) := by simp [teleTgt] @[simp] theorem teleAn_eEdge (โ„“ : CuspidalType.ProjLine q) (s : โ†ฅW) : ๐’ž.teleAn (๐’ž.eEdge (โ„“, s)) = ๐’ž.An โ„“ s := by simp [teleAn] @[simp] theorem teleAn'_eEdge (โ„“ : CuspidalType.ProjLine q) (s : โ†ฅW) : ๐’ž.teleAn' (๐’ž.eEdge (โ„“, s)) = ๐’ž.An' โ„“ s := by simp [teleAn'] theorem eIdx_symm_teleSrc (e : Fin ๐’ž.teleM) : ๐’ž.eIdx.symm (๐’ž.teleSrc e) = Sum.inl (๐’ž.eEdge.symm e).1 := by simp [teleSrc] theorem eIdx_symm_teleTgt (e : Fin ๐’ž.teleM) : ๐’ž.eIdx.symm (๐’ž.teleTgt e) = Sum.inr (๐’ž.eEdge.symm e).2 := by simp [teleTgt] @[simp] theorem eIdx_symm_eIg (โ„“ : CuspidalType.ProjLine q) : ๐’ž.eIdx.symm (๐’ž.eIg โ„“) = Sum.inl โ„“ := by simp [eIg] @[simp] theorem eIdx_symm_eSS (s : โ†ฅW) : ๐’ž.eIdx.symm (๐’ž.eSS s) = Sum.inr s := by simp [eSS] @[simp] theorem teleSrc_eAn (โ„“ : CuspidalType.ProjLine q) (s : โ†ฅW) : ๐’ž.teleSrc (๐’ž.eAn (โ„“, s)) = ๐’ž.eIg โ„“ := ๐’ž.teleSrc_eEdge โ„“ s @[simp] theorem teleTgt_eAn (โ„“ : CuspidalType.ProjLine q) (s : โ†ฅW) : ๐’ž.teleTgt (๐’ž.eAn (โ„“, s)) = ๐’ž.eSS s := ๐’ž.teleTgt_eEdge โ„“ s theorem teleSrc_eq_eIg (e : Fin ๐’ž.teleM) : ๐’ž.teleSrc e = ๐’ž.eIg (๐’ž.eAn.symm e).1 := rfl theorem teleTgt_eq_eSS (e : Fin ๐’ž.teleM) : ๐’ž.teleTgt e = ๐’ž.eSS (๐’ž.eAn.symm e).2 := rfl theorem teleFbar_eIg (โ„“ : CuspidalType.ProjLine q) : ๐’ž.teleFbar (๐’ž.eIg โ„“) = ๐’ž.FIg โ„“ := ๐’ž.teleFbar_eIdx _ theorem teleFbar_eSS (s : โ†ฅW) : ๐’ž.teleFbar (๐’ž.eSS s) = ๐’ž.FSS s := ๐’ž.teleFbar_eIdx _ theorem eIg_ne_eSS (โ„“ : CuspidalType.ProjLine q) (s : โ†ฅW) : ๐’ž.eIg โ„“ โ‰  ๐’ž.eSS s := fun h => Sum.inl_ne_inr (๐’ž.eIdx.injective h) theorem eIg_injective : Function.Injective ๐’ž.eIg := fun _ _ h => Sum.inl_injective (๐’ž.eIdx.injective h) theorem eSS_injective : Function.Injective ๐’ž.eSS := fun _ _ h => Sum.inr_injective (๐’ž.eIdx.injective h) theorem eIg_or_eSS (i : Fin ๐’ž.teleN) : (โˆƒ โ„“, i = ๐’ž.eIg โ„“) โˆจ โˆƒ s, i = ๐’ž.eSS s := by rcases h : ๐’ž.eIdx.symm i with โ„“ | s ยท exact Or.inl โŸจโ„“, by rw [eIg, โ† h, Equiv.apply_symm_apply]โŸฉ ยท exact Or.inr โŸจs, by rw [eSS, โ† h, Equiv.apply_symm_apply]โŸฉ theorem teleSrc_ne_teleTgt (e : Fin ๐’ž.teleM) : ๐’ž.teleSrc e โ‰  ๐’ž.teleTgt e := fun h => Sum.inl_ne_inr (๐’ž.eIdx.injective h) theorem teleChart_eIdx_iff (P : โˆ€ j : CuspidalType.ProjLine q โŠ• โ†ฅW, ComponentChart A (fieldBar q M') (๐’ž.sumFbar j) โ†’ Prop) (j : CuspidalType.ProjLine q โŠ• โ†ฅW) : P (๐’ž.eIdx.symm (๐’ž.eIdx j)) (๐’ž.teleChart (๐’ž.eIdx j)) โ†” P j (๐’ž.sumChart j) := by rw [teleChart_def, Equiv.symm_apply_apply] theorem teleChart_sumNode_eIdx_iff (P : โˆ€ j : CuspidalType.ProjLine q โŠ• โ†ฅW, ComponentChart A (fieldBar q M') (๐’ž.sumFbar j) โ†’ Place (ResidueField A) (๐’ž.sumFbar j) โ†’ Prop) (j : CuspidalType.ProjLine q โŠ• โ†ฅW) (p : CuspidalType.ProjLine q ร— โ†ฅW) : P (๐’ž.eIdx.symm (๐’ž.eIdx j)) (๐’ž.teleChart (๐’ž.eIdx j)) (๐’ž.sumNode (๐’ž.eIdx.symm (๐’ž.eIdx j)) p) โ†” P j (๐’ž.sumChart j) (๐’ž.sumNode j p) := by rw [teleChart_def, Equiv.symm_apply_apply] theorem teleChart_eIdx_dom (j : CuspidalType.ProjLine q โŠ• โ†ฅW) : (๐’ž.teleChart (๐’ž.eIdx j)).dom = (๐’ž.sumChart j).dom := (๐’ž.teleChart_eIdx_iff (fun _ C => C.dom = (๐’ž.sumChart j).dom) j).2 rfl theorem teleChart_eIdx_integers (j : CuspidalType.ProjLine q โŠ• โ†ฅW) : (๐’ž.teleChart (๐’ž.eIdx j)).integers = (๐’ž.sumChart j).integers := (๐’ž.teleChart_eIdx_iff (fun _ C => C.integers = (๐’ž.sumChart j).integers) j).2 rfl theorem teleChart_eIg_dom (โ„“ : CuspidalType.ProjLine q) : (๐’ž.teleChart (๐’ž.eIg โ„“)).dom = (๐’ž.CIg โ„“).dom := ๐’ž.teleChart_eIdx_dom _ theorem teleChart_eSS_dom (s : โ†ฅW) : (๐’ž.teleChart (๐’ž.eSS s)).dom = (๐’ž.CSS s).dom := ๐’ž.teleChart_eIdx_dom _ theorem teleChart_eIg_integers (โ„“ : CuspidalType.ProjLine q) : (๐’ž.teleChart (๐’ž.eIg โ„“)).integers = (๐’ž.CIg โ„“).integers := ๐’ž.teleChart_eIdx_integers _ theorem teleChart_eSS_integers (s : โ†ฅW) : (๐’ž.teleChart (๐’ž.eSS s)).integers = (๐’ž.CSS s).integers := ๐’ž.teleChart_eIdx_integers _ theorem forall_teleChart_iff (Q : โˆ€ (F : Type) [Field F] [Algebra (ResidueField A) F], ComponentChart A (fieldBar q M') F โ†’ Prop) : (โˆ€ i, Q (๐’ž.teleFbar i) (๐’ž.teleChart i)) โ†” (โˆ€ โ„“, Q (๐’ž.FIg โ„“) (๐’ž.CIg โ„“)) โˆง โˆ€ s, Q (๐’ž.FSS s) (๐’ž.CSS s) := by constructor ยท intro h refine โŸจfun โ„“ => ?_, fun s => ?_โŸฉ ยท have := h (๐’ž.eIg โ„“) exact (๐’ž.teleChart_eIdx_iff (fun j C => Q (๐’ž.sumFbar j) C) (Sum.inl โ„“)).1 this ยท have := h (๐’ž.eSS s) exact (๐’ž.teleChart_eIdx_iff (fun j C => Q (๐’ž.sumFbar j) C) (Sum.inr s)).1 this ยท rintro โŸจhI, hSโŸฉ i show Q (๐’ž.sumFbar (๐’ž.eIdx.symm i)) (๐’ž.sumChart (๐’ž.eIdx.symm i)) rcases ๐’ž.eIdx.symm i with โ„“ | s ยท exact hI โ„“ ยท exact hS s theorem forall_teleEdge_iff (R : โˆ€ (Fโ‚ Fโ‚‚ : Type) [Field Fโ‚] [Algebra (ResidueField A) Fโ‚] [Field Fโ‚‚] [Algebra (ResidueField A) Fโ‚‚], ComponentChart A (fieldBar q M') Fโ‚ โ†’ Place (ResidueField A) Fโ‚ โ†’ ComponentChart A (fieldBar q M') Fโ‚‚ โ†’ Place (ResidueField A) Fโ‚‚ โ†’ Annulus A (fieldBar q M') โ†’ Annulus A (fieldBar q M') โ†’ Prop) : (โˆ€ e, R _ _ (๐’ž.teleChart (๐’ž.teleSrc e)) (๐’ž.teleXs e) (๐’ž.teleChart (๐’ž.teleTgt e)) (๐’ž.teleXt e) (๐’ž.teleAn e) (๐’ž.teleAn' e)) โ†” โˆ€ โ„“ s, R _ _ (๐’ž.CIg โ„“) (๐’ž.xs โ„“ s) (๐’ž.CSS s) (๐’ž.xt โ„“ s) (๐’ž.An โ„“ s) (๐’ž.An' โ„“ s) := by have key : โˆ€ p : CuspidalType.ProjLine q ร— โ†ฅW, R _ _ (๐’ž.sumChart (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inl p.1)))) (๐’ž.sumNode (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inl p.1))) p) (๐’ž.sumChart (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inr p.2)))) (๐’ž.sumNode (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inr p.2))) p) (๐’ž.An p.1 p.2) (๐’ž.An' p.1 p.2) โ†” R _ _ (๐’ž.CIg p.1) (๐’ž.xs p.1 p.2) (๐’ž.CSS p.2) (๐’ž.xt p.1 p.2) (๐’ž.An p.1 p.2) (๐’ž.An' p.1 p.2) := by intro p rw [Equiv.symm_apply_apply, Equiv.symm_apply_apply] rfl have tele : โˆ€ e, R _ _ (๐’ž.teleChart (๐’ž.teleSrc e)) (๐’ž.teleXs e) (๐’ž.teleChart (๐’ž.teleTgt e)) (๐’ž.teleXt e) (๐’ž.teleAn e) (๐’ž.teleAn' e) โ†” (fun p : CuspidalType.ProjLine q ร— โ†ฅW => R _ _ (๐’ž.sumChart (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inl p.1)))) (๐’ž.sumNode (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inl p.1))) p) (๐’ž.sumChart (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inr p.2)))) (๐’ž.sumNode (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inr p.2))) p) (๐’ž.An p.1 p.2) (๐’ž.An' p.1 p.2)) (๐’ž.eEdge.symm e) := fun _ => Iff.rfl constructor ยท intro h โ„“ s have h1 := (tele _).1 (h (๐’ž.eEdge (โ„“, s))) rw [Equiv.symm_apply_apply] at h1 exact (key (โ„“, s)).1 h1 ยท intro h e exact (tele e).2 ((key (๐’ž.eEdge.symm e)).2 (h _ _)) theorem forall_teleEdge_idx_iff (R : โˆ€ (Fโ‚ Fโ‚‚ : Type) [Field Fโ‚] [Algebra (ResidueField A) Fโ‚] [Field Fโ‚‚] [Algebra (ResidueField A) Fโ‚‚], Fin ๐’ž.teleN โ†’ Fin ๐’ž.teleN โ†’ ComponentChart A (fieldBar q M') Fโ‚ โ†’ Place (ResidueField A) Fโ‚ โ†’ ComponentChart A (fieldBar q M') Fโ‚‚ โ†’ Place (ResidueField A) Fโ‚‚ โ†’ Annulus A (fieldBar q M') โ†’ Annulus A (fieldBar q M') โ†’ Prop) : (โˆ€ e, R _ _ (๐’ž.teleSrc e) (๐’ž.teleTgt e) (๐’ž.teleChart (๐’ž.teleSrc e)) (๐’ž.teleXs e) (๐’ž.teleChart (๐’ž.teleTgt e)) (๐’ž.teleXt e) (๐’ž.teleAn e) (๐’ž.teleAn' e)) โ†” โˆ€ โ„“ s, R _ _ (๐’ž.eIg โ„“) (๐’ž.eSS s) (๐’ž.CIg โ„“) (๐’ž.xs โ„“ s) (๐’ž.CSS s) (๐’ž.xt โ„“ s) (๐’ž.An โ„“ s) (๐’ž.An' โ„“ s) := by have key : โˆ€ p : CuspidalType.ProjLine q ร— โ†ฅW, R _ _ (๐’ž.eIg p.1) (๐’ž.eSS p.2) (๐’ž.sumChart (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inl p.1)))) (๐’ž.sumNode (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inl p.1))) p) (๐’ž.sumChart (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inr p.2)))) (๐’ž.sumNode (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inr p.2))) p) (๐’ž.An p.1 p.2) (๐’ž.An' p.1 p.2) โ†” R _ _ (๐’ž.eIg p.1) (๐’ž.eSS p.2) (๐’ž.CIg p.1) (๐’ž.xs p.1 p.2) (๐’ž.CSS p.2) (๐’ž.xt p.1 p.2) (๐’ž.An p.1 p.2) (๐’ž.An' p.1 p.2) := by intro p rw [Equiv.symm_apply_apply, Equiv.symm_apply_apply] rfl have tele : โˆ€ e, R _ _ (๐’ž.teleSrc e) (๐’ž.teleTgt e) (๐’ž.teleChart (๐’ž.teleSrc e)) (๐’ž.teleXs e) (๐’ž.teleChart (๐’ž.teleTgt e)) (๐’ž.teleXt e) (๐’ž.teleAn e) (๐’ž.teleAn' e) โ†” (fun p : CuspidalType.ProjLine q ร— โ†ฅW => R _ _ (๐’ž.eIg p.1) (๐’ž.eSS p.2) (๐’ž.sumChart (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inl p.1)))) (๐’ž.sumNode (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inl p.1))) p) (๐’ž.sumChart (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inr p.2)))) (๐’ž.sumNode (๐’ž.eIdx.symm (๐’ž.eIdx (Sum.inr p.2))) p) (๐’ž.An p.1 p.2) (๐’ž.An' p.1 p.2)) (๐’ž.eEdge.symm e) := fun _ => Iff.rfl constructor ยท intro h โ„“ s have h1 := (tele _).1 (h (๐’ž.eEdge (โ„“, s))) rw [Equiv.symm_apply_apply] at h1 exact (key (โ„“, s)).1 h1 ยท intro h e exact (tele e).2 ((key (๐’ž.eEdge.symm e)).2 (h _ _)) example (s : โ†ฅW) : (๐’ž.teleChart (๐’ž.eSS s)).integers = (๐’ž.CSS s).integers โˆง (๐’ž.teleChart (๐’ž.eSS s)).dom = (๐’ž.CSS s).dom := โŸจ๐’ž.teleChart_eSS_integers s, ๐’ž.teleChart_eSS_dom sโŸฉ example (Q : โˆ€ (F : Type) [Field F] [Algebra (ResidueField A) F], ComponentChart A (fieldBar q M') F โ†’ Prop) (hI : โˆ€ โ„“, Q _ (๐’ž.CIg โ„“)) (hS : โˆ€ s, Q _ (๐’ž.CSS s)) (i : Fin ๐’ž.teleN) : Q _ (๐’ž.teleChart i) := (๐’ž.forall_teleChart_iff Q).2 โŸจhI, hSโŸฉ i end ModularCurve.FullLevel.SemistableCovering end