Documentation

Hironaka.Manifold.DirectLimit.Manifold

The direct limit of a chain of open embeddings: the manifold #

The direct limit Limit of DirectLimit/Chain.lean is an analytic manifold, and the inclusions of the pieces are analytic open embeddings: limitManifold : AnalyticManifold ๐•œ E with its IsManifold, T2Space and SecondCountableTopology instances, Wล‚odarczyk's glued manifold Mฬƒ [Wlo09, ยง4.1] (the increasing union of compact subsets of [Kol07, 44]; [BM97, ยง13]).

Hausdorff: two points lie in a common piece (exists_common_toLimit), separated there, and the inclusion is an open map. Second countable: the pieces' images are an open countable cover by second countable subspaces (secondCountableTopology_of_countable_cover). Charts: for a nonempty piece X n the inclusion is an open partial homeomorphism pieceOpenEmb n (IsOpenEmbedding.toOpenPartialHomeomorph, the pattern of BlowUp/GluedCharts.lean), and every chart ฯ† of X n gives the chart limitChart n ฯ† := (pieceOpenEmb n).symm โ‰ซโ‚• ฯ† of the limit; the atlas is all of them. The chart change between a chart from X n and one from X m is ฯˆ โˆ˜ transition n m โˆ˜ ฯ†.symm with transition n m : X n โЇ toLimit n โปยน' range (toLimit m) โ†’ X m the transition through the limit ((pieceOpenEmb m).symm โˆ˜ toLimit n), and transition is analytic: at a point x with local inverse ฮฆ of the composite embedding X m โ†’ X (max n m) at transition n m x (isLocalDiffeomorph_iter), transition n m = ฮฆ.symm โˆ˜ iter (n โ‰ค max n m) near x. This is where Wล‚odarczyk's canonicity supplies the identifications of the pieces on their overlaps [Wlo09, ยง4.1], here read through the composites (contMDiffOn_transition, limitIsManifold by isManifold_of_contDiffOn). The inclusions are then analytic (toLimit n = (limitChart n (chartAt x)).symm โˆ˜ chartAt x near x) and local analytic isomorphisms (pieceDiffeomorph), hence analytic open embeddings onto their open images (isAnalyticOpenEmbedding_toLimitMap, isAnalyticIsoOver_toLimitMap).

The gluing is elementary and not in the sources in this form.

Hausdorff and second countable #

instance Manifold.OpenEmbeddingChain.limitT2Space {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) :

The limit is Hausdorff โ€” two points lie in a common piece, are separated there, and the inclusion is an open injective map.

The limit is second countable โ€” a countable open cover by the images of the pieces, each homeomorphic to a second countable manifold.

The charts of the limit #

noncomputable def Manifold.OpenEmbeddingChain.pieceOpenEmb {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] :

The inclusion of a nonempty piece as an open partial homeomorphism (source the whole piece, target its image).

