Documentation

TauCeti.Combinatorics.PermutationTriple.LMFDB.BelyiRecord.Basic

Belyi-map records and the translation of stored triples #

The LMFDB table of Belyi maps stores, for each Galois orbit of Belyi maps, the monodromy triples of the maps in the orbit. The database composes permutations from left to right, so a stored triple (σ0, σ1, σinf) satisfies σ0 * σ1 * σinf = 1 in Mathlib's multiplication, the opposite of the relation σinf * σ1 * σ0 = 1 imposed on a TauCeti.PermutationTriple. Such a stored triple is a TauCeti.PermutationTriple.LMFDB.StoredTriple, and the triple it denotes is its image TauCeti.PermutationTriple.LMFDB.StoredTriple.toTriple under the inverse of TauCeti.PermutationTriple.equivOppositeConvention: the componentwise inverse.

The first part of this file proves that this translation preserves every invariant a record asserts, each computed directly on the stored permutations: the ordered full cycle partitions, the orders, the monodromy group, connectedness, the automorphism group, the Euler characteristic and genus, and membership in a passport. It also commutes with relabeling the sheets. Reading a stored triple without the translation is wrong as soon as its first two components do not commute, by TauCeti.PermutationTriple.LMFDB.StoredTriple.mul_mul_eq_one_iff_commute, so a stored triple whose first two components commute cannot detect the convention.

The second part mirrors one row of the table as a TauCeti.PermutationTriple.LMFDB.BelyiRecord. Its stored triples are listed position by position against the stored complex embeddings of the base field, which is recorded by the field TauCeti.PermutationTriple.LMFDB.BelyiRecord.storedEmbeddingCount_eq_triplesLength. The number of embedding entries is the natural number TauCeti.PermutationTriple.LMFDB.BelyiRecord.storedEmbeddingCount, and the stored orbit size is asserted to equal it, not the size of a Galois orbit of isomorphism classes: several stored triples may be simultaneously conjugate, so the isomorphism classes they represent, TauCeti.PermutationTriple.LMFDB.BelyiRecord.storedClasses, may be fewer than the stored entries. TauCeti.PermutationTriple.LMFDB.BelyiRecord.IsValidFor states what a row asserts about a passport, and the theorems following it read the stored partitions, genus, and monodromy group off the stored permutations, and bound the number of stored classes by the passport size.

The table also stores each triple in disjoint cycle notation, which omits fixed points and writes the identity as the empty product. A row parses it into lists of cycles (TauCeti.PermutationTriple.LMFDB.CycleNotationTriple), and validity asks that it be a disjoint cycle notation (Equiv.Perm.IsCycleNotation) for the stored triple in the same position. The notation is not translated: the stored notation of a component is reversed cycle by cycle to give the notation of the corresponding component of the translated triple (TauCeti.PermutationTriple.LMFDB.StoredTriple.IsCycleNotation.isCycleNotation_toTriple_σ0). The listed lengths are the stored permutation's Equiv.Perm.cycleType, so the stored partitions are the listed lengths padded by parts equal to one (TauCeti.PermutationTriple.LMFDB.BelyiRecord.IsValidFor.lambdas_eq_of_mem_triplesCyc).

The stored base field, the defining equations of the curve and the map, the floating-point values of the embeddings, and the labels are carried as data and are not interpreted here.

Main definitions #

Main results #

References #

@[reducible, inline]

A permutation triple as the LMFDB stores it. The database composes permutations from left to right, so its stored triples satisfy σ0 * σ1 * σinf = 1 in Mathlib's multiplication.

