Documentation

Foundation.FirstOrder.Basic.Syntax.Formula

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.

inductive LO.FirstOrder.Semiformula (L : Language) (ξ : Type u_1) :
Type (max u_1 u_2)
Instances For
@[reducible, inline]
abbrev LO.FirstOrder.Formula (L : Language) (ξ : Type u_1) :
Type (max u_1 u_2)
Equations
theorem LO.FirstOrder.Semiformula.neg_neg {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ n) :
φ.neg.neg = φ
def LO.FirstOrder.Semiformula.toStr {L : Language} {ξ : Type u_1} [(k : ) → ToString (L.Func k)] [(k : ) → ToString (L.Rel k)] [ToString ξ] {n : } :
Semiformula L ξ nString
Equations
instance LO.FirstOrder.Semiformula.instRepr {L : Language} {ξ : Type u_1} {n : } [(k : ) → ToString (L.Func k)] [(k : ) → ToString (L.Rel k)] [ToString ξ] :
Repr (Semiformula L ξ n)
Equations
instance LO.FirstOrder.Semiformula.instToString {L : Language} {ξ : Type u_1} {n : } [(k : ) → ToString (L.Func k)] [(k : ) → ToString (L.Rel k)] [ToString ξ] :
Equations
@[simp]
@[simp]
@[simp]
theorem LO.FirstOrder.Semiformula.neg_rel {L : Language} {ξ : Type u_1} {n k : } (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
rel r v = nrel r v
@[simp]
theorem LO.FirstOrder.Semiformula.neg_nrel {L : Language} {ξ : Type u_1} {n k : } (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
nrel r v = rel r v
@[simp]
theorem LO.FirstOrder.Semiformula.neg_and {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
(φ ψ) = φ ψ
@[simp]
theorem LO.FirstOrder.Semiformula.neg_or {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
(φ ψ) = φ ψ
@[simp]
theorem LO.FirstOrder.Semiformula.neg_all {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ (n + 1)) :
(∀' φ) = ∃' φ
@[simp]
theorem LO.FirstOrder.Semiformula.neg_ex {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ (n + 1)) :
(∃' φ) = ∀' φ
@[simp]
theorem LO.FirstOrder.Semiformula.neg_neg' {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ n) :
φ = φ
@[simp]
theorem LO.FirstOrder.Semiformula.neg_inj {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
φ = ψ φ = ψ
@[simp]
theorem LO.FirstOrder.Semiformula.neg_univClosure {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ n) :
(∀* φ) = ∃* φ
@[simp]
theorem LO.FirstOrder.Semiformula.neg_exClosure {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ n) :
(∃* φ) = ∀* φ
theorem LO.FirstOrder.Semiformula.neg_eq {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ n) :
φ = φ.neg
theorem LO.FirstOrder.Semiformula.imp_eq {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
φ ψ = φ ψ
theorem LO.FirstOrder.Semiformula.iff_eq {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
φ ψ = (φ ψ) (ψ φ)
theorem LO.FirstOrder.Semiformula.ball_eq {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ (n + 1)) :
(∀[φ] ψ) = ∀' (φ ψ)
theorem LO.FirstOrder.Semiformula.bex_eq {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ (n + 1)) :
(∃[φ] ψ) = ∃' φ ψ
@[simp]
theorem LO.FirstOrder.Semiformula.neg_ball {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ (n + 1)) :
(∀[φ] ψ) = ∃[φ] ψ
@[simp]
theorem LO.FirstOrder.Semiformula.neg_bex {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ (n + 1)) :
(∃[φ] ψ) = ∀[φ] ψ
@[simp]
theorem LO.FirstOrder.Semiformula.and_inj {L : Language} {ξ : Type u_1} {n : } (φ₁ ψ₁ φ₂ ψ₂ : Semiformula L ξ n) :
φ₁ φ₂ = ψ₁ ψ₂ φ₁ = ψ₁ φ₂ = ψ₂
@[simp]
theorem LO.FirstOrder.Semiformula.or_inj {L : Language} {ξ : Type u_1} {n : } (φ₁ ψ₁ φ₂ ψ₂ : Semiformula L ξ n) :
φ₁ φ₂ = ψ₁ ψ₂ φ₁ = ψ₁ φ₂ = ψ₂
@[simp]
theorem LO.FirstOrder.Semiformula.all_inj {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ (n + 1)) :
∀' φ = ∀' ψ φ = ψ
@[simp]
theorem LO.FirstOrder.Semiformula.ex_inj {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ (n + 1)) :
∃' φ = ∃' ψ φ = ψ
@[simp]
theorem LO.FirstOrder.Semiformula.univClosure_inj {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
∀* φ = ∀* ψ φ = ψ
@[simp]
theorem LO.FirstOrder.Semiformula.exClosure_inj {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
∃* φ = ∃* ψ φ = ψ
@[simp]
theorem LO.FirstOrder.Semiformula.univItr_inj {L : Language} {ξ : Type u_1} {n k : } (φ ψ : Semiformula L ξ (n + k)) :
∀^[k] φ = ∀^[k] ψ φ = ψ
@[simp]
theorem LO.FirstOrder.Semiformula.exItr_inj {L : Language} {ξ : Type u_1} {n k : } (φ ψ : Semiformula L ξ (n + k)) :
∃^[k] φ = ∃^[k] ψ φ = ψ
@[simp]
theorem LO.FirstOrder.Semiformula.imp_inj {L : Language} {ξ : Type u_1} {n : } {φ₁ φ₂ ψ₁ ψ₂ : Semiformula L ξ n} :
φ₁ φ₂ = ψ₁ ψ₂ φ₁ = ψ₁ φ₂ = ψ₂
@[reducible, inline]
abbrev LO.FirstOrder.Semiformula.rel! {ξ : Type u_1} {n : } (L : Language) (k : ) (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
Equations
@[reducible, inline]
abbrev LO.FirstOrder.Semiformula.nrel! {ξ : Type u_1} {n : } (L : Language) (k : ) (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
Equations
def LO.FirstOrder.Semiformula.complexity {L : Language} {ξ : Type u_1} {n : } :
Semiformula L ξ n
Equations
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_top {L : Language} {ξ : Type u_1} {n : } :
.complexity = 0
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_bot {L : Language} {ξ : Type u_1} {n : } :
.complexity = 0
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_rel {L : Language} {ξ : Type u_1} {n k : } (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
(rel r v).complexity = 0
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_nrel {L : Language} {ξ : Type u_1} {n k : } (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
(nrel r v).complexity = 0
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_and {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
(φ ψ).complexity = φ.complexity ψ.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_and' {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
(φ.and ψ).complexity = φ.complexity ψ.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_or {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
(φ ψ).complexity = φ.complexity ψ.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_or' {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
(φ.or ψ).complexity = φ.complexity ψ.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_all {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ (n + 1)) :
(∀' φ).complexity = φ.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_all' {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ (n + 1)) :
φ.all.complexity = φ.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_ex {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ (n + 1)) :
(∃' φ).complexity = φ.complexity + 1
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_ex' {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ (n + 1)) :
φ.ex.complexity = φ.complexity + 1
def LO.FirstOrder.Semiformula.cases' {L : Language} {ξ : Type u_1} {C : (n : ) → Semiformula L ξ nSort w} (hverum : {n : } → C n ) (hfalsum : {n : } → C n ) (hrel : {n k : } → (r : L.Rel k) → (v : Fin kSemiterm L ξ n) → C n (rel r v)) (hnrel : {n k : } → (r : L.Rel k) → (v : Fin kSemiterm L ξ n) → C n (nrel r v)) (hand : {n : } → (φ ψ : Semiformula L ξ n) → C n (φ ψ)) (hor : {n : } → (φ ψ : Semiformula L ξ n) → C n (φ ψ)) (hall : {n : } → (φ : Semiformula L ξ (n + 1)) → C n (∀' φ)) (hex : {n : } → (φ : Semiformula L ξ (n + 1)) → C n (∃' φ)) {n : } (φ : Semiformula L ξ n) :
C n φ
Equations
def LO.FirstOrder.Semiformula.rec' {L : Language} {ξ : Type u_1} {C : (n : ) → Semiformula L ξ nSort w} (hverum : {n : } → C n ) (hfalsum : {n : } → C n ) (hrel : {n k : } → (r : L.Rel k) → (v : Fin kSemiterm L ξ n) → C n (rel r v)) (hnrel : {n k : } → (r : L.Rel k) → (v : Fin kSemiterm L ξ n) → C n (nrel r v)) (hand : {n : } → (φ ψ : Semiformula L ξ n) → C n φC n ψC n (φ ψ)) (hor : {n : } → (φ ψ : Semiformula L ξ n) → C n φC n ψC n (φ ψ)) (hall : {n : } → (φ : Semiformula L ξ (n + 1)) → C (n + 1) φC n (∀' φ)) (hex : {n : } → (φ : Semiformula L ξ (n + 1)) → C (n + 1) φC n (∃' φ)) {n : } (φ : Semiformula L ξ n) :
C n φ
Equations
@[simp]
theorem LO.FirstOrder.Semiformula.complexity_neg {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ n) :
(φ).complexity = φ.complexity
def LO.FirstOrder.Semiformula.hasDecEq {L : Language} {ξ : Type u_1} [(k : ) → DecidableEq (L.Func k)] [(k : ) → DecidableEq (L.Rel k)] [DecidableEq ξ] {n : } (φ ψ : Semiformula L ξ n) :
Decidable (φ = ψ)

Quantifier Rank

def LO.FirstOrder.Semiformula.qr {L : Language} {ξ : Type u_1} {n : } :
Semiformula L ξ n
Equations
@[simp]
theorem LO.FirstOrder.Semiformula.qr_top {L : Language} {ξ : Type u_1} {n : } :
.qr = 0
@[simp]
theorem LO.FirstOrder.Semiformula.qr_bot {L : Language} {ξ : Type u_1} {n : } :
.qr = 0
@[simp]
theorem LO.FirstOrder.Semiformula.qr_rel {L : Language} {ξ : Type u_1} {n k : } (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
(rel r v).qr = 0
@[simp]
theorem LO.FirstOrder.Semiformula.qr_nrel {L : Language} {ξ : Type u_1} {n k : } (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
(nrel r v).qr = 0
@[simp]
theorem LO.FirstOrder.Semiformula.qr_and {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
(φ ψ).qr = φ.qr ψ.qr
@[simp]
theorem LO.FirstOrder.Semiformula.qr_or {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
(φ ψ).qr = φ.qr ψ.qr
@[simp]
theorem LO.FirstOrder.Semiformula.qr_all {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ (n + 1)) :
(∀' φ).qr = φ.qr + 1
@[simp]
theorem LO.FirstOrder.Semiformula.qr_ex {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ (n + 1)) :
(∃' φ).qr = φ.qr + 1
@[simp]
theorem LO.FirstOrder.Semiformula.qr_neg {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ n) :
(φ).qr = φ.qr
@[simp]
theorem LO.FirstOrder.Semiformula.qr_imply {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
(φ ψ).qr = φ.qr ψ.qr
@[simp]
theorem LO.FirstOrder.Semiformula.qr_iff {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
(φ ψ).qr = φ.qr ψ.qr

Open (Semi-)Formula

def LO.FirstOrder.Semiformula.Open {L : Language} {ξ : Type u_1} {n : } (φ : Semiformula L ξ n) :
Equations
  • φ.Open = (φ.qr = 0)
@[simp]
theorem LO.FirstOrder.Semiformula.open_top {L : Language} {ξ : Type u_1} {n : } :
.Open
@[simp]
theorem LO.FirstOrder.Semiformula.open_bot {L : Language} {ξ : Type u_1} {n : } :
.Open
@[simp]
theorem LO.FirstOrder.Semiformula.open_rel {L : Language} {ξ : Type u_1} {n k : } (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
(rel r v).Open
@[simp]
theorem LO.FirstOrder.Semiformula.open_nrel {L : Language} {ξ : Type u_1} {n k : } (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
(nrel r v).Open
@[simp]
theorem LO.FirstOrder.Semiformula.open_and {L : Language} {ξ : Type u_1} {n : } {φ ψ : Semiformula L ξ n} :
(φ ψ).Open φ.Open ψ.Open
@[simp]
theorem LO.FirstOrder.Semiformula.open_or {L : Language} {ξ : Type u_1} {n : } {φ ψ : Semiformula L ξ n} :
(φ ψ).Open φ.Open ψ.Open
@[simp]
theorem LO.FirstOrder.Semiformula.not_open_all {L : Language} {ξ : Type u_1} {n : } {φ : Semiformula L ξ (n + 1)} :
¬(∀' φ).Open
@[simp]
theorem LO.FirstOrder.Semiformula.not_open_ex {L : Language} {ξ : Type u_1} {n : } {φ : Semiformula L ξ (n + 1)} :
¬(∃' φ).Open
@[simp]
theorem LO.FirstOrder.Semiformula.open_neg {L : Language} {ξ : Type u_1} {n : } {φ : Semiformula L ξ n} :
(φ).Open φ.Open
@[simp]
theorem LO.FirstOrder.Semiformula.open_imply {L : Language} {ξ : Type u_1} {n : } {φ ψ : Semiformula L ξ n} :
(φ ψ).Open φ.Open ψ.Open
@[simp]
theorem LO.FirstOrder.Semiformula.open_iff {L : Language} {ξ : Type u_1} {n : } {φ ψ : Semiformula L ξ n} :
(φ ψ).Open φ.Open ψ.Open

Free Variables

Equations
theorem LO.FirstOrder.Semiformula.freeVariables_rel {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] {k : } (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
(rel r v).freeVariables = Finset.univ.biUnion fun (i : Fin k) => (v i).freeVariables
theorem LO.FirstOrder.Semiformula.freeVariables_nrel {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] {k : } (r : L.Rel k) (v : Fin kSemiterm L ξ n) :
(nrel r v).freeVariables = Finset.univ.biUnion fun (i : Fin k) => (v i).freeVariables
@[simp]
theorem LO.FirstOrder.Semiformula.freeVariables_verum {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] :
.freeVariables =
@[simp]
theorem LO.FirstOrder.Semiformula.freeVariables_falsum {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] :
.freeVariables =
@[simp]
theorem LO.FirstOrder.Semiformula.freeVariables_and {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (φ ψ : Semiformula L ξ n) :
(φ ψ).freeVariables = φ.freeVariables ψ.freeVariables
@[simp]
theorem LO.FirstOrder.Semiformula.freeVariables_or {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (φ ψ : Semiformula L ξ n) :
(φ ψ).freeVariables = φ.freeVariables ψ.freeVariables
@[simp]
theorem LO.FirstOrder.Semiformula.freeVariables_all {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (φ : Semiformula L ξ (n + 1)) :
(∀' φ).freeVariables = φ.freeVariables
@[simp]
theorem LO.FirstOrder.Semiformula.freeVariables_ex {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (φ : Semiformula L ξ (n + 1)) :
(∃' φ).freeVariables = φ.freeVariables
@[simp]
theorem LO.FirstOrder.Semiformula.freeVariables_not {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (φ : Semiformula L ξ n) :
(φ).freeVariables = φ.freeVariables
@[simp]
theorem LO.FirstOrder.Semiformula.freeVariables_imp {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (φ ψ : Semiformula L ξ n) :
(φ ψ).freeVariables = φ.freeVariables ψ.freeVariables
@[simp]
theorem LO.FirstOrder.Semiformula.freeVariables_univClosure {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (φ : Semiformula L ξ n) :
(∀* φ).freeVariables = φ.freeVariables
@[simp]
theorem LO.FirstOrder.Semiformula.freeVariables_sentence {L : Language} {n : } {ο : Type u_5} [IsEmpty ο] (φ : Semiformula L ο n) :
φ.freeVariables =
@[reducible, inline]
abbrev LO.FirstOrder.Semiformula.FVar? {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (φ : Semiformula L ξ n) (x : ξ) :
Equations
  • φ.FVar? x = (x φ.freeVariables)
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_rel {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] {x : ξ} {k : } {R : L.Rel k} {v : Fin kSemiterm L ξ n} :
(rel R v).FVar? x ∃ (i : Fin k), (v i).FVar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_nrel {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] {x : ξ} {k : } {R : L.Rel k} {v : Fin kSemiterm L ξ n} :
(nrel R v).FVar? x ∃ (i : Fin k), (v i).FVar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_top {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (x : ξ) :
¬.FVar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_falsum {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (x : ξ) :
¬.FVar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_and {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (x : ξ) (φ ψ : Semiformula L ξ n) :
(φ ψ).FVar? x φ.FVar? x ψ.FVar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_or {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (x : ξ) (φ ψ : Semiformula L ξ n) :
(φ ψ).FVar? x φ.FVar? x ψ.FVar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_all {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (x : ξ) (φ : Semiformula L ξ (n + 1)) :
(∀' φ).FVar? x φ.FVar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_ex {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (x : ξ) (φ : Semiformula L ξ (n + 1)) :
(∃' φ).FVar? x φ.FVar? x
@[simp]
theorem LO.FirstOrder.Semiformula.fvar?_univClosure {L : Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (x : ξ) (φ : Semiformula L ξ n) :
(∀* φ).FVar? x φ.FVar? x
theorem LO.FirstOrder.Semiformula.List.maximam?_some_of_not_nil {α : Type u_5} [LinearOrder α] {l : List α} (h : l []) :
l.max?.isSome = true
theorem LO.FirstOrder.Semiformula.List.maximam?_eq_some {α : Type u_5} [LinearOrder α] {l : List α} {a : α} (h : l.max? = some a) (x : α) :
x lx a
theorem LO.FirstOrder.Semiformula.ne_of_ne_complexity {L : Language} {ξ : Type u_1} {n : } {φ ψ : Semiformula L ξ n} (h : φ.complexity ψ.complexity) :
φ ψ
@[simp]
theorem LO.FirstOrder.Semiformula.ne_or_left {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
φ φ ψ
@[simp]
theorem LO.FirstOrder.Semiformula.ne_or_right {L : Language} {ξ : Type u_1} {n : } (φ ψ : Semiformula L ξ n) :
ψ φ ψ
theorem LO.FirstOrder.Semiformula.lMapAux_neg {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} {n : } (φ : Semiformula L₁ ξ n) :
lMapAux Φ (φ) = lMapAux Φ φ
def LO.FirstOrder.Semiformula.lMap {L₁ : Language} {L₂ : Language} {ξ : Type u_5} (Φ : L₁.Hom L₂) {n : } :
Semiformula L₁ ξ n →ˡᶜ Semiformula L₂ ξ n
Equations
theorem LO.FirstOrder.Semiformula.lMap_rel {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} {k : } (r : L₁.Rel k) (v : Fin kSemiterm L₁ ξ n) :
(lMap Φ) (rel r v) = rel (Φ.rel r) fun (i : Fin k) => Semiterm.lMap Φ (v i)
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_rel₀ {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} (r : L₁.Rel 0) (v : Fin 0Semiterm L₁ ξ n) :
(lMap Φ) (rel r v) = rel (Φ.rel r) ![]
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_rel₁ {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} (r : L₁.Rel 1) (t : Semiterm L₁ ξ n) :
(lMap Φ) (rel r ![t]) = rel (Φ.rel r) ![Semiterm.lMap Φ t]
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_rel₂ {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} (r : L₁.Rel 2) (t₁ t₂ : Semiterm L₁ ξ n) :
(lMap Φ) (rel r ![t₁, t₂]) = rel (Φ.rel r) ![Semiterm.lMap Φ t₁, Semiterm.lMap Φ t₂]
theorem LO.FirstOrder.Semiformula.lMap_nrel {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} {k : } (r : L₁.Rel k) (v : Fin kSemiterm L₁ ξ n) :
(lMap Φ) (nrel r v) = nrel (Φ.rel r) fun (i : Fin k) => Semiterm.lMap Φ (v i)
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_nrel₀ {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} (r : L₁.Rel 0) (v : Fin 0Semiterm L₁ ξ n) :
(lMap Φ) (nrel r v) = nrel (Φ.rel r) ![]
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_nrel₁ {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} (r : L₁.Rel 1) (t : Semiterm L₁ ξ n) :
(lMap Φ) (nrel r ![t]) = nrel (Φ.rel r) ![Semiterm.lMap Φ t]
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_nrel₂ {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} (r : L₁.Rel 2) (t₁ t₂ : Semiterm L₁ ξ n) :
(lMap Φ) (nrel r ![t₁, t₂]) = nrel (Φ.rel r) ![Semiterm.lMap Φ t₁, Semiterm.lMap Φ t₂]
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_all {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} (φ : Semiformula L₁ ξ (n + 1)) :
(lMap Φ) (∀' φ) = ∀' (lMap Φ) φ
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_ex {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} (φ : Semiformula L₁ ξ (n + 1)) :
(lMap Φ) (∃' φ) = ∃' (lMap Φ) φ
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_ball {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} (φ ψ : Semiformula L₁ ξ (n + 1)) :
(lMap Φ) (∀[φ] ψ) = ∀[(lMap Φ) φ] (lMap Φ) ψ
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_bex {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} (φ ψ : Semiformula L₁ ξ (n + 1)) :
(lMap Φ) (∃[φ] ψ) = ∃[(lMap Φ) φ] (lMap Φ) ψ
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_univClosure {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} (φ : Semiformula L₁ ξ n) :
(lMap Φ) (∀* φ) = ∀* (lMap Φ) φ
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_exClosure {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} (φ : Semiformula L₁ ξ n) :
(lMap Φ) (∃* φ) = ∃* (lMap Φ) φ
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_univItr {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} {k : } (φ : Semiformula L₁ ξ (n + k)) :
(lMap Φ) (∀^[k] φ) = ∀^[k] (lMap Φ) φ
@[simp]
theorem LO.FirstOrder.Semiformula.lMap_exItr {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} {Φ : L₁.Hom L₂} {k : } (φ : Semiformula L₁ ξ (n + k)) :
(lMap Φ) (∃^[k] φ) = ∃^[k] (lMap Φ) φ
@[simp]
theorem LO.FirstOrder.Semiformula.freeVariables_lMap {n : } {L₁ : Language} {L₂ : Language} {ξ : Type u_5} [DecidableEq ξ] (Φ : L₁.Hom L₂) (φ : Semiformula L₁ ξ n) :
((lMap Φ) φ).freeVariables = φ.freeVariables
def LO.FirstOrder.Theory.lMap {L₁ : Language} {L₂ : Language} (Φ : L₁.Hom L₂) (T : Theory L₁) :
Theory L₂
Equations
Equations
theorem LO.FirstOrder.Theory.add_def {L : Language} (T U : Theory L) :
T + U = T U