Basics on First-Order Semantics #
This file defines the interpretations of first-order terms, formulas, sentences, and theories in a style inspired by the Flypitch project.
Main Definitions #
FirstOrder.Language.Term.realize
is defined so thatt.realize v
is the termt
evaluated at variablesv
.FirstOrder.Language.BoundedFormula.Realize
is defined so thatφ.Realize v xs
is the bounded formulaφ
evaluated at tuples of variablesv
andxs
.FirstOrder.Language.Formula.Realize
is defined so thatφ.Realize v
is the formulaφ
evaluated at variablesv
.FirstOrder.Language.Sentence.Realize
is defined so thatφ.Realize M
is the sentenceφ
evaluated in the structureM
. Also denotedM ⊨ φ
.FirstOrder.Language.Theory.Model
is defined so thatT.Model M
is true if and only if every sentence ofT
is realized inM
. Also denotedT ⊨ φ
.
Main Results #
- Several results in this file show that syntactic constructions such as
relabel
,castLE
,liftAt
,subst
, and the actions of language maps commute with realization of terms, formulas, sentences, and theories.
Implementation Notes #
- Formulas use a modified version of de Bruijn variables. Specifically, a
L.BoundedFormula α n
is a formula with some variables indexed by a typeα
, which cannot be quantified over, and some indexed byFin n
, which can. For anyφ : L.BoundedFormula α (n + 1)
, we define the formula∀' φ : L.BoundedFormula α n
by universally quantifying over the variable indexed byn : Fin (n + 1)
.
References #
For the Flypitch project:
- [J. Han, F. van Doorn, A formal proof of the independence of the continuum hypothesis] [flypitch_cpp]
- [J. Han, F. van Doorn, A formalization of forcing and the unprovability of the continuum hypothesis][flypitch_itp]
A special case of realize_restrictVar
, included because we can add the simp
attribute
to it
A special case of realize_restrictVarLeft
, included because we can add the simp
attribute
to it
A bounded formula can be evaluated as true or false by giving values to each free variable.
Equations
Instances For
List.foldr on BoundedFormula.imp gives a big "And" of input conditions.
A special case of realize_restrictFreeVar
, included because we can add the simp
attribute
to it
Alias of FirstOrder.Language.Formula.realize_relabel_sumInr
.
A sentence can be evaluated as true or false in a structure.
Equations
Instances For
Two structures are elementarily equivalent when they satisfy the same sentences.
Equations
Instances For
A model of a theory is a structure in which every sentence is realized as true.