Numerical types and their signed genus #
A numerical type is the combinatorial shadow of the special fibre of a proper regular model
of a curve over a discrete valuation ring: a finite nonempty set of components carrying
multiplicities mᵢ, weights wᵢ (the degrees of the constant fields of the components over the
residue field) and genera gᵢ, together with a symmetric matrix of intersection numbers
A = (aᵢⱼ) whose off-diagonal entries are nonnegative, whose associated graph is connected,
which is killed by the multiplicity vector, and whose i-th row is divisible by wᵢ.
This file introduces that structure, its positivity and connectedness API, its reindexing along an equivalence of component sets, equivalences of numerical types, and its signed genus
g(T) = 1 + ∑ᵢ mᵢ (wᵢ (gᵢ - 1) - aᵢᵢ / 2).
The arithmetic subtlety in the genus formula is that the individual half-diagonals aᵢᵢ / 2 need
not be integers, so the halving may only be performed once, on the whole sum. That this is
legitimate is TauCeti.NumericalType.even_sum_multiplicity_mul_diagonal: pairing the fibre
relation against the multiplicity vector gives ∑ᵢⱼ mᵢ mⱼ aᵢⱼ = 0, and for a symmetric integer
matrix that forces ∑ᵢ mᵢ aᵢᵢ to be even
(Matrix.IsSymm.even_sum_mul_diag_of_dotProduct_mulVec_eq_zero).
Main definitions #
TauCeti.NumericalType: the structure described above, following Stacks, Tag 0C6Z.TauCeti.NumericalType.Adj: the adjacency relationi ≠ j ∧ 0 < aᵢⱼwhose reflexive transitive closure the connectedness axiom requires to be total.TauCeti.NumericalType.reindex: the numerical type obtained by transporting the component set along an equivalence.TauCeti.NumericalType.Equiv: an equivalence of numerical types, a bijection of component sets matching all of their data, with its identity, inverse and composite.TauCeti.NumericalType.arithmeticGenus: the signed genus, valued inℤ.
Main results #
TauCeti.NumericalType.even_sum_multiplicity_mul_diagonal:∑ᵢ mᵢ aᵢᵢis even, which is what makes the halving in the genus formula exact, andTauCeti.NumericalType.two_mul_arithmeticGenus, the resulting division-free form of that formula.TauCeti.NumericalType.intersection_self_nonposandTauCeti.NumericalType.intersection_self_neg: self-intersections are nonpositive, and are negative as soon as there is more than one component.TauCeti.NumericalType.multiplicity_mul_intersection_leandTauCeti.NumericalType.multiplicity_mul_weight_le_of_pos: the data at a neighbour of a component are bounded by its weighted self-intersection (Stacks, Tag 0C9U).TauCeti.NumericalType.intersection_eq_zero_of_card_eq_oneandTauCeti.NumericalType.arithmeticGenus_of_card_eq_one: a numerical type with a single component has zero intersection matrix and signed genus1 + mᵢwᵢ(gᵢ - 1)(Stacks, Tag 0C73).TauCeti.NumericalType.exists_mem_notMem_adj: every nonempty proper set of components meets its complement, the no-disconnected-cut form in which Stacks, Tag 0C6Z states the connectedness condition.TauCeti.NumericalType.arithmeticGenus_reindex: the signed genus does not depend on the chosen indexing of the components.TauCeti.NumericalType.nonempty_equiv_iff: two numerical types are equivalent exactly when one is a reindexing of the other, andTauCeti.NumericalType.Equiv.arithmeticGenus_eq: equivalent numerical types have the same signed genus.
Implementation notes #
Abstract numerical types can have negative genus, so arithmeticGenus lands in ℤ rather than
ℕ; the genus-zero variant of twoComponentWeightTwoExample in Picard/WeightedExample.lean
has genus -1. Nor may the halving be distributed over the sum: oddDiagonalExample has odd
diagonal entries.
Symmetry of the intersection matrix is recorded through Mathlib's Matrix.IsSymm rather than as
a bare pointwise equation, so that a reindexed matrix inherits it from Matrix.IsSymm.submatrix.
The no-disconnected-cut criterion in the other direction, which is what discharges the connected
field when a numerical type is built, has to be available before the type exists, so it is stated
for a bare matrix:
Matrix.forall_reflTransGen_ne_and_pos_iff in TauCeti.LinearAlgebra.Matrix.Connected, which
this file re-exports.
A numerical type, in the sense of Stacks, Tag 0C6Z.
multiplicity i and weight i are the multiplicity of the i-th component of the special fibre
of a proper regular model and the degree of its constant field over the residue field, and
genus i is its arithmetic genus over that constant field, not the genus of its normalization.
The matrix intersection records the intersection numbers of the components.
- Component : Type u
The finite nonempty index set of components.
- componentDecidableEq : DecidableEq self.Component
The multiplicity of a component in the special fibre.
The degree of the constant field of a component over the residue field.
The matrix of intersection numbers of the components.
- intersection_isSymm : self.intersection.IsSymm
Intersection numbers are symmetric.
- offDiagonal_nonneg (i j : self.Component) : i ≠ j → 0 ≤ self.intersection i j
Distinct components meet nonnegatively.
- connected (i j : self.Component) : Relation.ReflTransGen (fun (i j : self.Component) => i ≠ j ∧ 0 < self.intersection i j) i j
The graph joining components that meet is connected.
- fiber_relation (i : self.Component) : ∑ j : self.Component, ↑↑(self.multiplicity j) * self.intersection i j = 0
The whole special fibre meets every component in degree zero.
The
i-th row of the intersection matrix is divisible by the weight of thei-th component.The arithmetic genus of a component over its own constant field.
Instances For
Intersection numbers of a numerical type commute.
Connectedness of the intersection graph #
Two components of a numerical type are adjacent when they are distinct and meet.
Instances For
Unfolding of TauCeti.NumericalType.Adj.
The connectedness axiom, phrased with TauCeti.NumericalType.Adj.
Adjacency is a symmetric relation.
Every nonempty proper set of components of a numerical type meets its complement: this is the no-disconnected-cut form of the connectedness axiom.
The fibre relation in matrix form: the multiplicity vector lies in the kernel of the intersection matrix.
The fibre relation in row-vector form: the multiplicity vector lies in the kernel of the intersection matrix.
Self-intersections #
Off the diagonal, multiplicity-weighted intersection numbers are nonnegative.
The fibre relation with the diagonal term isolated.
Self-intersections in a numerical type are nonpositive.
In a numerical type with more than one component, every component meets some other one.
In a numerical type with more than one component, self-intersections are negative.
With more than one component, every self-intersection is a negative multiple of the weight.
Bounds at the neighbours of a component #
The multiplicity-weighted intersection number mᵢaᵢⱼ is bounded by the weighted
self-intersection mⱼ|aⱼⱼ| of the second component
(Stacks, Tag 0C9U).
If two components meet, the multiplicity times the weight of the first is bounded by the weighted self-intersection of the second (Stacks, Tag 0C9U).
Numerical types with one component #
A numerical type with a single component has zero intersection matrix (Stacks, Tag 0C73).
A numerical type with a component of nonzero self-intersection has more than one component.
Integrality of the signed genus #
The multiplicity-weighted sum of the self-intersections of a numerical type is even.
This is what makes the halving in the genus formula exact; the individual terms mᵢ aᵢᵢ need not
be even, as oddDiagonalExample shows. The fibre relation says that the intersection matrix kills
the multiplicity vector, so this is an instance of
Matrix.IsSymm.even_sum_mul_diag_of_dotProduct_mulVec_eq_zero.
The signed genus #
The signed genus of a numerical type,
g(T) = 1 + ∑ᵢ mᵢ (wᵢ (gᵢ - 1) - aᵢᵢ / 2)
(compare Stacks, Tag 0C71).
The halving is performed once, on the whole sum ∑ᵢ mᵢ aᵢᵢ, which is even by
even_sum_multiplicity_mul_diagonal; the individual half-diagonals need not be integers.
Abstract numerical types can have negative genus, so the value is an integer, not a natural
number.
Equations
- T.arithmeticGenus = 1 + ∑ i : T.Component, ↑↑(T.multiplicity i) * ↑↑(T.weight i) * (↑(T.genus i) - 1) - (∑ i : T.Component, ↑↑(T.multiplicity i) * T.intersection i i) / 2
Instances For
The defining formula of the signed genus, with the halving performed once on the whole sum
∑ᵢ mᵢ aᵢᵢ.
The genus formula with the halving cleared, which is the shape in which it is used.
The signed genus of a numerical type with a single component i is 1 + mᵢwᵢ(gᵢ - 1)
(Stacks, Tag 0C73).
Reindexing #
The numerical type obtained by transporting the component set along an equivalence.
The finiteness and decidable equality of the new component set are transported along the equivalence, so the target needs no instances of its own and may live in any universe.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Numerical types are determined by their multiplicity, weight, intersection and genus data: an equivalence of component sets matching all four identifies the two types. As the component set is a field rather than a parameter, this is the extensionality principle for numerical types; the instance fields are subsingletons and the remaining fields are proofs.
Multiplicities of a reindexed numerical type.
Intersection numbers of a reindexed numerical type.
Reindexing along the identity equivalence changes nothing.
The signed genus does not depend on the chosen indexing of the components.
Equivalence of numerical types #
An equivalence of numerical types, in the sense of
Stacks, Tag 0C6Z: a bijection of component sets
matching multiplicities, weights, intersection numbers and genera. Two numerical types are
equivalent when Nonempty (T.Equiv T').
The underlying bijection of component sets.
The bijection preserves multiplicities.
The bijection preserves weights.
- intersection_apply (i j : T.Component) : T'.intersection (self.toEquiv i) (self.toEquiv j) = T.intersection i j
The bijection preserves intersection numbers.
The bijection preserves the genera of the components.
Instances For
The identity equivalence of a numerical type.
Equations
- TauCeti.NumericalType.Equiv.refl = { toEquiv := Equiv.refl T.Component, multiplicity_apply := ⋯, weight_apply := ⋯, intersection_apply := ⋯, genus_apply := ⋯ }
Instances For
The bijection underlying TauCeti.NumericalType.Equiv.refl is the identity.
The inverse of an equivalence of numerical types.
Equations
Instances For
The bijection underlying the inverse is the inverse bijection.
The composite of two equivalences of numerical types.
Equations
Instances For
The bijection underlying a composite is the composite bijection.
The inverse of the identity equivalence is the identity.
Inverting an equivalence of numerical types twice returns it.
The identity equivalence is a left unit for composition.
The identity equivalence is a right unit for composition.
An equivalence of numerical types composed with its inverse is the identity.
The inverse of an equivalence of numerical types composed with it is the identity.
Composition of equivalences of numerical types is associative.
An equivalence of numerical types identifies the target with the reindexed source.
Equivalent numerical types have the same signed genus.
A numerical type is equivalent to each of its reindexings, along the reindexing equivalence.
Equations
- T.equivReindex e = { toEquiv := e, multiplicity_apply := ⋯, weight_apply := ⋯, intersection_apply := ⋯, genus_apply := ⋯ }
Instances For
The bijection underlying TauCeti.NumericalType.equivReindex is the reindexing equivalence.
Two numerical types are equivalent exactly when one is a reindexing of the other.