Documentation

Foundation.FirstOrder.Syntax.Classical.Coding

def FFL.FirstOrder.Semiterm.toNat {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] {n : ℕ} :
Semiterm L ξ n → ℕ
Equations
Instances For
    @[irreducible]
    def FFL.FirstOrder.Semiterm.ofNat {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] (n a✝ : ℕ) :
    Option (Semiterm L ξ n)
    Equations
    Instances For
      theorem FFL.FirstOrder.Semiterm.ofNat_toNat {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] {n : ℕ} (t : Semiterm L ξ n) :
      @[instance_reducible]
      instance FFL.FirstOrder.Semiterm.encodable {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] {n : ℕ} :
      Equations
      theorem FFL.FirstOrder.Semiterm.encode_eq_toNat {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] {n : ℕ} (t : Semiterm L ξ n) :
      theorem FFL.FirstOrder.Semiterm.toNat_func {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] {n k : ℕ} (f : L.Func k) (v : Fin k → Semiterm L ξ n) :
      (func f v).toNat = Nat.pair 2 (Nat.pair k (Nat.pair (Encodable.encode f) (Matrix.vecToNat fun (i : Fin k) => (v i).toNat))) + 1
      @[simp]
      @[irreducible]
      def FFL.FirstOrder.Semiformula.ofNat {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] (n a✝ : ℕ) :
      Equations
      Instances For
        theorem FFL.FirstOrder.Semiformula.ofNat_toNat {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n : ℕ} (φ : Semiformula L ξ n) :
        ofNat n φ.toNat = some φ
        @[instance_reducible]
        instance FFL.FirstOrder.Semiformula.encodable {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n : ℕ} :
        Equations
        theorem FFL.FirstOrder.Semiformula.encode_eq_toNat {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n : ℕ} (φ : Semiformula L ξ n) :
        theorem FFL.FirstOrder.Semiformula.encode_rel {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n arity : ℕ} (R : L.Rel arity) (v : Fin arity → Semiterm L ξ n) :
        theorem FFL.FirstOrder.Semiformula.encode_nrel {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n arity : ℕ} (R : L.Rel arity) (v : Fin arity → Semiterm L ξ n) :
        theorem FFL.FirstOrder.Semiformula.encode_verum {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n : ℕ} :
        theorem FFL.FirstOrder.Semiformula.encode_falsum {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n : ℕ} :
        theorem FFL.FirstOrder.Semiformula.encode_and {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n : ℕ} (φ ψ : Semiformula L ξ n) :
        theorem FFL.FirstOrder.Semiformula.encode_or {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n : ℕ} (φ ψ : Semiformula L ξ n) :
        theorem FFL.FirstOrder.Semiformula.encode_all {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n : ℕ} (φ : Semiformula L ξ (n + 1)) :
        theorem FFL.FirstOrder.Semiformula.encode_ex {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n : ℕ} (φ : Semiformula L ξ (n + 1)) :
        @[simp]
        theorem FFL.FirstOrder.Semiformula.encode_emb {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n : ℕ} (σ : Semisentence L n) :
        @[simp]
        theorem FFL.FirstOrder.Semiformula.encode_inj_sentence {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n : ℕ} {σ : Semisentence L n} {φ : Semiformula L ξ n} :
        @[simp]
        theorem FFL.FirstOrder.Semiformula.encode_inj_sentence' {L : Language} [(k : ℕ) → Encodable (L.Func k)] {ξ : Type u_1} [Encodable ξ] [(k : ℕ) → Encodable (L.Rel k)] {n : ℕ} {σ : Semisentence L n} {φ : Semiformula L ξ n} :