File: Mathlib/ModelTheory/Definability.lean

full_name: Set.Definable
code: /-- 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`. -/
def Definable (s : Set (α → M)) : Prop 
goal: Prop

full_name: Set.Definable.map_expansion
code: theorem Definable.map_expansion {L' : FirstOrder.Language} [L'.Structure M] (h : A.Definable L s)
    (φ : L →ᴸ L') [φ.IsExpansionOn M] : A.Definable L' s 
goal: A.Definable L' s

full_name: Set.definable_iff_exists_formula_sum
code: theorem definable_iff_exists_formula_sum :
    A.Definable L s ↔ ∃ φ : L.Formula (A ⊕ α), s = {v | φ.Realize (Sum.elim (↑) v)} 
goal: A.Definable L s ↔ ∃ φ, s = {v | φ.Realize (Sum.elim Subtype.val v)}

full_name: Set.empty_definable_iff
code: theorem empty_definable_iff :
    (∅ : Set M).Definable L s ↔ ∃ φ : L.Formula α, s = setOf φ.Realize 
goal: ∅.Definable L s ↔ ∃ φ, s = setOf φ.Realize

full_name: Set.definable_iff_empty_definable_with_params
code: theorem definable_iff_empty_definable_with_params :
    A.Definable L s ↔ (∅ : Set M).Definable (L[[A]]) s 
goal: A.Definable L s ↔ ∅.Definable (L.withConstants ↑A) s

full_name: Set.Definable.mono
code: theorem Definable.mono (hAs : A.Definable L s) (hAB : A ⊆ B) : B.Definable L s 
goal: B.Definable L s

full_name: Set.definable_empty
code: @[simp]
theorem definable_empty : A.Definable L (∅ : Set (α → M)) 
goal: A.Definable L ∅

full_name: Set.definable_univ
code: @[simp]
theorem definable_univ : A.Definable L (univ : Set (α → M)) 
goal: A.Definable L Set.univ

full_name: Set.Definable.inter
code: @[simp]
theorem Definable.inter {f g : Set (α → M)} (hf : A.Definable L f) (hg : A.Definable L g) :
    A.Definable L (f ∩ g) 
goal: A.Definable L (f ∩ g)

full_name: Set.Definable.union
code: @[simp]
theorem Definable.union {f g : Set (α → M)} (hf : A.Definable L f) (hg : A.Definable L g) :
    A.Definable L (f ∪ g) 
goal: A.Definable L (f ∪ g)

full_name: Set.definable_finset_inf
code: theorem definable_finset_inf {ι : Type*} {f : ι → Set (α → M)} (hf : ∀ i, A.Definable L (f i))
    (s : Finset ι) : A.Definable L (s.inf f) 
goal: A.Definable L (s.inf f)

full_name: Set.definable_finset_sup
code: theorem definable_finset_sup {ι : Type*} {f : ι → Set (α → M)} (hf : ∀ i, A.Definable L (f i))
    (s : Finset ι) : A.Definable L (s.sup f) 
goal: A.Definable L (s.sup f)

full_name: Set.definable_finset_biInter
code: theorem definable_finset_biInter {ι : Type*} {f : ι → Set (α → M)}
    (hf : ∀ i, A.Definable L (f i)) (s : Finset ι) : A.Definable L (⋂ i ∈ s, f i) 
goal: A.Definable L (⋂ i ∈ s, f i)

full_name: Set.definable_finset_biUnion
code: theorem definable_finset_biUnion {ι : Type*} {f : ι → Set (α → M)}
    (hf : ∀ i, A.Definable L (f i)) (s : Finset ι) : A.Definable L (⋃ i ∈ s, f i) 
goal: A.Definable L (⋃ i ∈ s, f i)

full_name: Set.Definable.compl
code: @[simp]
theorem Definable.compl {s : Set (α → M)} (hf : A.Definable L s) : A.Definable L sᶜ 
goal: A.Definable L sᶜ

full_name: Set.Definable.sdiff
code: @[simp]
theorem Definable.sdiff {s t : Set (α → M)} (hs : A.Definable L s) (ht : A.Definable L t) :
    A.Definable L (s \ t) 
goal: A.Definable L (s \ t)

full_name: Set.Definable.himp
code: @[simp] lemma Definable.himp {s t : Set (α → M)} (hs : A.Definable L s) (ht : A.Definable L t) :
    A.Definable L (s ⇨ t) 
goal: A.Definable L (s ⇨ t)

full_name: Set.Definable.preimage_comp
code: theorem Definable.preimage_comp (f : α → β) {s : Set (α → M)} (h : A.Definable L s) :
    A.Definable L ((fun g : β → M => g ∘ f) ⁻¹' s) 
goal: A.Definable L ((fun g => g ∘ f) ⁻¹' s)

full_name: Set.Definable.image_comp_equiv
code: theorem Definable.image_comp_equiv {s : Set (β → M)} (h : A.Definable L s) (f : α ≃ β) :
    A.Definable L ((fun g : β → M => g ∘ f) '' s) 
goal: A.Definable L ((fun g => g ∘ ⇑f) '' s)

full_name: Set.definable_iff_finitely_definable
code: theorem definable_iff_finitely_definable :
    A.Definable L s ↔ ∃ (A0 : Finset M), (A0 : Set M) ⊆ A ∧
      (A0 : Set M).Definable L s 
goal: A.Definable L s ↔ ∃ A0, ↑A0 ⊆ A ∧ (↑A0).Definable L s

full_name: Set.Definable.image_comp_sum_inl_fin
code: /-- This lemma is only intended as a helper for `Definable.image_comp`. -/
theorem Definable.image_comp_sum_inl_fin (m : ℕ) {s : Set (Sum α (Fin m) → M)}
    (h : A.Definable L s) : A.Definable L ((fun g : Sum α (Fin m) → M => g ∘ Sum.inl) '' s) 
goal: A.Definable L ((fun g => g ∘ Sum.inl) '' s)

full_name: Set.Definable.image_comp_embedding
code: /-- Shows that definability is closed under finite projections. -/
theorem Definable.image_comp_embedding {s : Set (β → M)} (h : A.Definable L s) (f : α ↪ β)
    [Finite β] : A.Definable L ((fun g : β → M => g ∘ f) '' s) 
goal: A.Definable L ((fun g => g ∘ ⇑f) '' s)

full_name: Set.Definable.image_comp
code: /-- Shows that definability is closed under finite projections. -/
theorem Definable.image_comp {s : Set (β → M)} (h : A.Definable L s) (f : α → β) [Finite α]
    [Finite β] : A.Definable L ((fun g : β → M => g ∘ f) '' s) 
goal: A.Definable L ((fun g => g ∘ f) '' s)

full_name: Set.Definable₁
code: /-- A 1-dimensional version of `Definable`, for `Set M`. -/
def Definable₁ (s : Set M) : Prop 
goal: Prop

full_name: Set.Definable₂
code: /-- A 2-dimensional version of `Definable`, for `Set (M × M)`. -/
def Definable₂ (s : Set (M × M)) : Prop 
goal: Prop

full_name: FirstOrder.Language.DefinableSet
code: /-- Definable sets are subsets of finite Cartesian products of a structure such that membership is
  given by a first-order formula. -/
def DefinableSet 
goal: Type (max 0 u₁ w)

full_name: FirstOrder.Language.DefinableSet.instSetLike
code: instance instSetLike : SetLike (L.DefinableSet A α) (α → M) 
goal: SetLike (L.DefinableSet A α) (α → M)

full_name: FirstOrder.Language.DefinableSet.instTop
code: instance instTop : Top (L.DefinableSet A α) 
goal: Top (L.DefinableSet A α)

full_name: FirstOrder.Language.DefinableSet.instBot
code: instance instBot : Bot (L.DefinableSet A α) 
goal: Bot (L.DefinableSet A α)

full_name: FirstOrder.Language.DefinableSet.instSup
code: instance instSup : Sup (L.DefinableSet A α) 
goal: Sup (L.DefinableSet A α)

full_name: FirstOrder.Language.DefinableSet.instInf
code: instance instInf : Inf (L.DefinableSet A α) 
goal: Inf (L.DefinableSet A α)

full_name: FirstOrder.Language.DefinableSet.instHasCompl
code: instance instHasCompl : HasCompl (L.DefinableSet A α) 
goal: HasCompl (L.DefinableSet A α)

full_name: FirstOrder.Language.DefinableSet.instSDiff
code: instance instSDiff : SDiff (L.DefinableSet A α) 
goal: SDiff (L.DefinableSet A α)

full_name: FirstOrder.Language.DefinableSet.instHImp
code: noncomputable instance instHImp : HImp (L.DefinableSet A α) 
goal: HImp (L.DefinableSet A α)

full_name: FirstOrder.Language.DefinableSet.instInhabited
code: instance instInhabited : Inhabited (L.DefinableSet A α) 
goal: Inhabited (L.DefinableSet A α)

full_name: FirstOrder.Language.DefinableSet.le_iff
code: theorem le_iff : s ≤ t ↔ (s : Set (α → M)) ≤ (t : Set (α → M)) 
goal: s ≤ t ↔ ↑s ≤ ↑t

full_name: FirstOrder.Language.DefinableSet.mem_top
code: @[simp]
theorem mem_top : x ∈ (⊤ : L.DefinableSet A α) 
goal: x ∈ ⊤

full_name: FirstOrder.Language.DefinableSet.not_mem_bot
code: @[simp]
theorem not_mem_bot {x : α → M} : ¬x ∈ (⊥ : L.DefinableSet A α) 
goal: x ∉ ⊥

full_name: FirstOrder.Language.DefinableSet.mem_sup
code: @[simp]
theorem mem_sup : x ∈ s ⊔ t ↔ x ∈ s ∨ x ∈ t 
goal: x ∈ s ⊔ t ↔ x ∈ s ∨ x ∈ t

full_name: FirstOrder.Language.DefinableSet.mem_inf
code: @[simp]
theorem mem_inf : x ∈ s ⊓ t ↔ x ∈ s ∧ x ∈ t 
goal: x ∈ s ⊓ t ↔ x ∈ s ∧ x ∈ t

full_name: FirstOrder.Language.DefinableSet.mem_compl
code: @[simp]
theorem mem_compl : x ∈ sᶜ ↔ ¬x ∈ s 
goal: x ∈ sᶜ ↔ x ∉ s

full_name: FirstOrder.Language.DefinableSet.mem_sdiff
code: @[simp]
theorem mem_sdiff : x ∈ s \ t ↔ x ∈ s ∧ ¬x ∈ t 
goal: x ∈ s \ t ↔ x ∈ s ∧ x ∉ t

full_name: FirstOrder.Language.DefinableSet.coe_top
code: @[simp, norm_cast]
theorem coe_top : ((⊤ : L.DefinableSet A α) : Set (α → M)) = univ 
goal: ↑⊤ = Set.univ

full_name: FirstOrder.Language.DefinableSet.coe_bot
code: @[simp, norm_cast]
theorem coe_bot : ((⊥ : L.DefinableSet A α) : Set (α → M)) = ∅ 
goal: ↑⊥ = ∅

full_name: FirstOrder.Language.DefinableSet.coe_sup
code: @[simp, norm_cast]
theorem coe_sup (s t : L.DefinableSet A α) :
    ((s ⊔ t : L.DefinableSet A α) : Set (α → M)) = (s : Set (α → M)) ∪ (t : Set (α → M)) 
goal: ↑(s ⊔ t) = ↑s ∪ ↑t

full_name: FirstOrder.Language.DefinableSet.coe_inf
code: @[simp, norm_cast]
theorem coe_inf (s t : L.DefinableSet A α) :
    ((s ⊓ t : L.DefinableSet A α) : Set (α → M)) = (s : Set (α → M)) ∩ (t : Set (α → M)) 
goal: ↑(s ⊓ t) = ↑s ∩ ↑t

full_name: FirstOrder.Language.DefinableSet.coe_compl
code: @[simp, norm_cast]
theorem coe_compl (s : L.DefinableSet A α) :
    ((sᶜ : L.DefinableSet A α) : Set (α → M)) = (s : Set (α → M))ᶜ 
goal: ↑sᶜ = (↑s)ᶜ

full_name: FirstOrder.Language.DefinableSet.coe_sdiff
code: @[simp, norm_cast]
theorem coe_sdiff (s t : L.DefinableSet A α) :
    ((s \ t : L.DefinableSet A α) : Set (α → M)) = (s : Set (α → M)) \ (t : Set (α → M)) 
goal: ↑(s \ t) = ↑s \ ↑t

full_name: FirstOrder.Language.DefinableSet.coe_himp
code: @[simp, norm_cast]
lemma coe_himp (s t : L.DefinableSet A α) : ↑(s ⇨ t) = (s ⇨ t : Set (α → M)) 
goal: ↑(s ⇨ t) = ↑s ⇨ ↑t

full_name: FirstOrder.Language.DefinableSet.instBooleanAlgebra
code: noncomputable instance instBooleanAlgebra : BooleanAlgebra (L.DefinableSet A α) 
goal: BooleanAlgebra (L.DefinableSet A α)