Documentation

TauCeti.KnotTheory.Grid.Diagram.Components

Link components of a grid diagram #

The O- and X-markings of a grid diagram determine an oriented link combinatorially. Starting at the O-marking in column c, follow its horizontal segment to the X-marking in the same row, then follow the vertical segment to the O-marking in that column. On column labels this is the permutation

c ↦ X⁻¹(O(c)).

Its cycles are exactly the link components. This file packages that permutation, its cycle decomposition and component count, and the predicate that the represented link is a knot. The grid-diagram disjointness condition makes the component permutation fixed-point-free, so Mathlib's cycle decomposition accounts for every marking, and the component count is also the number of orbits TauCeti.orbitCount of the component permutation.

On a knot grid the component permutation is a single cycle through all columns, so it leads from any base column to any other column; the least number of steps is the traversal index TauCeti.GridDiagram.IsKnot.traversalIndex, which is less than the grid number and injective in the target column.

Row relabeling leaves the component permutation unchanged, while column relabeling conjugates it. Consequently the cycle type, component count, and knot predicate are preserved by both relabelings, as well as by diagonal reflection, half-turn rotation, and exchanging O with X.

Main definitions #

References #

This advances TauCetiRoadmap/CombinatorialHeegaardFloer/README.md, Lane G.1, "Grid diagrams and grid states", and supplies the knot-versus-link distinction needed by the later knot invariant τ in Lane G.6 and the links stage in Lane G.9. The component traversal follows Ozsváth--Stipsicz--Szabó, Grid Homology for Knots and Links, Chapter 3.

The permutation of O-marking columns obtained by traversing one horizontal segment from O to X, then the vertical segment back to O.

Thus componentPerm G c = G.X.transpose (G.O c). Its permutation cycles are the components of the oriented link represented by G.

