Coordinate reversal of grid states and diagrams #
This file adds coordinate reversal on the toroidal grid to the grid-combinatorial lane of the
Heegaard Floer roadmap, alongside the already-developed diagonal reflection (transpose) and
marking swap (swapMarkings). Rotation reverses both the column and the row coordinate by the
map (c, r) ↦ (cᵒ, rᵒ) with ·ᵒ = Fin.rev. It is the composition of the column and row
relabelings by the coordinate reversal Fin.revPerm, so it reuses the existing relabeling API
rather than introducing a new primitive. It carries a grid state to a grid state and a grid
diagram to a grid diagram.
In the coordinate convention used here, GridState.rotate reverses grid-point coordinates,
whereas GridDiagram.rotate reverses the lower-left-coordinate names of marking squares. These
are half-turns about different centres on the torus. Thus the paired operations preserve the
grading results below but not marking avoidance, and do not give a symmetry of the fully blocked
complex. The operation on grid states that does match GridDiagram.rotate is the half-turn
GridState.halfTurn, which negates both coordinates of a grid point modulo n; together with
GridDiagram.rotate it is a symmetry of the grid complexes
(TauCeti.KnotTheory.Grid.Differential.HalfTurn).
Only the basic state/diagram operation and its point-set lemmas live here, parallel to where
transpose is developed; the invariance of the J-pairing of two grid states under coordinate
reversal is in TauCeti.KnotTheory.Grid.JFunction.Basic (GridState.J_rotate). The gradings
themselves are not rotation invariant: they pair a grid state against the markings, which sit at
the centres of their squares, so the half-turn about a grid point that rotates a state and the
half-turn about a square centre that rotates the markings are different maps of the torus.
This distinction and its grading consequence follow the analysis in
TauCeti pull request #3135.
Main definitions #
TauCeti.GridState.rotate: coordinate reversal of a grid state.TauCeti.GridDiagram.rotate: coordinate reversal of a grid diagram's marking-square names.TauCeti.GridState.halfTurn: the half-turn of a grid state that matchesGridDiagram.rotate, negating both coordinates of its points modulon.
Main results #
TauCeti.GridState.rotate_rotate,TauCeti.GridDiagram.rotate_rotate,TauCeti.GridState.halfTurn_halfTurn: rotation and the half-turn are involutions on grid states and grid diagrams.TauCeti.GridState.rotate_pointSet,TauCeti.GridDiagram.rotate_OSet,TauCeti.GridDiagram.rotate_XSet: the state point set and the diagram's marking-square sets are the coordinate reversals of the original sets.TauCeti.GridState.relabelRows_rotate,TauCeti.GridState.relabelColumns_rotate,TauCeti.GridDiagram.swapMarkings_rotate: rotation interacts predictably with the existing relabeling, swap, and marking-swap operations.
References #
This advances TauCetiRoadmap/CombinatorialHeegaardFloer/README.md, Lane G item 8,
"Symmetries and the genus bound": coordinate reversal is among the standard grid symmetries in
Ozsváth--Stipsicz--Szabó, Grid Homology for Knots and Links, Chapter 3.
Coordinate reversal of a grid state.
This reverses both coordinates of the occupied grid points and is the composition of the column
and row relabelings by Fin.revPerm. Geometrically it is a half-turn about a square center; the
same operation on lower-left square names in GridDiagram.rotate is a half-turn about a grid
point, so the two operations do not together preserve marking avoidance.
Instances For
Row relabeling before rotation becomes row relabeling by the conjugate permutation after rotation.
Column relabeling before rotation becomes column relabeling by the conjugate permutation after rotation.
Swapping columns before rotation is the same as swapping the reversed columns after rotation.
The half-turn of a grid state that matches the half-turn GridDiagram.rotate of a grid
diagram.
It moves the grid point (c, r) to (finRotate n c.rev, finRotate n r.rev), negating both
coordinates modulo n. This is the half-turn of the torus that moves the square named by its
lower-left corner (c, r) to the square named by (c.rev, r.rev), which is how
GridDiagram.rotate moves the markings. So, unlike GridState.rotate, it carries the rectangles
of a grid diagram to the rectangles of the rotated diagram together with the markings they
cover.
Instances For
The half-turn of grid states is involutive.
Coordinate reversal of a grid diagram's marking-square names.
It is the composition of the column and row relabelings by the coordinate reversal Fin.revPerm,
applied to both marking states at once. Each relabeling is again a grid diagram, so rotation
preserves the condition that no square carries both an O and an X marking. Here Fin.rev
acts on the lower-left-coordinate names of marking squares, so this operation and
GridState.rotate do not together preserve marking avoidance.
Instances For
The O-marking state of the rotated diagram is the rotation of the original O-state.
The X-marking state of the rotated diagram is the rotation of the original X-state.
The O-markings of the rotated diagram are the coordinate reversal of the original
O-markings.
The X-markings of the rotated diagram are the coordinate reversal of the original
X-markings.
Coordinate reversal is an involution on grid diagrams.
Diagonal reflection commutes with coordinate reversal of a grid diagram.
Row relabeling before rotation becomes row relabeling by the conjugate permutation after rotation.
Column relabeling before rotation becomes column relabeling by the conjugate permutation after rotation.
Swapping columns before rotation is the same as swapping the reversed columns after rotation.
Exchanging the two marking states commutes with coordinate reversal.