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 #
TauCeti.IsPrimitive v: the classv : Mis primitive, i.e. someℤ-functional sends it to1.TauCeti.Slope M: primitive classes inMmodulo the sign actionv ↦ -v(basis-free).TauCeti.Slope.congr: transport ofSlopealong aℤ-linear equivalence.TauCeti.slopeValue v: the valuep / q ∈ ℚ ∪ {∞}of a classv = (p, q) : ℤ × ℤ, being∞whenq = 0.TauCeti.slopeEquivStd: the bijectionSlope (ℤ × ℤ) ≃ ℚ ∪ {∞}for the standard lattice.TauCeti.BoundaryTorus: a topological space homeomorphic to the standard two-torus.TauCeti.BoundaryTorus.firstHomology: its degree-one singular homology with integer coefficients.TauCeti.FramedBoundaryTorus: a boundary torus with an ordered meridian-longitude basis of that homology group.TauCeti.FramedBoundaryTorus.meridian/.longitude: the slopes(1, 0)and(0, 1)of the framing.TauCeti.FramedBoundaryTorus.value: the framing-dependentℚ ∪ {∞}value of a slope.TauCeti.FramedBoundaryTorus.slopeEquiv: the bijectionSlope T.H ≃ ℚ ∪ {∞}a framing produces.
Main results #
TauCeti.FramedBoundaryTorus.value_meridian/.value_longitude: the meridian is∞and the longitude is0, fixing the meridian-longitude convention.TauCeti.FramedBoundaryTorus.value_mk/.slopeEquiv_symm_apply: the parametrisation in coordinates, in each direction — a primitive class has the value of its(μ, λ)-coordinates, and a value comes from the slope whose coordinates are the corresponding reduced pair.TauCeti.FramedBoundaryTorus.coord_symm_apply: a pair of coordinates(p, q)names the classp · μ + q · λ, so the filling class of a slope is reachable without unfoldingcoord.
ℚ ∪ {∞} 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.
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).
Instances For
Primitivity is unchanged by the sign action v ↦ -v.
Primitivity transports along a ℤ-linear equivalence: it is a basis-free property.
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
The slope represented by a primitive class v : M.
Instances For
Two primitive representatives define the same slope exactly when they agree up to sign.
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
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
- TauCeti.slopeValue v = if v.2 = 0 then OnePoint.infty else ↑(↑v.1 / ↑v.2)
Instances For
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
- TauCeti.Slope.value = Quotient.lift (fun (v : { v : ℤ × ℤ // TauCeti.IsPrimitive v }) => TauCeti.slopeValue ↑v) TauCeti.Slope.value._proof_1✝
Instances For
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
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
- TauCeti.slopeEquivStd = { toFun := TauCeti.Slope.value, invFun := TauCeti.slopeOfValue, left_inv := TauCeti.slopeOfValue_value, right_inv := TauCeti.value_slopeOfValue }
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
The first singular homology of a boundary torus with integer coefficients.
Equations
- T.firstHomology = ↑(((AlgebraicTopology.singularHomologyFunctor (ModuleCat ℤ) 1).obj (ModuleCat.of ℤ ℤ)).obj (TopCat.of T.carrier))
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.
- torus : BoundaryTorus
The boundary torus being framed.
- basis : Module.Basis (Fin 2) ℤ self.torus.firstHomology
The ordered meridian-longitude basis
(μ, λ)framing the torus.
Instances For
The first singular homology group of the underlying boundary torus.
Equations
- T.H = T.torus.firstHomology
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.
Instances For
The meridian slope μ = basis 0 of the framing.
Equations
- T.meridian = TauCeti.Slope.mk (T.basis 0) ⋯
Instances For
The longitude slope λ = basis 1 of the framing.
Equations
- T.longitude = TauCeti.Slope.mk (T.basis 1) ⋯
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
- T.value s = ((TauCeti.Slope.congr T.coord) s).value
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
The value of the slope of a primitive class is the ratio of its (μ, λ)-coordinates.
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.
The framed meridian has slope value ∞.
The framed longitude has slope value 0.