The drawn instance has a match exactly when the machine accepts #
The combinatorial half of the correctness of the reduction from
DescriptiveComplexity.HALT to DescriptiveComplexity.PCP, over any
Language.pcp-structure whose four relations read as the semantic predicates
of DescriptiveComplexity.Problems.Pcp.Hardness.Draw
(DescriptiveComplexity.HaltPcp.Reads) – which is exactly what the
interpretation of the sibling Interp file provides.
Words by tables #
Everything a word of the drawn instance says is of the form “the pair
(position, letter) is an entry of a zipped table”, with the position side
strictly increasing. Two abstract lemmas turn such a table into the unique
word of a domino (DescriptiveComplexity.HaltPcp.isWord_of_zip,
DescriptiveComplexity.HaltPcp.eq_of_isWord_zip): the enumeration of the used
positions is pinned by sortedness, and the letters by functionality of the
zip. The short words instantiate them at the shared position prefix; the start
domino's bottom word at its own layout, whose table
DescriptiveComplexity.HaltPcp.startBotAt_iff_zip is proved by walking the
input page along the enumeration of the positions.
The two directions #
A match of DescriptiveComplexity.Pcp.History maps to a solution of the
instance by encoding each abstract domino
(DescriptiveComplexity.HaltPcp.exists_encode) and reading the tables
forward; a solution maps back by decoding each marked element
(DescriptiveComplexity.HaltPcp.decodeDom) and using uniqueness of the words,
injectivity of the letter map turning the equality of the two concatenations
back into the equality of the abstract words. Chained with
DescriptiveComplexity.HaltPcp.acceptsU_iff_hasMatch, this gives the
correctness statement DescriptiveComplexity.HaltPcp.pcpOn_iff_of_reads the
Interp file consumes.
Sorted lists, zips and tables #
Two strictly sorted lists with the same members are equal.
Dependency graph
The entries of a zip of two lists of equal length, by index.
Dependency graph
With a duplicate-free position side, a zip is functional.
Dependency graph
A position of the table carries a letter exactly when it is on the position side.
Dependency graph
A zip relates its two sides entry by entry.
Dependency graph
A functional List.Forall₂ determines its right list.
Dependency graph
Reading the instance #
The four relations of the instance read as the drawn predicates, along an equivalence of the universes. This is what the defining formulas of the interpretation are proved to realize.
The order of the positions is the drawn order.
The marked dominoes are the drawn dominoes.
The top words read off the top tables.
The bottom words read off the bottom tables.
Instances For
Dependency graph
Dependency graph
Tables are words #
DescriptiveComplexity.Pcp.IsWordU/IsWordV both have the shape “some
strictly increasing enumeration of the used positions carries the word”; the
two lemmas below handle any letter relation given by a zipped table with a
strictly increasing position side.
A table is a word: the position side, transported, enumerates the used positions in order and carries the letter side.
Dependency graph
The word of a table is unique: any word of the letter relation is the letter side of the table.
Dependency graph
The tables of the dominoes #
Every short word fits in the shared positions.
Dependency graph
Every short bottom word fits in the shared positions.
Dependency graph
Away from the start domino, the bottom relation is its table.
Dependency graph
At the start domino, the bottom relation is the page layout.
Dependency graph
The lengths of the two sides of a short top table agree.
Dependency graph
The start domino's table #
The shared position prefix, spelt out.
Dependency graph
The entries of the page block of the start table.
Dependency graph
The layout of the start domino's bottom word is its table: the letter relation of the start domino says exactly that the pair is an entry of the zipped layout.
Dependency graph
More Forall₂ plumbing #
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The words of the drawn dominoes #
Every input cell holds something: its input symbol or the blank.
Dependency graph
The top word of any element is its top table.
Dependency graph
The top word of any element is only its top table.
Dependency graph
The bottom word of an element other than the start domino is its bottom table.
Dependency graph
Dependency graph
The bottom word of the start domino is its layout.
Dependency graph
Dependency graph
The start tag decodes to the abstract start domino.
Dependency graph
Only the start domino decodes to the abstract start domino.
Dependency graph
The start layout is functional in the position.
Dependency graph
Well-formedness of the drawn instance #
Dependency graph
The equivalence #
Correctness of the drawn instance: it is a yes-instance of PCP exactly when the machine is well-formed and accepts.