Tiling a square: the local problem behind the machines #
The problem the exponential classes are usually read on (Fürer 1983; Börger, Grädel & Gurevich 1997 is the book-length account).
A tile system is a set of tiles with two compatibility relations – which tile may stand immediately to the right of which, and which immediately above which – a description of the bottom row, and a set of accepting tiles. The question is whether the square whose sides are the positions of the instance can be tiled: every cell carries a tile, neighbors are compatible, the bottom row and the two edge columns are as described, and some cell carries an accepting tile.
Nothing here is about resources. As with DescriptiveComplexity.NTMAccept, the
grid is indexed by the elements the instance marks as positions, so an instance
of size n asks about an n × n square and the problem sits in NP; read over
an exponential expansion, the same definition asks about a 2ⁿ × 2ⁿ square and
sits one exponential up (DescriptiveComplexity.Problems.Wide.Tiling).
Why the tiling and not the machine #
A tile system has no head, no clock and no time: its conditions are local in two dimensions and quantify over neighbors alone. That is what makes it the cheap second complete problem of a class whose first one is a machine – the work is a drawing, not an evaluator.
The shape of the conditions #
The two edge columns carry tiles marked ledge and redge, which is what the
border colors of a classical tiling problem do: a condition on neighbors says
nothing about the column at either end, where one neighbor is missing.
The bottom row is described by a relation first p t rather than listed,
exactly as a machine's initial tape is described by inp p a: a first-order
condition on the position, which is what an expansion can carry. The accepting
condition is a mark on tiles, and it is what turns a tiling into a decision:
without it every tile system with a compatible bottom row is a yes-instance.
Relation symbols of tile-system instances.
- posn : tilingRel 1
posn p:pis a position – a column, and equally a row. - tile : tilingRel 1
tile t:tis a tile. - tacc : tilingRel 1
tacc t:tis an accepting tile. - tle : tilingRel 2
tle p q: the linear order along which the grid is read. - horiz : tilingRel 2
horiz t t':t'may stand immediately to the right oft. - vert : tilingRel 2
vert t t':t'may stand immediately abovet. - first : tilingRel 2
first p t: the cell of the bottom row in columnpmay carryt. - base : tilingRel 1
base t:tis a base tile – what the bottom row carries in a column the description says nothing about. - tstart : tilingRel 1
tstart t:tis a start tile – what the corner of the grid carries. - ledge : tilingRel 1
ledge t:tmay stand in the leftmost column. - redge : tilingRel 1
redge t:tmay stand in the rightmost column.
Instances For
Dependency graph
Dependency graph
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The relational vocabulary of tile-system instances: positions with their order, tiles with their two compatibility relations, the bottom row and the accepting tiles.
Equations
- FirstOrder.Language.tiling = { Functions := fun (x : ℕ) => Empty, Relations := FirstOrder.Language.tilingRel }
Instances For
Dependency graph
Dependency graph
The position symbol.
Instances For
Dependency graph
The tile symbol.
Instances For
Dependency graph
The accepting-tile symbol.
Instances For
Dependency graph
The order symbol.
Instances For
Dependency graph
The horizontal-compatibility symbol.
Instances For
Dependency graph
The vertical-compatibility symbol.
Instances For
Dependency graph
The bottom-row symbol.
Instances For
Dependency graph
The base-tile symbol.
Instances For
Dependency graph
The start-tile symbol.
Instances For
Dependency graph
The left-edge symbol.
Instances For
Dependency graph
The right-edge symbol.
Instances For
Dependency graph
The tile system an instance describes #
A tile system, read off an instance: the positions with their order,
the tiles with their compatibilities, the bottom row and the accepting tiles.
As with DescriptiveComplexity.TMData, the record is a plain bundle of
predicates, so everything about tilings is stated once and read at whatever
structure supplies them.
- Posn : A → Prop
Being a position – a column, and equally a row.
- Le : A → A → Prop
The order on positions.
- Tile : A → Prop
Being a tile.
- Acc : A → Prop
Being an accepting tile.
- Horiz : A → A → Prop
The right neighbor may carry this tile.
- Vert : A → A → Prop
The upper neighbor may carry this tile.
- First : A → A → Prop
The bottom row's cell in this column may carry this tile.
- Base : A → Prop
Being a base tile: what a column the description says nothing about carries in the bottom row.
- Start : A → Prop
Being a start tile: what the corner of the grid carries.
- EdgeL : A → Prop
Being a left-edge tile: what the leftmost column may carry.
- EdgeR : A → Prop
Being a right-edge tile: what the rightmost column may carry.
Instances For
Dependency graph
The tiles the bottom row may carry in a column: the ones the
description names there, and the base tiles in a column it names none. This is
DescriptiveComplexity.TMData.InitTape's device – a description of the row
rather than a listing – and it is what lets an expansion carry it.
Instances For
Dependency graph
A tiling of the square: every cell carries a tile, the bottom row is one the description allows, the two edge columns carry tiles allowed there, horizontal and vertical neighbors are compatible, and some cell carries an accepting tile.
The two edge conditions are what the classical border colors of a tiling problem do. A condition on neighbors says nothing about a column with no neighbor on one side, so without them a tile whose meaning is “something is arriving from the left” could stand in the leftmost column, justified by nothing; a machine drawn as a tiling would then grow a head out of nowhere.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The square is tileable: some assignment of tiles to cells is a tiling. The assignment is a function on the whole universe – what it does off the grid is not read, so nothing is lost by not restricting it.
Instances For
Dependency graph
Well-formedness, folded into the yes-instances exactly as
DescriptiveComplexity.TMData.WellFormed is: the order is linear, and there is
a position to index the grid by.
Equations
- T.WellFormed = (DescriptiveComplexity.IsLinOrd T.Le ∧ ∃ (p : A), T.Posn p)
Instances For
Dependency graph
Transport along a bijection #
The least position of the image is the image of the least position.
Dependency graph
The greatest position of the image is the image of the greatest one.
Dependency graph
And the successor of the image is the image of the successor.
Dependency graph
A bijection matching the two systems carries a tiling across.
Dependency graph
And with it, tileability.
Dependency graph
And well-formedness: the order is linear and there is a position.
Dependency graph
The shorthands of the vocabulary #
Being a position.
Equations
Instances For
Dependency graph
Being a tile.
Equations
Instances For
Dependency graph
Being an accepting tile.
Equations
Instances For
Dependency graph
The order on positions.
Equations
Instances For
Dependency graph
Horizontal compatibility.
Equations
Instances For
Dependency graph
Vertical compatibility.
Equations
Instances For
Dependency graph
The bottom row.
Equations
Instances For
Dependency graph
Being a base tile.
Equations
Instances For
Dependency graph
Being a start tile.
Equations
Instances For
Dependency graph
Being a left-edge tile.
Equations
Instances For
Dependency graph
Being a right-edge tile.
Equations
Instances For
Dependency graph
The tile system an instance describes.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The problem #
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
An isomorphism carries a tiling across: the tiling of the image is the tiling of the source read through the isomorphism, and every condition is a condition on relations the isomorphism preserves.
Dependency graph
And it carries well-formedness across: the order and the positions are relations of the vocabulary.
Dependency graph
Tileability is an isomorphism invariant.
Dependency graph
And so is well-formedness.
Dependency graph
Tiling a square. Can the square whose sides are the positions of the
instance be tiled, with the bottom row the description allows and an accepting
tile somewhere? The well-formedness promises of
DescriptiveComplexity.TileData.WellFormed are folded into the yes-instances,
exactly as for DescriptiveComplexity.NTMAccept.
Equations
- One or more equations did not get rendered due to their size.