Documentation

Mathlib.ModelTheory.DirectLimit

Direct Limits of First-Order Structures #

This file constructs the direct limit of a directed system of first-order embeddings.

Main Definitions #

theorem FirstOrder.Language.DirectedSystem.map_self {ι : Type u_1} [Preorder ι] {F : ιType u_4} {T : i j : ι⦄ → i jSort u_8} (f : (i j : ι) → (h : i j) → T h) [i j : ι⦄ → (h : i j) → FunLike (T h) (F i) (F j)] [DirectedSystem F fun (x1 x2 : ι) (x3 : x1 x2) => (f x1 x2 x3)] i : ι (x : F i) :
(f i i ) x = x

Alias of DirectedSystem.map_self'.


A copy of DirectedSystem.map_self specialized to FunLike, as otherwise the fun i j h ↦ f i j h can confuse the simplifier.

theorem FirstOrder.Language.DirectedSystem.map_map {ι : Type u_1} [Preorder ι] {F : ιType u_4} {T : i j : ι⦄ → i jSort u_8} (f : (i j : ι) → (h : i j) → T h) [i j : ι⦄ → (h : i j) → FunLike (T h) (F i) (F j)] [DirectedSystem F fun (x1 x2 : ι) (x3 : x1 x2) => (f x1 x2 x3)] i j k : ι (hij : i j) (hjk : j k) (x : F i) :
(f j k hjk) ((f i j hij) x) = (f i k ) x

Alias of DirectedSystem.map_map'.


A copy of DirectedSystem.map_map specialized to FunLike, as otherwise the fun i j h ↦ f i j h can confuse the simplifier.

