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 supports the planned machine proofs of Fagin's
theorem and the Immerman–Vardi characterization. SecondOrder.ModelChecking
extends it to FO matrices with supplied relation witnesses. The nonuniform
FO ⊆ AC⁰ inclusion is proved by finite quantifier expansion in
DescriptiveComplexity.AC0. ModelChecking.PolynomialTime proves that each
fixed sentence's encoded verdict is in FP and its query language is in P.
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).