Bundled First-Order Structures #
This file bundles types together with their first-order structure.
Main Definitions #
FirstOrder.Language.Theory.ModelType
is the type of nonempty models of a particular theory.FirstOrder.Language.equivSetoid
is the isomorphism equivalence relation on bundled structures.
TODO #
- Define category structures on bundled structures and models.
instance
CategoryTheory.Bundled.structure
{L : FirstOrder.Language}
(M : Bundled L.Structure)
:
L.Structure ↑M
def
Equiv.bundledInduced
(L : FirstOrder.Language)
{M : Type w}
[L.Structure M]
{N : Type w'}
(g : M ≃ N)
:
A type bundled with the structure induced by an equivalence.
Equations
- Equiv.bundledInduced L g = { α := N, str := g.inducedStructure }
Instances For
@[simp]
theorem
Equiv.bundledInduced_str
(L : FirstOrder.Language)
{M : Type w}
[L.Structure M]
{N : Type w'}
(g : M ≃ N)
:
@[simp]
theorem
Equiv.bundledInduced_α
(L : FirstOrder.Language)
{M : Type w}
[L.Structure M]
{N : Type w'}
(g : M ≃ N)
:
def
Equiv.bundledInducedEquiv
(L : FirstOrder.Language)
{M : Type w}
[L.Structure M]
{N : Type w'}
(g : M ≃ N)
:
L.Equiv M ↑(bundledInduced L g)
An equivalence of types as a first-order equivalence to the bundled structure on the codomain.
Equations
Instances For
The equivalence relation on bundled L.Structure
s indicating that they are isomorphic.
Equations
- FirstOrder.Language.equivSetoid = { r := fun (M N : CategoryTheory.Bundled L.Structure) => Nonempty (L.Equiv ↑M ↑N), iseqv := ⋯ }
Equations
Equations
instance
FirstOrder.Language.Theory.ModelType.of_small
{L : Language}
{T : L.Theory}
(M : Type w)
[Nonempty M]
[L.Structure M]
[M ⊨ T]
[h : Small.{w', w} M]
:
Small.{w', w} ↑(of T M)
noncomputable def
FirstOrder.Language.Theory.ModelType.shrink
{L : Language}
{T : L.Theory}
(M : T.ModelType)
[Small.{w', w} ↑M]
:
Shrinks a small model to a particular universe.
Equations
Instances For
Lifts a model to a particular universe.
Instances For
noncomputable def
FirstOrder.Language.Theory.ModelType.defaultExpansion
{L : Language}
{T : L.Theory}
{L' : Language}
{φ : L →ᴸ L'}
(h : φ.Injective)
[(n : ℕ) → (f : L'.Functions n) → Decidable (f ∈ Set.range fun (f : L.Functions n) => φ.onFunction f)]
[(n : ℕ) → (r : L'.Relations n) → Decidable (r ∈ Set.range fun (r : L.Relations n) => φ.onRelation r)]
(M : T.ModelType)
[Inhabited ↑M]
:
When φ
is injective, defaultExpansion
expands a model of T
to a model of φ.onTheory T
arbitrarily.
Equations
Instances For
@[simp]
theorem
FirstOrder.Language.Theory.ModelType.defaultExpansion_Carrier
{L : Language}
{T : L.Theory}
{L' : Language}
{φ : L →ᴸ L'}
(h : φ.Injective)
[(n : ℕ) → (f : L'.Functions n) → Decidable (f ∈ Set.range fun (f : L.Functions n) => φ.onFunction f)]
[(n : ℕ) → (r : L'.Relations n) → Decidable (r ∈ Set.range fun (r : L.Relations n) => φ.onRelation r)]
(M : T.ModelType)
[Inhabited ↑M]
:
@[simp]
theorem
FirstOrder.Language.Theory.ModelType.defaultExpansion_struc
{L : Language}
{T : L.Theory}
{L' : Language}
{φ : L →ᴸ L'}
(h : φ.Injective)
[(n : ℕ) → (f : L'.Functions n) → Decidable (f ∈ Set.range fun (f : L.Functions n) => φ.onFunction f)]
[(n : ℕ) → (r : L'.Relations n) → Decidable (r ∈ Set.range fun (r : L.Relations n) => φ.onRelation r)]
(M : T.ModelType)
[Inhabited ↑M]
:
def
FirstOrder.Language.ElementarilyEquivalent.toModel
{L : Language}
(T : L.Theory)
{M : T.ModelType}
{N : Type u_1}
[LN : L.Structure N]
(h : L.ElementarilyEquivalent (↑M) N)
:
A structure that is elementarily equivalent to a model, bundled as a model.
Equations
Instances For
def
FirstOrder.Language.ElementarySubstructure.toModel
{L : Language}
(T : L.Theory)
{M : T.ModelType}
(S : L.ElementarySubstructure ↑M)
:
An elementary substructure of a bundled model as a bundled model.
Equations
Instances For
instance
FirstOrder.Language.ElementarySubstructure.toModel.instSmall
{L : Language}
(T : L.Theory)
{M : T.ModelType}
(S : L.ElementarySubstructure ↑M)
[h : Small.{w, x} ↥S]
:
Small.{w, x} ↑(toModel T S)