Instances For
    @[reducible, inline]

    A triple of permutations of Fin n in disjoint cycle notation, as the database's cycle notation is parsed: each component is a list of cycles, each cycle the list of its points in order, where the stored point i is the element i - 1 of Fin n.

    Instances For

      The permutation triple denoted by a stored triple: its image under the inverse of the opposite-convention equivalence, which inverts every component.

      Instances For

        A stored triple denotes t exactly when it is the opposite-convention form of t.

        theorem TauCeti.PermutationTriple.LMFDB.StoredTriple.mul_mul_eq_one_iff_commute {n : ℕ} (s : StoredTriple n) :
        (↑s).2.2 * (↑s).2.1 * (↑s).1 = 1 ↔ Commute (↑s).1 (↑s).2.1

        The stored components also satisfy this library's relation exactly when the first two of them commute. A stored triple whose first two components do not commute is therefore not a permutation triple when read without translation.

        @[simp]

        Relabeling a stored triple relabels the triple it denotes.

        Invariants of the translated triple #

        @[simp]

        The ordered full cycle partitions of the translated triple are those of the stored components.

        @[simp]

        The orders of the components of the translated triple are those of the stored components.

        @[simp]

        The monodromy group of the translated triple is generated by the first two stored components.

        The translated triple is connected exactly when there is a sheet and the first two stored components generate a transitive group.

        @[simp]

        The automorphism group of the translated triple is the simultaneous centralizer of the first two stored components.

        @[simp]
        theorem TauCeti.PermutationTriple.LMFDB.StoredTriple.eulerChar_toTriple {n : ℕ} (s : StoredTriple n) :
        s.toTriple.eulerChar = ↑(orbitCount (↑s).1) + ↑(orbitCount (↑s).2.1) + ↑(orbitCount (↑s).2.2) - ↑n

        The Euler characteristic of the translated triple, counted on the stored components.

        theorem TauCeti.PermutationTriple.LMFDB.StoredTriple.genus_toTriple {n : ℕ} (s : StoredTriple n) :
        s.toTriple.genus = ((2 - (↑(orbitCount (↑s).1) + ↑(orbitCount (↑s).2.1) + ↑(orbitCount (↑s).2.2) - ↑n)) / 2).toNat

        The genus of the translated triple, counted on the stored components.

        A connected translated triple has passport P exactly when the group generated by the first two stored components is conjugate to the reference group of P and the stored components have the partitions of P.

        Stored cycle notation #

        c writes each component of s in disjoint cycle notation, as the database stores it: fixed points are omitted and the identity is the empty list of cycles.

        • σ0 : (↑s).1.IsCycleNotation c.1

          c.1 writes the first stored component.

        • σ1 : (↑s).2.1.IsCycleNotation c.2.1

          c.2.1 writes the second stored component.

        • σinf : (↑s).2.2.IsCycleNotation c.2.2

          c.2.2 writes the third stored component.

        Instances For

          Every stored triple can be written in disjoint cycle notation.

          The stored cycle notation of the first component, reversed cycle by cycle, writes the first component of the translated triple.

          The stored cycle notation of the second component, reversed cycle by cycle, writes the second component of the translated triple.

          The stored cycle notation of the third component, reversed cycle by cycle, writes the third component of the translated triple.

          The ordered full cycle partitions of the translated triple are the cycle lengths of the stored cycle notation, each padded by one part equal to one for every point it omits.

          Belyi-map records #

          A row of the LMFDB table of Belyi maps in degree n, with its stored fields parsed into Lean data. The row describes one Galois orbit of Belyi maps. Its stored degree is the field deg, which validity identifies with n.

          The stored triples are kept in the database's convention, as StoredTriples, and are listed position by position against the stored complex embeddings of the base field: the i-th triple is the monodromy of the map under the i-th embedding. The remaining fields are carried as data and are not interpreted here.

          • label : String

            The stored label of the Galois orbit.

          • plabel : String

            The stored label of the passport containing the orbit.

          • deg : ℕ

            The stored degree.

          • The stored full cycle partitions at 0, 1, and ∞, fixed points included.

          • g : ℕ

            The stored genus.

          • orbitSize : ℕ

            The stored orbit size.

          • baseField : List ℚ

            The stored coefficients, in increasing degree, of a defining polynomial of the base field over which the stored equations are written. This is a field of definition of each map in the orbit, and is not asserted to be its field of moduli.

          • embeddings : List (Float × Float)

            The stored floating-point values, as real and imaginary parts, of the complex embeddings of the base field.

          • triples : List (StoredTriple n)

            The stored triples, in the database's convention.

          • triplesCyc : List (CycleNotationTriple n)

            The stored triples in cycle notation, parsed into lists of cycles. The notation omits fixed points and writes the identity as the empty list of cycles.

          • curve : String

            The stored equations of the curve.

          • map : String

            The stored formula for the map.

          • planeModel : String

            The stored plane model of the curve.

          • planeConstant : String

            The stored constant attached to the plane model.

          • curveLabel : Option String

            The stored label of the associated curve, absent on rows that have none.

          • friends : List String

            The stored labels of related objects.

          • storedEmbeddingCount_eq_triplesLength : self.embeddings.length = self.triples.length

            The stored triples are indexed by the stored embeddings, position by position.

          Instances For

            The number of stored embedding entries of a row. This is a count of stored entries, not the size of a Galois orbit of isomorphism classes.

            Instances For

              The isomorphism classes of the triples denoted by the stored triples.

              Instances For

                The stored triples represent at most as many isomorphism classes as there are stored embedding entries. The inequality is strict when two stored triples are simultaneously conjugate.

                A row is valid for the passport P when its stored degree is the degree, its stored orbit size is its number of stored embedding entries, it stores at least one triple, every stored triple denotes a connected triple with passport P, its stored cycle notation writes the stored triples position by position, the stored partitions are those of P, and the stored genus is the genus of every stored triple.

                The labels, the base field, the equations, and the embedding values are not constrained.

                Instances For

                  Every stored triple of a valid row denotes a connected triple.

                  The passport of a valid row is admissible.

                  The stored orbit size of a valid row is its number of stored triples.

                  The stored orbit size of a valid row is positive.

                  The stored partitions of a valid row are the ordered cycle data of every stored triple.

                  The stored partitions of a valid row are the full cycle partitions of the stored components of every stored triple, read in the database's convention.

                  The stored partitions of a valid row are the cycle types of the stored components, which omit fixed points, padded by one part equal to one for each fixed point.

                  A valid row stores one cycle notation for each stored triple.

                  Every stored cycle notation of a valid row writes one of its stored triples.

                  The stored partitions from the stored cycle notation. The stored partitions of a valid row are the cycle lengths of each of its stored cycle notations, padded by one part equal to one for every omitted fixed point.

                  In a valid row, the group generated by the first two stored components of every stored triple is conjugate to the reference group of the passport.

                  theorem TauCeti.PermutationTriple.LMFDB.BelyiRecord.IsValidFor.g_eq_toNat {n : ℕ} {r : BelyiRecord n} {P : PassportSpec n} {s : StoredTriple n} (h : r.IsValidFor P) (hs : s ∈ r.triples) :
                  r.g = ((2 - (↑(orbitCount (↑s).1) + ↑(orbitCount (↑s).2.1) + ↑(orbitCount (↑s).2.2) - ↑n)) / 2).toNat

                  The stored genus of a valid row, counted on the stored components of any stored triple.

                  The stored genus of a valid row is the genus of every connected triple with its passport.

                  Every stored class of a valid row is the class of a connected triple in its passport.

                  The stored triples of a valid row represent at most as many isomorphism classes as its passport contains.

                  Every connected triple is the stored triple of a formal row that is valid for its passport, so TauCeti.PermutationTriple.LMFDB.BelyiRecord.IsValidFor is not vacuous. The row carries placeholder data in the fields that validity leaves unconstrained: the base-field polynomial X - 1 with a single embedding entry, and empty labels and equations. Its cycle notation is some disjoint cycle notation for the stored triple. It is not a certificate that the corresponding Belyi map is defined over ℚ, which this theorem does not establish.