Definable Sets #
This file defines what it means for a set over a first-order structure to be definable.
Main Definitions #
Set.Definable
is defined so thatA.Definable L s
indicates that the sets
of a finite cartesian power ofM
is definable with parameters inA
.Set.Definable₁
is defined so thatA.Definable₁ L s
indicates that(s : Set M)
is definable with parameters inA
.Set.Definable₂
is defined so thatA.Definable₂ L s
indicates that(s : Set (M × M))
is definable with parameters inA
.- A
FirstOrder.Language.DefinableSet
is defined so thatL.DefinableSet A α
is the boolean algebra of subsets ofα → M
defined by formulas with parameters inA
.
Main Results #
L.DefinableSet A α
forms aBooleanAlgebra
Set.Definable.image_comp
shows that definability is closed under projections in finite dimensions.
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
.
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.empty_definable_iff
{M : Type w}
{L : FirstOrder.Language}
[L.Structure M]
{α : Type u₁}
{s : Set (α → M)}
:
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₁}
:
A.Definable L ∅
@[simp]
theorem
Set.definable_univ
{M : Type w}
{A : Set M}
{L : FirstOrder.Language}
[L.Structure M]
{α : Type u₁}
:
A.Definable L Set.univ
@[simp]
theorem
Set.Definable.inter
{M : Type w}
{A : Set M}
{L : FirstOrder.Language}
[L.Structure M]
{α : Type u₁}
{f : Set (α → M)}
{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 : Set (α → M)}
{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 (⋂ i ∈ s, 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 (⋃ i ∈ s, 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)
:
A.Definable L sᶜ
@[simp]
theorem
Set.Definable.sdiff
{M : Type w}
{A : Set M}
{L : FirstOrder.Language}
[L.Structure M]
{α : Type u₁}
{s : Set (α → M)}
{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 : Set (α → M)}
{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)
:
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 m → M)}
(h : A.Definable L 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}
[L.Structure M]
{α : Type u₁}
{β : Type u_1}
{s : Set (β → M)}
(h : A.Definable L s)
(f : α ↪ β)
[Finite β]
:
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 β]
:
Shows that definability is closed under finite projections.
def
FirstOrder.Language.DefinableSet
(L : FirstOrder.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.
Instances For
instance
FirstOrder.Language.DefinableSet.instSetLike
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
:
SetLike (L.DefinableSet A α) (α → M)
Equations
- FirstOrder.Language.DefinableSet.instSetLike = { coe := Subtype.val, coe_injective' := ⋯ }
instance
FirstOrder.Language.DefinableSet.instTop
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
:
Top (L.DefinableSet A α)
instance
FirstOrder.Language.DefinableSet.instBot
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
:
Bot (L.DefinableSet A α)
instance
FirstOrder.Language.DefinableSet.instSup
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
:
Sup (L.DefinableSet A α)
instance
FirstOrder.Language.DefinableSet.instInf
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
:
Inf (L.DefinableSet A α)
instance
FirstOrder.Language.DefinableSet.instHasCompl
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
:
HasCompl (L.DefinableSet A α)
instance
FirstOrder.Language.DefinableSet.instSDiff
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
:
SDiff (L.DefinableSet A α)
noncomputable instance
FirstOrder.Language.DefinableSet.instHImp
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
:
HImp (L.DefinableSet A α)
instance
FirstOrder.Language.DefinableSet.instInhabited
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
:
Inhabited (L.DefinableSet A α)
theorem
FirstOrder.Language.DefinableSet.le_iff
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
{s : L.DefinableSet A α}
{t : L.DefinableSet A α}
:
@[simp]
theorem
FirstOrder.Language.DefinableSet.mem_top
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
{x : α → M}
:
@[simp]
theorem
FirstOrder.Language.DefinableSet.not_mem_bot
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
{x : α → M}
:
x ∉ ⊥
@[simp]
theorem
FirstOrder.Language.DefinableSet.mem_compl
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
{s : L.DefinableSet A α}
{x : α → M}
:
@[simp]
theorem
FirstOrder.Language.DefinableSet.coe_top
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
:
@[simp]
theorem
FirstOrder.Language.DefinableSet.coe_bot
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
:
@[simp]
theorem
FirstOrder.Language.DefinableSet.coe_sup
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
(s : L.DefinableSet A α)
(t : L.DefinableSet A α)
:
@[simp]
theorem
FirstOrder.Language.DefinableSet.coe_inf
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
(s : L.DefinableSet A α)
(t : L.DefinableSet A α)
:
@[simp]
theorem
FirstOrder.Language.DefinableSet.coe_compl
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
(s : L.DefinableSet A α)
:
@[simp]
theorem
FirstOrder.Language.DefinableSet.coe_sdiff
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
(s : L.DefinableSet A α)
(t : L.DefinableSet A α)
:
@[simp]
theorem
FirstOrder.Language.DefinableSet.coe_himp
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
(s : L.DefinableSet A α)
(t : L.DefinableSet A α)
:
noncomputable instance
FirstOrder.Language.DefinableSet.instBooleanAlgebra
{L : FirstOrder.Language}
{M : Type w}
[L.Structure M]
{A : Set M}
{α : Type u₁}
:
BooleanAlgebra (L.DefinableSet A α)
Equations
- FirstOrder.Language.DefinableSet.instBooleanAlgebra = Function.Injective.booleanAlgebra (fun (a : { s : Set (α → M) // A.Definable L s }) => ↑a) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