Documentation

Mathlib.ModelTheory.Definability

Definable Sets #

This file defines what it means for a set over a first-order structure to be definable.

Main Definitions #

Main Results #

def Set.Definable {M : Type w} (A : Set M) (L : FirstOrder.Language) [L.Structure M] {α : Type u₁} (s : Set (αM)) :

A subset of a finite Cartesian product of a structure is definable over a set A when membership in the set is given by a first-order formula with parameters from A.

Equations
    Instances For
      theorem Set.Definable.map_expansion {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {s : Set (αM)} {L' : FirstOrder.Language} [L'.Structure M] (h : A.Definable L s) (φ : L →ᴸ L') [φ.IsExpansionOn M] :
      A.Definable L' s
      theorem Set.definable_iff_exists_formula_sum {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {s : Set (αM)} :
      A.Definable L s ∃ (φ : L.Formula (A α)), s = {v : αM | φ.Realize (Sum.elim Subtype.val v)}
      theorem Set.empty_definable_iff {M : Type w} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {s : Set (αM)} :
      .Definable L s ∃ (φ : L.Formula α), s = setOf φ.Realize
      theorem Set.definable_iff_empty_definable_with_params {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {s : Set (αM)} :
      theorem Set.Definable.mono {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {B : Set M} {s : Set (αM)} (hAs : A.Definable L s) (hAB : A B) :
      B.Definable L s
      @[simp]
      theorem Set.definable_empty {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} :
      @[simp]
      theorem Set.definable_univ {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} :
      @[simp]
      theorem Set.Definable.inter {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {f g : Set (αM)} (hf : A.Definable L f) (hg : A.Definable L g) :
      A.Definable L (f g)
      @[simp]
      theorem Set.Definable.union {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {f g : Set (αM)} (hf : A.Definable L f) (hg : A.Definable L g) :
      A.Definable L (f g)
      theorem Set.definable_finset_inf {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {ι : Type u_2} {f : ιSet (αM)} (hf : ∀ (i : ι), A.Definable L (f i)) (s : Finset ι) :
      A.Definable L (s.inf f)
      theorem Set.definable_finset_sup {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {ι : Type u_2} {f : ιSet (αM)} (hf : ∀ (i : ι), A.Definable L (f i)) (s : Finset ι) :
      A.Definable L (s.sup f)
      theorem Set.definable_finset_biInter {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {ι : Type u_2} {f : ιSet (αM)} (hf : ∀ (i : ι), A.Definable L (f i)) (s : Finset ι) :
      A.Definable L (⋂ is, f i)
      theorem Set.definable_finset_biUnion {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {ι : Type u_2} {f : ιSet (αM)} (hf : ∀ (i : ι), A.Definable L (f i)) (s : Finset ι) :
      A.Definable L (⋃ is, f i)
      @[simp]
      theorem Set.Definable.compl {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {s : Set (αM)} (hf : A.Definable L s) :
      @[simp]
      theorem Set.Definable.sdiff {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {s t : Set (αM)} (hs : A.Definable L s) (ht : A.Definable L t) :
      A.Definable L (s \ t)
      @[simp]
      theorem Set.Definable.himp {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {s t : Set (αM)} (hs : A.Definable L s) (ht : A.Definable L t) :
      A.Definable L (s t)
      theorem Set.Definable.preimage_comp {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {β : Type u_1} (f : αβ) {s : Set (αM)} (h : A.Definable L s) :
      A.Definable L ((fun (g : βM) => g f) ⁻¹' s)
      theorem Set.Definable.image_comp_equiv {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {β : Type u_1} {s : Set (βM)} (h : A.Definable L s) (f : α β) :
      A.Definable L ((fun (g : βM) => g f) '' s)
      theorem Set.definable_iff_finitely_definable {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {s : Set (αM)} :
      A.Definable L s ∃ (A0 : Finset M), A0 A (↑A0).Definable L s
      theorem Set.Definable.image_comp_sumInl_fin {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} (m : ) {s : Set (α Fin mM)} (h : A.Definable L s) :
      A.Definable L ((fun (g : α Fin mM) => g Sum.inl) '' s)

      This lemma is only intended as a helper for Definable.image_comp.

      @[deprecated Set.Definable.image_comp_sumInl_fin (since := "2025-02-21")]
      theorem Set.Definable.image_comp_sum_inl_fin {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} (m : ) {s : Set (α Fin mM)} (h : A.Definable L s) :
      A.Definable L ((fun (g : α Fin mM) => g Sum.inl) '' s)

      Alias of Set.Definable.image_comp_sumInl_fin.


      This lemma is only intended as a helper for Definable.image_comp.

      theorem Set.Definable.image_comp_embedding {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {β : Type u_1} {s : Set (βM)} (h : A.Definable L s) (f : α β) [Finite β] :
      A.Definable L ((fun (g : βM) => g f) '' s)

      Shows that definability is closed under finite projections.

      theorem Set.Definable.image_comp {M : Type w} {A : Set M} {L : FirstOrder.Language} [L.Structure M] {α : Type u₁} {β : Type u_1} {s : Set (βM)} (h : A.Definable L s) (f : αβ) [Finite α] [Finite β] :
      A.Definable L ((fun (g : βM) => g f) '' s)

      Shows that definability is closed under finite projections.

      def Set.Definable₁ {M : Type w} (A : Set M) (L : FirstOrder.Language) [L.Structure M] (s : Set M) :

      A 1-dimensional version of Definable, for Set M.

      Equations
        Instances For
          def Set.Definable₂ {M : Type w} (A : Set M) (L : FirstOrder.Language) [L.Structure M] (s : Set (M × M)) :

          A 2-dimensional version of Definable, for Set (M × M).

          Equations
            Instances For
              def FirstOrder.Language.DefinableSet (L : Language) {M : Type w} [L.Structure M] (A : Set M) (α : Type u₁) :
              Type (max 0 u₁ w)

              Definable sets are subsets of finite Cartesian products of a structure such that membership is given by a first-order formula.

              Equations
                Instances For
                  instance FirstOrder.Language.DefinableSet.instSetLike {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} :
                  SetLike (L.DefinableSet A α) (αM)
                  Equations
                    instance FirstOrder.Language.DefinableSet.instTop {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} :
                    Top (L.DefinableSet A α)
                    Equations
                      instance FirstOrder.Language.DefinableSet.instBot {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} :
                      Bot (L.DefinableSet A α)
                      Equations
                        instance FirstOrder.Language.DefinableSet.instSup {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} :
                        Max (L.DefinableSet A α)
                        Equations
                          instance FirstOrder.Language.DefinableSet.instInf {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} :
                          Min (L.DefinableSet A α)
                          Equations
                            instance FirstOrder.Language.DefinableSet.instHasCompl {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} :
                            Equations
                              instance FirstOrder.Language.DefinableSet.instSDiff {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} :
                              Equations
                                noncomputable instance FirstOrder.Language.DefinableSet.instHImp {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} :
                                Equations
                                  instance FirstOrder.Language.DefinableSet.instInhabited {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} :
                                  Equations
                                    theorem FirstOrder.Language.DefinableSet.le_iff {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} {s t : L.DefinableSet A α} :
                                    s t s t
                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.mem_top {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} {x : αM} :
                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.notMem_bot {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} {x : αM} :
                                    x
                                    @[deprecated FirstOrder.Language.DefinableSet.notMem_bot (since := "2025-05-23")]
                                    theorem FirstOrder.Language.DefinableSet.not_mem_bot {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} {x : αM} :
                                    x

                                    Alias of FirstOrder.Language.DefinableSet.notMem_bot.

                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.mem_sup {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} {s t : L.DefinableSet A α} {x : αM} :
                                    x st x s x t
                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.mem_inf {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} {s t : L.DefinableSet A α} {x : αM} :
                                    x st x s x t
                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.mem_compl {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} {s : L.DefinableSet A α} {x : αM} :
                                    x s xs
                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.mem_sdiff {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} {s t : L.DefinableSet A α} {x : αM} :
                                    x s \ t x s xt
                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.coe_top {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} :
                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.coe_bot {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} :
                                    =
                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.coe_sup {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} (s t : L.DefinableSet A α) :
                                    (st) = s t
                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.coe_inf {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} (s t : L.DefinableSet A α) :
                                    (st) = s t
                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.coe_compl {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} (s : L.DefinableSet A α) :
                                    s = (↑s)
                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.coe_sdiff {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} (s t : L.DefinableSet A α) :
                                    ↑(s \ t) = s \ t
                                    @[simp]
                                    theorem FirstOrder.Language.DefinableSet.coe_himp {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} (s t : L.DefinableSet A α) :
                                    ↑(s t) = s t
                                    noncomputable instance FirstOrder.Language.DefinableSet.instBooleanAlgebra {L : Language} {M : Type w} [L.Structure M] {A : Set M} {α : Type u₁} :
                                    Equations