Documentation

Foundation.Logic.Predicate.Term

Terms of first-order logic #

This file defines the terms of first-order logic.

The bounded variables are denoted by #x for x : Fin n, and free variables are denoted by &x for x : ξ. t : Semiterm L ξ n is a (semi-)term of language L with bounded variables of Fin n and free variables of ξ.

inductive LO.FirstOrder.Semiterm (L : LO.FirstOrder.Language) (ξ : Type u_1) (n : ) :
Type (max u_1 u_2)
Instances For
    @[reducible, inline]
    abbrev LO.FirstOrder.Term (L : LO.FirstOrder.Language) (ξ : Type u_1) :
    Type (max u_1 u_2)
    Equations
    Instances For
      Equations
      def LO.FirstOrder.Semiterm.toStr {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [(k : ) → ToString (L.Func k)] [ToString ξ] :
      Equations
      Instances For
        instance LO.FirstOrder.Semiterm.instRepr {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [(k : ) → ToString (L.Func k)] [ToString ξ] :
        Equations
        instance LO.FirstOrder.Semiterm.instToString {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [(k : ) → ToString (L.Func k)] [ToString ξ] :
        Equations
        • LO.FirstOrder.Semiterm.instToString = { toString := LO.FirstOrder.Semiterm.toStr }
        def LO.FirstOrder.Semiterm.hasDecEq {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [(k : ) → DecidableEq (L.Func k)] [DecidableEq ξ] (t u : LO.FirstOrder.Semiterm L ξ n) :
        Decidable (t = u)
        Equations
        Instances For
          Equations
          • LO.FirstOrder.Semiterm.instDecidableEq = LO.FirstOrder.Semiterm.hasDecEq
          Equations
          Instances For
            @[simp]
            @[simp]
            theorem LO.FirstOrder.Semiterm.complexity_func {L : LO.FirstOrder.Language} {ξ : Type u_1} {n k : } (f : L.Func k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
            (LO.FirstOrder.Semiterm.func f v).complexity = (Finset.univ.sup fun (i : Fin k) => (v i).complexity) + 1
            @[simp]
            theorem LO.FirstOrder.Semiterm.complexity_func_lt {L : LO.FirstOrder.Language} {ξ : Type u_1} {n k : } (f : L.Func k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) (i : Fin k) :
            (v i).complexity < (LO.FirstOrder.Semiterm.func f v).complexity
            @[reducible, inline]
            abbrev LO.FirstOrder.Semiterm.func! {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (k : ) (f : L.Func k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
            Equations
            Instances For
              Equations
              Instances For
                @[simp]
                theorem LO.FirstOrder.Semiterm.bv_func {L : LO.FirstOrder.Language} {ξ : Type u_1} {n k : } (f : L.Func k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
                (LO.FirstOrder.Semiterm.func f v).bv = Finset.univ.biUnion fun (i : Fin k) => (v i).bv
                @[simp]
                theorem LO.FirstOrder.Semiterm.bv_constant {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (f : L.Func 0) (v : Fin 0LO.FirstOrder.Semiterm L ξ n) :
                Equations
                • t.Positive = xt.bv, 0 < x
                Instances For
                  @[simp]
                  theorem LO.FirstOrder.Semiterm.Positive.bvar {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {x : Fin (n + 1)} :
                  @[simp]
                  @[simp]
                  theorem LO.FirstOrder.Semiterm.Positive.func {L : LO.FirstOrder.Language} {ξ : Type u_1} {n k : } (f : L.Func k) (v : Fin kLO.FirstOrder.Semiterm L ξ (n + 1)) :
                  (LO.FirstOrder.Semiterm.func f v).Positive ∀ (i : Fin k), (v i).Positive
                  Equations
                  Instances For
                    @[simp]
                    theorem LO.FirstOrder.Semiterm.freeVariables_fvar {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] {x : ξ} :
                    (LO.FirstOrder.Semiterm.fvar x).freeVariables = {x}
                    theorem LO.FirstOrder.Semiterm.freeVariables_func {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] {k : } (f : L.Func k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
                    (LO.FirstOrder.Semiterm.func f v).freeVariables = Finset.univ.biUnion fun (i : Fin k) => (v i).freeVariables
                    @[simp]
                    theorem LO.FirstOrder.Semiterm.freeVariables_constant {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (f : L.Func 0) (v : Fin 0LO.FirstOrder.Semiterm L ξ n) :
                    (LO.FirstOrder.Semiterm.func f v).freeVariables =
                    @[simp]
                    theorem LO.FirstOrder.Semiterm.freeVariables_empty {L : LO.FirstOrder.Language} {n : } {ο : Type u_6} [IsEmpty ο] {t : LO.FirstOrder.Semiterm L ο n} :
                    t.freeVariables =
                    @[reducible, inline]
                    abbrev LO.FirstOrder.Semiterm.FVar? {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (t : LO.FirstOrder.Semiterm L ξ n) (x : ξ) :
                    Equations
                    • t.FVar? x = (x t.freeVariables)
                    Instances For
                      @[simp]
                      theorem LO.FirstOrder.Semiterm.fvar?_bvar {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (x : Fin n) (z : ξ) :
                      @[simp]
                      theorem LO.FirstOrder.Semiterm.fvar?_fvar {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (x z : ξ) :
                      @[simp]
                      theorem LO.FirstOrder.Semiterm.fvar?_func {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (x : ξ) {k : } (f : L.Func k) (v : Fin kLO.FirstOrder.Semiterm L ξ n) :
                      (LO.FirstOrder.Semiterm.func f v).FVar? x ∃ (i : Fin k), (v i).FVar? x
                      theorem LO.FirstOrder.Semiterm.lMap_func {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (Φ : L₁.Hom L₂) {k : } (f : L₁.Func k) (v : Fin kLO.FirstOrder.Semiterm L₁ ξ n) :
                      @[simp]
                      theorem LO.FirstOrder.Semiterm.lMap_positive {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (Φ : L₁.Hom L₂) (t : LO.FirstOrder.Semiterm L₁ ξ (n + 1)) :
                      (LO.FirstOrder.Semiterm.lMap Φ t).Positive t.Positive
                      @[simp]
                      theorem LO.FirstOrder.Semiterm.freeVariables_lMap {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] (Φ : L₁.Hom L₂) (t : LO.FirstOrder.Semiterm L₁ ξ n) :
                      (LO.FirstOrder.Semiterm.lMap Φ t).freeVariables = t.freeVariables
                      instance LO.FirstOrder.Semiterm.instInhabited_1 {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [L.ConstantInhabited] :
                      Equations
                      theorem LO.FirstOrder.Semiterm.default_def {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [L.ConstantInhabited] :
                      default = LO.FirstOrder.Semiterm.func default ![]