Reading a structure over its subsets: the address expansion #
The construction that puts a problem one exponential up without saying
anything about resources: an DescriptiveComplexity.ExpExpansion whose block is
a single unary relation variable, so that an assignment is a subset of the
instance and the expanded universe is its power set.
It is written once here, for an arbitrary relational vocabulary with a
designated binary symbol read as the order on the elements, because two problems
of this library are drawn on it – the wide machine
(DescriptiveComplexity.Problems.Wide.Expansion) and the wide tiling
(DescriptiveComplexity.Problems.Wide.Tiling). What a particular problem
supplies is only its tags and the choice of sentence at each symbol; what is
here is everything else:
- the block and the two vocabularies a defining sentence may be written in – one copy of the block for a unary symbol, two for a binary one;
- the dictionary between an assignment and the address it is
(
AddrExp.bits,AddrExp.assign); - the guards of the base vocabulary, and the atoms of the block;
- and the five sentences an expansion of this shape ever needs: a mark of the
base (
AddrExp.markS), a binary attribute of it (AddrExp.binS), being a singleton (AddrExp.singleS, the domain sentence that keeps the base universe visible), the binary-number order on addresses (AddrExp.addrLeS) and a relation read at the initial segment an element cuts (AddrExp.inpS).
Every quantifier in them ranges over the base – an element, never an address – which is what keeps them first-order there.
The order on addresses is the binary-number order
(DescriptiveComplexity.WMSetLe): one subset is below another when, at the
least element where they differ, the second contains it and the first does not.
That relation and the initial segment an element cuts
(DescriptiveComplexity.WMDown) are stated here for an arbitrary relation on an
arbitrary type, since both the problems and their expansions read them.
Addresses #
The two things said about an address – how it compares with another, and which initial segment it is – stated for an arbitrary order relation, so that they transport along an equivalence without mentioning a structure.
The binary-number order on addresses: the two subsets agree, or, at some
element where the first is out and the second in, they agree at every strictly
smaller element. Written with the strict order spelled out as
Le y x ∧ ¬ Le x y, which is the shape the defining sentence of the expansion
realizes to.
Equations
Instances For
Dependency graph
The address of an element: the initial segment it cuts, which is where the element's input symbol is written.
Equations
- DescriptiveComplexity.WMDown Le s x = ∀ (y : α), s y ↔ Le y x
Instances For
Dependency graph
The cell of an element on a file: the initial segment it cuts among the elements the file has a register for. The wide machine's register channel and the wide tiling's bottom row are both described at these addresses – a file of cells rather than the ruler of all the segments.
Equations
- DescriptiveComplexity.WMFileSeg Le Has s x = ∀ (y : α), s y ↔ Le y x ∧ Has y
Instances For
Dependency graph
The order on addresses transports along an equivalence of the index type.
Dependency graph
The initial segment of an element transports along an equivalence.
Dependency graph
The vocabularies #
The ordered vocabulary of wide-machine instances: what an expansion's sentences may read besides the block.
Equations
Instances For
Dependency graph
The block whose assignments are the addresses: a single unary relation variable, so an assignment is a subset of the instance.
Equations
Instances For
Dependency graph
The base vocabulary expanded by one copy of the block.
Equations
Instances For
Dependency graph
The base vocabulary expanded by two copies of the block.
Equations
Instances For
Dependency graph
A unary symbol of the instance, in the ordered vocabulary: a raw Sum.inl
does not elaborate at that type.
Equations
Instances For
Dependency graph
A binary symbol of the instance, in the ordered vocabulary.
Equations
Instances For
Dependency graph
The relation variable of the block, at one copy.
Equations
Instances For
Dependency graph
The relation variable of the first of two copies.
Equations
Instances For
Dependency graph
The relation variable of the second of two copies.
Equations
Instances For
Dependency graph
Addresses, as assignments of the block #
The address an assignment is: the elements its relation variable holds of.
Equations
- DescriptiveComplexity.AddrExp.aeBits ρ x = ρ () fun (x_1 : Fin (DescriptiveComplexity.AddrExp.addrBlock.arity ())) => x
Instances For
Dependency graph
The assignment an address is, the inverse of
DescriptiveComplexity.AddrExp.aeBits.
Equations
- DescriptiveComplexity.AddrExp.aeAssign s x✝ v = s (v 0)
Instances For
Dependency graph
Dependency graph
A unary relation variable is read at its only argument.
Dependency graph
An assignment of the block is the assignment of its address: the single variable being unary, nothing else is stored.
Dependency graph
Two assignments of the block holding the same address are equal.
Dependency graph
The base's own relations, read semantically #
A unary relation of the base, at an element.
Equations
Instances For
Dependency graph
A binary relation of the base, at two elements.
Equations
Instances For
Dependency graph
The guards of the base vocabulary #
A unary mark of the instance.
Equations
Instances For
Dependency graph
A binary attribute of the instance.
Equations
Instances For
Dependency graph
x and y are the same element.
Equations
Instances For
Dependency graph
x is strictly below y in the order the instance carries.
Equations
- DescriptiveComplexity.AddrExp.ltG leSym x y = DescriptiveComplexity.AddrExp.attrG leSym x y ⊓ FirstOrder.Language.BoundedFormula.not (DescriptiveComplexity.AddrExp.attrG leSym y x)
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The atoms of the block, and the lifts #
The address of the single copy holds x.
Equations
Instances For
Dependency graph
The address of the first of two copies holds x.
Equations
Instances For
Dependency graph
The address of the second of two copies holds x.
Equations
Instances For
Dependency graph
A base guard, read at one copy of the block.
Instances For
Dependency graph
A base guard, read at two copies of the block.
Equations
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The five sentences #
Everything an expansion of FirstOrder.L has to say, once each.
A mark of the control: the point is the element x, and x carries the
mark r.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A binary attribute of the control: the two points are the elements x
and y, and r holds of them.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The domain sentence of the control tag: the address is a singleton, so the point is an element of the instance.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The order on addresses: the two addresses agree, or, at some element the first is out of and the second in, they agree at every strictly smaller element.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The initial tape: the first address is the initial segment cut by some
element x, the second point is a symbol y, and y is the input at x.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The address lies inside a marked part of the instance: every element it holds carries the mark. This is what makes a sub-power-set the universe a problem's grid is indexed by, when the expansion's own universe has to be bigger than the instance to hold the problem's other objects.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
An element the file has a register for, as a guard: it carries the relation the file is described by.
Equations
Instances For
Dependency graph
A relation read at the cells of a file: the first address is the segment
some element x cuts among the elements carrying inpSym, the second point is
a y, and inpSym holds of x and y. This is AddrExp.inpS with the ruler
of all the segments replaced by the file.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
What the five sentences say #
An address is a singleton: it holds something, and at most one thing.
Equations
- DescriptiveComplexity.AddrExp.WMSingle s = ((∃ (x : A), s x) ∧ ∀ (x y : A), s x → s y → x = y)
Instances For
Dependency graph
A singleton address is the address of an element.
Dependency graph
The address of an element is a singleton.
Dependency graph
The trivially true sentence, at one copy of the block.
Dependency graph
The trivially false sentence, at one copy of the block.
Dependency graph
The trivially true sentence, at two copies of the block.
Dependency graph
The trivially false sentence, at two copies of the block.
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The universe, the tags and the expansion skeleton #
The universe a problem at this expansion runs over: the addresses – the
subsets of the instance – together with the elements of the instance. An
abbrev, so that the sum structure stays visible to rw and to the
elaborator.
Equations
- DescriptiveComplexity.AddrExp.WPoint A = ((A → Prop) ⊕ A)
Instances For
Dependency graph
The two tags of the expansion: the addresses, and the elements of the instance.
- addr : WTag
An address: any assignment of the block.
- ctrl : WTag
A control element: a singleton assignment of the block.
Instances For
Dependency graph
Dependency graph
Equations
- One or more equations did not get rendered due to their size.
Dependency graph
The domain sentence of each tag: an address is unrestricted, a control element is a singleton.
Equations
Instances For
Dependency graph
Reading a one-copy sentence inside the block replicated once.
Equations
Instances For
Dependency graph
Reading a two-copy sentence inside the block replicated twice.
Equations
Instances For
Dependency graph
The expansion whose points are the subsets of the instance: two tags, the one-variable block, and whatever defining sentences the problem supplies. Everything below is proved of this expansion, so a problem drawn on it has only to say what each of its symbols means.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The universe of the problem is the universe of the expansion #
An address satisfies the domain sentence of its tag, which is ⊤.
Dependency graph
The singleton address of an element satisfies the domain sentence of the control tag.
Dependency graph
The universe of the problem sits inside the expansion: an address
becomes the point tagged addr carrying it, a control element the point tagged
ctrl carrying its singleton.
Equations
- DescriptiveComplexity.AddrExp.addrEmbed (Sum.inl s) = ⟨(DescriptiveComplexity.AddrExp.WTag.addr, DescriptiveComplexity.AddrExp.aeAssign s), ⋯⟩
- DescriptiveComplexity.AddrExp.addrEmbed (Sum.inr x_1) = ⟨(DescriptiveComplexity.AddrExp.WTag.ctrl, DescriptiveComplexity.AddrExp.aeAssign fun (y : A) => y = x_1), ⋯⟩
Instances For
Dependency graph
Dependency graph
Dependency graph
The embedding is onto the whole expanded universe: every point tagged
addr is an address, and every point tagged ctrl is a control element,
because its domain sentence made its assignment a singleton.
Dependency graph
The points of the expansion are the universe of the problem.
Equations
Instances For
Dependency graph
Dependency graph
Reading a defining sentence at the points #
Reading a one-copy sentence at a point: the replicated assignment holds the point's address in its single copy.
Dependency graph
Reading a two-copy sentence at two points: the replicated assignment
holds the first point's address in copy 0 and the second's in copy 1.
Dependency graph
The expanded structure, at the vocabulary the problem is written in – equal to the expansion's own by definition, but not syntactically, so instance search has to be handed it.
Equations
- DescriptiveComplexity.AddrExp.addrStructure A = (DescriptiveComplexity.AddrExp.addrExp L E fun {n : ℕ} => relS).mapStructure A
Instances For
Dependency graph
Reading a unary symbol of the expanded vocabulary at one point.
Dependency graph
Reading a binary symbol of the expanded vocabulary at two points.