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) [FirstOrder.Language.Structure L 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_iff_exists_formula_sum {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {s : Set (αM)} :
    Set.Definable A L s ∃ (φ : FirstOrder.Language.Formula L (A α)), s = {v : αM | FirstOrder.Language.Formula.Realize φ (Sum.elim Subtype.val v)}
    theorem Set.Definable.mono {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {B : Set M} {s : Set (αM)} (hAs : Set.Definable A L s) (hAB : A B) :
    @[simp]
    @[simp]
    theorem Set.definable_univ {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} :
    Set.Definable A L Set.univ
    @[simp]
    theorem Set.Definable.inter {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {f : Set (αM)} {g : Set (αM)} (hf : Set.Definable A L f) (hg : Set.Definable A L g) :
    Set.Definable A L (f g)
    @[simp]
    theorem Set.Definable.union {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {f : Set (αM)} {g : Set (αM)} (hf : Set.Definable A L f) (hg : Set.Definable A L g) :
    Set.Definable A L (f g)
    theorem Set.definable_finset_inf {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {ι : Type u_2} {f : ιSet (αM)} (hf : ∀ (i : ι), Set.Definable A L (f i)) (s : Finset ι) :
    theorem Set.definable_finset_sup {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {ι : Type u_2} {f : ιSet (αM)} (hf : ∀ (i : ι), Set.Definable A L (f i)) (s : Finset ι) :
    theorem Set.definable_finset_biInter {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {ι : Type u_2} {f : ιSet (αM)} (hf : ∀ (i : ι), Set.Definable A L (f i)) (s : Finset ι) :
    Set.Definable A L (⋂ i ∈ s, f i)
    theorem Set.definable_finset_biUnion {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {ι : Type u_2} {f : ιSet (αM)} (hf : ∀ (i : ι), Set.Definable A L (f i)) (s : Finset ι) :
    Set.Definable A L (⋃ i ∈ s, f i)
    @[simp]
    theorem Set.Definable.compl {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {s : Set (αM)} (hf : Set.Definable A L s) :
    @[simp]
    theorem Set.Definable.sdiff {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {s : Set (αM)} {t : Set (αM)} (hs : Set.Definable A L s) (ht : Set.Definable A L t) :
    Set.Definable A L (s \ t)
    theorem Set.Definable.preimage_comp {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {β : Type u_1} (f : αβ) {s : Set (αM)} (h : Set.Definable A L s) :
    Set.Definable A L ((fun (g : βM) => g f) ⁻¹' s)
    theorem Set.Definable.image_comp_equiv {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {β : Type u_1} {s : Set (βM)} (h : Set.Definable A L s) (f : α β) :
    Set.Definable A L ((fun (g : βM) => g f) '' s)
    theorem Set.definable_iff_finitely_definable {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} {s : Set (αM)} :
    Set.Definable A L s ∃ (A0 : Finset M), A0 A Set.Definable (A0) L s
    theorem Set.Definable.image_comp_sum_inl_fin {M : Type w} {A : Set M} {L : FirstOrder.Language} [FirstOrder.Language.Structure L M] {α : Type u₁} (m : ) {s : Set (α Fin mM)} (h : Set.Definable A L s) :
    Set.Definable A L ((fun (g : α Fin mM) => g Sum.inl) '' s)

    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} [FirstOrder.Language.Structure L M] {α : Type u₁} {β : Type u_1} {s : Set (βM)} (h : Set.Definable A L s) (f : α β) [Finite β] :
    Set.Definable A 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} [FirstOrder.Language.Structure L M] {α : Type u₁} {β : Type u_1} {s : Set (βM)} (h : Set.Definable A L s) (f : αβ) [Finite α] [Finite β] :
    Set.Definable A L ((fun (g : βM) => g f) '' s)

    Shows that definability is closed under finite projections.

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

    Equations
    Instances For

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

      Equations
      Instances For
        def FirstOrder.Language.DefinableSet (L : FirstOrder.Language) {M : Type w} [FirstOrder.Language.Structure L 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
          Equations
          • FirstOrder.Language.DefinableSet.instSetLike = { coe := Subtype.val, coe_injective' := (_ : Function.Injective Subtype.val) }
          Equations
          • FirstOrder.Language.DefinableSet.instTop = { top := { val := , property := (_ : Set.Definable A L Set.univ) } }
          Equations
          • FirstOrder.Language.DefinableSet.instBot = { bot := { val := , property := (_ : Set.Definable A L ) } }
          Equations
          Equations
          Equations
          Equations
          Equations
          • FirstOrder.Language.DefinableSet.instInhabited = { default := }
          @[simp]
          theorem FirstOrder.Language.DefinableSet.mem_top {L : FirstOrder.Language} {M : Type w} [FirstOrder.Language.Structure L M] {A : Set M} {α : Type u₁} {x : αM} :
          @[simp]
          theorem FirstOrder.Language.DefinableSet.not_mem_bot {L : FirstOrder.Language} {M : Type w} [FirstOrder.Language.Structure L M] {A : Set M} {α : Type u₁} {x : αM} :
          x
          @[simp]
          @[simp]
          @[simp]
          theorem FirstOrder.Language.DefinableSet.mem_compl {L : FirstOrder.Language} {M : Type w} [FirstOrder.Language.Structure L M] {A : Set M} {α : Type u₁} {s : FirstOrder.Language.DefinableSet L A α} {x : αM} :
          x s xs
          @[simp]
          theorem FirstOrder.Language.DefinableSet.mem_sdiff {L : FirstOrder.Language} {M : Type w} [FirstOrder.Language.Structure L M] {A : Set M} {α : Type u₁} {s : FirstOrder.Language.DefinableSet L A α} {t : FirstOrder.Language.DefinableSet L A α} {x : αM} :
          x s \ t x s xt
          @[simp]
          Equations
          • One or more equations did not get rendered due to their size.