Equations
- SecondOrder.Language.interpTy M SecondOrder.Ty.var = M
- SecondOrder.Language.interpTy M (SecondOrder.Ty.func n) = (Vec M n → M)
- SecondOrder.Language.interpTy M (SecondOrder.Ty.rel n) = (Vec M n → Prop)
Instances For
Equations
- SecondOrder.Language.Assignment M l = (⦃T : SecondOrder.Ty⦄ → l.Fin T → SecondOrder.Language.interpTy M T)
Instances For
Equations
- SecondOrder.Language.Assignment.«term[]ₐ» = Lean.ParserDescr.node `SecondOrder.Language.Assignment.«term[]ₐ» 1024 (Lean.ParserDescr.symbol "[]ₐ")
Instances For
def
SecondOrder.Language.Assignment.cons
{M : Type u_1}
{T : Ty}
{l : List Ty}
(u : interpTy M T)
(ρ : Assignment M l)
:
Assignment M (T :: l)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
SecondOrder.Language.Assignment.cons_zero
{M✝ : Type u_1}
{a✝ : Ty}
{u : interpTy M✝ a✝}
{l✝ : List Ty}
{ρ : Assignment M✝ l✝}
:
def
SecondOrder.Language.interp
{L : Language}
{l : List Ty}
(M : Type u)
[L.HasStructure M]
(ρ : Assignment M l)
:
L.Term l → M
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
SecondOrder.Language.interp_var
{L : Language}
{M : Type u}
[L.HasStructure M]
{l : List Ty}
{ρ : Assignment M l}
{x : l.Fin Ty.var}
:
def
SecondOrder.Language.satisfy
{L : Language}
(M : Type u)
[L.HasStructure M]
{l : List Ty}
:
L.Formula l → Assignment M l → Prop
Equations
- (M ⊨[x✝] r ⬝ʳ v) = SecondOrder.Language.HasStructure.interpRel r fun (i : Fin n) => ⟦ v i ⟧ₜ M, x✝
- (M ⊨[x✝] r ⬝ʳᵛ v) = x✝ r fun (i : Fin n) => ⟦ v i ⟧ₜ M, x✝
- (M ⊨[x✝] t₁ ≐ t₂) = (⟦ t₁ ⟧ₜ M, x✝ = ⟦ t₂ ⟧ₜ M, x✝)
- (M ⊨[x✝] SecondOrder.Language.Formula.false) = False
- (M ⊨[x✝] p.imp q) = (M ⊨[x✝] p → M ⊨[x✝] q)
- (M ⊨[x✝] ∀' p) = ∀ (u : M), M ⊨[u ∷ₐ x✝] p
- (M ⊨[x✝] ∀ᶠ[n]p) = ∀ (f : Vec M n → M), M ⊨[f ∷ₐ x✝] p
- (M ⊨[x✝] ∀ʳ[n]p) = ∀ (r : Vec M n → Prop), M ⊨[r ∷ₐ x✝] p
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
SecondOrder.Language.satisfy_false
{L : Language}
{M : Type u}
[L.HasStructure M]
{l : List Ty}
{ρ : Assignment M l}
:
@[simp]
theorem
SecondOrder.Language.satisfy_true
{L : Language}
{M : Type u}
[L.HasStructure M]
{l : List Ty}
{ρ : Assignment M l}
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance
SecondOrder.Language.Structure.instHasStructureDom
{L : Language}
{M : L.Structure}
:
L.HasStructure M.Dom
Equations
- SecondOrder.Language.Structure.instHasStructureDom = { interpFunc := fun {n : ℕ} => M.interpFunc, interpRel := fun {n : ℕ} => M.interpRel }
@[reducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
structure
SecondOrder.Language.Structure.Embedding
{L : Language}
(M : L.Structure)
(N : L.Structure)
extends M.Dom ↪ N.Dom :
Type (max u_1 u_2)
- on_func {n : ℕ} (f : L.Func n) (v : Vec M.Dom n) : self.toEmbedding (HasStructure.interpFunc f v) = HasStructure.interpFunc f (⇑self.toEmbedding ∘ v)
- on_rel {n : ℕ} (r : L.Rel n) (v : Vec M.Dom n) : HasStructure.interpRel r v ↔ HasStructure.interpRel r (⇑self.toEmbedding ∘ v)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- SecondOrder.Language.Structure.Embedding.refl = { toEmbedding := Function.Embedding.refl M.Dom, on_func := ⋯, on_rel := ⋯ }
Instances For
structure
SecondOrder.Language.Structure.Isomorphism
{L : Language}
(M : L.Structure)
(N : L.Structure)
extends M.Dom ≃ N.Dom :
Type (max u_1 u_2)
- left_inv : Function.LeftInverse self.invFun self.toFun
- right_inv : Function.RightInverse self.invFun self.toFun
- on_func {n : ℕ} (f : L.Func n) (v : Vec M.Dom n) : self.toEquiv (HasStructure.interpFunc f v) = HasStructure.interpFunc f (⇑self.toEquiv ∘ v)
- on_rel {n : ℕ} (r : L.Rel n) (v : Vec M.Dom n) : HasStructure.interpRel r v ↔ HasStructure.interpRel r (⇑self.toEquiv ∘ v)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- SecondOrder.Language.Structure.Isomorphism.refl = { toEquiv := Equiv.refl M.Dom, on_func := ⋯, on_rel := ⋯ }
Instances For
def
SecondOrder.Language.Structure.Isomorphism.toEmbedding
{L : Language}
{M : L.Structure}
{N : L.Structure}
(i : M ≃ᴹ N)
:
Equations
- i.toEmbedding = { toEmbedding := i.toEmbedding, on_func := ⋯, on_rel := ⋯ }
Instances For
def
SecondOrder.Language.Structure.Isomorphism.onAssignment
{L : Language}
{l : List Ty}
{M : L.Structure}
{N : L.Structure}
(i : M ≃ᴹ N)
:
Assignment M.Dom l → Assignment N.Dom l
Equations
- i.onAssignment ρ x = i.onTy (ρ x)
Instances For
class
SecondOrder.Language.Theory.IsModel
{L : Language}
(T : L.Theory)
(M : Type u)
[L.HasStructure M]
:
Instances
structure
SecondOrder.Language.Theory.Model
{L : Language}
(T : L.Theory)
extends L.Structure :
Type (u_1 + 1)
Instances For
Equations
- SecondOrder.Language.Theory.Model.instCoeOutStructure = { coe := fun (x : T.Model) => x.toStructure }
@[reducible]
def
SecondOrder.Language.Theory.Model.of
{L : Language}
{T : L.Theory}
(M : Type u)
[L.HasStructure M]
[T.IsModel M]
:
T.Model
Equations
- SecondOrder.Language.Theory.Model.of M = { toStructure := SecondOrder.Language.Structure.of M, satisfy_theory := ⋯ }
Instances For
Equations
- T.Categorical = ∀ (M : T.Model) (N : T.Model), Nonempty (M.toStructure ≃ᴹ N.toStructure)