Documentation

AlgebraicCombinatorics.Details.DominoBridge

Bridge between Domino representations #

This module provides equivalence functions between the two Domino representations used in the project:

  1. WeightedSets.lean (DominoTilingsZ.Domino): Inductive type with horizontal/vertical constructors, using ℤ coordinates, with Set Domino for tilings
  2. DominoTilings.lean (DominoTilings.Domino): Structure with cell1/cell2 fields, using ℕ coordinates, with Finset Domino for tilings

Design Rationale #

The two representations were designed for different purposes:

For rectangles with positive coordinates (the typical case), the representations are equivalent. This bridge enables theorem transfer between files when needed.

Main Definitions #

Main Results #

References #

Tags #

domino, tiling, bridge, equivalence

Coordinate conversion helpers #

The cells covered by a DominoTilings.Domino, cast to ℤ coordinates. This allows comparison with DominoTilingsZ.Domino.toShape.

Equations
Instances For

    Conversion from DominoTilings.Domino to DominoTilingsZ.Domino #

    Note: We use DominoTilings.Domino.isHorizontal and DominoTilings.Domino.isVertical from DominoTilings.lean via dot notation (e.g., d.isHorizontal).

    Convert a DominoTilings.Domino to DominoTilingsZ.Domino.

    The conversion uses the minimum coordinate as the anchor point:

    • A horizontal domino becomes DominoTilingsZ.Domino.horizontal (min col) row
    • A vertical domino becomes DominoTilingsZ.Domino.vertical col (min row)
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      Conversion from DominoTilingsZ.Domino to DominoTilings.Domino #

      A DominoTilingsZ.Domino has positive coordinates if all its cells have positive coordinates. This is the precondition for converting to DominoTilings.Domino (which uses ℕ coordinates).

      Equations
      Instances For

        Convert a DominoTilingsZ.Domino with positive coordinates to DominoTilings.Domino.

        The conversion preserves the cells covered by the domino:

        • A horizontal domino at (i, j) becomes a DominoTilings.Domino with cells (i, j) and (i+1, j)
        • A vertical domino at (i, j) becomes a DominoTilings.Domino with cells (i, j) and (i, j+1)
        Equations
        Instances For

          Round-trip properties #

          theorem DominoBridge.toDominoZ_hasPositiveCoords (d : DominoTilings.Domino) (h1 : d.cell1.1 1) (h2 : d.cell1.2 1) (h3 : d.cell2.1 1) (h4 : d.cell2.2 1) :

          Converting DominoTilings.Domino to DominoTilingsZ.Domino produces positive coordinates when all cells are positive.

          Cell preservation theorems #

          Converting DominoTilings.Domino to DominoTilingsZ.Domino preserves the set of cells (cast to ℤ).

          This is the key theorem for theorem transfer between the two representations. It shows that the cells covered by a domino are the same regardless of which representation is used.

          Converting DominoTilingsZ.Domino to DominoTilings.Domino preserves the set of cells (cast to ℤ).

          Canonical form for DominoTilings.Domino #

          The DominoTilings.Domino type allows the two cells to be in either order. For a canonical representation, we define a form where cell1 is always the "smaller" cell.

          A DominoTilings.Domino is in canonical form if cell1 is the "smaller" cell:

          • For horizontal dominos: cell1 has smaller column
          • For vertical dominos: cell1 has smaller row
          Equations
          Instances For

            Swap the cells of a DominoTilings.Domino.

            Equations
            Instances For

              Convert a DominoTilings.Domino to canonical form.

              Equations
              Instances For

                The cells of a domino in canonical form are the same as the original.

                Rectangle correspondence #

                The two Rectangle definitions use different types:

                We establish that they correspond under the natural embedding ℕ → ℤ.

                Cast a cell from ℕ × ℕ to ℤ × ℤ.

                Equations
                Instances For

                  The image of DominoTilings.Rectangle under cellToZ equals DominoTilingsZ.Rectangle as sets of ℤ × ℤ.

                  Documentation: Relationship between representations #

                  Key differences between the two Domino types: #

                  AspectDominoTilingsZ.DominoDominoTilings.Domino
                  Coordinatesℤ × ℤℕ × ℕ
                  RepresentationInductive (horizontal/vertical)Structure (cell1, cell2)
                  AnchorExplicit position parameterImplicit via cells
                  OrientationExplicit in constructorDerived from cell positions

                  When to use each representation: #

                  Bridging tilings: #

                  To bridge between DominoTilingsZ.Tiling S and DominoTilings.DominoTiling n m, use:

                  1. toDominoZ / toDominoN for individual domino conversion
                  2. toDominoZ_cells / toDominoN_cells for cell preservation
                  3. rectangle_correspondence for shape correspondence

                  Tiling equivalence infrastructure #

                  We develop the machinery to convert between DominoTilings.DominoTiling n m and DominoTilingsZ.Tiling (Rectangle n m). This requires:

                  1. Converting the set of dominos (Finset vs Set)
                  2. Preserving the disjointness property
                  3. Preserving the covering property

                  Converting a DominoTiling to a Tiling #

                  Convert a Finset of DominoTilings.Domino to a Set of DominoTilingsZ.Domino.

                  Equations
                  Instances For

                    The dominos in a DominoTiling have positive coordinates (cell coords ≥ 1).

                    Converting a DominoTiling preserves the covering property.

                    Convert a DominoTiling to a Tiling.

                    Equations
                    Instances For

                      Dominos in a Tiling of a rectangle have positive coordinates #

                      Dominos in a Tiling of a rectangle have positive coordinates.

                      theorem DominoBridge.toDominoN_injective {d1 d2 : DominoTilingsZ.Domino} (hpos1 : hasPositiveCoords d1) (hpos2 : hasPositiveCoords d2) (heq : toDominoN d1 hpos1 = toDominoN d2 hpos2) :
                      d1 = d2

                      toDominoN is injective on dominos with positive coordinates.