Documentation

Formalizations.Combinatorics.LatinSquare.Terrace

Quasi-complete Latin squares from terraces (Bailey) #

For a finite group G and orderings a, b : Fin |G| ≃ G, the Cayley table L(a, b) i j = a i * b j is quasi-complete (every unordered pair of distinct symbols is adjacent exactly twice horizontally and exactly twice vertically) if and only if a⁻¹ and b are terraces: for every g ≠ 1, g and g⁻¹ together occur exactly twice among the successive quotients (Theorem of the Day; R. A. Bailey 1984). Proof: horizontal neighbours (a_i b_j, a_i b_{j+1}) have quotient b_j⁻¹ b_{j+1}, vertical ones a_i a_{i+1}⁻¹, and for each fixed column or row the map to the first symbol is a bijection.

Main results #

References #

noncomputable def Bailey.diffCount {G : Type u_1} [Group G] [Fintype G] (s : Fin (Fintype.card G) ≃ G) (g : G) :

Número de posiciones k (con k + 1 < |G|) cuya diferencia sucesiva s k⁻¹ * s (k+1) es g.

Equations
Instances For
    def Bailey.IsTerrace {G : Type u_1} [Group G] [Fintype G] (s : Fin (Fintype.card G) ≃ G) :

    Terraza: para todo g ≠ 1, g y g⁻¹ aparecen, juntos, exactamente dos veces entre las diferencias sucesivas (una involución aparece, pues, una sola vez).

    Equations
    Instances For
      def Bailey.IsQuasiComplete {G : Type u_1} [Fintype G] (L : Fin (Fintype.card G) → Fin (Fintype.card G) → G) :

      Cuadrado casi completo: cada par no ordenado {x, y} de símbolos distintos aparece exactamente dos veces como vecinos horizontales y exactamente dos veces como vecinos verticales.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem Bailey.pair_iff {G : Type u_1} {u v x y : G} (hxy : x ≠ y) :
        {u, v} = {x, y} ↔ u = x ∧ v = y ∨ u = y ∧ v = x
        theorem Bailey.card_horiz {G : Type u_1} [Group G] [Fintype G] (a b : Fin (Fintype.card G) ≃ G) (x y g : G) (hg : x⁻¹ * y = g) :
        {p : Fin (Fintype.card G) × Fin (Fintype.card G) | ∃ (h : ↑p.2 + 1 < Fintype.card G), a p.1 * b p.2 = x ∧ a p.1 * b ⟨↑p.2 + 1, h⟩ = y}.card = diffCount b g

        Horizontal ordered count.

        theorem Bailey.card_vert {G : Type u_1} [Group G] [Fintype G] (a b : Fin (Fintype.card G) ≃ G) (x y g : G) (hg : x * y⁻¹ = g) :
        {p : Fin (Fintype.card G) × Fin (Fintype.card G) | ∃ (h : ↑p.1 + 1 < Fintype.card G), a p.1 * b p.2 = x ∧ a ⟨↑p.1 + 1, h⟩ * b p.2 = y}.card = diffCount (a.trans (Equiv.inv G)) g

        Vertical ordered count, for the list a⁻¹.

        theorem Bailey.horiz_count {G : Type u_1} [Group G] [Fintype G] (a b : Fin (Fintype.card G) ≃ G) {x y : G} (hxy : x ≠ y) :
        {p : Fin (Fintype.card G) × Fin (Fintype.card G) | ∃ (h : ↑p.2 + 1 < Fintype.card G), {a p.1 * b p.2, a p.1 * b ⟨↑p.2 + 1, h⟩} = {x, y}}.card = diffCount b (x⁻¹ * y) + diffCount b (y⁻¹ * x)
        theorem Bailey.vert_count {G : Type u_1} [Group G] [Fintype G] (a b : Fin (Fintype.card G) ≃ G) {x y : G} (hxy : x ≠ y) :
        {p : Fin (Fintype.card G) × Fin (Fintype.card G) | ∃ (h : ↑p.1 + 1 < Fintype.card G), {a p.1 * b p.2, a ⟨↑p.1 + 1, h⟩ * b p.2} = {x, y}}.card = diffCount (a.trans (Equiv.inv G)) (x * y⁻¹) + diffCount (a.trans (Equiv.inv G)) (y * x⁻¹)
        theorem Bailey.quasiComplete_iff {G : Type u_1} [Group G] [Fintype G] (a b : Fin (Fintype.card G) ≃ G) :
        (IsQuasiComplete fun (i j : Fin (Fintype.card G)) => a i * b j) ↔ IsTerrace (a.trans (Equiv.inv G)) ∧ IsTerrace b