The interpretation of the Savitch reduction #
The defining formulas of the reduction of SUCCINCT-REACH to QSAT, and the
resulting first-order interpretation DescriptiveComplexity.qsatInterp, of
dimension 2 over the ordered expansion of FirstOrder.Language.transSys.
Every relation of FirstOrder.Language.qsat is defined by a formula that only
depends on the tags of its arguments, and each of those formulas is read off
the tables of DescriptiveComplexity.Problems.Qsat.Tags:
DescriptiveComplexity.varFandDescriptiveComplexity.clFare the marksDescriptiveComplexity.QVarOnandDescriptiveComplexity.QClOn;DescriptiveComplexity.occFcollects, from the fixed literal listDescriptiveComplexity.qLitsof a clause tag, those literals that are on the variable tag and sign asked for – so a single generic realization lemma (DescriptiveComplexity.realize_occF) replaces a case analysis on all pairs of tags;DescriptiveComplexity.prefFis the lexicographic comparisonDescriptiveComplexity.KeyLtof the two keys, built from static numerals and two order atoms.
The section “Characterization of the interpreted relations” reads each of them
back through DescriptiveComplexity.FOInterpretation.relMap_map; those lemmas are
the only interface the correctness proof uses.
The formula builders of the reduction #
They live in their own namespace: short names like leF or occF are what every
reduction of the library calls its builders, and the umbrella
DescriptiveComplexity.Problems imports them all at once.
The ordered expansion of the vocabulary of transition systems: the source vocabulary of the reduction.
Equations
Instances For
Dependency graph
The symbol for “is a state variable”, in the ordered expansion.
Instances For
Dependency graph
The symbol for “is a source clause”, in the ordered expansion.
Instances For
Dependency graph
The symbol for “is a target clause”, in the ordered expansion.
Instances For
Dependency graph
The symbol for “is a transition clause”, in the ordered expansion.
Instances For
Dependency graph
The symbol for “is the next-state copy of”, in the ordered expansion.
Instances For
Dependency graph
The symbol for “occurs positively in”, in the ordered expansion.
Instances For
Dependency graph
The symbol for “occurs negatively in”, in the ordered expansion.
Instances For
Dependency graph
Atomic formula builders #
x is a state variable, as a formula.
Equations
Instances For
Dependency graph
c is a source clause, as a formula.
Equations
Instances For
Dependency graph
c is a target clause, as a formula.
Equations
Instances For
Dependency graph
c is a transition clause, as a formula.
Equations
Instances For
Dependency graph
y is the next-state copy of x, as a formula.
Equations
Instances For
Dependency graph
x occurs positively in c, as a formula.
Equations
Instances For
Dependency graph
x occurs negatively in c, as a formula.
Equations
Instances For
Dependency graph
x ≤ y, as a formula.
Equations
Instances For
Dependency graph
x = y, as a formula.
Equations
Instances For
Dependency graph
x < y, as a formula.
Equations
Instances For
Dependency graph
x is a minimum of the input order, as a formula.
Instances For
Dependency graph
x is the first state variable, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
x is the last state variable, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
x is the state variable just above the state variable y, as a
formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Realization of the atomic builders #
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The defining formulas #
The mark of a variable tag, as a formula in its two coordinates.
Equations
- DescriptiveComplexity.QsatRed.varF DescriptiveComplexity.QVarTag.sS = fun (p q : α) => DescriptiveComplexity.QsatRed.svF p ⊓ DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.varF DescriptiveComplexity.QVarTag.sT = fun (p q : α) => DescriptiveComplexity.QsatRed.svF p ⊓ DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.varF DescriptiveComplexity.QVarTag.sB = fun (p q : α) => DescriptiveComplexity.QsatRed.svF p ⊓ DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.varF DescriptiveComplexity.QVarTag.sZ = fun (p q : α) => DescriptiveComplexity.QsatRed.svF p ⊓ DescriptiveComplexity.QsatRed.svF q
- DescriptiveComplexity.QsatRed.varF DescriptiveComplexity.QVarTag.sU = fun (p q : α) => DescriptiveComplexity.QsatRed.svF p ⊓ DescriptiveComplexity.QsatRed.svF q
- DescriptiveComplexity.QsatRed.varF DescriptiveComplexity.QVarTag.sV = fun (p q : α) => DescriptiveComplexity.QsatRed.svF p ⊓ DescriptiveComplexity.QsatRed.svF q
- DescriptiveComplexity.QsatRed.varF DescriptiveComplexity.QVarTag.aS = fun (x q : α) => DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.varF DescriptiveComplexity.QVarTag.aT = fun (x q : α) => DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.varF DescriptiveComplexity.QVarTag.aP = fun (x q : α) => DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.varF DescriptiveComplexity.QVarTag.sE = fun (p q : α) => DescriptiveComplexity.QsatRed.isBotF p ⊓ DescriptiveComplexity.QsatRed.isBotF q
Instances For
Dependency graph
The guard of a clause tag, as a formula in its two coordinates.
Equations
- DescriptiveComplexity.QsatRed.clF DescriptiveComplexity.QClTag.cSrc = fun (p q : α) => DescriptiveComplexity.QsatRed.srcF p ⊓ DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.clF DescriptiveComplexity.QClTag.cTgt = fun (p q : α) => DescriptiveComplexity.QsatRed.tgtF p ⊓ DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.clF DescriptiveComplexity.QClTag.cStep = fun (p q : α) => DescriptiveComplexity.QsatRed.stepF p ⊓ DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.clF (DescriptiveComplexity.QClTag.lS a) = fun (p q : α) => DescriptiveComplexity.QsatRed.svF p ⊓ DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.clF (DescriptiveComplexity.QClTag.lT a) = fun (p q : α) => DescriptiveComplexity.QsatRed.svF p ⊓ DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.clF (DescriptiveComplexity.QClTag.lU a) = fun (p q : α) => DescriptiveComplexity.QsatRed.svF p ⊓ DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.clF (DescriptiveComplexity.QClTag.lV a) = fun (p q : α) => DescriptiveComplexity.QsatRed.svF p ⊓ DescriptiveComplexity.QsatRed.nxtF p q
- DescriptiveComplexity.QsatRed.clF (DescriptiveComplexity.QClTag.bE a) = fun (p q : α) => DescriptiveComplexity.QsatRed.svF p ⊓ DescriptiveComplexity.QsatRed.isBotF q
- DescriptiveComplexity.QsatRed.clF (DescriptiveComplexity.QClTag.lev a a_1 a_2) = fun (p q : α) => DescriptiveComplexity.QsatRed.svF p ⊓ DescriptiveComplexity.QsatRed.svF q
Instances For
Dependency graph
The mark of the universally quantified variables: only the bits b_ℓ.
Equations
Instances For
Dependency graph
A static component of a lexicographic comparison decides by itself, unless the two values are equal.
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The coordinates of a two-argument defining formula #
The first coordinate of the first argument.
Equations
Instances For
Dependency graph
The second coordinate of the first argument.
Equations
Instances For
Dependency graph
The first coordinate of the second argument.
Equations
Instances For
Dependency graph
The second coordinate of the second argument.
Equations
Instances For
Dependency graph
Where a literal's variable sits, as a formula in the four coordinates.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
The occurrence formula: the literals of the clause tag ct that are on
the variable tag vt with the sign sgn, gathered into a disjunction.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
The prefix formula #
The lexicographic comparison of two keys, spelled out: the static components decide by themselves, the two dynamic ones by an order atom.
Equations
Instances For
Dependency graph
Dependency graph
The body of the prefix comparison, with the four coordinates selected.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
The quantifier prefix, as a formula: both arguments are variables, and their keys compare lexicographically.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
The interpretation #
The Savitch interpretation: the QSAT instance whose prefix and matrix express reachability in the transition system described by the input, by recursive doubling.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Characterization of the interpreted relations #
The universe of the constructed instance: a tag together with a pair of elements of the input.
Equations
Instances For
Dependency graph
Dependency graph
Dependency graph
The variables: the marked tagged pairs.
Dependency graph
Elements carrying a clause tag are not variables.
Dependency graph
The universal variables: only the bits b_ℓ.
Dependency graph
Every variable tag other than sB is existential.
Dependency graph
Elements carrying a clause tag are not universal.
Dependency graph
The clauses: the guarded tagged pairs.
Dependency graph
Elements carrying a variable tag are not clauses.
Dependency graph
The prefix order relates two variables exactly as their keys compare.
Dependency graph
The prefix order does not relate a clause on the left.
Dependency graph
The prefix order does not relate a clause on the right.
Dependency graph
The positive literals of a clause: the literals of its list that are on the given variable tag with a positive sign, and whose link pins that variable's coordinates.
Dependency graph
The negative literals of a clause.
Dependency graph
No literal is on an element carrying a clause tag.
Dependency graph
No literal is on an element carrying a clause tag, negatively.
Dependency graph
An element carrying a variable tag has no literals.
Dependency graph
An element carrying a variable tag has no negative literals.