Type Spaces #
This file defines the space of complete types over a first-order theory. (Note that types in model theory are different from types in type theory.)
Main Definitions #
FirstOrder.Language.Theory.CompleteType:T.CompleteType αconsists of complete types over the theoryTwith variablesα.FirstOrder.Language.Theory.typeOfis the type of a given tuple.FirstOrder.Language.Theory.realizedTypes:T.realizedTypes M αis the set of types inT.CompleteType αthat are realized inM- that is, the type of some tuple inM.
Main Results #
FirstOrder.Language.Theory.CompleteType.nonempty_iff: The spaceT.CompleteType αis nonempty exactly whenTis satisfiable.FirstOrder.Language.Theory.CompleteType.exists_modelType_is_realized_in: Every type is realized in some model.
Implementation Notes #
- Complete types are implemented as maximal consistent theories in an expanded language. More frequently they are described as maximal consistent sets of formulas, but this is equivalent.
TODO #
- Connect
T.CompleteType αto sets of formulasL.Formula α.
structure
FirstOrder.Language.Theory.CompleteType
{L : Language}
(T : L.Theory)
(α : Type w)
:
Type (max (max u v) w)
A complete type over a given theory in a certain type of variables is a maximally consistent (with the theory) set of formulas in that type.
- toTheory : (L.withConstants α).Theory
The underlying theory
- subset' : (L.lhomWithConstants α).onTheory T ⊆ ↑self
- isMaximal' : (↑self).IsMaximal
Instances For
@[implicit_reducible]
instance
FirstOrder.Language.Theory.CompleteType.Sentence.instSetLike
{L : Language}
{T : L.Theory}
{α : Type w}
:
SetLike (T.CompleteType α) (L.withConstants α).Sentence
@[implicit_reducible]
instance
FirstOrder.Language.Theory.CompleteType.instPartialOrder
{L : Language}
{T : L.Theory}
{α : Type w}
:
PartialOrder (T.CompleteType α)
theorem
FirstOrder.Language.Theory.CompleteType.isMaximal
{L : Language}
{T : L.Theory}
{α : Type w}
(p : T.CompleteType α)
:
IsMaximal ↑p
theorem
FirstOrder.Language.Theory.CompleteType.subset
{L : Language}
{T : L.Theory}
{α : Type w}
(p : T.CompleteType α)
:
(L.lhomWithConstants α).onTheory T ⊆ ↑p
theorem
FirstOrder.Language.Theory.CompleteType.mem_or_not_mem
{L : Language}
{T : L.Theory}
{α : Type w}
(p : T.CompleteType α)
(φ : (L.withConstants α).Sentence)
:
φ ∈ p ∨ Formula.not φ ∈ p
theorem
FirstOrder.Language.Theory.CompleteType.false_of_mem_of_not_mem
{L : Language}
{T : L.Theory}
(hT : T.IsSatisfiable)
{φ : L.Sentence}
(hφ : φ ∈ T)
(hφ' : BoundedFormula.not φ ∈ T)
:
False
theorem
FirstOrder.Language.Theory.CompleteType.mem_of_models
{L : Language}
{T : L.Theory}
{α : Type w}
(p : T.CompleteType α)
{φ : (L.withConstants α).Sentence}
(h : (L.lhomWithConstants α).onTheory T ⊨ᵇ φ)
:
φ ∈ p
theorem
FirstOrder.Language.Theory.CompleteType.not_mem_iff
{L : Language}
{T : L.Theory}
{α : Type w}
(p : T.CompleteType α)
(φ : (L.withConstants α).Sentence)
:
Formula.not φ ∈ p ↔ φ ∉ p
@[simp]
theorem
FirstOrder.Language.Theory.CompleteType.compl_setOf_mem
{L : Language}
{T : L.Theory}
{α : Type w}
{φ : (L.withConstants α).Sentence}
:
{p : T.CompleteType α | φ ∈ p}ᶜ = {p : T.CompleteType α | Formula.not φ ∈ p}
theorem
FirstOrder.Language.Theory.CompleteType.setOf_subset_eq_empty_iff
{L : Language}
{T : L.Theory}
{α : Type w}
(S : (L.withConstants α).Theory)
:
{p : T.CompleteType α | S ⊆ ↑p} = ∅ ↔ ¬((L.lhomWithConstants α).onTheory T ∪ S).IsSatisfiable
theorem
FirstOrder.Language.Theory.CompleteType.setOf_mem_eq_univ_iff
{L : Language}
{T : L.Theory}
{α : Type w}
(φ : (L.withConstants α).Sentence)
:
{p : T.CompleteType α | φ ∈ p} = Set.univ ↔ (L.lhomWithConstants α).onTheory T ⊨ᵇ φ
theorem
FirstOrder.Language.Theory.CompleteType.setOf_subset_eq_univ_iff
{L : Language}
{T : L.Theory}
{α : Type w}
(S : (L.withConstants α).Theory)
:
{p : T.CompleteType α | S ⊆ ↑p} = Set.univ ↔ ∀ φ ∈ S, (L.lhomWithConstants α).onTheory T ⊨ᵇ φ
theorem
FirstOrder.Language.Theory.CompleteType.nonempty_iff
{L : Language}
{T : L.Theory}
{α : Type w}
:
Nonempty (T.CompleteType α) ↔ T.IsSatisfiable
instance
FirstOrder.Language.Theory.CompleteType.instNonempty
{L : Language}
{α : Type w}
:
Nonempty (∅.CompleteType α)
theorem
FirstOrder.Language.Theory.CompleteType.iInter_setOf_subset
{L : Language}
{T : L.Theory}
{α : Type w}
{ι : Type u_1}
(S : ι → (L.withConstants α).Theory)
:
⋂ (i : ι), {p : T.CompleteType α | S i ⊆ ↑p} = {p : T.CompleteType α | ⋃ (i : ι), S i ⊆ ↑p}
theorem
FirstOrder.Language.Theory.CompleteType.toList_foldr_inf_mem
{L : Language}
{T : L.Theory}
{α : Type w}
{p : T.CompleteType α}
{t : Finset (L.withConstants α).Sentence}
:
List.foldr (fun (x1 x2 : (L.withConstants α).Sentence) => x1 ⊓ x2) ⊤ t.toList ∈ p ↔ ↑t ⊆ ↑p
def
FirstOrder.Language.Theory.typeOf
{L : Language}
(T : L.Theory)
{α : Type w}
{M : Type w'}
[L.Structure M]
[Nonempty M]
[M ⊨ T]
(v : α → M)
:
T.CompleteType α
The set of all formulas true at a tuple in a structure forms a complete type.
Instances For
@[simp]
theorem
FirstOrder.Language.Theory.CompleteType.mem_typeOf
{L : Language}
{T : L.Theory}
{α : Type w}
{M : Type w'}
[L.Structure M]
[Nonempty M]
[M ⊨ T]
{v : α → M}
{φ : (L.withConstants α).Sentence}
:
φ ∈ T.typeOf v ↔ (Formula.equivSentence.symm φ).Realize v
def
FirstOrder.Language.Theory.CompleteType.typesWith
{L : Language}
{T : L.Theory}
{α : Type w}
:
(L.withConstants α).Sentence → Set (T.CompleteType α)
The clopen set of complete types which contain a formula.
Instances For
@[simp]
theorem
FirstOrder.Language.Theory.CompleteType.mem_typesWith_iff
{L : Language}
{T : L.Theory}
{α : Type w}
(φ : (L.withConstants α).Sentence)
(p : T.CompleteType α)
:
p ∈ typesWith φ ↔ φ ∈ p
theorem
FirstOrder.Language.Theory.CompleteType.typesWith_inf
{L : Language}
{T : L.Theory}
{α : Type w}
(φ ψ : (L.withConstants α).Sentence)
:
theorem
FirstOrder.Language.Theory.CompleteType.typesWith_eq_univ_of_mem_onTheory_lhomWithConstants
{L : Language}
{T : L.Theory}
{α : Type w}
{φ : (L.withConstants α).Sentence}
(hφ : φ ∈ (L.lhomWithConstants α).onTheory T)
:
theorem
FirstOrder.Language.Theory.CompleteType.typesWith_not
{L : Language}
{T : L.Theory}
{α : Type w}
(φ : (L.withConstants α).Sentence)
:
typesWith (BoundedFormula.not φ) = (typesWith φ)ᶜ
def
FirstOrder.Language.Theory.realizedTypes
{L : Language}
(T : L.Theory)
(M : Type w')
[L.Structure M]
[Nonempty M]
[M ⊨ T]
(α : Type w)
:
Set (T.CompleteType α)
A complete type p is realized in a particular structure when there is some
tuple v whose type is p.
Instances For
theorem
FirstOrder.Language.Theory.exists_modelType_is_realized_in
{L : Language}
(T : L.Theory)
{α : Type w}
(p : T.CompleteType α)
:
∃ (M : T.ModelType), p ∈ T.realizedTypes (↑M) α