Documentation

Hironaka.Resolution.Analytic.Kol07Thm45.Glue.OverFamilyChain

The glued exceptional family of a chain of gluings #

The resolution of a whole analytic space is glued from the resolutions of the members of an exhaustion by relatively compact open subsets, along their overlaps ([Kol07, Proposition 37]; [Kol07, 44]; [Wlo09, §4.3]); the exceptional divisors of the levels glue with them once their components are matched level to level by a label, the stage of the common blow-up sequence at which each is created [Kol07, Proposition 37, (37.2)]. For a gluing datum G : GlueOver X R π dom over a chain (ι := ULift ℕ, dom monotone), with a simple-normal-crossings family H n on every level and label maps e n on the members with non-empty trace on the overlap with the next level, satisfying the labelled identity on the overlaps (hpair, the conclusion of the locality lemma ClosedSubspace.comap_eq_of_forall_exists_local) and covering every member of the next level that meets the overlap (hsurj: a component of a higher level meeting a lower level restricts to a component of that level), the members glue to a simple-normal-crossings family on the glued space (chainGlueFamily, isSncFamily_chainGlueFamily), locally finite (locallyFinite_chainGlueFamily), indexed by the colimit of the levels' members along the label maps (chainColimitIndex), with each level's members as the pull-backs (comap_ιGlued_chainGlueFamily_mk) and support the preimage of the levels' common support (iUnion_support_chainGlueFamily).

Three general tools carry it.

The labelled compatibility (chainLabelledCompat) has four cases per label and adjacent pair: both levels represented (the identity hpair, the representatives related by mk_eq_mk_succ_iff); the lower level only (the trace on the overlap is empty, both sides are the unit ideal sheaf); the upper only (by hsurj its trace on the overlap is empty, so again both sides are the unit ideal sheaf); neither.

The glued chain family is the exceptional family of the resolution glued along an exhaustion (Hironaka.Resolution.Analytic.Kol07Thm45.ResolutionSncGlobal); the clause that the exceptional locus is a divisor with simple normal crossings ([Kol07, Theorem 45, (3)]; Wlo09, Theorem 2.0.1, (2)) follows.

