Computable first-order model checking #
Over a finite structure the quantifiers of first-order logic range over a finite
universe, so satisfaction is decidable. This module gives a Bool-valued evaluator
Formula.evalB over a decidable structure (DecFinStruct) and proves it agrees
with the propositional Sat/Models.
Computable FO model checking is a prerequisite for several roadmap L6 milestones:
the ∃SO ⊆ NP direction of Fagin's theorem (an NP machine guesses the witnessing
relations and checks the FO matrix in polynomial time), the Immerman–Vardi
characterization, and the FO ⊆ AC⁰ bridge.
Main definitions and results #
DescriptiveComplexity.Formula.evalB,Formula.evalB_eq_sat— the evaluator and its correctness.DescriptiveComplexity.Sentence.evalB,Sentence.evalB_eq_models— the sentence form.
Computable Bool-valued first-order model checking over a decidable finite
structure: quantifiers range over the finite universe Fin card via
List.finRange.
Equations
- One or more equations did not get rendered due to their size.
- Complexity.DescriptiveComplexity.Formula.evalB A x✝ φ.neg = !Complexity.DescriptiveComplexity.Formula.evalB A x✝ φ
- Complexity.DescriptiveComplexity.Formula.evalB A x✝ (φ.conj ψ) = (Complexity.DescriptiveComplexity.Formula.evalB A x✝ φ && Complexity.DescriptiveComplexity.Formula.evalB A x✝ ψ)
- Complexity.DescriptiveComplexity.Formula.evalB A x✝ (φ.disj ψ) = (Complexity.DescriptiveComplexity.Formula.evalB A x✝ φ || Complexity.DescriptiveComplexity.Formula.evalB A x✝ ψ)
Instances For
FO model checking is correct: the Bool evaluator agrees with
satisfaction.
Model checking of a first-order sentence on a decidable structure.
Equations
Instances For
Sentence model checking is correct.
First-order truth over a finite structure is decidable (via the correct
Bool evaluator).