Documentation

Hironaka.Resolution.Analytic.OrderReduction.Modified.ClauseTools

The two stop clauses as predicates on a succession, and their transports #

The structure BMOmodFam (Functor/ModifiedMarkedFam.lean) has two fields about the stop predicate IsSmoothTransversalIdealAt: output_isSmoothSubmanifoldIdeal, at every point of the support of the last marked transform of (π“˜, 1) that transform is the ideal of a smooth submanifold transversal to the total boundary, and stopped_never_blownUp, a point of a stage on no member of the boundary at which the predicate holds is never blown up later. They are the two properties of the modified algorithm of [Wlo09, Theorem 7.4.1]: the form of its output (coordinates transversal to the exceptional divisors) and the stop rule of its modified first step. The value of the modified functor on an open U is built from local runs by pull-back along local analytic isomorphisms, deletion of the empty blow-ups, concatenation along the induced triple and descent along the maximal-contact cover (ComposeInduced.lean, StepBGlobal.lean, GlobalizeFam.lean), so the two properties have to be carried across each of these operations. This module isolates them as predicates on a finite succession from a pair (π“˜, F) (OutputClause, StoppedClause: the two fields word for word, with S := L.toSuccession and (π“˜, F) the restricted triple's) and on a family functor per open (OutputClauseFam, StoppedClauseFam), and proves the transports used by the modules Clause*.lean that follow. Throughout, "the output clause" is OutputClause and "the stopped clause" is StoppedClause.

The mathematics is [Kol07, Definition 30, 30.1], [Kol07, 32], [Kol07, 34.1], the descent of [Kol07, Theorem 103, Step 3] and the persistence lemmas of StopPersistence.lean; the statements themselves are not in the sources.

def AnalyticManifold.FiniteSuccession.OutputClause {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} (S : M.FiniteSuccession) (I : M.IdealSheaf) (F : Manifold.HypersurfaceFamily M.carrier) :

The output clause for a succession S from the pair (π“˜, F) (the field output_isSmoothSubmanifoldIdeal of BMOmodFam, read on L.toSuccession from the restricted triple): at every point of the support {ord β‰₯ 1} of the marked transform of (π“˜, 1) at the last stage, that transform is locally the ideal of a smooth submanifold with coordinates transversal to the total boundary.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    def AnalyticManifold.FiniteSuccession.StoppedClause {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} (S : M.FiniteSuccession) (I : M.IdealSheaf) (F : Manifold.HypersurfaceFamily M.carrier) :

    The stopped clause for a succession S from (π“˜, F) (the field stopped_never_blownUp of BMOmodFam): a point x of a stage i on no member of the boundary at which the marked transform is a smooth submanifold ideal transversal to the boundary is never blown up: no later centre contains a point over x.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem AnalyticManifold.FiniteSuccession.stageMapAdd_zero_left {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {M : AnalyticManifold π•œ E} (S : M.FiniteSuccession) (k : β„•) (hk : 0 + k < S.length + 1) (y : (S.stage ⟨0 + k, hk⟩).carrier) :
      (S.stageMapAdd 0 k hk) y = (S.stageMap ⟨0 + k, hk⟩) y

      The composite blow-down from stage 0 over k steps is the succession's stageMap at stage 0 + k (the bridge between stageMapAdd and stageMapAux, two recursions peeling the last blow-up).

      theorem AnalyticManifold.FiniteSuccession.StoppedClause.notMem_center_of_stageMap_eq {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} {S : M.FiniteSuccession} {I : M.IdealSheaf} {F : Manifold.HypersurfaceFamily M.carrier} (hS : StoppedClause Οˆβ‚€ S I F) (m : β„•) (hm : m < S.length) {x : (S.stage ⟨0, β‹―βŸ©).carrier} (hP : Manifold.HypersurfaceFamily.IsSmoothTransversalIdealAt Οˆβ‚€ F I x) (hx : βˆ€ (j : F.ΞΉ), x βˆ‰ F.hyp j) (y : (S.stage ⟨m, β‹―βŸ©).carrier) (hy : (S.stageMap ⟨m, β‹―βŸ©) y = x) :

      The stopped clause read at stage 0 with stageMap: no centre of the succession lies over a predicate point of the start off the boundary (the stage number generalised to 0 + k, stageMapAdd_zero_left).

      theorem AnalyticManifold.FiniteSuccession.StoppedClause.of_isEmptyExtension {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} {S : M.FiniteSuccession} {I : M.IdealSheaf} {G G' : Manifold.HypersurfaceFamily M.carrier} {eβ‚€ : G.ΞΉ β†ͺo G'.ΞΉ} (he : Manifold.HypersurfaceFamily.IsEmptyExtension eβ‚€) (h : StoppedClause Οˆβ‚€ S I G') :
      StoppedClause Οˆβ‚€ S I G

      The stopped clause descends along an empty extension G β†ͺ G' of the boundary family (IsEmptyExtension: the members of G are members of G' and the other members of G' are empty): stage by stage the boundaries stay in empty extension (isEmptyExtension_totalTransform), and the predicate and "on no member" transport along one, since an empty member is through no point (IsSmoothTransversalIdealAt.congr_nhds).

      def Hironaka.Manifold.AnalyticFamilyFunctor.OutputClauseFam {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {Dom : {M : AnalyticManifold π•œ E} β†’ Manifold.AnalyticTriple Οˆβ‚€ M β†’ Prop} (B : AnalyticFamilyFunctor Οˆβ‚€ fun {M : AnalyticManifold π•œ E} => Dom) :

      The output clause of a family functor on its class, per open: the value on U from the restricted triple satisfies OutputClause. For Dom := BMOClass 1 at the model refl π•œ (Fin n β†’ π•œ) this is the field output_isSmoothSubmanifoldIdeal of BMOmodFam with functor := B, definitionally.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        def Hironaka.Manifold.AnalyticFamilyFunctor.StoppedClauseFam {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {Dom : {M : AnalyticManifold π•œ E} β†’ Manifold.AnalyticTriple Οˆβ‚€ M β†’ Prop} (B : AnalyticFamilyFunctor Οˆβ‚€ fun {M : AnalyticManifold π•œ E} => Dom) :

        The stopped clause of a family functor on its class, per open (the field stopped_never_blownUp of BMOmodFam with functor := B, definitionally).

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          Pull-back along a local analytic isomorphism #

          theorem AnalyticManifold.BlowUpSequence.totalTransformSeqFrom_pullback {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M N : AnalyticManifold π•œ E} (L : BlowUpSequence Οˆβ‚€ M) (h : AnalyticMap N M) (hh : IsLocalDiffeomorph (modelWithCornersSelf π•œ E) (modelWithCornersSelf π•œ E) ⊀ ⇑h) (F : Manifold.HypersurfaceFamily M.carrier) (i : Fin (L.length + 1)) :

          The boundary families along h^* L at every stage (the all-stage form of totalTransformSeqFrom_last_pullbackLiftLast): the boundary from F.comap h at stage i of h^* L is the boundary from F at stage i of L pulled back along the lift h_i.

          theorem AnalyticManifold.BlowUpSequence.stageMapAdd_pullbackLift {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M N : AnalyticManifold π•œ E} (L : BlowUpSequence Οˆβ‚€ M) (h : AnalyticMap N M) (hh : IsLocalDiffeomorph (modelWithCornersSelf π•œ E) (modelWithCornersSelf π•œ E) ⊀ ⇑h) (i k : β„•) (hik : i + k < L.length + 1) (hik' : i + k < (L.pullback h hh).length + 1) (y : ((L.pullback h hh).toSuccession.stage ⟨i + k, hik'⟩).carrier) :
          (L.pullbackLift h hh ⟨i, β‹―βŸ©) (((L.pullback h hh).toSuccession.stageMapAdd i k hik') y) = (L.toSuccession.stageMapAdd i k hik) ((L.pullbackLift h hh ⟨i + k, hik⟩) y)

          The composite blow-downs of h^* L between two stages are intertwined with those of L by the lifts (stageMapAdd along pullbackLift).

          theorem Manifold.HypersurfaceFamily.IsSmoothTransversalIdealAt.of_comap {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M N : AnalyticManifold π•œ E} (F : HypersurfaceFamily M.carrier) (J : M.IdealSheaf) (g : AnalyticMap N M) {y : N.carrier} (hg : IsLocalDiffeomorphAt (modelWithCornersSelf π•œ E) (modelWithCornersSelf π•œ E) ⊀ (⇑g) y) (h : IsSmoothTransversalIdealAt Οˆβ‚€ (HypersurfaceFamily.comap (⇑g) F) (IdealSheaf.pullback ⇑g β‹― J) y) :
          IsSmoothTransversalIdealAt Οˆβ‚€ F J (g y)

          The predicate descends along a local analytic isomorphism (the converse of IsSmoothTransversalIdealAt.comap): the predicate for the pulled-back family and ideal at y gives the predicate for F and J at g y. The chart with simple normal crossings at y is transported along a local inverse Φ⁻¹ of g (transportChart, the mirror of the proof of comap; stalkIdeal_comap_eq_map_germMap, germMap_coord_eq_coord_transportChart). Used at the lifted point in outputClause_of_pullback_of_surjective and stoppedClause_of_pullback_of_surjective.

          theorem AnalyticManifold.BlowUpSequence.outputClause_of_pullback_of_surjective {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M N : AnalyticManifold π•œ E} (L : BlowUpSequence Οˆβ‚€ M) (h : AnalyticMap N M) (hh : IsLocalDiffeomorph (modelWithCornersSelf π•œ E) (modelWithCornersSelf π•œ E) ⊀ ⇑h) (hs : Function.Surjective ⇑h) (T : Manifold.AnalyticTriple Οˆβ‚€ M) (hge : L.toSuccession.IsOfOrderGe T.I 1 T.F.idealSheaf) (hP : FiniteSuccession.OutputClause Οˆβ‚€ (L.pullback h hh).toSuccession (T.pullback h hh).I (T.pullback h hh).F) :

          The output clause descends along a surjective local analytic isomorphism: if h^* L from the pulled-back triple satisfies the clause, so does L from T. A point of the last stage of L lifts along the surjective last lift (markedTransformSeq_pullback, totalTransformSeqFrom_pullback), and the predicate comes back along the local isomorphism (IsSmoothTransversalIdealAt.of_comap).

          theorem AnalyticManifold.BlowUpSequence.outputClause_pullback {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M N : AnalyticManifold π•œ E} (L : BlowUpSequence Οˆβ‚€ M) (h : AnalyticMap N M) (hh : IsLocalDiffeomorph (modelWithCornersSelf π•œ E) (modelWithCornersSelf π•œ E) ⊀ ⇑h) (T : Manifold.AnalyticTriple Οˆβ‚€ M) (hge : L.toSuccession.IsOfOrderGe T.I 1 T.F.idealSheaf) (hP : FiniteSuccession.OutputClause Οˆβ‚€ L.toSuccession T.I T.F) :

          The output clause pulls back along a local analytic isomorphism (IsSmoothTransversalIdealAt.comap).

          theorem AnalyticManifold.BlowUpSequence.stoppedClause_of_pullback_of_surjective {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M N : AnalyticManifold π•œ E} (L : BlowUpSequence Οˆβ‚€ M) (h : AnalyticMap N M) (hh : IsLocalDiffeomorph (modelWithCornersSelf π•œ E) (modelWithCornersSelf π•œ E) ⊀ ⇑h) (hs : Function.Surjective ⇑h) (T : Manifold.AnalyticTriple Οˆβ‚€ M) (hge : L.toSuccession.IsOfOrderGe T.I 1 T.F.idealSheaf) (hP : FiniteSuccession.StoppedClause Οˆβ‚€ (L.pullback h hh).toSuccession (T.pullback h hh).I (T.pullback h hh).F) :

          The stopped clause descends along a surjective local analytic isomorphism (center_pullback, totalTransformSeqFrom_pullback, stageMapAdd_pullbackLift, and the predicate brought back by IsSmoothTransversalIdealAt.of_comap).

          theorem AnalyticManifold.BlowUpSequence.stoppedClause_pullback {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M N : AnalyticManifold π•œ E} (L : BlowUpSequence Οˆβ‚€ M) (h : AnalyticMap N M) (hh : IsLocalDiffeomorph (modelWithCornersSelf π•œ E) (modelWithCornersSelf π•œ E) ⊀ ⇑h) (T : Manifold.AnalyticTriple Οˆβ‚€ M) (hge : L.toSuccession.IsOfOrderGe T.I 1 T.F.idealSheaf) (hP : FiniteSuccession.StoppedClause Οˆβ‚€ L.toSuccession T.I T.F) :

          The stopped clause pulls back along a local analytic isomorphism.

          Deletion of the empty blow-ups ([Kol07, 32], [Kol07, 34.1]) #

          theorem AnalyticManifold.BlowUpSequence.outputClause_eraseEmpty {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} (L : BlowUpSequence Οˆβ‚€ M) (T : Manifold.AnalyticTriple Οˆβ‚€ M) (hge : L.toSuccession.IsOfOrderGe T.I 1 T.F.idealSheaf) (hP : FiniteSuccession.OutputClause Οˆβ‚€ L.toSuccession T.I T.F) :

          The output clause survives the deletion of the empty blow-ups (markedTransformSeq_last_eraseEmpty and boundaryCorr_eraseEmpty at the last stage, the predicate transported along eraseEmptyLast).

          theorem AnalyticManifold.BlowUpSequence.stoppedClause_cons_of_forall_notMem {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} {Y : Set M.carrier} {c : β„•} (hY : Manifold.IsClosedSubmanifold Οˆβ‚€ Y c) (L' : BlowUpSequence Οˆβ‚€ (Manifold.blowUp Οˆβ‚€ hY)) (T : Manifold.AnalyticTriple Οˆβ‚€ M) (hh : (cons hY (nil (Manifold.blowUp Οˆβ‚€ hY))).toSuccession.IsOfOrderGe T.I 1 T.F.idealSheaf) (hR : FiniteSuccession.StoppedClause Οˆβ‚€ L'.toSuccession (T.headTriple 1 hY hh).I (T.headTriple 1 hY hh).F) (hxY : βˆ€ (x : M.carrier), Manifold.HypersurfaceFamily.IsSmoothTransversalIdealAt Οˆβ‚€ T.F T.I x β†’ (βˆ€ (j : T.F.ΞΉ), x βˆ‰ T.F.hyp j) β†’ x βˆ‰ Y) :

          The stopped clause for cons hY L' from the stopped clause of L' for the head triple and the stage-0 content (a predicate point off the boundary is not in Y): a centre of L' over such a point lies over a predicate point of the head stage off its boundary (the predicate and the absence from the boundary persist under one blow-up off the centre, the marking legitimate by the head's order clause), which is excluded at stage 0 by StoppedClause.notMem_center_of_stageMap_eq; the later stages are L''s, one stage in.

          theorem AnalyticManifold.BlowUpSequence.stoppedClause_cons_iff {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} {Y : Set M.carrier} {c : β„•} (hY : Manifold.IsClosedSubmanifold Οˆβ‚€ Y c) (rest : BlowUpSequence Οˆβ‚€ (Manifold.blowUp Οˆβ‚€ hY)) (T : Manifold.AnalyticTriple Οˆβ‚€ M) (hge : (cons hY rest).toSuccession.IsOfOrderGe T.I 1 T.F.idealSheaf) :
          FiniteSuccession.StoppedClause Οˆβ‚€ (cons hY rest).toSuccession T.I T.F ↔ (βˆ€ (k : β„•) (h : k < rest.length + 1) (x : M.carrier), Manifold.HypersurfaceFamily.IsSmoothTransversalIdealAt Οˆβ‚€ T.F T.I x β†’ (βˆ€ (j : T.F.ΞΉ), x βˆ‰ T.F.hyp j) β†’ βˆ€ (y : ((cons hY rest).toSuccession.stage ⟨k, β‹―βŸ©).carrier), ((cons hY rest).toSuccession.stageMap ⟨k, β‹―βŸ©) y = x β†’ y βˆ‰ Manifold.IdealSheaf.support ((cons hY rest).toSuccession.center ⟨k, h⟩)) ∧ FiniteSuccession.StoppedClause Οˆβ‚€ rest.toSuccession (T.headTriple 1 hY β‹―).I (T.headTriple 1 hY β‹―).F

          The stopped clause is read one stage in: for cons hY rest it is the clause at stage 0 (no later centre over a predicate point of M off the boundary) together with the clause of rest from the head triple (the marked transform of (π“˜, 1) and the total transform of F under the first blow-up, AnalyticTriple.headTriple).

          theorem AnalyticManifold.BlowUpSequence.stoppedClause_eraseEmpty {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} (L : BlowUpSequence Οˆβ‚€ M) (T : Manifold.AnalyticTriple Οˆβ‚€ M) (hge : L.toSuccession.IsOfOrderGe T.I 1 T.F.idealSheaf) (hP : FiniteSuccession.StoppedClause Οˆβ‚€ L.toSuccession T.I T.F) :

          The stopped clause survives the deletion of the empty blow-ups, by induction on the list with stoppedClause_cons_iff: a nonempty first centre stays (eraseEmpty_cons_of_ne_empty) and stoppedClause_cons_of_forall_notMem rebuilds the clause from the tail's; an empty one is deleted and the rest carried along the diffeomorphism of the empty blow-up (eraseEmpty_cons_of_eq_empty with map_eq_pullback_symm and stoppedClause_pullback), the head triple's data being T.I pulled back twice and T.F with one empty member, so that the clause comes back along StoppedClause.of_isEmptyExtension.

          Concatenation along the induced triple #

          theorem AnalyticManifold.BlowUpSequence.outputClause_cons_iff {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} {Y : Set M.carrier} {c : β„•} (hY : Manifold.IsClosedSubmanifold Οˆβ‚€ Y c) (rest : BlowUpSequence Οˆβ‚€ (Manifold.blowUp Οˆβ‚€ hY)) (T : Manifold.AnalyticTriple Οˆβ‚€ M) (hge : (cons hY rest).toSuccession.IsOfOrderGe T.I 1 T.F.idealSheaf) :
          FiniteSuccession.OutputClause Οˆβ‚€ (cons hY rest).toSuccession T.I T.F ↔ FiniteSuccession.OutputClause Οˆβ‚€ rest.toSuccession (T.headTriple 1 hY β‹―).I (T.headTriple 1 hY β‹―).F

          The output clause is read one stage in: for cons hY rest it is the clause of rest from the head triple (the last stage and its transforms are rest's from the head triple, cons_markedTransformSeq_last, cons_totalTransformSeqFrom_last).

          theorem AnalyticManifold.BlowUpSequence.outputClause_concat {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} (L₁ : BlowUpSequence Οˆβ‚€ M) (Lβ‚‚ : BlowUpSequence Οˆβ‚€ (L₁.stage (Fin.last L₁.length))) (T : Manifold.AnalyticTriple Οˆβ‚€ M) (hge₁ : L₁.toSuccession.IsOfOrderGe T.I 1 T.F.idealSheaf) (hPβ‚‚ : FiniteSuccession.OutputClause Οˆβ‚€ Lβ‚‚.toSuccession (T.induced 1 L₁ hge₁).I (T.induced 1 L₁ hge₁).F) :
          FiniteSuccession.OutputClause Οˆβ‚€ (L₁.concat Lβ‚‚).toSuccession T.I T.F

          The output clause of a concatenation is the output clause of the appended list from the induced triple, by induction on the first list with induced_cons and induced_nil (the recursion of boClass_induced_concat_aux); at a cons the two rewrites of outputClause_cons_iff, cons_markedTransformSeq_last and cons_totalTransformSeqFrom_last, with the head clause of hge₁. outputClause_cons_iff itself asks for the order clause of the whole cons list, which a concatenation does not carry, so it is not applied directly.

          theorem Manifold.HypersurfaceFamily.IsSmoothTransversalIdealAt.stageMapAdd_of_forall_notMem_center {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} (S : M.FiniteSuccession) {I : M.IdealSheaf} {F : HypersurfaceFamily M.carrier} (hge : S.IsOfOrderGe I 1 F.idealSheaf) (hF : IsSnc Οˆβ‚€ F) (i k : β„•) (h : i + k < S.length + 1) {x : (S.stage ⟨i, β‹―βŸ©).carrier} (hx : βˆ€ (j : (S.totalTransformSeqFrom F ⟨i, β‹―βŸ©).ΞΉ), x βˆ‰ (S.totalTransformSeqFrom F ⟨i, β‹―βŸ©).hyp j) (hP : IsSmoothTransversalIdealAt Οˆβ‚€ (S.totalTransformSeqFrom F ⟨i, β‹―βŸ©) (S.markedTransformSeq I 1 ⟨i, β‹―βŸ©) x) (hcen : βˆ€ (l : β„•) (hl : l < k) (z : (S.stage ⟨i + l, β‹―βŸ©).carrier), (S.stageMapAdd i l β‹―) z = x β†’ z βˆ‰ IdealSheaf.support (S.center ⟨i + l, β‹―βŸ©)) (y : (S.stage ⟨i + k, h⟩).carrier) (hy : (S.stageMapAdd i k h) y = x) :

          The predicate persists along a fibre no centre meets (the analogue for the predicate of notMem_totalTransformSeqFrom_of_forall_notMem_center): a point x of stage i off the boundary at which the marked transform is a smooth submanifold ideal transversal to the boundary, none of whose images at the stages i, …, i + k βˆ’ 1 lies in the centre blown up there, keeps the predicate at every point y over it at stage i + k. At each step the blow-up is a local isomorphism off the centre and the marking is legitimate by the order clause (IsSmoothTransversalIdealAt.totalTransform_of_notMem).

          theorem AnalyticManifold.BlowUpSequence.stoppedClause_concat {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} (L₁ : BlowUpSequence Οˆβ‚€ M) (Lβ‚‚ : BlowUpSequence Οˆβ‚€ (L₁.stage (Fin.last L₁.length))) (T : Manifold.AnalyticTriple Οˆβ‚€ M) (hge₁ : L₁.toSuccession.IsOfOrderGe T.I 1 T.F.idealSheaf) (hP₁ : FiniteSuccession.StoppedClause Οˆβ‚€ L₁.toSuccession T.I T.F) (hPβ‚‚ : FiniteSuccession.StoppedClause Οˆβ‚€ Lβ‚‚.toSuccession (T.induced 1 L₁ hge₁).I (T.induced 1 L₁ hge₁).F) :
          FiniteSuccession.StoppedClause Οˆβ‚€ (L₁.concat Lβ‚‚).toSuccession T.I T.F

          The stopped clause of a concatenation from the stopped clauses of the two lists, by induction on the first list with induced_cons and induced_nil: at a cons, stoppedClause_cons_iff reads the first list's clause as its stage-0 content plus the tail's clause for the head triple, the induction gives the tail's concatenation, and stoppedClause_cons_of_forall_notMem rebuilds the clause of the cons.

          Descent along the maximal-contact cover ([Kol07, Theorem 103, Step 3]) #

          theorem Hironaka.Manifold.AnalyticFamilyFunctor.outputClauseFam_of_agreeFam {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) (B : AnalyticFamilyFunctor Οˆβ‚€ fun {M : AnalyticManifold π•œ E} => Manifold.AnalyticTriple.LocalMCClass 1) (B' : AnalyticFamilyFunctor Οˆβ‚€ fun {M : AnalyticManifold π•œ E} => Manifold.AnalyticTriple.BOClass 1) (hagree : βˆ€ {N : AnalyticManifold π•œ E} (T : Manifold.AnalyticTriple Οˆβ‚€ N) (hL : Manifold.AnalyticTriple.LocalMCClass 1 T), B'.fam T β‹― = B.fam T hL) (hB' : B'.CommutesWithLocalIsos) (hord : βˆ€ {N : AnalyticManifold π•œ E} (T : Manifold.AnalyticTriple Οˆβ‚€ N) (hL : Manifold.AnalyticTriple.LocalMCClass 1 T) (U : TopologicalSpace.Opens N.carrier) (hU : IsCompact (closure ↑U)), ((B.fam T hL).seqOn U hU).toSuccession.IsOfOrderGe (T.pullback (N.inclusion U) β‹―).I 1 (T.pullback (N.inclusion U) β‹―).F.idealSheaf) (hB : OutputClauseFam Οˆβ‚€ B) :
          OutputClauseFam Οˆβ‚€ B'

          The output clause descends per open (the analogue of isOfOrderGe_of_agreeFam): a functor B' on BOClass 1 agreeing with B on the local maximal-contact class and commuting with local isomorphisms inherits the output clause of B. On the finite shrunk maximal-contact cover k of closure U, the pull-back k^*(B'(T)|_U) is B at the pulled-back triple and satisfies the clause, which descends along the surjective k (outputClause_of_pullback_of_surjective).

          theorem Hironaka.Manifold.AnalyticFamilyFunctor.stoppedClauseFam_of_agreeFam {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) (B : AnalyticFamilyFunctor Οˆβ‚€ fun {M : AnalyticManifold π•œ E} => Manifold.AnalyticTriple.LocalMCClass 1) (B' : AnalyticFamilyFunctor Οˆβ‚€ fun {M : AnalyticManifold π•œ E} => Manifold.AnalyticTriple.BOClass 1) (hagree : βˆ€ {N : AnalyticManifold π•œ E} (T : Manifold.AnalyticTriple Οˆβ‚€ N) (hL : Manifold.AnalyticTriple.LocalMCClass 1 T), B'.fam T β‹― = B.fam T hL) (hB' : B'.CommutesWithLocalIsos) (hord : βˆ€ {N : AnalyticManifold π•œ E} (T : Manifold.AnalyticTriple Οˆβ‚€ N) (hL : Manifold.AnalyticTriple.LocalMCClass 1 T) (U : TopologicalSpace.Opens N.carrier) (hU : IsCompact (closure ↑U)), ((B.fam T hL).seqOn U hU).toSuccession.IsOfOrderGe (T.pullback (N.inclusion U) β‹―).I 1 (T.pullback (N.inclusion U) β‹―).F.idealSheaf) (hB : StoppedClauseFam Οˆβ‚€ B) :
          StoppedClauseFam Οˆβ‚€ B'

          The stopped clause descends per open (the same descent with stoppedClause_of_pullback_of_surjective).

          Two member lemmas on the predicate #

          theorem Manifold.HypersurfaceFamily.IsSmoothTransversalIdealAt.emptyMember {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} {F : HypersurfaceFamily M.carrier} {J : M.IdealSheaf} {x : M.carrier} (h : IsSmoothTransversalIdealAt Οˆβ‚€ F J x) (j : F.ΞΉ) :

          Emptying a member keeps the predicate (the chart with simple normal crossings, the member's coordinate forgotten; HypersurfaceFamily.emptyMember).

          theorem Manifold.HypersurfaceFamily.IsSmoothTransversalIdealAt.of_emptyMember_of_notMem {π•œ : Type} [RCLike π•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace π•œ E] {n : β„•} (Οˆβ‚€ : E ≃L[π•œ] Fin n β†’ π•œ) {M : AnalyticManifold π•œ E} {F : HypersurfaceFamily M.carrier} {J : M.IdealSheaf} {x : M.carrier} (j : F.ΞΉ) (hx : x βˆ‰ F.hyp j) (h : IsSmoothTransversalIdealAt Οˆβ‚€ (F.emptyMember j) J x) :

          A member not through x may be restored: the predicate for F.emptyMember j at a point x βˆ‰ F.hyp j gives the predicate for F. A chart with simple normal crossings at x constrains only the members through x, and at x βˆ‰ F.hyp j the two index subtypes {k // x ∈ (F.emptyMember j).hyp k} and {k // x ∈ F.hyp k} have the same predicate (the members of F.emptyMember j are if k = j then βˆ… else F.hyp k, emptyMember_hyp_of_ne, emptyMember_hyp_self), so the same chart with cidx transported is such a chart for F at x. No closedness and no shrinking of the chart is needed.