def Hironaka.chainColimitIndex (Λ : ℕ → Type u) (p : (n : ℕ) → Λ n → Prop) (f : (n : ℕ) → { σ : Λ n // p n σ } → Λ (n + 1)) :

The colimit index of a chain of partial maps f n : {σ // p n σ} → Λ (n+1): the quotient of Σ n, Λ n by the generated equivalence ⟨n, σ⟩ ~ ⟨n+1, f n ⟨σ, h⟩⟩.

Equations
Instances For
    def Hironaka.chainColimitIndex.chainStep (Λ : ℕ → Type u) (p : (n : ℕ) → Λ n → Prop) (f : (n : ℕ) → { σ : Λ n // p n σ } → Λ (n + 1)) (a b : (n : ℕ) × Λ n) :

    The step relation of the colimit: b is the image of the non-empty traced a under the label map.

    Equations
    Instances For
      theorem Hironaka.chainColimitIndex.chainStep_fst_eq {Λ : ℕ → Type u} {p : (n : ℕ) → Λ n → Prop} {f : (n : ℕ) → { σ : Λ n // p n σ } → Λ (n + 1)} {a b : (n : ℕ) × Λ n} (h : chainStep Λ p f a b) :
      b.fst = a.fst + 1

      A step raises the level by one.

      theorem Hironaka.chainColimitIndex.chainStep_unique {Λ : ℕ → Type u} {p : (n : ℕ) → Λ n → Prop} {f : (n : ℕ) → { σ : Λ n // p n σ } → Λ (n + 1)} {a b₁ b₂ : (n : ℕ) × Λ n} (h₁ : chainStep Λ p f a b₁) (h₂ : chainStep Λ p f a b₂) :
      b₁ = b₂

      The step relation is functional.

      theorem Hironaka.chainColimitIndex.fst_le_of_reflTransGen {Λ : ℕ → Type u} {p : (n : ℕ) → Λ n → Prop} {f : (n : ℕ) → { σ : Λ n // p n σ } → Λ (n + 1)} {a c : (n : ℕ) × Λ n} (h : Relation.ReflTransGen (chainStep Λ p f) a c) :
      a.fst ≤ c.fst

      Descendants lie at higher levels.

      theorem Hironaka.chainColimitIndex.eq_of_reflTransGen_of_fst_eq {Λ : ℕ → Type u} {p : (n : ℕ) → Λ n → Prop} {f : (n : ℕ) → { σ : Λ n // p n σ } → Λ (n + 1)} {a c : (n : ℕ) × Λ n} (h : Relation.ReflTransGen (chainStep Λ p f) a c) (hfst : a.fst = c.fst) :
      a = c

      A descendant at the same level is the point itself.

      theorem Hironaka.chainColimitIndex.reflTransGen_or_of_reflTransGen {Λ : ℕ → Type u} {p : (n : ℕ) → Λ n → Prop} {f : (n : ℕ) → { σ : Λ n // p n σ } → Λ (n + 1)} {b c₁ c₂ : (n : ℕ) × Λ n} (h₁ : Relation.ReflTransGen (chainStep Λ p f) b c₁) (h₂ : Relation.ReflTransGen (chainStep Λ p f) b c₂) :
      Relation.ReflTransGen (chainStep Λ p f) c₁ c₂ ∨ Relation.ReflTransGen (chainStep Λ p f) c₂ c₁

      Descendants of one point are linearly ordered: the step relation is functional.

      theorem Hironaka.chainColimitIndex.eq_of_reflTransGen_of_reflTransGen_of_fst_eq {Λ : ℕ → Type u} {p : (n : ℕ) → Λ n → Prop} {f : (n : ℕ) → { σ : Λ n // p n σ } → Λ (n + 1)} (hf : ∀ (n : ℕ), Function.Injective (f n)) {a a' c : (n : ℕ) × Λ n} (h : Relation.ReflTransGen (chainStep Λ p f) a c) (h' : Relation.ReflTransGen (chainStep Λ p f) a' c) (hfst : a.fst = a'.fst) :
      a = a'

      Two ancestors of one point at the same level coincide when every f n is injective.

      theorem Hironaka.chainColimitIndex.eqvGen_of_reflTransGen {Λ : ℕ → Type u} {p : (n : ℕ) → Λ n → Prop} {f : (n : ℕ) → { σ : Λ n // p n σ } → Λ (n + 1)} {a c : (n : ℕ) × Λ n} (h : Relation.ReflTransGen (chainStep Λ p f) a c) :

      Descent is contained in the generated equivalence.

      theorem Hironaka.chainColimitIndex.eqvGen_iff_exists_reflTransGen {Λ : ℕ → Type u} {p : (n : ℕ) → Λ n → Prop} {f : (n : ℕ) → { σ : Λ n // p n σ } → Λ (n + 1)} {a b : (n : ℕ) × Λ n} :
      Relation.EqvGen (chainStep Λ p f) a b ↔ ∃ (c : (n : ℕ) × Λ n), Relation.ReflTransGen (chainStep Λ p f) a c ∧ Relation.ReflTransGen (chainStep Λ p f) b c

      The generated equivalence of the (functional) step relation is "a common descendant".

      theorem Hironaka.chainColimitIndex.mk_injective {Λ : ℕ → Type u} {p : (n : ℕ) → Λ n → Prop} {f : (n : ℕ) → { σ : Λ n // p n σ } → Λ (n + 1)} (hf : ∀ (n : ℕ), Function.Injective (f n)) (n : ℕ) :
      Function.Injective fun (σ : Λ n) => Quot.mk (fun (a b : (n : ℕ) × Λ n) => ∃ (h : p a.fst a.snd), b = ⟨a.fst + 1, f a.fst ⟨a.snd, h⟩⟩) ⟨n, σ⟩

      Two members of one level are identified only when equal (each f n injective): the colimit index is a tree of chains, no two members of one level identified.

      theorem Hironaka.chainColimitIndex.mk_eq_mk_succ_iff {Λ : ℕ → Type u} {p : (n : ℕ) → Λ n → Prop} {f : (n : ℕ) → { σ : Λ n // p n σ } → Λ (n + 1)} (hf : ∀ (n : ℕ), Function.Injective (f n)) (n : ℕ) (σ : Λ n) (τ : Λ (n + 1)) :
      Quot.mk (fun (a b : (n : ℕ) × Λ n) => ∃ (h : p a.fst a.snd), b = ⟨a.fst + 1, f a.fst ⟨a.snd, h⟩⟩) ⟨n, σ⟩ = Quot.mk (fun (a b : (n : ℕ) × Λ n) => ∃ (h : p a.fst a.snd), b = ⟨a.fst + 1, f a.fst ⟨a.snd, h⟩⟩) ⟨n + 1, τ⟩ ↔ ∃ (h : p n σ), f n ⟨σ, h⟩ = τ

      A level-n member and a level-(n+1) member share a class iff the second is the first's image.

      @[simp]

      The pull-back of the unit ideal sheaf is the unit ideal sheaf.

      An ideal sheaf with empty cosupport is the unit ideal sheaf.

      A point of the cosupport of a trace on an open subspace lies in the cosupport of the member (QuotientSpace.cosupport_comap; the restrictInclusion form is mem_support_of_comap_restrictInclusion of Hironaka.Resolution.Analytic.Kol07Thm45.Glue.OverFamilyPartner).

      Two closed subspaces with the same trace on an open subspace have the same stalk ideal at every point of the open subset (KLocallyRingedSpace.isIso_ofRestrict_stalkMap; the restrictInclusion form is stalkIdeal_eq_of_comap_restrictInclusion_eq of Hironaka.Resolution.Analytic.Kol07Thm45.Glue.OverFamilyPartner).

      theorem AnalyticSpace.ClosedSubspace.IsSncFamily.eq_of_comap_ofRestrict_eq_of_nonempty {K : Type} [RCLike K] {X : AnalyticSpace K} {ι : Type u} {H : ι → X.ClosedSubspace} (h : IsSncFamily H) (U : TopologicalSpace.Opens ↑↑X.toPresheafedSpace) {σ τ : ι} (heq : QuotientSpace.comap (↑(X.ofRestrict U)) (H σ) = QuotientSpace.comap (↑(X.ofRestrict U)) (H τ)) (hne : (QuotientSpace.comap (↑(X.ofRestrict U)) (H σ)).support.Nonempty) :
      σ = τ

      Two members of a simple-normal-crossings family with the same trace on an open subset, the trace non-empty, are the same member (IsSncFamily.eq_of_comap_restrictInclusion_eq_of_nonempty in the restrictOpen spelling).

      theorem AnalyticSpace.ClosedSubspace.comap_eq_of_forall_exists_local {K : Type} [RCLike K] {Y₁ Y₂ : AnalyticSpace K} (ψ : Y₁ ⟶ Y₂) {Λ₁ Λ₂ : Type u} (A : Λ₁ → Y₁.ClosedSubspace) (B : Λ₂ → Y₂.ClosedSubspace) (e : Λ₁ → Λ₂) (hloc : ∀ (x : ↑↑Y₁.toPresheafedSpace), ∃ (V : TopologicalSpace.Opens ↑↑Y₁.toPresheafedSpace), x ∈ V ∧ ∀ (σ : Λ₁), QuotientSpace.comap (↑(Y₁.ofRestrict V)) (QuotientSpace.comap (↑ψ) (B (e σ))) = QuotientSpace.comap (↑(Y₁.ofRestrict V)) (A σ)) (σ : Λ₁) :
      QuotientSpace.comap (↑ψ) (B (e σ)) = A σ

      A labelled identity between two families along a morphism holds as soon as it holds on an open neighbourhood of every point: equality of closed subspaces is stalkwise (comap_restrict_eq_of_forall_exists_local in the restrictOpen spelling; Kol07, Proposition 37, (37.2)).

      theorem AnalyticSpace.ClosedSubspace.existsUnique_comap_eq_of_forall_exists_local {K : Type} [RCLike K] {Y₁ Y₂ : AnalyticSpace K} (ψ : Y₁ ⟶ Y₂) (hψ : CategoryTheory.IsIso ψ) {Λ₁ Λ₂ : Type u} (A : Λ₁ → Y₁.ClosedSubspace) (B : Λ₂ → Y₂.ClosedSubspace) (hB : IsSncFamily B) (e : Λ₁ → Λ₂) (hloc : ∀ (x : ↑↑Y₁.toPresheafedSpace), ∃ (V : TopologicalSpace.Opens ↑↑Y₁.toPresheafedSpace), x ∈ V ∧ ∀ (σ : Λ₁), QuotientSpace.comap (↑(Y₁.ofRestrict V)) (QuotientSpace.comap (↑ψ) (B (e σ))) = QuotientSpace.comap (↑(Y₁.ofRestrict V)) (A σ)) (σ : Λ₁) (hσ : (Manifold.IdealSheaf.support (A σ)).Nonempty) :
      ∃! τ : Λ₂, QuotientSpace.comap (↑ψ) (B τ) = A σ

      Along an isomorphism, a member with non-empty support has a unique partner in a simple-normal-crossings family whose pull-back is the member, once one is given locally (uniqueness by the rigidity of the pulled-back family; existsUnique_partner_of_forall_exists_local_label in the restrictOpen spelling).

      The converse of comap_eq_of_stalk_square: in the square α ≫ a = σ' ≫ β ≫ b with α, β surjective and σ, σ' inverse, ideals identified under σ after pulling back have the same image.

      theorem AnalyticSpace.GlueOver.pieceStalkIdeal_eq_of_pair {K : Type} [RCLike K] {X : AnalyticSpace K} {ι : Type u} [Countable ι] {R : ι → AnalyticSpace K} {π : (i : ι) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ι → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) (C : (i : ι) → (R i).ClosedSubspace) {i j : ι} (hij : QuotientSpace.comap (↑(G.t i j)) (restrictGlue π dom j i (C j)) = restrictGlue π dom i j (C i)) {y : ↑↑(R i).toPresheafedSpace} {y' : ↑↑(R j).toPresheafedSpace} (h : KLocallyRingedSpace.Hom.toFun (G.ιGlued i) y = KLocallyRingedSpace.Hom.toFun (G.ιGlued j) y') :

      Representative independence for one pair from that pair's compatibility (pieceStalkIdeal_eq, pairwise).

      theorem AnalyticSpace.GlueOver.compat_pair_of_forall_pieceStalkIdeal_eq {K : Type} [RCLike K] {X : AnalyticSpace K} {ι : Type u} [Countable ι] {R : ι → AnalyticSpace K} {π : (i : ι) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ι → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) (C : (i : ι) → (R i).ClosedSubspace) (i j : ι) (hP : ∀ (y : ↑↑(R i).toPresheafedSpace) (y' : ↑↑(R j).toPresheafedSpace) (h : KLocallyRingedSpace.Hom.toFun (G.ιGlued i) y = KLocallyRingedSpace.Hom.toFun (G.ιGlued j) y'), Ideal.comap (CommRingCat.Hom.hom (G.gluedOver.presheaf.stalkSpecializes ⋯)) (G.pieceStalkIdeal C i y) = G.pieceStalkIdeal C j y') :
      QuotientSpace.comap (↑(G.t i j)) (restrictGlue π dom j i (C j)) = restrictGlue π dom i j (C i)

      Compatibility of one pair from representative independence at every point of its gluing open subset (the converse of pieceStalkIdeal_eq_of_pair).

      Representative independence is symmetric in the two representatives (stalkSpecializes_comp_eq_id).

      theorem AnalyticSpace.GlueOver.dom_mono {K : Type} [RCLike K] {X : AnalyticSpace K} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) {n m : ℕ} (h : n ≤ m) :
      dom { down := n } ≤ dom { down := m }

      The base open subsets of a chain are monotone.

      theorem AnalyticSpace.GlueOver.mem_glueOpens_of_le {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) {n m : ℕ} (h : n ≤ m) (y : ↑↑(R { down := n }).toPresheafedSpace) :
      y ∈ glueOpens X R π dom { down := n } { down := m }

      On a chain, a lower level lies entirely over the base open subset of every higher level: its gluing open subset with a higher level is everything.

      def AnalyticSpace.GlueOver.liftPt {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) {n m : ℕ} (h : n ≤ m) (y : ↑↑(R { down := n }).toPresheafedSpace) :
      ↑↑((R { down := n }).restrictOpen (glueOpens X R π dom { down := n } { down := m })).toPresheafedSpace

      A point of level n as a point of the gluing open subset with level m ≥ n.

      Equations
      Instances For
        theorem AnalyticSpace.GlueOver.toFun_ιGlued_eq_of_le {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) {n m : ℕ} (h : n ≤ m) (y : ↑↑(R { down := n }).toPresheafedSpace) :
        KLocallyRingedSpace.Hom.toFun (G.ιGlued { down := n }) y = KLocallyRingedSpace.Hom.toFun (G.ιGlued { down := m }) ↑(KLocallyRingedSpace.Hom.toFun (G.t { down := n } { down := m }) (G.liftPt hmono h y))

        The point-level glue identity along the chain: a point of level n and its image in level m ≥ n under the transition have the same image in the glued space (ofRestrict_comp_ιGlued).

        theorem AnalyticSpace.GlueOver.pieceStalkIdeal_eq_of_le {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) (C : (i : ULift.{u, 0} ℕ) → (R i).ClosedSubspace) (hadj : ∀ (n : ℕ), QuotientSpace.comap (↑(G.t { down := n } { down := n + 1 })) (restrictGlue π dom { down := n + 1 } { down := n } (C { down := n + 1 })) = restrictGlue π dom { down := n } { down := n + 1 } (C { down := n })) {n m : ℕ} (hnm : n ≤ m) (y : ↑↑(R { down := n }).toPresheafedSpace) (y' : ↑↑(R { down := m }).toPresheafedSpace) (h : KLocallyRingedSpace.Hom.toFun (G.ιGlued { down := n }) y = KLocallyRingedSpace.Hom.toFun (G.ιGlued { down := m }) y') :

        Representative independence along the chain, by induction on the higher level from the adjacent pairs (pieceStalkIdeal_eq_of_pair) through the nested images.

        theorem AnalyticSpace.GlueOver.pieceStalkIdeal_eq_of_chain {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) (C : (i : ULift.{u, 0} ℕ) → (R i).ClosedSubspace) (hadj : ∀ (n : ℕ), QuotientSpace.comap (↑(G.t { down := n } { down := n + 1 })) (restrictGlue π dom { down := n + 1 } { down := n } (C { down := n + 1 })) = restrictGlue π dom { down := n } { down := n + 1 } (C { down := n })) (i j : ULift.{u, 0} ℕ) (y : ↑↑(R i).toPresheafedSpace) (y' : ↑↑(R j).toPresheafedSpace) (h : KLocallyRingedSpace.Hom.toFun (G.ιGlued i) y = KLocallyRingedSpace.Hom.toFun (G.ιGlued j) y') :

        Representative independence for every pair of levels of a chain (both orders, by symmetry).

        theorem AnalyticSpace.GlueOver.compatClosedSubspaces_of_chain {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) (C : (i : ULift.{u, 0} ℕ) → (R i).ClosedSubspace) (hadj : ∀ (n : ℕ), QuotientSpace.comap (↑(G.t { down := n } { down := n + 1 })) (restrictGlue π dom { down := n + 1 } { down := n } (C { down := n + 1 })) = restrictGlue π dom { down := n } { down := n + 1 } (C { down := n })) :

        On a chain, compatibility of closed subspaces of the levels follows from compatibility of the adjacent pairs, in one direction: the transported stalk ideals agree at every glued point by induction along the nested images of the levels; no cocycle bookkeeping.

        def AnalyticSpace.GlueOver.chainTraceNonempty {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} (π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace) (dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace) {Λ : ℕ → Type u} (H : (n : ℕ) → Λ n → (R { down := n }).ClosedSubspace) (n : ℕ) (σ : Λ n) :

        The members of level n with non-empty trace on the overlap with level n+1.

        Equations
        Instances For
          @[reducible, inline]
          abbrev AnalyticSpace.GlueOver.ChainIndex {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} (π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace) (dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace) {Λ : ℕ → Type u} (H : (n : ℕ) → Λ n → (R { down := n }).ClosedSubspace) (e : (n : ℕ) → { σ : Λ n // chainTraceNonempty π dom H n σ } → Λ (n + 1)) :

          The index of the glued chain family: the colimit of the levels' members along the label maps on the non-empty traced members.

          Equations
          Instances For
            theorem AnalyticSpace.GlueOver.injective_chainLabelMap {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) {Λ : ℕ → Type u} (H : (n : ℕ) → Λ n → (R { down := n }).ClosedSubspace) (hH : ∀ (n : ℕ), ClosedSubspace.IsSncFamily (H n)) (e : (n : ℕ) → { σ : Λ n // chainTraceNonempty π dom H n σ } → Λ (n + 1)) (hpair : ∀ (n : ℕ) (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), QuotientSpace.comap (↑(G.t { down := n } { down := n + 1 })) (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) (e n σ))) = restrictGlue π dom { down := n } { down := n + 1 } (H n ↑σ)) (n : ℕ) :

            The label maps are injective: rigidity of the members of a simple-normal-crossings family on the non-empty traces (IsSncFamily.eq_of_comap_ofRestrict_eq_of_nonempty).

            theorem AnalyticSpace.GlueOver.injective_chainLabel {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) {Λ : ℕ → Type u} (H : (n : ℕ) → Λ n → (R { down := n }).ClosedSubspace) (hH : ∀ (n : ℕ), ClosedSubspace.IsSncFamily (H n)) (e : (n : ℕ) → { σ : Λ n // chainTraceNonempty π dom H n σ } → Λ (n + 1)) (hpair : ∀ (n : ℕ) (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), QuotientSpace.comap (↑(G.t { down := n } { down := n + 1 })) (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) (e n σ))) = restrictGlue π dom { down := n } { down := n + 1 } (H n ↑σ)) (i : ULift.{u, 0} ℕ) :
            Function.Injective fun (σ : Λ i.down) => Quot.mk (fun (a b : (n : ℕ) × Λ n) => ∃ (h : chainTraceNonempty π dom H a.fst a.snd), b = ⟨a.fst + 1, e a.fst ⟨a.snd, h⟩⟩) ⟨i.down, σ⟩

            The labels are injective on every level (chainColimitIndex.mk_injective).

            theorem AnalyticSpace.GlueOver.chainLabelledCompat {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) {Λ : ℕ → Type u} (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) (H : (n : ℕ) → Λ n → (R { down := n }).ClosedSubspace) (hH : ∀ (n : ℕ), ClosedSubspace.IsSncFamily (H n)) (e : (n : ℕ) → { σ : Λ n // chainTraceNonempty π dom H n σ } → Λ (n + 1)) (hpair : ∀ (n : ℕ) (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), QuotientSpace.comap (↑(G.t { down := n } { down := n + 1 })) (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) (e n σ))) = restrictGlue π dom { down := n } { down := n + 1 } (H n ↑σ)) (hsurj : ∀ (n : ℕ) (τ : Λ (n + 1)), (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) τ)).support.Nonempty → ∃ (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), e n σ = τ) :
            G.LabelledCompat (fun (i : ULift.{u, 0} ℕ) (σ : Λ i.down) => H i.down σ) fun (i : ULift.{u, 0} ℕ) (σ : Λ i.down) => Quot.mk (fun (a b : (n : ℕ) × Λ n) => ∃ (h : chainTraceNonempty π dom H a.fst a.snd), b = ⟨a.fst + 1, e a.fst ⟨a.snd, h⟩⟩) ⟨i.down, σ⟩

            Labelled compatibility of a chain of simple-normal-crossings families: the levels' members labelled by their classes in the colimit index are compatible closed subspaces, given the adjacent identities on the non-empty traced members (hpair) and that every level-(n+1) member meeting the overlap is a partner (hsurj): four cases per label and adjacent pair (both levels represented; the lower only, its trace empty by the definition of the label maps' domain; the upper only, its trace empty by hsurj, so both sides are again the unit ideal sheaf; neither), then the chain lemma compatClosedSubspaces_of_chain.

            noncomputable def AnalyticSpace.GlueOver.chainGlueFamily {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) {Λ : ℕ → Type u} (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) (H : (n : ℕ) → Λ n → (R { down := n }).ClosedSubspace) (hH : ∀ (n : ℕ), ClosedSubspace.IsSncFamily (H n)) (e : (n : ℕ) → { σ : Λ n // chainTraceNonempty π dom H n σ } → Λ (n + 1)) (hpair : ∀ (n : ℕ) (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), QuotientSpace.comap (↑(G.t { down := n } { down := n + 1 })) (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) (e n σ))) = restrictGlue π dom { down := n } { down := n + 1 } (H n ↑σ)) (hsurj : ∀ (n : ℕ) (τ : Λ (n + 1)), (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) τ)).support.Nonempty → ∃ (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), e n σ = τ) :

            The glued chain family on the glued space, indexed by the colimit of the levels' members (glueFamily on the labelled data; [Kol07, Theorem 45, (3)]; [Wlo09, §4.3]).

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem AnalyticSpace.GlueOver.comap_ιGlued_chainGlueFamily_mk {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) {Λ : ℕ → Type u} (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) (H : (n : ℕ) → Λ n → (R { down := n }).ClosedSubspace) (hH : ∀ (n : ℕ), ClosedSubspace.IsSncFamily (H n)) (e : (n : ℕ) → { σ : Λ n // chainTraceNonempty π dom H n σ } → Λ (n + 1)) (hpair : ∀ (n : ℕ) (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), QuotientSpace.comap (↑(G.t { down := n } { down := n + 1 })) (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) (e n σ))) = restrictGlue π dom { down := n } { down := n + 1 } (H n ↑σ)) (hsurj : ∀ (n : ℕ) (τ : Λ (n + 1)), (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) τ)).support.Nonempty → ∃ (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), e n σ = τ) (n : ℕ) (σ : Λ n) :
              QuotientSpace.comap (↑(G.ιGlued { down := n })) (G.chainGlueFamily hmono H hH e hpair hsurj (Quot.mk (fun (a b : (n : ℕ) × Λ n) => ∃ (h : chainTraceNonempty π dom H a.fst a.snd), b = ⟨a.fst + 1, e a.fst ⟨a.snd, h⟩⟩) ⟨n, σ⟩)) = H n σ

              The glued member of the class of ⟨n, σ⟩ pulls back to level n as H n σ.

              theorem AnalyticSpace.GlueOver.isSncFamily_chainGlueFamily {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) {Λ : ℕ → Type u} (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) (H : (n : ℕ) → Λ n → (R { down := n }).ClosedSubspace) (hH : ∀ (n : ℕ), ClosedSubspace.IsSncFamily (H n)) (e : (n : ℕ) → { σ : Λ n // chainTraceNonempty π dom H n σ } → Λ (n + 1)) (hpair : ∀ (n : ℕ) (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), QuotientSpace.comap (↑(G.t { down := n } { down := n + 1 })) (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) (e n σ))) = restrictGlue π dom { down := n } { down := n + 1 } (H n ↑σ)) (hsurj : ∀ (n : ℕ) (τ : Λ (n + 1)), (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) τ)).support.Nonempty → ∃ (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), e n σ = τ) :
              ClosedSubspace.IsSncFamily (G.chainGlueFamily hmono H hH e hpair hsurj)

              The glued chain family is a simple-normal-crossings family (isSncFamily_glueFamily).

              theorem AnalyticSpace.GlueOver.locallyFinite_chainGlueFamily {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) {Λ : ℕ → Type u} (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) (H : (n : ℕ) → Λ n → (R { down := n }).ClosedSubspace) (hH : ∀ (n : ℕ), ClosedSubspace.IsSncFamily (H n)) (e : (n : ℕ) → { σ : Λ n // chainTraceNonempty π dom H n σ } → Λ (n + 1)) (hpair : ∀ (n : ℕ) (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), QuotientSpace.comap (↑(G.t { down := n } { down := n + 1 })) (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) (e n σ))) = restrictGlue π dom { down := n } { down := n + 1 } (H n ↑σ)) (hsurj : ∀ (n : ℕ) (τ : Λ (n + 1)), (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) τ)).support.Nonempty → ∃ (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), e n σ = τ) :
              LocallyFinite fun (l : ChainIndex π dom H e) => Manifold.IdealSheaf.support (G.chainGlueFamily hmono H hH e hpair hsurj l)

              The glued chain family is locally finite (locallyFinite_glueFamily: each level's family is locally finite).

              theorem AnalyticSpace.GlueOver.iUnion_support_chainGlueFamily {K : Type} [RCLike K] {X : AnalyticSpace K} {R : ULift.{u, 0} ℕ → AnalyticSpace K} {π : (i : ULift.{u, 0} ℕ) → (R i).toKLocallyRingedSpace ⟶ X.toKLocallyRingedSpace} {dom : ULift.{u, 0} ℕ → TopologicalSpace.Opens ↑↑X.toPresheafedSpace} (G : X.GlueOver R π dom) {Λ : ℕ → Type u} (hmono : ∀ (n : ℕ), dom { down := n } ≤ dom { down := n + 1 }) (H : (n : ℕ) → Λ n → (R { down := n }).ClosedSubspace) (hH : ∀ (n : ℕ), ClosedSubspace.IsSncFamily (H n)) (e : (n : ℕ) → { σ : Λ n // chainTraceNonempty π dom H n σ } → Λ (n + 1)) (hpair : ∀ (n : ℕ) (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), QuotientSpace.comap (↑(G.t { down := n } { down := n + 1 })) (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) (e n σ))) = restrictGlue π dom { down := n } { down := n + 1 } (H n ↑σ)) (hsurj : ∀ (n : ℕ) (τ : Λ (n + 1)), (restrictGlue π dom { down := n + 1 } { down := n } (H (n + 1) τ)).support.Nonempty → ∃ (σ : { σ : Λ n // chainTraceNonempty π dom H n σ }), e n σ = τ) (S : Set ↑↑X.toPresheafedSpace) (hS : ∀ (n : ℕ), ⋃ (σ : Λ n), Manifold.IdealSheaf.support (H n σ) = ↑(π { down := n }) ⁻¹' S) :
              ⋃ (l : ChainIndex π dom H e), Manifold.IdealSheaf.support (G.chainGlueFamily hmono H hH e hpair hsurj l) = ↑G.descMap ⁻¹' S

              The support of the glued chain family is the preimage of S under the descended map when every level's family has support the preimage of S under its map (toFun_descMap_ιGlued, exists_ιGlued_eq).