The transition table of the QBF machine is a table #
Before any run is considered: each transition has exactly one destination and one symbol written, and the places where two tags could both apply are identified. A mistake in the table shows up here first, which is why this comes before the correctness proof.
Unlike the SAT machine there are three such places, not two:
- at
⊢in a leftward sweep, the three ways a sweep can end – hand over to the next sweep, start the check, or accept because there is no clause at all – are separated by the sweep index (i + 1 < kagainsti + 1 = k) and, for the last two, by whether the instance has a clause; - at a marker in the check phase, the turn to the next clause and the accepting turn are separated, for a conjunctive matrix, by whether the clause just settled was the last one; for a disjunctive matrix they fire at different flags and so never compete;
- at a cell holding
falsein a rightward sweep,tGSetandtGKeep falseare both applicable. That is the guessing choice, and it is the one ambiguityDescriptiveComplexity.altTr_uniquedoes not resolve: it is the round's move.
The elements of the machine, compared #
Dependency graph
Dependency graph
Two elements agree when their tag and both coordinates do.
Dependency graph
The table is functional #
A transition writes exactly one symbol.
Dependency graph
A transition moves to exactly one state. The only case with a choice is the
check clause, whose two branches are separated by the flag and by
DescriptiveComplexity.QbfLit.
Dependency graph
The three branch points #
A sweep hands over, or ends: the two are separated by the sweep index.
Dependency graph
The end of the last sweep is not ambiguous: an instance either has a clause to check or has none.
Dependency graph
A turn is not ambiguous: for a conjunctive matrix the clause just checked either has a successor or is the last one, and for a disjunctive one the two turns fire at different flags.
Dependency graph
Reading the tag off the state and the symbol #
Which base tag the state a transition applies in carries.
Equations
- DescriptiveComplexity.AltQbf.stateBase cnf DescriptiveComplexity.AltQbf.AltBase.tGStart = DescriptiveComplexity.AltQbf.AltBase.qG true
- DescriptiveComplexity.AltQbf.stateBase cnf (DescriptiveComplexity.AltQbf.AltBase.tGKeep b) = DescriptiveComplexity.AltQbf.AltBase.qG true
- DescriptiveComplexity.AltQbf.stateBase cnf DescriptiveComplexity.AltQbf.AltBase.tGSet = DescriptiveComplexity.AltQbf.AltBase.qG true
- DescriptiveComplexity.AltQbf.stateBase cnf DescriptiveComplexity.AltQbf.AltBase.tGTurn = DescriptiveComplexity.AltQbf.AltBase.qG true
- DescriptiveComplexity.AltQbf.stateBase cnf (DescriptiveComplexity.AltQbf.AltBase.tGBack b) = DescriptiveComplexity.AltQbf.AltBase.qG false
- DescriptiveComplexity.AltQbf.stateBase cnf DescriptiveComplexity.AltQbf.AltBase.tGNext = DescriptiveComplexity.AltQbf.AltBase.qG false
- DescriptiveComplexity.AltQbf.stateBase cnf DescriptiveComplexity.AltQbf.AltBase.tGEndAcc = DescriptiveComplexity.AltQbf.AltBase.qG false
- DescriptiveComplexity.AltQbf.stateBase cnf DescriptiveComplexity.AltQbf.AltBase.tGEndChk = DescriptiveComplexity.AltQbf.AltBase.qG false
- DescriptiveComplexity.AltQbf.stateBase cnf (DescriptiveComplexity.AltQbf.AltBase.tChk b f d) = DescriptiveComplexity.AltQbf.AltBase.qChk f d
- DescriptiveComplexity.AltQbf.stateBase cnf (DescriptiveComplexity.AltQbf.AltBase.tTurnNext d) = DescriptiveComplexity.AltQbf.AltBase.qChk true d
- DescriptiveComplexity.AltQbf.stateBase cnf (DescriptiveComplexity.AltQbf.AltBase.tTurnAcc d) = DescriptiveComplexity.AltQbf.AltBase.qChk cnf d
- DescriptiveComplexity.AltQbf.stateBase cnf x✝ = x✝
Instances For
Dependency graph
Which base tag the symbol a transition reads carries.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.AltQbf.readBase DescriptiveComplexity.AltQbf.AltBase.tGStart = DescriptiveComplexity.AltQbf.AltBase.sStart
- DescriptiveComplexity.AltQbf.readBase (DescriptiveComplexity.AltQbf.AltBase.tGKeep b) = DescriptiveComplexity.AltQbf.AltBase.sVal b
- DescriptiveComplexity.AltQbf.readBase DescriptiveComplexity.AltQbf.AltBase.tGSet = DescriptiveComplexity.AltQbf.AltBase.sVal false
- DescriptiveComplexity.AltQbf.readBase DescriptiveComplexity.AltQbf.AltBase.tGTurn = DescriptiveComplexity.AltQbf.AltBase.sEnd
- DescriptiveComplexity.AltQbf.readBase (DescriptiveComplexity.AltQbf.AltBase.tGBack b) = DescriptiveComplexity.AltQbf.AltBase.sVal b
- DescriptiveComplexity.AltQbf.readBase DescriptiveComplexity.AltQbf.AltBase.tGNext = DescriptiveComplexity.AltQbf.AltBase.sStart
- DescriptiveComplexity.AltQbf.readBase DescriptiveComplexity.AltQbf.AltBase.tGEndAcc = DescriptiveComplexity.AltQbf.AltBase.sStart
- DescriptiveComplexity.AltQbf.readBase DescriptiveComplexity.AltQbf.AltBase.tGEndChk = DescriptiveComplexity.AltQbf.AltBase.sStart
- DescriptiveComplexity.AltQbf.readBase (DescriptiveComplexity.AltQbf.AltBase.tChk b f d) = DescriptiveComplexity.AltQbf.AltBase.sVal b
- DescriptiveComplexity.AltQbf.readBase (DescriptiveComplexity.AltQbf.AltBase.tTurnAcc d) = if d = true then DescriptiveComplexity.AltQbf.AltBase.sEnd else DescriptiveComplexity.AltQbf.AltBase.sStart
- DescriptiveComplexity.AltQbf.readBase x✝ = x✝
Instances For
Dependency graph
The base tags that a transition may carry.
Equations
- DescriptiveComplexity.AltQbf.isTrBase DescriptiveComplexity.AltQbf.AltBase.tGStart = true
- DescriptiveComplexity.AltQbf.isTrBase (DescriptiveComplexity.AltQbf.AltBase.tGKeep b) = true
- DescriptiveComplexity.AltQbf.isTrBase DescriptiveComplexity.AltQbf.AltBase.tGSet = true
- DescriptiveComplexity.AltQbf.isTrBase DescriptiveComplexity.AltQbf.AltBase.tGTurn = true
- DescriptiveComplexity.AltQbf.isTrBase (DescriptiveComplexity.AltQbf.AltBase.tGBack b) = true
- DescriptiveComplexity.AltQbf.isTrBase DescriptiveComplexity.AltQbf.AltBase.tGNext = true
- DescriptiveComplexity.AltQbf.isTrBase DescriptiveComplexity.AltQbf.AltBase.tGEndAcc = true
- DescriptiveComplexity.AltQbf.isTrBase DescriptiveComplexity.AltQbf.AltBase.tGEndChk = true
- DescriptiveComplexity.AltQbf.isTrBase (DescriptiveComplexity.AltQbf.AltBase.tChk b f d) = true
- DescriptiveComplexity.AltQbf.isTrBase (DescriptiveComplexity.AltQbf.AltBase.tTurnNext d) = true
- DescriptiveComplexity.AltQbf.isTrBase (DescriptiveComplexity.AltQbf.AltBase.tTurnAcc d) = true
- DescriptiveComplexity.AltQbf.isTrBase x✝ = false
Instances For
Dependency graph
The base tags whose source state is a sweeping state, and so carries the transition's own sweep index.
Equations
- DescriptiveComplexity.AltQbf.isSweepBase DescriptiveComplexity.AltQbf.AltBase.tGStart = true
- DescriptiveComplexity.AltQbf.isSweepBase (DescriptiveComplexity.AltQbf.AltBase.tGKeep b) = true
- DescriptiveComplexity.AltQbf.isSweepBase DescriptiveComplexity.AltQbf.AltBase.tGSet = true
- DescriptiveComplexity.AltQbf.isSweepBase DescriptiveComplexity.AltQbf.AltBase.tGTurn = true
- DescriptiveComplexity.AltQbf.isSweepBase (DescriptiveComplexity.AltQbf.AltBase.tGBack b) = true
- DescriptiveComplexity.AltQbf.isSweepBase DescriptiveComplexity.AltQbf.AltBase.tGNext = true
- DescriptiveComplexity.AltQbf.isSweepBase DescriptiveComplexity.AltQbf.AltBase.tGEndAcc = true
- DescriptiveComplexity.AltQbf.isSweepBase DescriptiveComplexity.AltQbf.AltBase.tGEndChk = true
- DescriptiveComplexity.AltQbf.isSweepBase x✝ = false
Instances For
Dependency graph
Only transitions have transition tags.
Dependency graph
The state a transition applies in has the base tag its own tag names, and its sweep index.
Dependency graph
The symbol a transition reads has the base tag its own tag names.
Dependency graph
At most one transition applies, away from the guess #
The base tags at which a sweep ends.
Equations
- DescriptiveComplexity.AltQbf.isEndBase DescriptiveComplexity.AltQbf.AltBase.tGNext = true
- DescriptiveComplexity.AltQbf.isEndBase DescriptiveComplexity.AltQbf.AltBase.tGEndAcc = true
- DescriptiveComplexity.AltQbf.isEndBase DescriptiveComplexity.AltQbf.AltBase.tGEndChk = true
- DescriptiveComplexity.AltQbf.isEndBase x✝ = false
Instances For
Dependency graph
The base tags of a turn in the check phase.
Equations
Instances For
Dependency graph
The state and the symbol pin the tag, up to the three branch points: the guessing choice, the end of a sweep and the turn.
Dependency graph
Away from the sweeps, a transition's sweep index is 0.
Dependency graph
Whether a transition's source is a sweeping state is determined by the base tag of that state.
Dependency graph
Equal base tags force equal transitions: the state and the symbol pin
one coordinate and the sweep index, and the promises in
DescriptiveComplexity.AltTr pin the other.
Dependency graph
At a guessing choice, the state and the symbol read are what
DescriptiveComplexity.altTr_unique's hypothesis excludes.
Dependency graph
The two turns never compete: for a conjunctive matrix the clause just settled is either the last one or has a successor, and for a disjunctive one they fire at different flags, so their source states differ.
Dependency graph
At most one transition applies, away from the one nondeterministic
choice of a guessing sweep: the state and the symbol read pin the base tag
(DescriptiveComplexity.base_cases), the base tag pins the rest
(DescriptiveComplexity.altTr_payload), and the two remaining ambiguities are
the exclusive branch points.