The expansion a bounded invention lives in #
DescriptiveComplexity.SigmaSONewExpDefinable guesses an extension A ⊕ Fin m
with m ≤ 2 ^ Nat.card (Fin d → A) – as many invented values as the instance
has d-ary relations. To read such a definition as one over an exponential
expansion, the expansion has to be big enough to hold them, and it has to carry
the instance too, since an expansion is all a sentence over it can see.
This file builds that expansion. It has two tags:
- an original point is an assignment whose unary variable is a singleton and
whose
d-ary one is empty – so those points are the elements of the instance; - a new point is an assignment whose unary variable is empty – so those
points are the
d-ary relations of the instance,2 ^ nᵈof them.
Its vocabulary is DescriptiveComplexity.newLang L: the relations of the
instance, holding of original points exactly where they hold of the elements
they name, and the marker old. What the expanded structure is, then, is the
extended structure A ⊕ Fin (2 ^ nᵈ) with every invented value present; a
sentence that wants fewer of them marks the ones it uses, which is a guess and
so stays inside Σ₁.
The block #
The block whose assignments are the points of the expansion: one d-ary
variable carrying an invented value and one unary variable carrying an original
element.
Equations
Instances For
Dependency graph
The i-th d-ary variable: one coordinate of an invented value.
Equations
- DescriptiveComplexity.powValSym c d i = ⟨some i, ⋯⟩
Instances For
Dependency graph
The unary variable: an original element.
Equations
Instances For
Dependency graph
The unary variable of the k-th copy.
Equations
Instances For
Dependency graph
The sentences #
The atom elt x, over the vocabulary of the block.
Equations
- DescriptiveComplexity.eltAtom L c d x = FirstOrder.Language.Relations.formula (Sum.inr (DescriptiveComplexity.powEltSym c d)) fun (x_1 : Fin 1) => FirstOrder.Language.var x
Instances For
Dependency graph
The atom eltₖ x, over the vocabulary of n copies of the block.
Equations
- DescriptiveComplexity.eltAtomAt L c d k x = FirstOrder.Language.Relations.formula (Sum.inr (DescriptiveComplexity.powEltSymAt c d k)) fun (x_1 : Fin 1) => FirstOrder.Language.var x
Instances For
Dependency graph
The atom valᵢ w, over the vocabulary of the block.
Equations
- DescriptiveComplexity.valAtom L c d i w = FirstOrder.Language.Relations.formula (Sum.inr (DescriptiveComplexity.powValSym c d i)) fun (j : Fin d) => FirstOrder.Language.var (w j)
Instances For
Dependency graph
elt holds of exactly one element.
Equations
Instances For
Dependency graph
elt holds of nothing.
Equations
Instances For
Dependency graph
No coordinate of the invented value holds of anything.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The domain sentence of each tag: an original point names one element and invents nothing; a new point names no element.
Equations
Instances For
Dependency graph
The defining sentence of each symbol: a relation of the instance holds of
original points exactly when it holds of the elements they name, and never of a
new point; old marks the original points.
Equations
Instances For
Dependency graph
The sentences, realized #
The unary variable, read off the assignment.
Equations
- DescriptiveComplexity.eltOf ρ x = ρ none fun (x_1 : Fin ((DescriptiveComplexity.powBlock c d).arity none)) => x
Instances For
Dependency graph
The d-ary variables, read off the assignment.
Equations
- DescriptiveComplexity.valOf ρ i w = ρ (some i) w
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The expansion #
The expansion: two tags, the instance's elements and its d-ary
relations, over the extended vocabulary.
Reducible: its block and its vocabulary have to reduce for instance search, or the structure a domain sentence is read in is not the one the realization lemmas are stated at.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The points of the expansion #
Dependency graph
Dependency graph
Dependency graph
The assignment naming an original element: its unary variable holds of that element alone, and it invents nothing.
Equations
- DescriptiveComplexity.eltAssign x none u = ∀ (j : Fin ((DescriptiveComplexity.powBlock c d).arity none)), u j = x
- DescriptiveComplexity.eltAssign x (some val) x_3 = False
Instances For
Dependency graph
The assignment naming an invented value: its unary variable holds of nothing,
and its d-ary ones are the value's coordinates.
Equations
- DescriptiveComplexity.valAssign S none u = False
- DescriptiveComplexity.valAssign S (some val) x_2 = S val x_2
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The points, counted #
Dependency graph
A unary variable is determined by what it holds of: its argument tuples are constant.
Dependency graph
The element an original point names.
Equations
Instances For
Dependency graph
Dependency graph
Dependency graph
An original point is the assignment naming its element.
Dependency graph
A new point is the assignment naming its value.
Dependency graph
The point of the expansion carried by an element or by a tuple of d-ary
relations.
Equations
Instances For
Dependency graph
Dependency graph
Dependency graph
The points of the expansion are the instance's elements and its d-ary
relations, so there are n + 2 ^ nᵈ of them: enough to hold any extension the
bound of DescriptiveComplexity.SigmaSONewExpDefinable allows.
Instances For
Dependency graph
The defining sentences, realized #
Dependency graph
A relation of the instance, at original points: it holds exactly when it holds of the elements they name.
Dependency graph
A relation of the instance never holds of an invented point.
Dependency graph
The marker old holds exactly of the original points.
Dependency graph
The expanded structure is the extended structure #
The extended structure over an arbitrary set of invented values: the
relations of the instance hold of original elements only, and old marks them.
DescriptiveComplexity.extStructure is the case N = Fin m.
Equations
- DescriptiveComplexity.extOn L A N = L.sumStructure FirstOrder.Language.oldMark (A ⊕ N)
Instances For
Dependency graph
Dependency graph
Dependency graph
The expanded structure is the extended one: the map sending an element
to its original point and a d-ary relation to its new point is an isomorphism
over DescriptiveComplexity.newLang.
Equations
- DescriptiveComplexity.powExtEquiv = { toEquiv := DescriptiveComplexity.powPointEquiv, map_fun' := ⋯, map_rel' := ⋯ }
Instances For
Dependency graph
The marked part of an extended universe #
The original elements together with the marked invented values: a substructure, there being nothing to be closed under in a relational vocabulary.
Equations
Instances For
Dependency graph
The inclusion of the extension by the marked values into the whole one.
Equations
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The marked part is the extended universe over the marked values: the invented values a sentence uses are the ones it marks, and what it says of them it says of the extension by those alone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The sentence read over the expansion #
The unary marker a sentence over the expansion guesses: which invented values it uses.
Equations
Instances For
Dependency graph
The block guessed over the expansion: the kernel's own variables together with the marker.
Instances For
Dependency graph
The marker, as a symbol of the guessed vocabulary.
Instances For
Dependency graph
The marker, as a symbol over the extended vocabulary.
Equations
Instances For
Dependency graph
old, as a symbol over the same vocabulary.
Equations
Instances For
Dependency graph
Every original element is marked: the guess adds invented values to the instance, it does not take elements away.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The kernel, transported into the merged block.
Equations
Instances For
Dependency graph
The sentence read over the expansion: mark the invented values it uses, mark every original element, and read the kernel among the marked ones.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The marked part, with the kernel's block #
The extended structure together with an assignment of the kernel's block.
Equations
- DescriptiveComplexity.extOnB ρ = (DescriptiveComplexity.newLang L).sumStructure B.lang (A ⊕ N)
Instances For
Dependency graph
The assignment of the kernel's block on the extension by the marked values, read off one on the whole extension.
Equations
- DescriptiveComplexity.usedRestrict U ρ i x = ρ i fun (j : Fin (B.arity i)) => DescriptiveComplexity.usedPoint U (x j)
Instances For
Dependency graph
The marked part, as a substructure over the vocabulary the kernel is written in.
Equations
Instances For
Dependency graph
The marked part is the extension by the marked values, over the
vocabulary the kernel is written in: the same identification as
DescriptiveComplexity.usedSubEquiv, with the kernel's block riding along by
restriction.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The sentence over the expansion, realized #
Dependency graph
The assignment on the whole extension reproducing one on the extension by the marked values: a tuple is related exactly when it is the image of a related tuple.
Equations
Instances For
Dependency graph
Dependency graph
The marker, read off a guessed assignment.
Equations
Instances For
Dependency graph
Dependency graph
The marker, as the relativization's guard reads it.
Dependency graph
The atom mark x, realized.
Dependency graph
The atom old x, realized.
Dependency graph
The kernel's part of a guessed assignment.
Equations
- DescriptiveComplexity.kernelOf ρ' i = ρ' (Sum.inl i)
Instances For
Dependency graph
A guessed assignment, from its two parts.
Equations
- DescriptiveComplexity.usedJoin U ρ (Sum.inl i) x_2 = DescriptiveComplexity.usedExtend U ρ i x_2
- DescriptiveComplexity.usedJoin U ρ (Sum.inr val) x_2 = Sum.elim (fun (x : A) => True) U (x_2 ⟨0, Nat.zero_lt_one⟩)
Instances For
Dependency graph
Dependency graph
Dependency graph
The transported kernel says what the kernel says: the merged block is the kernel's own variables together with the marker, and the kernel reads only the former.
Dependency graph
The relativized kernel says what the kernel says on the marked part.
Dependency graph
Dependency graph
The sentence over the expansion, realized: it holds exactly when the kernel holds over the extension by some set of invented values – the ones the marker names.
Dependency graph
Bounded invention is definability over the expansion #
Dependency graph
Dependency graph
Renaming the invented values: the extended structure depends on them only through their number.
Equations
- DescriptiveComplexity.extOnCongr e = { toEquiv := (Equiv.refl A).sumCongr e, map_fun' := ⋯, map_rel' := ⋯ }
Instances For
Dependency graph
Dependency graph
The problem the expansion decides: the kernel, read over the extension by the invented values a guess marks.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
Bounded invention is definability over the expansion: an
∃SO[new, exp c d] definition is an ∃SO definition over
DescriptiveComplexity.powExpFree, which is ∃SO[new, exp c d] ⊆ NEXPTIME.