Documentation

TauCeti.LowDimTopology.DehnSurgery.Slope

Slopes on a framed boundary torus #

A slope on the boundary torus T of a knot or link complement is the datum needed to specify a Dehn filling: the isotopy class of an unoriented essential simple closed curve on T, equivalently a primitive class in H₁(T; ℤ) taken modulo sign (Rolfsen, Knots and Links, Chapter 9). This is basis-free: it refers only to the homology group H₁(T; ℤ), an abstract rank-two free -module, with no coordinates chosen. Once T is framed by an ordered basis (μ, λ) of meridian and longitude, H₁(T; ℤ) is identified with ℤ × ℤ (first coordinate the μ-coefficient, second the λ-coefficient) and every slope acquires a value p / q ∈ ℚ ∪ {∞}, the ratio of its coordinates; the filling then sends the solid torus's meridian to p · μ + q · λ.

This file builds the slope arithmetic for the framed model, the first piece of the geometric-topology roadmap's Dehn-surgery layer (TauCetiRoadmap/GeometricTopology/README.md, layer 5, "Dehn surgery": "Slopes, with the primitive pinned … give a FramedBoundaryTorus an ordered basis (μ, λ) … and the resulting bijection Slope T ≃ ℚ ∪ {∞}"). The layer asks for two objects kept distinct: the sign-quotient Slope (basis-free) and the ℚ ∪ {∞} parametrisation (basis-dependent). Accordingly TauCeti.Slope M is the basis-free set of primitive classes modulo sign in an abstract -module M, and every framing-dependent notion — meridian, longitude, value, and the bijection slopeEquiv — is a field/operation of TauCeti.FramedBoundaryTorus, carrying its own ordered basis. Identifying H₁(T; ℤ) with the boundary torus of a genuine link complement is now expressed through BoundaryTorus.firstHomology; constructing that boundary torus from the complement is later layer-5 work that consumes this arithmetic.

Primitivity of v : M is expressed basis-freely: v is primitive when some -linear functional M →ₗ[ℤ] ℤ sends it to 1, so v splits off a copy of . Over the standard lattice ℤ × ℤ this is exactly coprimality of the two coordinates, and that concrete arithmetic supplies the ℚ ∪ {∞} bijection through any framing's coordinate isomorphism.

Main definitions #

Main results #

ℚ ∪ {∞} is Mathlib's one-point extension OnePoint from Mathlib/Topology/Compactification/OnePoint/Basic.lean; the reduced-fraction bookkeeping reuses Mathlib's Rat normalisation (Rat.num_div_den, Rat.num_div_eq_of_coprime, Rat.den_div_eq_of_coprime).

Primitive classes and the basis-free slope type #

The Quotient model of Slope, and the bodies of the maps into and out of it, are implementation details: the underlying setoid is private and the bodies stay unexposed, so consumers work through the public defining equations (Slope.congr_mk, Slope.value_mk, slopeOfValue_infty, slopeEquivStd_apply, …). Those equations are proved by a parenthesised (rfl), which keeps them ordinary propositional lemmas instead of implicitly @[defeq] ones; an exported @[defeq] theorem would have to expose every definition it unfolds.

def TauCeti.IsPrimitive {M : Type u_1} [AddCommGroup M] [Module M] (v : M) :

A homology class v : M on a boundary torus is primitive when some -linear functional M →ₗ[ℤ] ℤ sends it to 1, so the span of v splits off a copy of . Over the standard lattice ℤ × ℤ this is coprimality of the two coordinates (TauCeti.isPrimitive_prod_iff). The definition mentions no basis, so it is preserved by every -linear equivalence (TauCeti.isPrimitive_congr).

