Documentation

DescriptiveComplexity.Problems.Machine.AltTable

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:

The elements of the machine, compared #

theorem DescriptiveComplexity.AltQbf.acstI_eq_iff {k : ℕ} {A : Type} [LinearOrder A] [Finite A] [Nonempty A] {t t' : AltBase} {i i' : Fin (k + 1)} :
acstI t i = acstI t' i' ↔ t = t' ∧ i = i'
Dependency graph
theorem DescriptiveComplexity.AltQbf.aoneI_eq_iff {k : ℕ} {A : Type} [LinearOrder A] [Finite A] [Nonempty A] {t t' : AltBase} {i i' : Fin (k + 1)} {a a' : A} :
aoneI t i a = aoneI t' i' a' ↔ t = t' ∧ i = i' ∧ a = a'
Dependency graph

The table is functional #

The three branch points #

Reading the tag off the state and the symbol #

At most one transition applies, away from the guess #

theorem DescriptiveComplexity.AltQbf.altTr_unique {k : ℕ} {A : Type} [(FirstOrder.Language.qbf k).Structure A] [LinearOrder A] [Finite A] [Nonempty A] {cnf : Bool} {τ τ' q a : AltV k A} (hτ : AltTr cnf τ) (hτ' : AltTr cnf τ') (hs : AltSrc cnf τ q) (hs' : AltSrc cnf τ' q) (hr : AltRead τ a) (hr' : AltRead τ' a) (hguess : ¬∃ (i : Fin (k + 1)) (x : A), q = stG i true ∧ a = symV false x) :
τ = τ'

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.AltQbf.base_cases), the base tag pins the rest (DescriptiveComplexity.AltQbf.altTr_payload), and the two remaining ambiguities are the exclusive branch points.

Dependency graph