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
    • One or more equations did not get rendered due to their size.
    Instances For
      Equations
      @[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
      • f.toEmbedding = { toFun := f, inj' := , map_fun' := , map_rel' := }
      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
        • f.toHom = { toFun := f, map_fun' := , map_rel' := }
        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

          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
            • hnp.comp hmn = { toFun := hnp hmn, map_formula' := }
            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 α) :