The problem of true quantified Boolean formulas #
TQBF is the set of true closed quantified Boolean formulas over variables numbered by ℕ:
formulas without free variables whose value is true Sipser, Section 8.3
Arora and Barak, Section 4.2. A closed formula has the same value under every
assignment (Cslib.Logic.PL.QBF.eval_eq_of_closed), so the assignment fun _ => false in the
definition is immaterial. Instances are formulas, not words, and every formula is an instance:
formulas with a free variable are simply not in TQBF. Formulas are not required to be in prenex
form; the prenex formulas of the textbooks are among them.
A formula is encoded by its tokens in prefix (Polish) order (Cslib.Logic.PL.QBF.tokens): the
kind of each node, with its variable for variables and quantifiers and 0 otherwise, as a framed
list of framed pairs of the kind in unary and the variable in binary (Cslib.Complexity.encQBF).
The prefix order makes the encoding injective without delimiters
(Cslib.Logic.PL.QBF.tokens_append_inj), and every node takes at least three bits, so a formula
with n nodes has an encoding of length at least 3 * n.
Boundary cases: the empty list is the tokens of no formula; the formulas without variables are
built from top and bot, and top ∈ TQBF while bot ∉ TQBF; a variable on its own is never
closed, so var v ∉ TQBF, while ex v (var v) ∈ TQBF and all v (var v) ∉ TQBF.
Main definitions #
Cslib.Logic.PL.QBF.Kind,Cslib.Logic.PL.QBF.tokens: the tokens of a formula.Cslib.Complexity.encQBF: the encoding of formulas.Cslib.Complexity.TQBF: the true closed formulas.
Main results #
Cslib.Logic.PL.QBF.tokens_append_inj: tokens in prefix order determine the formula.Cslib.Logic.PL.QBF.length_tokens: one token for each node.Cslib.Complexity.mem_TQBF,Cslib.Complexity.top_mem_TQBF,Cslib.Complexity.bot_notMem_TQBF,Cslib.Complexity.var_notMem_TQBF: membership and the boundary cases.
References #
Tokens #
The index of a kind, from 0 for variables to 7 for universal quantifiers.
Instances For
Kinds encoded by their index in unary.
Instances For
Tokens encoded as framed pairs of the kind in unary and the variable in binary.
Instances For
Formulas encoded by their tokens in prefix order (Cslib.Logic.PL.QBF.tokens), as a list of
framed tokens.
Instances For
A formula is encoded as the list of its framed tokens in prefix order.
Every node takes at least three bits.
True closed formulas #
The true closed quantified Boolean formulas over variables numbered by natural numbers Sipser, Section 8.3, Arora and Barak, Section 4.2.
Instances For
A formula is in TQBF exactly when it is closed and true under the assignment
fun _ => false.
A closed formula is in TQBF exactly when it is true under some, equivalently every,
assignment.
The constant true is a true closed formula.
The constant false is not true.
A variable on its own is not closed.