Equations
Instances For
    theorem TauCeti.IsPrimitive.neg {M : Type u_1} [AddCommGroup M] [Module M] {v : M} (h : IsPrimitive v) :

    Primitivity is unchanged by the sign action v ↦ -v.

    theorem TauCeti.isPrimitive_congr {M : Type u_1} {N : Type u_2} [AddCommGroup M] [AddCommGroup N] [Module M] [Module N] (φ : M ≃ₗ[] N) {v : M} :

    Primitivity transports along a -linear equivalence: it is a basis-free property.

    def TauCeti.Slope (M : Type u_3) [AddCommGroup M] [Module M] :
    Type u_3

    A slope on a boundary torus with homology M: a primitive homology class taken modulo the sign action, i.e. an unoriented essential simple closed curve up to isotopy. This is basis-free — it refers only to the abstract module M, not to any choice of meridian-longitude basis.

    Equations
    Instances For
      def TauCeti.Slope.mk {M : Type u_1} [AddCommGroup M] [Module M] (v : M) (h : IsPrimitive v) :

      The slope represented by a primitive class v : M.

      Equations
      Instances For
        theorem TauCeti.Slope.mk_eq_mk {M : Type u_1} [AddCommGroup M] [Module M] {v w : M} (hv : IsPrimitive v) (hw : IsPrimitive w) (h : v = w v = -w) :
        mk v hv = mk w hw
        @[simp]
        theorem TauCeti.Slope.mk_eq_mk_iff {M : Type u_1} [AddCommGroup M] [Module M] {v w : M} (hv : IsPrimitive v) (hw : IsPrimitive w) :
        mk v hv = mk w hw v = w v = -w

        Two primitive representatives define the same slope exactly when they agree up to sign.

        theorem TauCeti.Slope.induction_on {M : Type u_1} [AddCommGroup M] [Module M] {C : Slope MProp} (s : Slope M) (h : ∀ (v : M) (hv : IsPrimitive v), C (mk v hv)) :
        C s
        def TauCeti.Slope.congr {M : Type u_1} {N : Type u_2} [AddCommGroup M] [AddCommGroup N] [Module M] [Module N] (φ : M ≃ₗ[] N) :

        A -linear equivalence M ≃ₗ[ℤ] N transports slopes bijectively; a framing's coordinate isomorphism uses this to carry a slope to the standard lattice.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem TauCeti.Slope.congr_mk {M : Type u_1} {N : Type u_2} [AddCommGroup M] [AddCommGroup N] [Module M] [Module N] (φ : M ≃ₗ[] N) (v : M) (h : IsPrimitive v) :
          (congr φ) (mk v h) = mk (φ v)
          @[simp]
          theorem TauCeti.Slope.congr_symm {M : Type u_1} {N : Type u_2} [AddCommGroup M] [AddCommGroup N] [Module M] [Module N] (φ : M ≃ₗ[] N) :

          Transporting slopes along φ and along φ.symm are inverse to one another.

          The standard lattice ℤ × ℤ #

          For the standard lattice ℤ × ℤ, primitivity is coprimality of the coordinates, and the reduced fraction p / q supplies the ℚ ∪ {∞} parametrisation. Every framing produces its own copy of this bijection through its coordinate isomorphism.

          Over ℤ × ℤ, a class is primitive exactly when its two coordinates are coprime.

          The first standard basis vector of ℤ × ℤ is primitive.

          The second standard basis vector of ℤ × ℤ is primitive.

          The reduced form (r.num, r.den) of a rational is a primitive class.

          A primitive class of ℤ × ℤ with vanishing second coordinate has first coordinate ±1.

          The value p / q ∈ ℚ ∪ {∞} of a class v = (p, q), taken to be when q = 0. This is the ratio of the meridian- and longitude-coordinates in a framing.

          Equations
          Instances For
            @[simp]
            theorem TauCeti.slopeValue_of_snd_ne_zero {v : × } (hq : v.2 0) :
            slopeValue v = ↑(v.1 / v.2)

            The value of a class is unchanged by the sign action v ↦ -v.

            The ℚ ∪ {∞} value of a standard-lattice slope, the ratio of its coordinates.

            Equations
            Instances For
              @[simp]

              The primitive class attached to a value in ℚ ∪ {∞}: the class (1, 0) for , and the reduced fraction (r.num, r.den) for a rational r.

              Equations
              Instances For
                @[simp]

                Reading off the value of a standard-lattice slope and rebuilding a slope from it recovers the original slope.

                The standard-lattice slope built from a value in ℚ ∪ {∞} has that value again.

                The standard slope parametrisation. For the standard lattice ℤ × ℤ, primitive homology classes modulo sign biject with ℚ ∪ {∞}: a reduced fraction p / q corresponds to the primitive class (p, q), with the class (1, 0). A framing produces the corresponding bijection on any boundary torus through its coordinate isomorphism (TauCeti.FramedBoundaryTorus.slopeEquiv).

                Equations
                Instances For

                  Boundary tori and framings #

                  A framing supplies the coordinate isomorphism H₁(T; ℤ) ≃ ℤ × ℤ that turns the basis-free Slope into the ℚ ∪ {∞} parametrisation. The homology object and the ordered meridian-longitude basis are carried explicitly, keeping the basis-dependent notions (meridian, longitude, value, slopeEquiv) genuinely parametrised by the framing rather than globally canonical.

                  A boundary torus is a topological space that is homeomorphic to the standard two-torus; no particular homeomorphism is chosen. Its first homology, rather than an unrelated abstract lattice, is the carrier on which slopes are defined.

                  • carrier : Type

                    The underlying topological space.

                  • topologicalSpace : TopologicalSpace self.carrier
                  • parametrization : Nonempty (self.carrier ≃ₜ UnitAddTorus (Fin 2))

                    The assertion that the space is homeomorphic to the standard two-torus. Only the existence of such a homeomorphism is recorded, keeping this field a Prop, so it never obstructs equality: two boundary tori with the same carrier and the same topology are equal.

                  Instances For
                    @[reducible, inline]

                    The first singular homology of a boundary torus with integer coefficients.

                    Equations
                    Instances For

                      A framed boundary torus: a boundary torus together with an ordered meridian-longitude basis (μ, λ) = (basis 0, basis 1) of its actual singular homology group. The framing is exactly this ordered basis; it is what identifies H₁(T; ℤ) with ℤ × ℤ and so what the ℚ ∪ {∞} parametrisation depends on.

                      Instances For
                        @[reducible, inline]

                        The first singular homology group of the underlying boundary torus.

                        Equations
                        Instances For

                          The coordinate isomorphism H₁(T; ℤ) ≃ ℤ × ℤ induced by the ordered basis (μ, λ), sending a class to its (μ, λ)-coordinates. This is the data that makes the parametrisation basis-dependent.

                          Equations
                          Instances For
                            @[simp]

                            The inverse coordinate isomorphism reads a pair of coordinates as the corresponding combination p · μ + q · λ of the framing basis.

                            The meridian slope μ = basis 0 of the framing.

                            Equations
                            Instances For

                              The longitude slope λ = basis 1 of the framing.

                              Equations
                              Instances For

                                The framing-dependent value p / q ∈ ℚ ∪ {∞} of a slope: the ratio of its (μ, λ)-coordinates. Different framings give different values, which is why this is an operation of the framing rather than of the basis-free Slope.

                                Equations
                                Instances For

                                  The framed slope parametrisation. A framing makes primitive homology classes modulo sign biject with ℚ ∪ {∞}, a reduced fraction p / q corresponding to the class with (μ, λ)-coordinates (p, q) and to the meridian.

                                  Equations
                                  Instances For
                                    @[simp]

                                    The value of the slope of a primitive class is the ratio of its (μ, λ)-coordinates.

                                    @[simp]

                                    The framed parametrisation in the inverse direction. The slope with value x ∈ ℚ ∪ {∞} is the one whose (μ, λ)-coordinates are the standard reduced pair slopeOfValue x; for a rational p / q in lowest terms that is the class p · μ + q · λ, by TauCeti.FramedBoundaryTorus.coord_symm_apply.

                                    @[simp]

                                    The framed meridian has slope value .

                                    @[simp]

                                    The framed longitude has slope value 0.