def FirstOrder.Language.DirectedSystem.natLERec {L : Language} {G' : Type w} [(i : ) → L.Structure (G' i)] (f' : (n : ) → L.Embedding (G' n) (G' (n + 1))) (m n : ) (h : m n) :
L.Embedding (G' m) (G' n)

Given a chain of embeddings of structures indexed by , defines a DirectedSystem by composing them.

Equations
@[simp]
theorem FirstOrder.Language.DirectedSystem.coe_natLERec {L : Language} {G' : Type w} [(i : ) → L.Structure (G' i)] (f' : (n : ) → L.Embedding (G' n) (G' (n + 1))) (m n : ) (h : m n) :
(natLERec f' m n h) = fun (a : G' m) => Nat.leRecOn h (fun (k : ) => (f' k)) a
instance FirstOrder.Language.DirectedSystem.natLERec.directedSystem {L : Language} {G' : Type w} [(i : ) → L.Structure (G' i)] (f' : (n : ) → L.Embedding (G' n) (G' (n + 1))) :
DirectedSystem G' fun (i j : ) (h : i j) => (natLERec f' i j h)
@[reducible, inline]
abbrev FirstOrder.Language.Structure.Sigma {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) :
Type (max v w)

Alias for Σ i, G i.

Instead of Σ i, G i, we use the alias Language.Structure.Sigma which depends on f. This way, Lean can infer what L and f are in the Setoid instance. Otherwise we have a "cannot find synthesization order" error. See also the discussion at https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/local.20instance.20cannot.20find.20synthesization.20order.20in.20porting

Equations
@[reducible, inline]
abbrev FirstOrder.Language.Structure.Sigma.mk {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) (i : ι) (x : G i) :

Constructor for FirstOrder.Language.Structure.Sigma alias.

Equations
def FirstOrder.Language.DirectLimit.unify {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) {α : Type u_1} (x : αStructure.Sigma f) (i : ι) (h : i upperBounds (Set.range (Sigma.fst x))) (a : α) :
G i

Raises a family of elements in the Σ-type to the same level along the embeddings.

Equations
@[simp]
theorem FirstOrder.Language.DirectLimit.unify_sigma_mk_self {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] {α : Type u_1} {i : ι} {x : αG i} :
unify f (fun (a : α) => Structure.Sigma.mk f i (x a)) i = x
theorem FirstOrder.Language.DirectLimit.comp_unify {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] {α : Type u_1} {x : αStructure.Sigma f} {i j : ι} (ij : i j) (h : i upperBounds (Set.range (Sigma.fst x))) :
(f i j ij) unify f x i h = unify f x j
def FirstOrder.Language.DirectLimit.setoid {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [IsDirected ι fun (x1 x2 : ι) => x1 x2] :

The directed limit glues together the structures along the embeddings.

Equations
  • One or more equations did not get rendered due to their size.
noncomputable def FirstOrder.Language.DirectLimit.sigmaStructure {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [Nonempty ι] :

The structure on the Σ-type which becomes the structure on the direct limit after quotienting.

Equations
  • One or more equations did not get rendered due to their size.
def FirstOrder.Language.DirectLimit {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [IsDirected ι fun (x1 x2 : ι) => x1 x2] :
Type (max v w)

The direct limit of a directed system is the structures glued together along the embeddings.

Equations
instance FirstOrder.Language.instInhabitedDirectLimitOfDefault {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [IsDirected ι fun (x1 x2 : ι) => x1 x2] [Inhabited ι] [Inhabited (G default)] :
Equations
theorem FirstOrder.Language.DirectLimit.equiv_iff {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] {x y : Structure.Sigma f} {i : ι} (hx : x.fst i) (hy : y.fst i) :
x y (f x.fst i hx) x.snd = (f y.fst i hy) y.snd
theorem FirstOrder.Language.DirectLimit.funMap_unify_equiv {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] {n : } (F : L.Functions n) (x : Fin nStructure.Sigma f) (i j : ι) (hi : i upperBounds (Set.range (Sigma.fst x))) (hj : j upperBounds (Set.range (Sigma.fst x))) :
theorem FirstOrder.Language.DirectLimit.relMap_unify_equiv {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] {n : } (R : L.Relations n) (x : Fin nStructure.Sigma f) (i j : ι) (hi : i upperBounds (Set.range (Sigma.fst x))) (hj : j upperBounds (Set.range (Sigma.fst x))) :
Structure.RelMap R (unify f x i hi) = Structure.RelMap R (unify f x j hj)
theorem FirstOrder.Language.DirectLimit.exists_unify_eq {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {α : Type u_1} [Finite α] {x y : αStructure.Sigma f} (xy : x y) :
∃ (i : ι) (hx : i upperBounds (Set.range (Sigma.fst x))) (hy : i upperBounds (Set.range (Sigma.fst y))), unify f x i hx = unify f y i hy
theorem FirstOrder.Language.DirectLimit.funMap_equiv_unify {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {n : } (F : L.Functions n) (x : Fin nStructure.Sigma f) (i : ι) (hi : i upperBounds (Set.range (Sigma.fst x))) :
theorem FirstOrder.Language.DirectLimit.relMap_equiv_unify {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {n : } (R : L.Relations n) (x : Fin nStructure.Sigma f) (i : ι) (hi : i upperBounds (Set.range (Sigma.fst x))) :
noncomputable instance FirstOrder.Language.DirectLimit.prestructure {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] :

The direct limit setoid respects the structure sigmaStructure, so quotienting by it gives rise to a valid structure.

Equations
noncomputable instance FirstOrder.Language.DirectLimit.instStructureDirectLimit {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] :

The L.Structure on a direct limit of L.Structures.

Equations
@[simp]
theorem FirstOrder.Language.DirectLimit.funMap_quotient_mk'_sigma_mk' {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {n : } {F : L.Functions n} {i : ι} {x : Fin nG i} :
@[simp]
theorem FirstOrder.Language.DirectLimit.relMap_quotient_mk'_sigma_mk' {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {n : } {R : L.Relations n} {i : ι} {x : Fin nG i} :
theorem FirstOrder.Language.DirectLimit.exists_quotient_mk'_sigma_mk'_eq {L : Language} {ι : Type v} [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {α : Type u_1} [Finite α] (x : αDirectLimit G f) :
∃ (i : ι) (y : αG i), x = fun (a : α) => Structure.Sigma.mk f i (y a)
noncomputable def FirstOrder.Language.DirectLimit.of (L : Language) (ι : Type v) [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] (i : ι) :
L.Embedding (G i) (DirectLimit G f)

The canonical map from a component to the direct limit.

Equations
@[simp]
theorem FirstOrder.Language.DirectLimit.of_apply {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i jL.Embedding (G i) (G j)} [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {i : ι} {x : G i} :
(of L ι G f i) x = Structure.Sigma.mk f i x
theorem FirstOrder.Language.DirectLimit.of_f {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i jL.Embedding (G i) (G j)} [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {i j : ι} {hij : i j} {x : G i} :
(of L ι G f j) ((f i j hij) x) = (of L ι G f i) x
theorem FirstOrder.Language.DirectLimit.exists_of {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i jL.Embedding (G i) (G j)} [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] (z : DirectLimit G f) :
∃ (i : ι) (x : G i), (of L ι G f i) x = z

Every element of the direct limit corresponds to some element in some component of the directed system.

theorem FirstOrder.Language.DirectLimit.inductionOn {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i jL.Embedding (G i) (G j)} [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {C : DirectLimit G fProp} (z : DirectLimit G f) (ih : ∀ (i : ι) (x : G i), C ((of L ι G f i) x)) :
C z
theorem FirstOrder.Language.DirectLimit.iSup_range_of_eq_top {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i jL.Embedding (G i) (G j)} [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] :
⨆ (i : ι), (of L ι G f i).toHom.range =
theorem FirstOrder.Language.DirectLimit.exists_fg_substructure_in_Sigma {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i jL.Embedding (G i) (G j)} [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] (S : L.Substructure (DirectLimit G f)) (S_fg : S.FG) :
∃ (i : ι) (T : L.Substructure (G i)), Substructure.map (of L ι G f i).toHom T = S

Every finitely generated substructure of the direct limit corresponds to some substructure in some component of the directed system.

noncomputable def FirstOrder.Language.DirectLimit.lift (L : Language) (ι : Type v) [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {P : Type u₁} [L.Structure P] (g : (i : ι) → L.Embedding (G i) P) (Hg : ∀ (i j : ι) (hij : i j) (x : G i), (g j) ((f i j hij) x) = (g i) x) :

The universal property of the direct limit: maps from the components to another module that respect the directed system structure (i.e. make some diagram commute) give rise to a unique map out of the direct limit.

Equations
@[simp]
theorem FirstOrder.Language.DirectLimit.lift_quotient_mk'_sigma_mk' {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i jL.Embedding (G i) (G j)} [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {P : Type u₁} [L.Structure P] (g : (i : ι) → L.Embedding (G i) P) (Hg : ∀ (i j : ι) (hij : i j) (x : G i), (g j) ((f i j hij) x) = (g i) x) {i : ι} (x : G i) :
(lift L ι G f g Hg) Structure.Sigma.mk f i x = (g i) x
theorem FirstOrder.Language.DirectLimit.lift_of {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i jL.Embedding (G i) (G j)} [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {P : Type u₁} [L.Structure P] (g : (i : ι) → L.Embedding (G i) P) (Hg : ∀ (i j : ι) (hij : i j) (x : G i), (g j) ((f i j hij) x) = (g i) x) {i : ι} (x : G i) :
(lift L ι G f g Hg) ((of L ι G f i) x) = (g i) x
theorem FirstOrder.Language.DirectLimit.lift_unique {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i jL.Embedding (G i) (G j)} [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {P : Type u₁} [L.Structure P] (F : L.Embedding (DirectLimit G f) P) (x : DirectLimit G f) :
F x = (lift L ι G f (fun (i : ι) => F.comp (of L ι G f i)) ) x
theorem FirstOrder.Language.DirectLimit.range_lift {L : Language} {ι : Type v} [Preorder ι] {G : ιType w} [(i : ι) → L.Structure (G i)] {f : (i j : ι) → i jL.Embedding (G i) (G j)} [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] {P : Type u₁} [L.Structure P] (g : (i : ι) → L.Embedding (G i) P) (Hg : ∀ (i j : ι) (hij : i j) (x : G i), (g j) ((f i j hij) x) = (g i) x) :
(lift L ι G f g Hg).toHom.range = ⨆ (i : ι), (g i).toHom.range
noncomputable def FirstOrder.Language.DirectLimit.equiv_lift (L : Language) (ι : Type v) [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] (G' : ιType w') [(i : ι) → L.Structure (G' i)] (f' : (i j : ι) → i jL.Embedding (G' i) (G' j)) (g : (i : ι) → L.Equiv (G i) (G' i)) [DirectedSystem G' fun (i j : ι) (h : i j) => (f' i j h)] (H_commuting : ∀ (i j : ι) (hij : i j) (x : G i), (g j) ((f i j hij) x) = (f' i j hij) ((g i) x)) :
L.Equiv (DirectLimit G f) (DirectLimit G' f')

The isomorphism between limits of isomorphic systems.

Equations
  • One or more equations did not get rendered due to their size.
theorem FirstOrder.Language.DirectLimit.equiv_lift_of (L : Language) (ι : Type v) [Preorder ι] (G : ιType w) [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [IsDirected ι fun (x1 x2 : ι) => x1 x2] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] [Nonempty ι] (G' : ιType w') [(i : ι) → L.Structure (G' i)] (f' : (i j : ι) → i jL.Embedding (G' i) (G' j)) (g : (i : ι) → L.Equiv (G i) (G' i)) [DirectedSystem G' fun (i j : ι) (h : i j) => (f' i j h)] (H_commuting : ∀ (i j : ι) (hij : i j) (x : G i), (g j) ((f i j hij) x) = (f' i j hij) ((g i) x)) {i : ι} (x : G i) :
(equiv_lift L ι G f G' f' g H_commuting) ((of L ι G f i) x) = (of L ι G' f' i) ((g i) x)
theorem FirstOrder.Language.DirectLimit.cg {L : Language} {ι : Type u_1} [Countable ι] [Preorder ι] [IsDirected ι fun (x1 x2 : ι) => x1 x2] [Nonempty ι] {G : ιType w} [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) (h : ∀ (i : ι), Structure.CG L (G i)) [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] :

The direct limit of countably many countably generated structures is countably generated.

instance FirstOrder.Language.DirectLimit.cg' {L : Language} {ι : Type u_1} [Countable ι] [Preorder ι] [IsDirected ι fun (x1 x2 : ι) => x1 x2] [Nonempty ι] {G : ιType w} [(i : ι) → L.Structure (G i)] (f : (i j : ι) → i jL.Embedding (G i) (G j)) [h : ∀ (i : ι), Structure.CG L (G i)] [DirectedSystem G fun (i j : ι) (h : i j) => (f i j h)] :
instance FirstOrder.Language.instDirectedSystemSubtypeMemSubstructureCoeOrderHomEmbeddingInclusion {L : Language} {ι : Type v} [Preorder ι] {M : Type u_1} [L.Structure M] (S : ι →o L.Substructure M) :
DirectedSystem (fun (i : ι) => (S i)) fun (x x_1 : ι) (h : x x_1) => (Substructure.inclusion )
noncomputable def FirstOrder.Language.DirectLimit.liftInclusion {L : Language} {ι : Type v} [Preorder ι] [Nonempty ι] [IsDirected ι fun (x1 x2 : ι) => x1 x2] {M : Type u_1} [L.Structure M] (S : ι →o L.Substructure M) :
L.Embedding (DirectLimit (fun (i : ι) => (S i)) fun (x x_1 : ι) (h : x x_1) => Substructure.inclusion ) M

The map from a direct limit of a system of substructures of M into M.

Equations
  • One or more equations did not get rendered due to their size.
theorem FirstOrder.Language.DirectLimit.liftInclusion_of {L : Language} {ι : Type v} [Preorder ι] [Nonempty ι] [IsDirected ι fun (x1 x2 : ι) => x1 x2] {M : Type u_1} [L.Structure M] (S : ι →o L.Substructure M) {i : ι} (x : (S i)) :
(liftInclusion S) ((of L ι (fun (x : ι) => (S x)) (fun (x x_1 : ι) (h : x x_1) => Substructure.inclusion ) i) x) = (S i).subtype x
theorem FirstOrder.Language.DirectLimit.rangeLiftInclusion {L : Language} {ι : Type v} [Preorder ι] [Nonempty ι] [IsDirected ι fun (x1 x2 : ι) => x1 x2] {M : Type u_1} [L.Structure M] (S : ι →o L.Substructure M) :
(liftInclusion S).toHom.range = ⨆ (i : ι), S i
noncomputable def FirstOrder.Language.DirectLimit.Equiv_iSup {L : Language} {ι : Type v} [Preorder ι] [Nonempty ι] [IsDirected ι fun (x1 x2 : ι) => x1 x2] {M : Type u_1} [L.Structure M] (S : ι →o L.Substructure M) :
L.Equiv (DirectLimit (fun (i : ι) => (S i)) fun (x x_1 : ι) (h : x x_1) => Substructure.inclusion ) (iSup S)

The isomorphism between a direct limit of a system of substructures and their union.

Equations
  • One or more equations did not get rendered due to their size.
theorem FirstOrder.Language.DirectLimit.Equiv_isup_of_apply {L : Language} {ι : Type v} [Preorder ι] [Nonempty ι] [IsDirected ι fun (x1 x2 : ι) => x1 x2] {M : Type u_1} [L.Structure M] (S : ι →o L.Substructure M) {i : ι} (x : (S i)) :
(Equiv_iSup S) ((of L ι (fun (x : ι) => (S x)) (fun (x x_1 : ι) (h : x x_1) => Substructure.inclusion ) i) x) = (Substructure.inclusion ) x
theorem FirstOrder.Language.DirectLimit.Equiv_isup_symm_inclusion_apply {L : Language} {ι : Type v} [Preorder ι] [Nonempty ι] [IsDirected ι fun (x1 x2 : ι) => x1 x2] {M : Type u_1} [L.Structure M] (S : ι →o L.Substructure M) {i : ι} (x : (S i)) :
(Equiv_iSup S).symm ((Substructure.inclusion ) x) = (of L ι (fun (x : ι) => (S x)) (fun (x x_1 : ι) (h : x x_1) => Substructure.inclusion ) i) x
@[simp]
theorem FirstOrder.Language.DirectLimit.Equiv_isup_symm_inclusion {L : Language} {ι : Type v} [Preorder ι] [Nonempty ι] [IsDirected ι fun (x1 x2 : ι) => x1 x2] {M : Type u_1} [L.Structure M] (S : ι →o L.Substructure M) (i : ι) :
(Equiv_iSup S).symm.toEmbedding.comp (Substructure.inclusion ) = of L ι (fun (x : ι) => (S x)) (fun (x x_1 : ι) (h : x x_1) => Substructure.inclusion ) i