Tiling a corridor is in PSPACE #
The membership half: a corridor is a walk. Its states are the rows – one
binary relation variable R x t, read as “the column x of this row carries
the tile t” – its starting states are the rows the bottom-row description
allows, its transitions are the vertical compatibility, and its accepting states
are the rows carrying an accepting tile. That is exactly the shape of
DescriptiveComplexity.SOTCSpec, so the specification is a transcription rather
than a construction, and PSPACE is SO(TC).
Being a row – one tile per column, horizontally compatible, with the tiles the two edge columns allow – is asked of the starting state and of every state a transition enters, so every reachable state is a row.
The sentence shapes #
The three sentences of the specification live over two different vocabularies (one copy of the block for the endpoints, two for the transition), so each shape is written once over an arbitrary vocabulary with its symbols as parameters, and read back by one realization lemma. Read over an exponential expansion the same specification asks about a corridor of exponential width, which is the EXPSPACE half.
Atoms and guards, over an arbitrary vocabulary #
A unary relation, as a formula.
Equations
Instances For
Dependency graph
A binary relation, as a formula.
Equations
Instances For
Dependency graph
Equality of two variables, as a formula.
Equations
Instances For
Dependency graph
x is the least position.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
x is the greatest position.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
x' is the position immediately above x.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Splitting a conjunction of sentences, kept at the level of ⊨ so that the
clause lemmas of this file still apply to the parts.
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
What a row is, and what the walk asks of it #
Every column of this row carries a tile of the instance.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
And it carries only one.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Neighboring columns of this row are compatible.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Its leftmost column carries a tile allowed there.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
And its rightmost column one allowed there.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Being a row: one tile per column, horizontally compatible, with the tiles the two edge columns allow.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Being the bottom row: the corner carries a start tile and every other column one the description allows there.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Being an accepting row: some column of it carries an accepting tile.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
One row above another: every column's two tiles are vertically compatible.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
What each clause says #
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Well-formedness, as a sentence #
The order is linear and there is a position: the promises the yes-instances fold in.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
The specification #
The block of the SO(TC) specification of the corridor: one binary relation
variable, read as “the column x of this row carries the tile t”.
Marked @[reducible] so that the numerals of a tuple of its arity elaborate:
without it w 1 at the type Fin (corBlock.arity i) → A has no OfNat
instance.
Instances For
Dependency graph
The symbol of the row variable.
Instances For
Dependency graph
The input vocabulary together with the order, over which the sentences of an SO(TC) specification live.
Instances For
Dependency graph
The vocabulary of the endpoint sentences: one copy of the block.
Equations
Instances For
Dependency graph
The vocabulary of the transition sentence: two copies of the block.
Equations
Instances For
Dependency graph
An input symbol, in the endpoint vocabulary.
Equations
Instances For
Dependency graph
An input symbol, in the transition vocabulary.
Equations
Instances For
Dependency graph
The row variable, in the endpoint vocabulary.
Instances For
Dependency graph
The row variable of the current state, in the transition vocabulary.
Instances For
Dependency graph
The row variable of the next state, in the transition vocabulary.
Instances For
Dependency graph
The SO(TC) specification of the corridor. The states are the rows: a starting state is a row the bottom-row description allows, a transition is the vertical compatibility with a row entering it, and an accepting state is a row carrying an accepting tile. Being a row is asked of the source and of every state a transition enters, so every reachable state is one.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Reading the specification back #
The row an assignment is.
Instances For
Dependency graph
Being a row: one tile per column, horizontally compatible, with the tiles the two edge columns allow.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Being the bottom row: the corner carries a start tile, every other column one the description allows there.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
What a starting state is: the instance is well-formed and the state is the bottom row.
Dependency graph
What a transition is: the state entered is a row, and it stands above the state left.
Dependency graph
What an accepting state is: a row with an accepting tile in it.
Dependency graph
The walk is the corridor #
The assignment a row of a corridor is.
Equations
- DescriptiveComplexity.corAsg τ k x✝ w = (w 1 = τ k (w 0))
Instances For
Dependency graph
Dependency graph
A corridor is a walk: its rows, read as assignments, start at a bottom row, step one above the other, and end at a row with an accepting tile.
Dependency graph
The tile a row puts in a column, read off the relation the walk carries.
Equations
- DescriptiveComplexity.rowFun R x = if h : ∃ (t : A), R x t then h.choose else x
Instances For
Dependency graph
Dependency graph
The corridor a walk has built so far, with the row it has reached on
top: the induction invariant of DescriptiveComplexity.corridor_of_accepts.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A row a walk reaches stands on a corridor: the rows it went through are its cells, and the row itself is its top.
Dependency graph
A walk is a corridor: the rows it goes through tile one, up to the row where the accepting tile stands.
Dependency graph
Tiling a corridor is SO(TC) definable: the walk on rows is the corridor.
Dependency graph
Tiling a corridor is in PSPACE.