Instances For

    The component permutation is the O-marking permutation followed by the inverse of the X-marking permutation. Downstream modules use this defining formula to read off the component permutation of a diagram whose two marking permutations are known.

    @[simp]

    Applying the component permutation follows the O-marking's row to its unique X-marking column.

    The component permutation sends c to d exactly when the X-marking of column d lies in the row of the O-marking of column c.

    The X-marking of column componentPerm c lies in the row of the O-marking of column c.

    The O-marking in the row of the X-marking of column componentPerm c is the O-marking of column c: the component permutation walks from O_c along its row to that X-marking.

    The component permutation has no fixed columns, because an O and an X cannot occupy the same square.

    @[simp]

    Every column belongs to the support of the component permutation.

    The cycle factors of the component permutation. Each factor is one component of the represented link, expressed as a cyclic permutation of its O-marking columns.

    Instances For
      @[simp]

      A permutation is a component cycle exactly when it is a cycle agreeing with the component permutation throughout its support.

      The multiset of component sizes of the link represented by a grid diagram.

      Instances For

        The component-size multiset is the cycle type of the component permutation.

        The number of components of the link represented by a grid diagram.

        Instances For

          The component count is the cardinality of the component-size multiset.

          @[simp]

          The number of component cycles agrees with componentCount.

          @[simp]

          The component sizes sum to the grid size: every marking belongs to exactly one component.

          The number of components is the number of orbits of the component permutation. Every orbit is a genuine cycle here, since the component permutation has no fixed column.

          A grid diagram represents a knot when its component permutation has exactly one cycle.

          Instances For

            A grid diagram is a knot diagram exactly when its component count is one.

            A grid diagram represents a knot exactly when its component permutation is a single nontrivial cycle.

            The sole component of a knot grid contains all n markings.

            @[simp]

            A grid diagram has no link components exactly when its size is zero.

            @[simp]

            The empty grid has no link components.

            @[simp]

            An empty grid does not represent a knot.

            theorem TauCeti.GridDiagram.IsKnot.ne_zero {n : ℕ} {G : GridDiagram n} (hG : G.IsKnot) :
            n ≠ 0

            A knot grid has at least one column.

            theorem TauCeti.GridDiagram.IsKnot.exists_pow_componentPerm_apply_eq {n : ℕ} {G : GridDiagram n} (hG : G.IsKnot) (c₀ c : Fin n) :
            ∃ (k : ℕ), (G.componentPerm ^ k) c₀ = c

            On a knot grid the component permutation, a single cycle through all columns, leads from any column to any other.

            def TauCeti.GridDiagram.IsKnot.traversalIndex {n : ℕ} {G : GridDiagram n} (hG : G.IsKnot) (c₀ c : Fin n) :

            The traversal index of a column c from a base column c₀ of a knot grid: the least number of steps of the component permutation leading from c₀ to c.

            Instances For
              @[simp]
              theorem TauCeti.GridDiagram.IsKnot.pow_traversalIndex_apply {n : ℕ} {G : GridDiagram n} (hG : G.IsKnot) (c₀ c : Fin n) :
              (G.componentPerm ^ hG.traversalIndex c₀ c) c₀ = c

              The component permutation leads from the base column to c in traversalIndex c₀ c steps.

              theorem TauCeti.GridDiagram.IsKnot.traversalIndex_le {n : ℕ} {G : GridDiagram n} (hG : G.IsKnot) (c₀ : Fin n) {c : Fin n} {k : ℕ} (hk : (G.componentPerm ^ k) c₀ = c) :
              hG.traversalIndex c₀ c ≤ k

              The traversal index is at most any number of steps leading from the base column to c.

              @[simp]
              theorem TauCeti.GridDiagram.IsKnot.traversalIndex_self {n : ℕ} {G : GridDiagram n} (hG : G.IsKnot) (c₀ : Fin n) :
              hG.traversalIndex c₀ c₀ = 0

              The base column has traversal index 0.

              theorem TauCeti.GridDiagram.IsKnot.traversalIndex_lt {n : ℕ} {G : GridDiagram n} (hG : G.IsKnot) (c₀ c : Fin n) :
              hG.traversalIndex c₀ c < n

              The traversal index is less than the grid number.

              Distinct columns have distinct traversal indices.

              @[simp]

              Every 2 × 2 grid diagram represents a knot. Its fixed-point-free component permutation is the transposition of the two columns.

              Traversing a knot #

              The component permutation of a knot grid is a single cycle through all columns.

              noncomputable def TauCeti.GridDiagram.IsKnot.traversal {n : ℕ} {G : GridDiagram n} (hG : G.IsKnot) (c₀ : Fin n) :
              Fin n ≃ Fin n

              The traversal of a knot grid from the column c₀: step t reaches the column componentPerm ^ t c₀, after t horizontal and t vertical segments. The component permutation of a knot is a single cycle through all n columns, so the first n steps reach every column exactly once.

              Instances For
                @[simp]
                theorem TauCeti.GridDiagram.IsKnot.traversal_apply {n : ℕ} {G : GridDiagram n} (hG : G.IsKnot) (c₀ t : Fin n) :
                (hG.traversal c₀) t = (G.componentPerm ^ ↑t) c₀
                @[simp]
                theorem TauCeti.GridDiagram.IsKnot.val_traversal_symm_self {n : ℕ} {G : GridDiagram n} (hG : G.IsKnot) (c₀ : Fin n) :
                ↑((hG.traversal c₀).symm c₀) = 0

                The traversal from c₀ starts at c₀.

                theorem TauCeti.GridDiagram.IsKnot.val_traversal_symm_componentPerm {n : ℕ} {G : GridDiagram n} (hG : G.IsKnot) {c₀ c : Fin n} (hc : G.componentPerm c ≠ c₀) :
                ↑((hG.traversal c₀).symm (G.componentPerm c)) = ↑((hG.traversal c₀).symm c) + 1

                Each step of the traversal follows the component permutation: the column after c is reached one step after c, unless it is the starting column c₀, which the traversal returns to after n steps.

                Naturality under grid symmetries #

                @[simp]

                Relabeling rows does not change the component permutation: the common row relabeling cancels between the O- and X-marking permutations.

                Relabeling columns conjugates the component permutation by the column relabeling.

                @[simp]

                Row relabeling preserves the component cycles.

                Column relabeling transports component cycles by conjugation.

                @[simp]

                Row relabeling preserves the component-size multiset.

                @[simp]

                Column relabeling preserves the component-size multiset.

                @[simp]

                Exchanging the O- and X-markings inverts the component permutation.

                Exchanging the marking types reverses every component cycle.

                @[simp]

                Exchanging the two marking types preserves the component-size multiset.

                Diagonal reflection conjugates the inverse component permutation by the X-marking permutation.

                Diagonal reflection transports component cycles by inversion and conjugation.

                @[simp]

                Diagonal reflection preserves the component-size multiset.

                Half-turn rotation transports component cycles by coordinate-reversal conjugation.

                @[simp]

                Half-turn rotation preserves the component-size multiset.

                @[simp]

                Row relabeling preserves the number of represented link components.

                @[simp]

                Column relabeling preserves the number of represented link components.

                @[simp]

                Diagonal reflection preserves the number of represented link components.

                @[simp]

                Half-turn rotation preserves the number of represented link components.

                @[simp]

                Exchanging the two marking types preserves the number of represented link components.

                @[simp]

                Row relabeling preserves whether a grid diagram represents a knot.

                @[simp]

                Column relabeling preserves whether a grid diagram represents a knot.

                @[simp]

                Exchanging two columns preserves whether a grid diagram represents a knot.

                Exchanging two columns of a knot grid gives a knot grid.

                @[simp]

                Diagonal reflection preserves whether a grid diagram represents a knot.

                @[simp]

                Half-turn rotation preserves whether a grid diagram represents a knot.

                @[simp]

                Exchanging the two marking types preserves whether a grid diagram represents a knot.