Giving every guessed variable an argument #
A machine that stores a guessed relation on its tape addresses an entry by the
encoding of its arguments, so a relation variable of arity zero has the empty
address for its only entry – the cell the head starts on, below everything the
machine writes. Every construction that reads a stage on a tape therefore asks
that the guessed variables have an argument, and a kernel taken from an
arbitrary Σ₁ definition need not.
The remedy is to give every variable one more argument and to say nothing about
it: R(x̄) becomes R(z, x̄) for a variable z quantified in front of the whole
kernel. An assignment of the extended block read at one value of the extra
argument is an assignment of the original (SOBlock.atParam), and the extension
that ignores the argument reads back as itself, so the two kernels hold at
exactly the same structures – as long as the universe is nonempty, which a
finite structure of a decision problem is.
This file is that transformation on formulas (arityLift), its correctness
(realize_arityLift), and the kernel it makes (NexKernel.withArg,
NexKernel.withArg_holds).
The formula transformation #
A term of a relational vocabulary is a variable, so there is nothing to do.
Equations
Instances For
Dependency graph
The extra argument, put in front of every guessed atom: a relation variable of the block takes the parameter as a further argument, and everything else – the base vocabulary, the equalities, the quantifiers – is left alone.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.arityLift B p FirstOrder.Language.BoundedFormula.falsum = FirstOrder.Language.BoundedFormula.falsum
- DescriptiveComplexity.arityLift B p (φ.imp ψ) = (DescriptiveComplexity.arityLift B p φ).imp (DescriptiveComplexity.arityLift B p ψ)
- DescriptiveComplexity.arityLift B p φ.all = (DescriptiveComplexity.arityLift B p φ).all
Instances For
Dependency graph
Dependency graph
The transformation is correct: read at an assignment of the extended block, the lifted formula says what the original said of that assignment read at the value the parameter holds.
Dependency graph
The kernel with an argument #
A kernel whose guessed variables all have an argument: every variable takes one more, and the kernel says of it only that some value of it works.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
Dependency graph
Every variable of the padded kernel's block has an argument.
Dependency graph
An assignment that ignores the extra argument: what the padded kernel is satisfied by when the kernel is.
Instances For
Dependency graph
Dependency graph
Padding the arities changes no meaning: an assignment of the padded block read at the value the quantifier picks is an assignment of the original, and an assignment of the original ignoring the extra argument satisfies the padded kernel. The universe has to be nonempty for the quantifier to have something to pick, which a finite structure of a decision problem is.