Meanings for a whole block #
DescriptiveComplexity.SecondOrderNewMeans guesses what an invented value means
when a point is a single relation. A point of an exponential expansion is an
assignment of a whole block: one relation per variable, of that variable's
arity. So the guess is a family – one meaning relation per variable i, of
arity B.arity i + 1 – and the conditions on it are the same four, taken
variable by variable:
DescriptiveComplexity.meanShapedB– each relates an invented value to original elements and nothing else;DescriptiveComplexity.meanInjB– invented values agreeing on every variable are equal;DescriptiveComplexity.meanEmptyB– some invented value means the empty assignment;DescriptiveComplexity.meanFlipB– flipping one tuple of one variable, and leaving the other variables alone, lands on an invented value again.
An assignment of a block is a set of Σ i, Fin (B.arity i) → A – a tuple
tagged by the variable it belongs to – so the flips of that single sigma type
are exactly the flips of one tuple of one variable, and
DescriptiveComplexity.bijective_meanAtB reads the four guards as a bijection
between the invented values and all assignments of the block, through the
counting of DescriptiveComplexity.SecondOrderNewCount.
The block of meanings and its atoms #
The block guessing the meanings of a whole block: one relation per variable, of one more argument than that variable.
Equations
Instances For
Dependency graph
The meaning relation of one variable, as a symbol.
Equations
- DescriptiveComplexity.meanSymB B i = ⟨i, ⋯⟩
Instances For
Dependency graph
The vocabulary a block-meaning guess is written in.
Equations
Instances For
Dependency graph
The atom old x, over the block-meaning vocabulary.
Equations
- DescriptiveComplexity.oldAtomB L B x = FirstOrder.Language.Relations.formula (Sum.inl (Sum.inr FirstOrder.Language.oldSym)) fun (x_1 : Fin 1) => FirstOrder.Language.var x
Instances For
Dependency graph
The atom Mᵢ v x⃗.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The four guards #
Each meaning relation is shaped: it relates an invented value to original elements, and nothing else.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Some invented value means the empty assignment.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Invented values agreeing on every variable are equal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Flipping one tuple of one variable lands on an invented value again, the other variables unchanged. This is what makes the guess onto.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The whole guard: the four conditions together.
Equations
Instances For
Dependency graph
Assignments, as sets of tagged tuples #
An assignment of a block is a set of tagged tuples: one tuple of the
right arity per variable, tagged by the variable it belongs to. This is the
shape the flips of DescriptiveComplexity.SecondOrderNewCount are stated at,
and it is what makes flipping one tuple of one variable a flip of a single
element.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Splitting an assignment of a merged block.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The block of tag bits: one nullary variable per tag, so that an assignment
of it is a set of tags. Adding it to a block is how an invented value carries a
tag without any machinery of its own – a nullary variable's meaning relation is
unary, M v, read as “the value v carries this tag”.
Equations
- DescriptiveComplexity.tagBits T = { ι := T, ιFinite := inst✝, arity := fun (x : T) => 0 }
Instances For
Dependency graph
An assignment of the tag bits is a set of tags.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
With tag bits added, an assignment is a point's data: the block's own assignment paired with a set of tags. An invented value stands for a point of the expansion exactly when its tag set is a singleton and its assignment satisfies that tag's domain sentence – both conditions the kernel can state, so neither needs a guard of its own.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The guards, realized #
What an element means at one variable, read off the guess.
Equations
Instances For
Dependency graph
The assignment an invented value means, as a set of tuples tagged by the variable they belong to.
Equations
- DescriptiveComplexity.meanAtB ρ k p = DescriptiveComplexity.meaningOfB ρ p.fst (Sum.inr k) fun (j : Fin (B.arity p.fst)) => Sum.inl (p.snd j)
Instances For
Dependency graph
The host structure: the extended structure expanded by the guess.
Equations
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The four guards make the meanings a bijection: the invented values name every assignment of the block, each exactly once.
Dependency graph
The whole guard, and what it buys: the invented values name every assignment of the block, each exactly once.
Dependency graph
The invented values enumerate the assignments of the block: the guard's bijection, read at assignments rather than at sets of tagged tuples.
Equations
- DescriptiveComplexity.meanAssignEquiv ρ hbij = (Equiv.ofBijective (DescriptiveComplexity.meanAtB ρ) hbij).trans (B.assignEquivSigma A).symm