Claiming the block atoms of a quantifier-free matrix #
The second of the two normal forms that let a machine evaluate a fixed
first-order sentence with a finite control.
DescriptiveComplexity.Exponential.AltQuant turned a sentence into an
alternating prefix over a quantifier-free matrix; the matrix still mentions the
block, whose atoms live on the machine's tape and are not available to a
transition. This file removes them:
a quantifier-free matrix over two copies of a block is a base formula determined by the truth values of finitely many block atoms, whose addresses are read off the valuation.
DescriptiveComplexity.exists_blockClaims produces the finite list of
occurrences (DescriptiveComplexity.BlockAtom: a copy, a relation variable, and
where its arguments sit among the matrix's variables) and, for each vector of
claimed truth values, the base formula the matrix becomes.
What a machine does with it #
The claims are Bools and the statement is conditional on their correctness,
which is exactly the shape of the standard alternating check: the existential
player claims the whole vector b in one move – there are finitely many, so
this is one nondeterministic transition – the universal player then either
challenges one claim, which the machine settles by a single tape lookup at the
address (copy, var, args) names, or lets the base formula be evaluated. The
base formula has no block atoms left, so it is a condition on the source
structure alone: a guard of the transition relation, written by the
interpretation that emits the machine, and never something the machine has to
compute.
Everything is stated for the two-copy structure
DescriptiveComplexity.SOBlock.structure₂, the shape of an
DescriptiveComplexity.SOGameSpec.move.
The relation symbols are named #
A relation symbol of the two-copy language is a nested Sum, and a goal
mentioning a raw Sum.inl (Sum.inl r) is ill-typed at implicit
transparency – Language.sum has to be unfolded for it to typecheck – so
rw and simp fail on it. The three shapes are therefore named
(DescriptiveComplexity.twoBaseSym, DescriptiveComplexity.twoFstSym,
DescriptiveComplexity.twoSndSym), the case analysis goes through
DescriptiveComplexity.exists_symCase, and every realization lemma is stated
at a named symbol.
An occurrence of a block atom #
An occurrence of a block atom in a matrix: which of the two copies of the block it reads, which relation variable of the block, and where each of its arguments sits among the matrix's variables.
This is an address: on a machine's tape the cell it names is
(copy, var, args applied to the valuation).
- copy : Bool
The copy of the block the occurrence reads:
falseis the first copy. - var : B.ι
The relation variable of the block.
Where the arguments of the occurrence sit among the matrix's variables.
Instances For
Dependency graph
The truth value of an occurrence, under two assignments and a valuation.
Equations
Instances For
Dependency graph
The relation symbols of the two-copy language #
A relation symbol of the base vocabulary, read in the two-copy language.
Equations
Instances For
Dependency graph
A relation variable of the first copy of the block.
Equations
Instances For
Dependency graph
A relation variable of the second copy of the block.
Equations
Instances For
Dependency graph
The three shapes of a relation symbol of the two-copy language.
Dependency graph
Realization at the two-copy structure #
Realization of a formula over two stacked copies of a block, at the
assignments ρ (first copy) and σ (second).
Equations
- DescriptiveComplexity.twoRealize mat ρ σ v = mat.Realize default v
Instances For
Dependency graph
Dependency graph
Dependency graph
Every quantifier-free matrix is a base formula plus claims #
Dependency graph
Dependency graph
An equality of the matrix is an equality of two of its variables.
Dependency graph
A base atom of the matrix is the same atom of the base structure.
Dependency graph
An atom of the first copy is the first assignment, read at the addresses its arguments name.
Dependency graph
An atom of the second copy is the second assignment, read at the addresses its arguments name.
Dependency graph
A quantifier-free matrix over two copies of a block is a base formula determined by the truth values of finitely many block atoms.
The atoms are listed once and for all; the base formula depends on the vector
of claimed values, and the equivalence holds as soon as the claims are
correct. That conditional form is what a machine needs: it guesses b, has the
claims challenged one at a time by tape lookups, and evaluates the base formula
as a guard of its transition relation.