Equations
Instances For
    theorem Manifold.OpenEmbeddingChain.pieceOpenEmb_apply {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] (x : (c.X n).carrier) :
    โ†‘(c.pieceOpenEmb n) x = c.toLimit n x

    pieceOpenEmb is the inclusion.

    theorem Manifold.OpenEmbeddingChain.pieceOpenEmb_source {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] :

    The source of pieceOpenEmb is the whole piece.

    theorem Manifold.OpenEmbeddingChain.pieceOpenEmb_target {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] :

    The target of pieceOpenEmb is the image of the piece.

    theorem Manifold.OpenEmbeddingChain.pieceOpenEmb_symm_toLimit {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] (x : (c.X n).carrier) :
    โ†‘(c.pieceOpenEmb n).symm (c.toLimit n x) = x

    The inverse of pieceOpenEmb undoes the inclusion.

    theorem Manifold.OpenEmbeddingChain.toLimit_pieceOpenEmb_symm {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] {p : c.Limit} (hp : p โˆˆ Set.range (c.toLimit n)) :
    c.toLimit n (โ†‘(c.pieceOpenEmb n).symm p) = p

    The inclusion undoes the inverse of pieceOpenEmb on the image of the piece.

    noncomputable def Manifold.OpenEmbeddingChain.repIdx {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (p : c.Limit) :

    A piece containing a given point of the limit (chosen).

    Equations
    Instances For
      noncomputable def Manifold.OpenEmbeddingChain.rep {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (p : c.Limit) :
      (c.X (c.repIdx p)).carrier

      The point of the piece repIdx p over p (chosen).

      Equations
      Instances For
        theorem Manifold.OpenEmbeddingChain.toLimit_rep {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (p : c.Limit) :
        c.toLimit (c.repIdx p) (c.rep p) = p

        rep p lies over p.

        theorem Manifold.OpenEmbeddingChain.nonempty_repIdx {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (p : c.Limit) :

        The piece repIdx p is nonempty.

        noncomputable def Manifold.OpenEmbeddingChain.limitChart {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] (ฯ† : OpenPartialHomeomorph (c.X n).carrier E) :

        The chart of the limit over a nonempty piece obtained from a chart ฯ† of the piece โ€” the inverse of the piece's inclusion followed by ฯ†.

        Equations
        Instances For
          theorem Manifold.OpenEmbeddingChain.limitChart_source {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] (ฯ† : OpenPartialHomeomorph (c.X n).carrier E) :

          The source of limitChart n ฯ† โ€” the points of the image of the piece whose representative lies in ฯ†'s source.

          theorem Manifold.OpenEmbeddingChain.limitChart_target {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] (ฯ† : OpenPartialHomeomorph (c.X n).carrier E) :
          (c.limitChart n ฯ†).target = ฯ†.target

          The target of limitChart n ฯ† is the target of ฯ†.

          theorem Manifold.OpenEmbeddingChain.limitChart_apply {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] (ฯ† : OpenPartialHomeomorph (c.X n).carrier E) (p : c.Limit) :
          โ†‘(c.limitChart n ฯ†) p = โ†‘ฯ† (โ†‘(c.pieceOpenEmb n).symm p)

          limitChart n ฯ† reads ฯ† at the representative in the piece.

          theorem Manifold.OpenEmbeddingChain.limitChart_symm_apply {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] (ฯ† : OpenPartialHomeomorph (c.X n).carrier E) (v : E) :
          โ†‘(c.limitChart n ฯ†).symm v = c.toLimit n (โ†‘ฯ†.symm v)

          The inverse of limitChart n ฯ† is the inclusion after the inverse of ฯ†.

          theorem Manifold.OpenEmbeddingChain.pieceOpenEmb_symm_rep {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (p : c.Limit) :
          โ†‘(c.pieceOpenEmb (c.repIdx p)).symm p = c.rep p

          The inverse of the inclusion of the piece repIdx p sends p to rep p.

          @[instance_reducible]
          noncomputable instance Manifold.OpenEmbeddingChain.limitChartedSpace {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) :

          The charted-space structure of the limit โ€” the charts limitChart n ฯ† of the nonempty pieces' charts; the chart at p is the one from chartAt (rep p).

          Equations
          • One or more equations did not get rendered due to their size.
          theorem Manifold.OpenEmbeddingChain.mem_atlas_limit_iff {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) {ฮฆ : OpenPartialHomeomorph c.Limit E} :
          ฮฆ โˆˆ atlas E c.Limit โ†” โˆƒ (n : โ„•) (x : Nonempty (c.X n).carrier), โˆƒ ฯ† โˆˆ atlas E (c.X n).carrier, ฮฆ = c.limitChart n ฯ†

          The atlas of the limit consists of the charts limitChart n ฯ† of the nonempty pieces' charts.

          theorem Manifold.OpenEmbeddingChain.limitChart_mem_atlas {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] {ฯ† : OpenPartialHomeomorph (c.X n).carrier E} (hฯ† : ฯ† โˆˆ atlas E (c.X n).carrier) :

          Each limitChart n ฯ† of a chart ฯ† of a nonempty piece lies in the atlas.

          The transition between two pieces is analytic #

          noncomputable def Manifold.OpenEmbeddingChain.transition {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n m : โ„•) [Nonempty (c.X m).carrier] (x : (c.X n).carrier) :
          (c.X m).carrier

          The transition X n โЇ toLimit n โปยน' range (toLimit m) โ†’ X m through the limit, (pieceOpenEmb m).symm โˆ˜ toLimit n (defined everywhere, meaningful on the domain).

          Equations
          Instances For
            theorem Manifold.OpenEmbeddingChain.toLimit_transition {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n m : โ„•) [Nonempty (c.X m).carrier] {x : (c.X n).carrier} (hx : c.toLimit n x โˆˆ Set.range (c.toLimit m)) :
            c.toLimit m (c.transition n m x) = c.toLimit n x

            The transition is over the limit.

            theorem Manifold.OpenEmbeddingChain.iter_transition {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n m : โ„•) [Nonempty (c.X m).carrier] {x : (c.X n).carrier} (hx : c.toLimit n x โˆˆ Set.range (c.toLimit m)) :
            (c.iter โ‹ฏ) (c.transition n m x) = (c.iter โ‹ฏ) x

            The transition agrees with the composites in the piece max n m.

            theorem Manifold.OpenEmbeddingChain.isOpen_transitionDomain {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n m : โ„•) :

            The domain of the transition is open.

            theorem Manifold.OpenEmbeddingChain.continuousOn_transition {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n m : โ„•) [Nonempty (c.X m).carrier] :

            The transition is continuous on its domain.

            theorem Manifold.OpenEmbeddingChain.contMDiffOn_transition {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n m : โ„•) [Nonempty (c.X m).carrier] :

            The transition is analytic on its domain: near x it is ฮฆ.symm โˆ˜ iter, ฮฆ a local inverse of the composite embedding X m โ†’ X (max n m) at transition n m x (Wล‚odarczyk's identifications of the pieces on their overlaps by canonicity, [Wlo09, ยง4.1], read through the composites).

            The limit is an analytic manifold #

            theorem Manifold.OpenEmbeddingChain.mem_source_trans_limitChart {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n m : โ„•) [Nonempty (c.X n).carrier] [Nonempty (c.X m).carrier] (ฯ† : OpenPartialHomeomorph (c.X n).carrier E) (ฯˆ : OpenPartialHomeomorph (c.X m).carrier E) {v : E} (hv : v โˆˆ ((c.limitChart n ฯ†).symm.trans (c.limitChart m ฯˆ)).source) :

            A point v of the source of the chart change from limitChart n ฯ† to limitChart m ฯˆ lies in ฯ†'s target, and ฯ†.symm v in the transition's domain, in ฯ†'s source and over ฯˆ's source.

            instance Manifold.OpenEmbeddingChain.limitIsManifold {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) :

            The limit is an analytic manifold โ€” its chart changes are the transitions read in the pieces' charts (ฯˆ โˆ˜ transition n m โˆ˜ ฯ†.symm), analytic by contMDiffOn_transition (isManifold_of_contDiffOn, contMDiffOn_iff_of_mem_maximalAtlas').

            noncomputable def Manifold.OpenEmbeddingChain.limitManifold {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) :
            AnalyticManifold ๐•œ E

            The direct limit as a bundled analytic manifold (Wล‚odarczyk's glued manifold Mฬƒ, Wlo09, ยง4.1).

            Equations
            Instances For

              The inclusions of the pieces are analytic open embeddings #

              theorem Manifold.OpenEmbeddingChain.contMDiffOn_pieceOpenEmb_symm {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] :

              The inverse of a piece's inclusion is analytic on the image of the piece โ€” near toLimit n y it is (chartAt y).symm โˆ˜ limitChart n (chartAt y).

              theorem Manifold.OpenEmbeddingChain.contMDiff_toLimit {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) :

              Each inclusion is analytic โ€” near x it is (limitChart n (chartAt x)).symm โˆ˜ chartAt x.

              def Manifold.OpenEmbeddingChain.toLimitMap {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) :

              The inclusion of a piece as an analytic map into the limit manifold.

              Equations
              Instances For
                theorem Manifold.OpenEmbeddingChain.toLimitMap_apply {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) (x : (c.X n).carrier) :
                (c.toLimitMap n) x = c.toLimit n x

                toLimitMap is the inclusion.

                noncomputable def Manifold.OpenEmbeddingChain.pieceDiffeomorph {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) [Nonempty (c.X n).carrier] :

                The inclusion of a nonempty piece as a partial diffeomorphism onto its (open) image.

                Equations
                Instances For
                  theorem Manifold.OpenEmbeddingChain.isLocalDiffeomorph_toLimit {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) :

                  Each inclusion is a local analytic isomorphism (pieceDiffeomorph at every point).

                  Each inclusion is an analytic open embedding (Wล‚odarczyk's open embeddings of desingularizations along open embeddings, [Wlo09, ยง4]).

                  theorem Manifold.OpenEmbeddingChain.range_toLimitMap {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) :

                  The range of toLimitMap n is the image of the piece.

                  theorem Manifold.OpenEmbeddingChain.isAnalyticIsoOver_toLimitMap {๐•œ : Type} [RCLike ๐•œ] {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ๐•œ E] (c : OpenEmbeddingChain ๐•œ E) (n : โ„•) :

                  Each inclusion is an analytic isomorphism onto its open image (the identification U_r = ลจ of [Wlo09, Theorem 2.0.3 (1)]; the field toSpace_isIso of ExtensionCompatibleFamily).