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.

  • toFun : MN

    The underlying embedding

  • map_formula' n : (φ : L.Formula (Fin n)) (x : Fin nM) : φ.Realize (self x) φ.Realize x
Instances For
    def FirstOrder.«term_↪ₑ[_]_» :
    Lean.TrailingParserDescr

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

    Instances For
      @[implicit_reducible]
      @[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.injective {L : Language} {M : Type u_1} {N : Type u_2} [L.Structure M] [L.Structure N] (φ : L.ElementaryEmbedding M N) :
      Function.Injective φ
      @[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) :
      Structure.RelMap r (φ x) Structure.RelMap r x
      @[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.

      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.

        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
          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

          Instances For
            @[implicit_reducible]
            @[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

            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.

              Lifts an elementary embedding to the expanded language with constants

              Instances For
                @[reducible, inline]

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

                Instances For

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

                  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.

                    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.

                      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 α) :
                        Term.realize (Subtype.val v) t = (Term.realize v t)