Documentation

Mathlib.ModelTheory.ElementaryMaps

Elementary Maps Between First-Order Structures #

Main Definitions #

Main Results #

structure FirstOrder.Language.ElementaryEmbedding (L : Language) (M : Type u_1) (N : Type u_2) [L.Structure M] [L.Structure N] :
Type (max u_1 u_2)

An elementary embedding of first-order structures is an embedding that commutes with the realizations of formulas.

Instances For

    An elementary embedding of first-order structures is an embedding that commutes with the realizations of formulas.

    Equations
      Instances For
        @[simp]
        theorem FirstOrder.Language.ElementaryEmbedding.map_boundedFormula {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] (f : L.ElementaryEmbedding M N) {α : Type u_5} {n : } (φ : L.BoundedFormula α n) (v : αM) (xs : Fin nM) :
        φ.Realize (f v) (f xs) φ.Realize v xs
        @[simp]
        theorem FirstOrder.Language.ElementaryEmbedding.map_formula {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] (f : L.ElementaryEmbedding M N) {α : Type u_5} (φ : L.Formula α) (x : αM) :
        φ.Realize (f x) φ.Realize x
        theorem FirstOrder.Language.ElementaryEmbedding.map_sentence {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] (f : L.ElementaryEmbedding M N) (φ : L.Sentence) :
        M φ N φ
        @[simp]
        theorem FirstOrder.Language.ElementaryEmbedding.map_fun {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] (φ : L.ElementaryEmbedding M N) {n : } (f : L.Functions n) (x : Fin nM) :
        φ (Structure.funMap f x) = Structure.funMap f (φ x)
        @[simp]
        theorem FirstOrder.Language.ElementaryEmbedding.map_rel {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] (φ : L.ElementaryEmbedding M N) {n : } (r : L.Relations n) (x : Fin nM) :
        @[simp]
        theorem FirstOrder.Language.ElementaryEmbedding.map_constants {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] (φ : L.ElementaryEmbedding M N) (c : L.Constants) :
        φ c = c

        An elementary embedding is also a first-order embedding.

        Equations
          Instances For
            def FirstOrder.Language.ElementaryEmbedding.toHom {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] (f : L.ElementaryEmbedding M N) :
            L.Hom M N

            An elementary embedding is also a first-order homomorphism.

            Equations
              Instances For
                @[simp]
                theorem FirstOrder.Language.ElementaryEmbedding.coe_toHom {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] {f : L.ElementaryEmbedding M N} :
                f.toHom = f
                @[simp]
                theorem FirstOrder.Language.ElementaryEmbedding.ext {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] f g : L.ElementaryEmbedding M N (h : ∀ (x : M), f x = g x) :
                f = g
                theorem FirstOrder.Language.ElementaryEmbedding.ext_iff {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] {f g : L.ElementaryEmbedding M N} :
                f = g ∀ (x : M), f x = g x

                The identity elementary embedding from a structure to itself

                Equations
                  Instances For
                    @[simp]
                    theorem FirstOrder.Language.ElementaryEmbedding.refl_apply {L : Language} {M : Type u_1} [L.Structure M] (x : M) :
                    (refl L M) x = x
                    def FirstOrder.Language.ElementaryEmbedding.comp {L : Language} {M : Type u_1} {N : Type u_2} {P : Type u_3} [L.Structure M] [L.Structure N] [L.Structure P] (hnp : L.ElementaryEmbedding N P) (hmn : L.ElementaryEmbedding M N) :

                    Composition of elementary embeddings

                    Equations
                      Instances For
                        @[simp]
                        theorem FirstOrder.Language.ElementaryEmbedding.comp_apply {L : Language} {M : Type u_1} {N : Type u_2} {P : Type u_3} [L.Structure M] [L.Structure N] [L.Structure P] (g : L.ElementaryEmbedding N P) (f : L.ElementaryEmbedding M N) (x : M) :
                        (g.comp f) x = g (f x)
                        theorem FirstOrder.Language.ElementaryEmbedding.comp_assoc {L : Language} {M : Type u_1} {N : Type u_2} {P : Type u_3} {Q : Type u_4} [L.Structure M] [L.Structure N] [L.Structure P] [L.Structure Q] (f : L.ElementaryEmbedding M N) (g : L.ElementaryEmbedding N P) (h : L.ElementaryEmbedding P Q) :
                        (h.comp g).comp f = h.comp (g.comp f)

                        Composition of elementary embeddings is associative.

                        @[reducible, inline]

                        The elementary diagram of an L-structure is the set of all sentences with parameters it satisfies.

                        Equations
                          Instances For

                            The canonical elementary embedding of an L-structure into any model of its elementary diagram

                            Equations
                              Instances For
                                theorem FirstOrder.Language.Embedding.isElementary_of_exists {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] (f : L.Embedding M N) (htv : ∀ (n : ) (φ : L.BoundedFormula Empty (n + 1)) (x : Fin nM) (a : N), φ.Realize default (Fin.snoc (f x) a)∃ (b : M), φ.Realize default (Fin.snoc (f x) (f b))) {n : } (φ : L.Formula (Fin n)) (x : Fin nM) :
                                φ.Realize (f x) φ.Realize x

                                The Tarski-Vaught test for elementarity of an embedding.

                                def FirstOrder.Language.Embedding.toElementaryEmbedding {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] (f : L.Embedding M N) (htv : ∀ (n : ) (φ : L.BoundedFormula Empty (n + 1)) (x : Fin nM) (a : N), φ.Realize default (Fin.snoc (f x) a)∃ (b : M), φ.Realize default (Fin.snoc (f x) (f b))) :

                                Bundles an embedding satisfying the Tarski-Vaught test as an elementary embedding.

                                Equations
                                  Instances For
                                    @[simp]
                                    theorem FirstOrder.Language.Embedding.toElementaryEmbedding_toFun {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] (f : L.Embedding M N) (htv : ∀ (n : ) (φ : L.BoundedFormula Empty (n + 1)) (x : Fin nM) (a : N), φ.Realize default (Fin.snoc (f x) a)∃ (b : M), φ.Realize default (Fin.snoc (f x) (f b))) (a : M) :
                                    (f.toElementaryEmbedding htv) a = f a

                                    A first-order equivalence is also an elementary embedding.

                                    Equations
                                      Instances For
                                        @[simp]
                                        theorem FirstOrder.Language.Equiv.coe_toElementaryEmbedding {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] (f : L.Equiv M N) :
                                        @[simp]
                                        theorem FirstOrder.Language.realize_term_substructure {L : Language} {M : Type u_1} [L.Structure M] {α : Type u_5} {S : L.Substructure M} (v : αS) (t : L.Term α) :