Documentation

Logic.FirstOrder.Basic.Syntax.Formula

Formulas of first-order logic #

This file defines the formulas of first-order logic.

p : 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.

inductive LO.FirstOrder.Semiformula (L : LO.FirstOrder.Language) (ξ : Type u_1) :
Type (max u_1 u_2)
Instances For
@[reducible, inline]
abbrev LO.FirstOrder.Formula (L : LO.FirstOrder.Language) (ξ : Type u_1) :
Type (max u_1 u_2)
Equations
Equations
Equations
  • LO.FirstOrder.Semiformula.instLogicalConnective = LO.LogicalConnective.mk
Equations
  • LO.FirstOrder.Semiformula.instDeMorgan = { verum := , falsum := , imply := , and := , or := , neg := }
Equations
  • LO.FirstOrder.Semiformula.instUnivQuantifier = { univ := fun {n : } => LO.FirstOrder.Semiformula.all }
Equations
  • LO.FirstOrder.Semiformula.instExQuantifier = { ex := fun {n : } => LO.FirstOrder.Semiformula.ex }
def LO.FirstOrder.Semiformula.toStr {L : LO.FirstOrder.Language} {ξ : Type u_1} [(k : ) → ToString (L.Func k)] [(k : ) → ToString (L.Rel k)] [ToString ξ] {n : } :
Equations
instance LO.FirstOrder.Semiformula.instRepr {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [(k : ) → ToString (L.Func k)] [(k : ) → ToString (L.Rel k)] [ToString ξ] :
Equations
instance LO.FirstOrder.Semiformula.instToString {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [(k : ) → ToString (L.Func k)] [(k : ) → ToString (L.Rel k)] [ToString ξ] :
Equations
  • LO.FirstOrder.Semiformula.instToString = { toString := LO.FirstOrder.Semiformula.toStr }
@[simp]
@[simp]
@[simp]
theorem LO.FirstOrder.Semiformula.and_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p₁ : LO.FirstOrder.Semiformula L ξ n) (q₁ : LO.FirstOrder.Semiformula L ξ n) (p₂ : LO.FirstOrder.Semiformula L ξ n) (q₂ : LO.FirstOrder.Semiformula L ξ n) :
p₁ p₂ = q₁ q₂ p₁ = q₁ p₂ = q₂
@[simp]
theorem LO.FirstOrder.Semiformula.or_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p₁ : LO.FirstOrder.Semiformula L ξ n) (q₁ : LO.FirstOrder.Semiformula L ξ n) (p₂ : LO.FirstOrder.Semiformula L ξ n) (q₂ : LO.FirstOrder.Semiformula L ξ n) :
p₁ p₂ = q₁ q₂ p₁ = q₁ p₂ = q₂
@[simp]
theorem LO.FirstOrder.Semiformula.all_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ (n + 1)) (q : LO.FirstOrder.Semiformula L ξ (n + 1)) :
∀' p = ∀' q p = q
@[simp]
theorem LO.FirstOrder.Semiformula.ex_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ (n + 1)) (q : LO.FirstOrder.Semiformula L ξ (n + 1)) :
∃' p = ∃' q p = q
@[simp]
theorem LO.FirstOrder.Semiformula.univItr_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {k : } (p : LO.FirstOrder.Semiformula L ξ (n + k)) (q : LO.FirstOrder.Semiformula L ξ (n + k)) :
∀^[k] p = ∀^[k] q p = q
@[simp]
theorem LO.FirstOrder.Semiformula.exItr_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {k : } (p : LO.FirstOrder.Semiformula L ξ (n + k)) (q : LO.FirstOrder.Semiformula L ξ (n + k)) :
∃^[k] p = ∃^[k] q p = q
@[simp]
theorem LO.FirstOrder.Semiformula.imp_inj {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {p₁ : LO.FirstOrder.Semiformula L ξ n} {p₂ : LO.FirstOrder.Semiformula L ξ n} {q₁ : LO.FirstOrder.Semiformula L ξ n} {q₂ : LO.FirstOrder.Semiformula L ξ n} :
p₁ p₂ = q₁ q₂ p₁ = q₁ p₂ = q₂
@[reducible, inline]
abbrev LO.FirstOrder.Semiformula.rel! {ξ : Type u_1} {n : } (L : LO.FirstOrder.Language) (k : ) (r : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
Equations
@[reducible, inline]
abbrev LO.FirstOrder.Semiformula.nrel! {ξ : Type u_1} {n : } (L : LO.FirstOrder.Language) (k : ) (r : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
Equations
Equations
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_top {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
.complexity = 0
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_bot {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
.complexity = 0
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_rel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
(LO.FirstOrder.Semiformula.rel r v).complexity = 0
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_nrel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).complexity = max p.complexity q.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_and' {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p.and q).complexity = max p.complexity q.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).complexity = max p.complexity q.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_or' {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p.or q).complexity = max p.complexity q.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_all {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
(∀' p).complexity = p.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_all' {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
p.all.complexity = p.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_ex {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
(∃' p).complexity = p.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_ex' {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
p.ex.complexity = p.complexity + 1
def LO.FirstOrder.Semiformula.cases' {L : LO.FirstOrder.Language} {ξ : Type u_1} {C : (n : ) → LO.FirstOrder.Semiformula L ξ nSort w} (hverum : {n : } → C n ) (hfalsum : {n : } → C n ) (hrel : {n k : } → (r : L.Rel k) → (v : Fin kLO.FirstOrder.Semiterm L ξ n) → C n (LO.FirstOrder.Semiformula.rel r v)) (hnrel : {n k : } → (r : L.Rel k) → (v : Fin kLO.FirstOrder.Semiterm L ξ n) → C n (LO.FirstOrder.Semiformula.nrel r v)) (hand : {n : } → (p q : LO.FirstOrder.Semiformula L ξ n) → C n (p q)) (hor : {n : } → (p q : LO.FirstOrder.Semiformula L ξ n) → C n (p q)) (hall : {n : } → (p : LO.FirstOrder.Semiformula L ξ (n + 1)) → C n (∀' p)) (hex : {n : } → (p : LO.FirstOrder.Semiformula L ξ (n + 1)) → C n (∃' p)) {n : } (p : LO.FirstOrder.Semiformula L ξ n) :
C n p
Equations
  • One or more equations did not get rendered due to their size.
def LO.FirstOrder.Semiformula.rec' {L : LO.FirstOrder.Language} {ξ : Type u_1} {C : (n : ) → LO.FirstOrder.Semiformula L ξ nSort w} (hverum : {n : } → C n ) (hfalsum : {n : } → C n ) (hrel : {n k : } → (r : L.Rel k) → (v : Fin kLO.FirstOrder.Semiterm L ξ n) → C n (LO.FirstOrder.Semiformula.rel r v)) (hnrel : {n k : } → (r : L.Rel k) → (v : Fin kLO.FirstOrder.Semiterm L ξ n) → C n (LO.FirstOrder.Semiformula.nrel r v)) (hand : {n : } → (p q : LO.FirstOrder.Semiformula L ξ n) → C n pC n qC n (p q)) (hor : {n : } → (p q : LO.FirstOrder.Semiformula L ξ n) → C n pC n qC n (p q)) (hall : {n : } → (p : LO.FirstOrder.Semiformula L ξ (n + 1)) → C (n + 1) pC n (∀' p)) (hex : {n : } → (p : LO.FirstOrder.Semiformula L ξ (n + 1)) → C (n + 1) pC n (∃' p)) {n : } (p : LO.FirstOrder.Semiformula L ξ n) :
C n p
Equations
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_neg {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) :
(p).complexity = p.complexity
def LO.FirstOrder.Semiformula.hasDecEq {L : LO.FirstOrder.Language} {ξ : Type u_1} [(k : ) → DecidableEq (L.Func k)] [(k : ) → DecidableEq (L.Rel k)] [DecidableEq ξ] {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
Decidable (p = q)
instance LO.FirstOrder.Semiformula.instDecidableEq {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [(k : ) → DecidableEq (L.Func k)] [(k : ) → DecidableEq (L.Rel k)] [DecidableEq ξ] :
Equations
  • LO.FirstOrder.Semiformula.instDecidableEq = LO.FirstOrder.Semiformula.hasDecEq
Equations
theorem LO.FirstOrder.Semiformula.fv_rel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
(LO.FirstOrder.Semiformula.rel r v).fv = Finset.univ.biUnion fun (i : Fin k) => (v i).fv
theorem LO.FirstOrder.Semiformula.fv_nrel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
(LO.FirstOrder.Semiformula.nrel r v).fv = Finset.univ.biUnion fun (i : Fin k) => (v i).fv
@[simp]
theorem LO.FirstOrder.Semiformula.fv_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).fv = p.fv q.fv
@[simp]
theorem LO.FirstOrder.Semiformula.fv_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).fv = p.fv q.fv
@[simp]
theorem LO.FirstOrder.Semiformula.fv_all {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
(∀' p).fv = p.fv
@[simp]
theorem LO.FirstOrder.Semiformula.fv_ex {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
(∃' p).fv = p.fv
@[simp]
theorem LO.FirstOrder.Semiformula.fv_not {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ n) :
(p).fv = p.fv
@[simp]
theorem LO.FirstOrder.Semiformula.fv_imp {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).fv = p.fv q.fv
Equations
@[simp]
@[simp]
@[simp]
theorem LO.FirstOrder.Semiformula.qr_rel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
@[simp]
theorem LO.FirstOrder.Semiformula.qr_nrel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
@[simp]
theorem LO.FirstOrder.Semiformula.qr_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).qr = max p.qr q.qr
@[simp]
theorem LO.FirstOrder.Semiformula.qr_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).qr = max p.qr q.qr
@[simp]
theorem LO.FirstOrder.Semiformula.qr_all {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
(∀' p).qr = p.qr + 1
@[simp]
theorem LO.FirstOrder.Semiformula.qr_ex {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
(∃' p).qr = p.qr + 1
@[simp]
theorem LO.FirstOrder.Semiformula.qr_neg {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) :
(p).qr = p.qr
@[simp]
theorem LO.FirstOrder.Semiformula.qr_imply {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).qr = max p.qr q.qr
@[simp]
theorem LO.FirstOrder.Semiformula.qr_iff {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).qr = max p.qr q.qr
Equations
  • p.Open = (p.qr = 0)
@[simp]
@[simp]
@[simp]
theorem LO.FirstOrder.Semiformula.open_rel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
@[simp]
theorem LO.FirstOrder.Semiformula.open_nrel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
@[simp]
theorem LO.FirstOrder.Semiformula.open_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {p : LO.FirstOrder.Semiformula L ξ n} {q : LO.FirstOrder.Semiformula L ξ n} :
(p q).Open p.Open q.Open
@[simp]
theorem LO.FirstOrder.Semiformula.open_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {p : LO.FirstOrder.Semiformula L ξ n} {q : LO.FirstOrder.Semiformula L ξ n} :
(p q).Open p.Open q.Open
@[simp]
@[simp]
@[simp]
theorem LO.FirstOrder.Semiformula.open_neg {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {p : LO.FirstOrder.Semiformula L ξ n} :
(p).Open p.Open
@[simp]
theorem LO.FirstOrder.Semiformula.open_imply {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {p : LO.FirstOrder.Semiformula L ξ n} {q : LO.FirstOrder.Semiformula L ξ n} :
(p q).Open p.Open q.Open
@[simp]
theorem LO.FirstOrder.Semiformula.open_iff {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {p : LO.FirstOrder.Semiformula L ξ n} {q : LO.FirstOrder.Semiformula L ξ n} :
(p q).Open p.Open q.Open
Equations
@[reducible, inline]
Equations
  • p.fvar? x = (x p.fvarList)
@[simp]
theorem LO.FirstOrder.Semiformula.fvarList_top {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
.fvarList = []
@[simp]
theorem LO.FirstOrder.Semiformula.fvarList_bot {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
.fvarList = []
@[simp]
theorem LO.FirstOrder.Semiformula.fvarList_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).fvarList = p.fvarList ++ q.fvarList
@[simp]
theorem LO.FirstOrder.Semiformula.fvarList_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).fvarList = p.fvarList ++ q.fvarList
@[simp]
theorem LO.FirstOrder.Semiformula.fvarList_all {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
(∀' p).fvarList = p.fvarList
@[simp]
theorem LO.FirstOrder.Semiformula.fvarList_ex {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
(∃' p).fvarList = p.fvarList
@[simp]
theorem LO.FirstOrder.Semiformula.fvarList_univClosure {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) :
(∀* p).fvarList = p.fvarList
@[simp]
theorem LO.FirstOrder.Semiformula.fvarList_neg {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) :
(p).fvarList = p.fvarList
@[simp]
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_rel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (x : ξ) {k : } (R : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
(LO.FirstOrder.Semiformula.rel R v).fvar? x ∃ (i : Fin k), (v i).fvar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_nrel {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (x : ξ) {k : } (R : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
(LO.FirstOrder.Semiformula.nrel R v).fvar? x ∃ (i : Fin k), (v i).fvar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_top {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (x : ξ) :
¬.fvar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_falsum {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (x : ξ) :
¬.fvar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (x : ξ) (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).fvar? x p.fvar? x q.fvar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (x : ξ) (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) :
(p q).fvar? x p.fvar? x q.fvar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_all {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (x : ξ) (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
(∀' p).fvar? x p.fvar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_ex {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (x : ξ) (p : LO.FirstOrder.Semiformula L ξ (n + 1)) :
(∃' p).fvar? x p.fvar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_univClosure {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (x : ξ) (p : LO.FirstOrder.Semiformula L ξ n) :
(∀* p).fvar? x p.fvar? x
theorem LO.FirstOrder.Semiformula.List.maximam?_some_of_not_nil {α : Type u_2} [LinearOrder α] {l : List α} (h : l []) :
l.maximum?.isSome = true
@[simp]
theorem LO.FirstOrder.Semiformula.le_foldl_max_self {α : Type u_2} [LinearOrder α] (x : α) (l : List α) :
x List.foldl max x l
theorem LO.FirstOrder.Semiformula.le_foldl_max {α : Type u_2} [LinearOrder α] (x : α) (l : List α) {y : α} :
y ly List.foldl max x l
theorem LO.FirstOrder.Semiformula.List.maximam?_eq_some {α : Type u_2} [LinearOrder α] {l : List α} {a : α} (h : l.maximum? = some a) (x : α) :
x lx a
theorem LO.FirstOrder.Semiformula.ne_of_ne_complexity {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {p : LO.FirstOrder.Semiformula L ξ n} {q : LO.FirstOrder.Semiformula L ξ n} (h : p.complexity q.complexity) :
p q
Equations
theorem LO.FirstOrder.Semiformula.lMap_rel {n : } {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} {k : } (r : L₁.Rel k) (v : Fin kLO.FirstOrder.Semiterm L₁ ξ n) :
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_rel₀ {n : } {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} (r : L₁.Rel 0) (v : Fin 0LO.FirstOrder.Semiterm L₁ ξ n) :
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_rel₂ {n : } {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} (r : L₁.Rel 2) (t₁ : LO.FirstOrder.Semiterm L₁ ξ n) (t₂ : LO.FirstOrder.Semiterm L₁ ξ n) :
theorem LO.FirstOrder.Semiformula.lMap_nrel {n : } {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} {k : } (r : L₁.Rel k) (v : Fin kLO.FirstOrder.Semiterm L₁ ξ n) :
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_nrel₀ {n : } {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} (r : L₁.Rel 0) (v : Fin 0LO.FirstOrder.Semiterm L₁ ξ n) :
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_nrel₂ {n : } {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} (r : L₁.Rel 2) (t₁ : LO.FirstOrder.Semiterm L₁ ξ n) (t₂ : LO.FirstOrder.Semiterm L₁ ξ n) :
@[simp]
theorem LO.FirstOrder.Semiformula.fvarList_lMap {n : } {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} (Φ : L₁.Hom L₂) (p : LO.FirstOrder.Semiformula L₁ ξ n) :
((LO.FirstOrder.Semiformula.lMap Φ) p).fvarList = p.fvarList
Equations
Equations
  • p.fvEnumInv i = if hi : i < p.fvarList.length then p.fvarList.get i, hi else default
theorem LO.FirstOrder.Semiformula.fvEnumInv_fvEnum {n : } {L : LO.FirstOrder.Language} {ξ : Type u_2} [DecidableEq ξ] [Inhabited ξ] {p : LO.FirstOrder.Semiformula L ξ n} {x : ξ} (hx : x p.fvarList) :
p.fvEnumInv (p.fvEnum x) = x
def LO.FirstOrder.Semiformula.fvListing {n : } {L : LO.FirstOrder.Language} {ξ : Type u_2} [DecidableEq ξ] (p : LO.FirstOrder.Semiformula L ξ n) :
ξFin (p.fvarList.length + 1)
Equations
def LO.FirstOrder.Semiformula.fvListingInv {n : } {L : LO.FirstOrder.Language} {ξ : Type u_2} [Inhabited ξ] (p : LO.FirstOrder.Semiformula L ξ n) :
Fin (p.fvarList.length + 1)ξ
Equations
  • p.fvListingInv i = if hi : i < p.fvarList.length then p.fvarList.get i, hi else default
theorem LO.FirstOrder.Semiformula.fvListingInv_fvListing {n : } {L : LO.FirstOrder.Language} {ξ : Type u_2} [DecidableEq ξ] [Inhabited ξ] {p : LO.FirstOrder.Semiformula L ξ n} {x : ξ} (hx : x p.fvarList) :
p.fvListingInv (p.fvListing x) = x
Equations
  • LO.FirstOrder.instCollectionSyntacticFormulaTheory = inferInstance
Equations
  • LO.FirstOrder.instCollectionSentenceClosedTheory = inferInstance
Equations