Bundled First-Order Structures #
This file bundles types together with their first-order structure.
Main Definitions #
FirstOrder.Language.Theory.ModelTypeis the type of nonempty models of a particular theory.FirstOrder.Language.equivSetoidis the isomorphism equivalence relation on bundled structures.
TODO #
- Define category structures on bundled structures and models.
@[instance_reducible]
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.
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.
Instances For
@[instance_reducible]
The equivalence relation on bundled L.Structures indicating that they are isomorphic.
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.
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.
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] :
@[simp]
theorem FirstOrder.Language.Theory.ModelType.subtheoryModel_struc {L : Language} {T : L.Theory} (M : T.ModelType) {T' : L.Theory} (h : T' ⊆ T) :
@[simp]
theorem FirstOrder.Language.Theory.ModelType.subtheoryModel_Carrier {L : Language} {T : L.Theory} (M : T.ModelType) {T' : L.Theory} (h : T' ⊆ T) :
instance FirstOrder.Language.Theory.ModelType.subtheoryModel_models {L : Language} {T : L.Theory} (M : T.ModelType) {T' : L.Theory} (h : T' ⊆ T) :
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.
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.
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)