Finite sublanguage #
def
LO.FirstOrder.Language.unsub
(L : Language)
{pf : (k : ℕ) → L.Func k → Prop}
{pr : (k : ℕ) → L.Rel k → Prop}
:
(L.sublanguage pf pr).Hom L
Equations
- L.unsub = { func := fun {k : ℕ} => Subtype.val, rel := fun {k : ℕ} => Subtype.val }
Instances For
def
LO.FirstOrder.Semiterm.symbols
{L : Language}
[(k : ℕ) → DecidableEq (L.Func k)]
{ξ : Type u_1}
{n : ℕ}
:
Equations
- (LO.FirstOrder.Semiterm.bvar a).symbols = ∅
- (LO.FirstOrder.Semiterm.fvar a).symbols = ∅
- (LO.FirstOrder.Semiterm.func f v).symbols = insert ⟨arity, f⟩ (Finset.univ.biUnion fun (i : Fin arity) => (v i).symbols)
Instances For
def
LO.FirstOrder.Semiterm.toSublanguage
{L : Language}
[(k : ℕ) → DecidableEq (L.Func k)]
{ξ : Type u_1}
{n : ℕ}
(pf : (k : ℕ) → L.Func k → Prop)
(pr : (k : ℕ) → L.Rel k → Prop)
(t : Semiterm L ξ n)
:
Equations
- LO.FirstOrder.Semiterm.toSublanguage pf pr (LO.FirstOrder.Semiterm.bvar x_2) x_3 = LO.FirstOrder.Semiterm.bvar x_2
- LO.FirstOrder.Semiterm.toSublanguage pf pr (LO.FirstOrder.Semiterm.fvar x_2) x_3 = LO.FirstOrder.Semiterm.fvar x_2
- LO.FirstOrder.Semiterm.toSublanguage pf pr (LO.FirstOrder.Semiterm.func f v) h = LO.FirstOrder.Semiterm.func ⟨f, ⋯⟩ fun (i : Fin k) => LO.FirstOrder.Semiterm.toSublanguage pf pr (v i) ⋯
Instances For
noncomputable def
LO.FirstOrder.Semiformula.functionSymbols
{L : Language}
[L.DecidableEq]
{ξ : Type u_1}
{n : ℕ}
:
Semiformula L ξ n → Finset ((k : ℕ) × L.Func k)
Equations
- (LO.FirstOrder.Semiformula.rel a v).functionSymbols = Finset.univ.biUnion fun (i : Fin arity) => (v i).symbols
- (LO.FirstOrder.Semiformula.nrel a v).functionSymbols = Finset.univ.biUnion fun (i : Fin arity) => (v i).symbols
- LO.FirstOrder.Semiformula.verum.functionSymbols = ∅
- LO.FirstOrder.Semiformula.falsum.functionSymbols = ∅
- (φ.and ψ).functionSymbols = φ.functionSymbols ∪ ψ.functionSymbols
- (φ.or ψ).functionSymbols = φ.functionSymbols ∪ ψ.functionSymbols
- φ.all.functionSymbols = φ.functionSymbols
- φ.exs.functionSymbols = φ.functionSymbols
Instances For
noncomputable def
LO.FirstOrder.Semiformula.relationSymbols
{L : Language}
[L.DecidableEq]
{ξ : Type u_1}
{n : ℕ}
:
Semiformula L ξ n → Finset ((k : ℕ) × L.Rel k)
Equations
- (LO.FirstOrder.Semiformula.rel a v).relationSymbols = {⟨arity, a⟩}
- (LO.FirstOrder.Semiformula.nrel a v).relationSymbols = {⟨arity, a⟩}
- LO.FirstOrder.Semiformula.verum.relationSymbols = ∅
- LO.FirstOrder.Semiformula.falsum.relationSymbols = ∅
- (φ.and ψ).relationSymbols = φ.relationSymbols ∪ ψ.relationSymbols
- (φ.or ψ).relationSymbols = φ.relationSymbols ∪ ψ.relationSymbols
- φ.all.relationSymbols = φ.relationSymbols
- φ.exs.relationSymbols = φ.relationSymbols
Instances For
theorem
LO.FirstOrder.Semiformula.functionSymbols_rel_ss
{L : Language}
[L.DecidableEq]
{ξ : Type u_1}
{n k : ℕ}
(r : L.Rel k)
(v : Fin k → Semiterm L ξ n)
(i : Fin k)
:
(v i).symbols ⊆ (rel r v).functionSymbols
def
LO.FirstOrder.Semiformula.toSublanguage
{L : Language}
[L.DecidableEq]
{ξ : Type u_1}
(pf : (k : ℕ) → L.Func k → Prop)
(pr : (k : ℕ) → L.Rel k → Prop)
{n : ℕ}
(φ : Semiformula L ξ n)
:
(∀ (k : ℕ) (f : L.Func k), ⟨k, f⟩ ∈ φ.functionSymbols → pf k f) →
(∀ (k : ℕ) (r : L.Rel k), ⟨k, r⟩ ∈ φ.relationSymbols → pr k r) → Semiformula (L.sublanguage pf pr) ξ n
Equations
- One or more equations did not get rendered due to their size.
- LO.FirstOrder.Semiformula.toSublanguage pf pr LO.FirstOrder.Semiformula.verum x_3 x_4 = ⊤
- LO.FirstOrder.Semiformula.toSublanguage pf pr LO.FirstOrder.Semiformula.falsum x_3 x_4 = ⊥
- LO.FirstOrder.Semiformula.toSublanguage pf pr (φ.and ψ) hf hr = LO.FirstOrder.Semiformula.toSublanguage pf pr φ ⋯ ⋯ ⋏ LO.FirstOrder.Semiformula.toSublanguage pf pr ψ ⋯ ⋯
- LO.FirstOrder.Semiformula.toSublanguage pf pr (φ.or ψ) hf hr = LO.FirstOrder.Semiformula.toSublanguage pf pr φ ⋯ ⋯ ⋎ LO.FirstOrder.Semiformula.toSublanguage pf pr ψ ⋯ ⋯
- LO.FirstOrder.Semiformula.toSublanguage pf pr φ.all hf hr = ∀¹ LO.FirstOrder.Semiformula.toSublanguage pf pr φ hf hr
- LO.FirstOrder.Semiformula.toSublanguage pf pr φ.exs hf hr = ∃¹ LO.FirstOrder.Semiformula.toSublanguage pf pr φ hf hr
Instances For
@[simp]
theorem
LO.FirstOrder.Semiformula.lMap_toSublanguage
{L : Language}
[L.DecidableEq]
{ξ : Type u_1}
(pf : (k : ℕ) → L.Func k → Prop)
(pr : (k : ℕ) → L.Rel k → Prop)
{n : ℕ}
(φ : Semiformula L ξ n)
(hf : ∀ (k : ℕ) (f : L.Func k), ⟨k, f⟩ ∈ φ.functionSymbols → pf k f)
(hr : ∀ (k : ℕ) (r : L.Rel k), ⟨k, r⟩ ∈ φ.relationSymbols → pr k r)
:
@[reducible, inline]
abbrev
LO.FirstOrder.Semiformula.sublanguage
{ξ : Type u_1}
{n : ℕ}
{L : Language}
[L.DecidableEq]
(φ : Semiformula L ξ n)
:
A language consists of the function and relation symbols appearing in a given finite set of formulas.
Equations
- φ.sublanguage = L.sublanguage (fun (k : ℕ) (f : L.Func k) => ⟨k, f⟩ ∈ φ.functionSymbols) fun (k : ℕ) (r : L.Rel k) => ⟨k, r⟩ ∈ φ.relationSymbols
Instances For
@[implicit_reducible]
noncomputable instance
LO.FirstOrder.Semiformula.instFintypeFuncSublanguage
{ξ : Type u_1}
{n : ℕ}
{L : Language}
[L.DecidableEq]
(φ : Semiformula L ξ n)
(k : ℕ)
:
Fintype (φ.sublanguage.Func k)
Equations
- φ.instFintypeFuncSublanguage k = Fintype.subtype (φ.functionSymbols.preimage (fun (x : L.Func k) => ⟨k, x⟩) ⋯) ⋯
@[implicit_reducible]
noncomputable instance
LO.FirstOrder.Semiformula.instFintypeRelSublanguage
{ξ : Type u_1}
{n : ℕ}
{L : Language}
[L.DecidableEq]
(φ : Semiformula L ξ n)
(k : ℕ)
:
Fintype (φ.sublanguage.Rel k)
Equations
- φ.instFintypeRelSublanguage k = Fintype.subtype (φ.relationSymbols.preimage (fun (x : L.Rel k) => ⟨k, x⟩) ⋯) ⋯
@[implicit_reducible]
noncomputable instance
LO.FirstOrder.Semiformula.instEncodableSublanguage
{ξ : Type u_1}
{n : ℕ}
{L : Language}
[L.DecidableEq]
(φ : Semiformula L ξ n)
:
Equations
- φ.instEncodableSublanguage = { func := fun (x : ℕ) => Fintype.toEncodable (φ.sublanguage.Func x), rel := fun (x : ℕ) => Fintype.toEncodable (φ.sublanguage.Rel x) }
def
LO.FirstOrder.Semiformula.toSubLanguageSelf
{ξ : Type u_1}
{n : ℕ}
{L : Language}
[L.DecidableEq]
(φ : Semiformula L ξ n)
:
Semiformula φ.sublanguage ξ n
Equations
- φ.toSubLanguageSelf = LO.FirstOrder.Semiformula.toSublanguage (fun (k : ℕ) (f : L.Func k) => ⟨k, f⟩ ∈ φ.functionSymbols) (fun (k : ℕ) (r : L.Rel k) => ⟨k, r⟩ ∈ φ.relationSymbols) φ ⋯ ⋯
Instances For
@[simp]
theorem
LO.FirstOrder.Semiformula.lMap_toSubLanguage
{ξ : Type u_1}
{n : ℕ}
{L : Language}
[L.DecidableEq]
{φ : Semiformula L ξ n}
:
Structure induced by an injective language homomorphism #
- func (k : ℕ) : Function.Injective Φ.func
- rel (k : ℕ) : Function.Injective Φ.rel
Instances
theorem
LO.FirstOrder.satisfiable_lMap
{L₁ L₂ : Language}
(Φ : L₁.Hom L₂)
[Φ.Injective]
{T : Theory L₁}
(s : Satisfiable T)
:
Satisfiable (Theory.lMap Φ T)