Supporting results for pointwise provable equality.
Formulas of first-order logic #
This file defines the formulas of first-order logic.
φ : Semiformula L ξ n is a (semi-)formula of language L with bounded variables of Fin n
and free variables of ξ.
The quantification is represented by de Bruijn index.
A semiformula of language L. Free variables are of type ξ, and bound variables are
implemented as de Bruijn indices, of a type Fin n separate from free variables.
- verum {L : Language} {ξ : Type u_1} {n : ℕ} : Semiformula L ξ n
- falsum {L : Language} {ξ : Type u_1} {n : ℕ} : Semiformula L ξ n
- rel {L : Language} {ξ : Type u_1} {n arity : ℕ} : L.Rel arity → (Fin arity → Semiterm L ξ n) → Semiformula L ξ n
- nrel {L : Language} {ξ : Type u_1} {n arity : ℕ} : L.Rel arity → (Fin arity → Semiterm L ξ n) → Semiformula L ξ n
- and {L : Language} {ξ : Type u_1} {n : ℕ} : Semiformula L ξ n → Semiformula L ξ n → Semiformula L ξ n
- or {L : Language} {ξ : Type u_1} {n : ℕ} : Semiformula L ξ n → Semiformula L ξ n → Semiformula L ξ n
- all {L : Language} {ξ : Type u_1} {n : ℕ} : Semiformula L ξ (n + 1) → Semiformula L ξ n
- exs {L : Language} {ξ : Type u_1} {n : ℕ} : Semiformula L ξ (n + 1) → Semiformula L ξ n
Instances For
The Formula construction in FFL.FirstOrder.
Equations
Instances For
The Sentence construction in FFL.FirstOrder.
Equations
Instances For
The Semisentence construction in FFL.FirstOrder.
Equations
Instances For
The Semiproposition construction in FFL.FirstOrder.
Equations
Instances For
The Proposition construction in FFL.FirstOrder.
Equations
Instances For
The neg construction in FFL.FirstOrder.Semiformula.
Equations
- PointwiseComposition.FFL.FirstOrder.Semiformula.verum.neg = PointwiseComposition.FFL.FirstOrder.Semiformula.falsum
- PointwiseComposition.FFL.FirstOrder.Semiformula.falsum.neg = PointwiseComposition.FFL.FirstOrder.Semiformula.verum
- (PointwiseComposition.FFL.FirstOrder.Semiformula.rel r v).neg = PointwiseComposition.FFL.FirstOrder.Semiformula.nrel r v
- (PointwiseComposition.FFL.FirstOrder.Semiformula.nrel r v).neg = PointwiseComposition.FFL.FirstOrder.Semiformula.rel r v
- (φ.and ψ).neg = φ.neg.or ψ.neg
- (φ.or ψ).neg = φ.neg.and ψ.neg
- φ.all.neg = φ.neg.exs
- φ.exs.neg = φ.neg.all
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
The to Str construction in FFL.FirstOrder.Semiformula.
Equations
- One or more equations did not get rendered due to their size.
- PointwiseComposition.FFL.FirstOrder.Semiformula.verum.toStr = "\\top"
- PointwiseComposition.FFL.FirstOrder.Semiformula.falsum.toStr = "\\bot"
- (PointwiseComposition.FFL.FirstOrder.Semiformula.rel r a).toStr = "{" ++ toString r ++ "}"
- (PointwiseComposition.FFL.FirstOrder.Semiformula.nrel r a).toStr = "\\lnot {" ++ toString r ++ "}"
- (φ.and ψ).toStr = "\\left(" ++ φ.toStr ++ " \\land " ++ ψ.toStr ++ "\\right)"
- (φ.or ψ).toStr = "\\left(" ++ φ.toStr ++ " \\lor " ++ ψ.toStr ++ "\\right)"
- φ.all.toStr = "(\\forall x_{" ++ toString n ++ "}) " ++ φ.toStr
- φ.exs.toStr = "(\\exists x_{" ++ toString n ++ "}) " ++ φ.toStr
Instances For
Equations
- PointwiseComposition.FFL.FirstOrder.Semiformula.instRepr = { reprPrec := fun (t : PointwiseComposition.FFL.FirstOrder.Semiformula L ξ n) (x : ℕ) => Std.Format.text t.toStr }
φ.toPrenex Γ s prefixes φ with s alternating quantifiers, the outermost one being Γ.
Equations
Instances For
The rel! construction in FFL.FirstOrder.Semiformula.
Equations
Instances For
The nrel! construction in FFL.FirstOrder.Semiformula.
Equations
Instances For
The complexity of a semiformula, taking max at logical connectives.
Equations
- PointwiseComposition.FFL.FirstOrder.Semiformula.verum.complexity = 0
- PointwiseComposition.FFL.FirstOrder.Semiformula.falsum.complexity = 0
- (PointwiseComposition.FFL.FirstOrder.Semiformula.rel r v).complexity = 0
- (PointwiseComposition.FFL.FirstOrder.Semiformula.nrel r v).complexity = 0
- (φ.and ψ).complexity = max φ.complexity ψ.complexity + 1
- (φ.or ψ).complexity = max φ.complexity ψ.complexity + 1
- φ.all.complexity = φ.complexity + 1
- φ.exs.complexity = φ.complexity + 1
Instances For
The cases' construction in FFL.FirstOrder.Semiformula.
Equations
- PointwiseComposition.FFL.FirstOrder.Semiformula.cases' hverum hfalsum hrel hnrel hand hor hall hexs PointwiseComposition.FFL.FirstOrder.Semiformula.verum = hverum
- PointwiseComposition.FFL.FirstOrder.Semiformula.cases' hverum hfalsum hrel hnrel hand hor hall hexs PointwiseComposition.FFL.FirstOrder.Semiformula.falsum = hfalsum
- PointwiseComposition.FFL.FirstOrder.Semiformula.cases' hverum hfalsum hrel hnrel hand hor hall hexs (PointwiseComposition.FFL.FirstOrder.Semiformula.rel r v) = hrel r v
- PointwiseComposition.FFL.FirstOrder.Semiformula.cases' hverum hfalsum hrel hnrel hand hor hall hexs (PointwiseComposition.FFL.FirstOrder.Semiformula.nrel r v) = hnrel r v
- PointwiseComposition.FFL.FirstOrder.Semiformula.cases' hverum hfalsum hrel hnrel hand hor hall hexs (φ.and ψ) = hand φ ψ
- PointwiseComposition.FFL.FirstOrder.Semiformula.cases' hverum hfalsum hrel hnrel hand hor hall hexs (φ.or ψ) = hor φ ψ
- PointwiseComposition.FFL.FirstOrder.Semiformula.cases' hverum hfalsum hrel hnrel hand hor hall hexs φ.all = hall φ
- PointwiseComposition.FFL.FirstOrder.Semiformula.cases' hverum hfalsum hrel hnrel hand hor hall hexs φ.exs = hexs φ
Instances For
The rec' construction in FFL.FirstOrder.Semiformula.
Equations
- One or more equations did not get rendered due to their size.
- PointwiseComposition.FFL.FirstOrder.Semiformula.rec' hverum hfalsum hrel hnrel hand hor hall hexs PointwiseComposition.FFL.FirstOrder.Semiformula.verum = hverum
- PointwiseComposition.FFL.FirstOrder.Semiformula.rec' hverum hfalsum hrel hnrel hand hor hall hexs PointwiseComposition.FFL.FirstOrder.Semiformula.falsum = hfalsum
- PointwiseComposition.FFL.FirstOrder.Semiformula.rec' hverum hfalsum hrel hnrel hand hor hall hexs (PointwiseComposition.FFL.FirstOrder.Semiformula.rel r v) = hrel r v
- PointwiseComposition.FFL.FirstOrder.Semiformula.rec' hverum hfalsum hrel hnrel hand hor hall hexs (PointwiseComposition.FFL.FirstOrder.Semiformula.nrel r v) = hnrel r v
Instances For
The has Dec Eq construction in FFL.FirstOrder.Semiformula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Quantifier rank
The qr construction in FFL.FirstOrder.Semiformula.
Equations
- PointwiseComposition.FFL.FirstOrder.Semiformula.verum.qr = 0
- PointwiseComposition.FFL.FirstOrder.Semiformula.falsum.qr = 0
- (PointwiseComposition.FFL.FirstOrder.Semiformula.rel r v).qr = 0
- (PointwiseComposition.FFL.FirstOrder.Semiformula.nrel r v).qr = 0
- (φ.and ψ).qr = max φ.qr ψ.qr
- (φ.or ψ).qr = max φ.qr ψ.qr
- φ.all.qr = φ.qr + 1
- φ.exs.qr = φ.qr + 1
Instances For
Open (Semi-)Formula
The Open construction in FFL.FirstOrder.Semiformula.
Instances For
Free Variables
The free Variables construction in FFL.FirstOrder.Semiformula.
Equations
- (PointwiseComposition.FFL.FirstOrder.Semiformula.rel a v).freeVariables = Finset.univ.biUnion fun (i : Fin arity) => (v i).freeVariables
- (PointwiseComposition.FFL.FirstOrder.Semiformula.nrel a v).freeVariables = Finset.univ.biUnion fun (i : Fin arity) => (v i).freeVariables
- PointwiseComposition.FFL.FirstOrder.Semiformula.verum.freeVariables = ∅
- PointwiseComposition.FFL.FirstOrder.Semiformula.falsum.freeVariables = ∅
- (φ.and ψ).freeVariables = φ.freeVariables ∪ ψ.freeVariables
- (φ.or ψ).freeVariables = φ.freeVariables ∪ ψ.freeVariables
- φ.all.freeVariables = φ.freeVariables
- φ.exs.freeVariables = φ.freeVariables
Instances For
The FVar? construction in FFL.FirstOrder.Semiformula.
Equations
- φ.HasFreeVariable x = (x ∈ φ.freeVariables)
Instances For
The fv Sup construction in FFL.FirstOrder.Semiformula.
Equations
Instances For
The l Map Aux construction in FFL.FirstOrder.Semiformula.
Equations
- One or more equations did not get rendered due to their size.
- PointwiseComposition.FFL.FirstOrder.Semiformula.lMapAux Φ PointwiseComposition.FFL.FirstOrder.Semiformula.verum = ⊤
- PointwiseComposition.FFL.FirstOrder.Semiformula.lMapAux Φ PointwiseComposition.FFL.FirstOrder.Semiformula.falsum = ⊥
- PointwiseComposition.FFL.FirstOrder.Semiformula.lMapAux Φ (φ.and ψ) = PointwiseComposition.FFL.FirstOrder.Semiformula.lMapAux Φ φ ⋏ PointwiseComposition.FFL.FirstOrder.Semiformula.lMapAux Φ ψ
- PointwiseComposition.FFL.FirstOrder.Semiformula.lMapAux Φ (φ.or ψ) = PointwiseComposition.FFL.FirstOrder.Semiformula.lMapAux Φ φ ⋎ PointwiseComposition.FFL.FirstOrder.Semiformula.lMapAux Φ ψ
- PointwiseComposition.FFL.FirstOrder.Semiformula.lMapAux Φ φ.all = ∀¹ PointwiseComposition.FFL.FirstOrder.Semiformula.lMapAux Φ φ
- PointwiseComposition.FFL.FirstOrder.Semiformula.lMapAux Φ φ.exs = ∃¹ PointwiseComposition.FFL.FirstOrder.Semiformula.lMapAux Φ φ
Instances For
The fvar List construction in FFL.FirstOrder.Semiformula.
Equations
- PointwiseComposition.FFL.FirstOrder.Semiformula.verum.fvarList = []
- PointwiseComposition.FFL.FirstOrder.Semiformula.falsum.fvarList = []
- (PointwiseComposition.FFL.FirstOrder.Semiformula.rel r v).fvarList = (PointwiseComposition.Matrix.toList fun (i : Fin arity) => (v i).fvarList).flatten
- (PointwiseComposition.FFL.FirstOrder.Semiformula.nrel r v).fvarList = (PointwiseComposition.Matrix.toList fun (i : Fin arity) => (v i).fvarList).flatten
- (φ.and ψ).fvarList = φ.fvarList ++ ψ.fvarList
- (φ.or ψ).fvarList = φ.fvarList ++ ψ.fvarList
- φ.all.fvarList = φ.fvarList
- φ.exs.fvarList = φ.fvarList
Instances For
The idx Of FVar construction in FFL.FirstOrder.Semiformula.
Equations
- φ.idxOfFVar a = List.idxOf a φ.fvarList
Instances For
The enumerate FVar construction in FFL.FirstOrder.Semiformula.
Instances For
The Theory construction in FFL.FirstOrder.
Equations
Instances For
The l Map construction in FFL.FirstOrder.Theory.