@[irreducible]
def
FirstOrder.Language.Term.decodeVec
{L : Language}
[(n : ℕ) → Encodable (L.Func n)]
(n k m : ℕ)
:
Equations
- FirstOrder.Language.Term.decodeVec n k 0 = if k = 0 then some []ᵥ else none
- FirstOrder.Language.Term.decodeVec n k m.succ = do let t ← FirstOrder.Language.Term.decode n (Nat.unpair k).1 let v ← FirstOrder.Language.Term.decodeVec n (Nat.unpair k).2 m some (t ∷ᵥ v)
Instances For
instance
FirstOrder.Language.instEncodableTerm
{L : Language}
[(n : ℕ) → Encodable (L.Func n)]
{n : ℕ}
:
Equations
- FirstOrder.Language.instEncodableTerm = { encode := FirstOrder.Language.Term.encode, decode := FirstOrder.Language.Term.decode n, encodek := ⋯ }
theorem
FirstOrder.Language.Term.encode_subst_le_subst
{L : Language}
[(n : ℕ) → Encodable (L.Func n)]
{n m✝ : ℕ}
{σ₁ : L.Subst n m✝}
{m✝¹ : ℕ}
{σ₂ : L.Subst n m✝¹}
{t : L.Term n}
:
(∀ (x : Fin n), Encodable.encode (σ₁ x) ≤ Encodable.encode (σ₂ x)) → Encodable.encode t[σ₁]ₜ ≤ Encodable.encode t[σ₂]ₜ
instance
FirstOrder.Language.instEncodableFormula
{L : Language}
[(n : ℕ) → Encodable (L.Func n)]
[(n : ℕ) → Encodable (L.Rel n)]
{n : ℕ}
:
Equations
- FirstOrder.Language.instEncodableFormula = { encode := FirstOrder.Language.Formula.encode, decode := FirstOrder.Language.Formula.decode n, encodek := ⋯ }
- hasConstEncodeZero : ∃ (r : L.Const), Encodable.encode r = 0