Relabeling oriented grid rectangles #
An oriented rectangle between two grid states only records where the two states exchange rows, so it survives an arbitrary relabeling of the rows or of the columns: relabeling the rows keeps its side columns, while relabeling the columns renames them. This file packages these two transports as equivalences between the rectangles joining two states and the rectangles joining their relabelings.
Emptiness and the covered squares are a different matter, because they are defined by cyclic
intervals and an arbitrary permutation of Fin n does not preserve the cyclic order. The cyclic
permutation finRotate n does, by Grid.mem_cIoo_finRotate_finRotate and
Grid.mem_cIco_finRotate_finRotate, so for it the transported rectangle is empty exactly when
the original one is, and covers the correspondingly rotated squares. These are the rectangle-level
facts behind the invariance of the grid differentials under the cyclic permutation moves of a
grid diagram.
The half-turn GridState.halfTurn relabels both the rows and the columns by negation modulo n,
which reverses the cyclic order. Composed with exchanging the two side columns
(GridRectangleBetween.swapSides), it transports rectangles again, and the transported rectangle
is empty exactly when the original one is; it covers the squares obtained by reversing both
coordinates with Fin.rev, which are where GridDiagram.rotate moves the markings.
Main definitions #
TauCeti.GridRectangleBetween.relabelRowsEquiv: rectangles fromxtoycorrespond to rectangles fromx.relabelRows ρtoy.relabelRows ρ, with the same side columns.TauCeti.GridRectangleBetween.relabelColumnsEquiv: rectangles fromxtoycorrespond to rectangles fromx.relabelColumns κtoy.relabelColumns κ, with side columns renamed byκ.TauCeti.GridRectangleBetween.halfTurnEquiv: rectangles fromxtoycorrespond to rectangles fromx.halfTurntoy.halfTurn.
Main results #
TauCeti.GridRectangleBetween.isEmpty_relabelRowsEquiv_finRotate,TauCeti.GridRectangleBetween.isEmpty_relabelColumnsEquiv_finRotate: a cyclic permutation preserves and reflects emptiness.TauCeti.GridRectangleBetween.mem_coveredSquares_relabelRowsEquiv_finRotate,TauCeti.GridRectangleBetween.mem_coveredSquares_relabelColumnsEquiv_finRotate: a cyclic permutation rotates the covered squares.TauCeti.GridRectangleBetween.isEmpty_halfTurnEquiv,TauCeti.GridRectangleBetween.mem_coveredSquares_halfTurnEquiv: the half-turn preserves and reflects emptiness, and reverses the covered squares.
References #
Cyclic permutations of a toroidal grid diagram and their effect on rectangles follow Ozsváth--Stipsicz--Szabó, Grid Homology for Knots and Links, Chapter 3.
Row relabeling #
Relabeling the rows of two grid states transports the oriented rectangles between them: the relabeled states still exchange rows at the same two side columns.
Instances For
Row relabeling keeps the initial side column.
Row relabeling keeps the terminal side column.
The inverse of row relabeling keeps the initial side column.
The inverse of row relabeling keeps the terminal side column.
Row relabeling renames the initial side row.
Row relabeling renames the terminal side row.
The inverse of row relabeling renames the initial side row back.
The inverse of row relabeling renames the terminal side row back.
A cyclic permutation of the rows preserves and reflects emptiness of a rectangle.
A cyclic permutation of the rows rotates the squares a rectangle covers in the row direction.
Column relabeling #
Relabeling the columns of two grid states transports the oriented rectangles between them: the relabeled states exchange rows at the renamed side columns.
Instances For
Column relabeling renames the initial side column.
Column relabeling renames the terminal side column.
The inverse of column relabeling renames the initial side column back.
The inverse of column relabeling renames the terminal side column back.
Column relabeling keeps the initial side row.
Column relabeling keeps the terminal side row.
The inverse of column relabeling keeps the initial side row.
The inverse of column relabeling keeps the terminal side row.
A cyclic permutation of the columns preserves and reflects emptiness of a rectangle.
A cyclic permutation of the columns rotates the squares a rectangle covers in the column direction.
Half-turn #
The half-turn GridState.halfTurn transports the oriented rectangles between two grid
states. It negates the side columns modulo n, which reverses their cyclic order, so the image
of the terminal side column becomes the initial one: the rectangle is relabeled in its columns
and rows by negation and then has its two sides exchanged.
Instances For
The initial side column of the half-turned rectangle is the negated terminal side column.
The terminal side column of the half-turned rectangle is the negated initial side column.
The inverse half-turn negates the terminal side column into the initial one.
The inverse half-turn negates the initial side column into the terminal one.
The initial side row of the half-turned rectangle is the negated terminal side row.
The terminal side row of the half-turned rectangle is the negated initial side row.
The half-turn preserves and reflects emptiness of a rectangle.
The half-turn reverses both coordinates of the squares a rectangle covers.
The half-turn preserves the number of grid-state points in a rectangle's interior.
The half-turn preserves the number of occupied source-state squares of a rectangle. The lower-left corner is counted separately from the interior grid points.
The half-turn preserves the number of marking squares covered by a rectangle. Marking
square coordinates use rotate, whereas rectangle corners use halfTurn.