Definable Sets #
This file defines what it means for a set over a first-order structure to be definable.
Main Definitions #
Set.Definableis defined so thatA.Definable L sindicates that the setsof a finite Cartesian power ofMis definable with parameters inA.Set.Definable₁is defined so thatA.Definable₁ L sindicates that(s : Set M)is definable with parameters inA.Set.Definable₂is defined so thatA.Definable₂ L sindicates that(s : Set (M × M))is definable with parameters inA.- A
FirstOrder.Language.DefinableSetis defined so thatL.DefinableSet A αis the Boolean algebra of subsets ofα → Mdefined by formulas with parameters inA. Set.TermDefinablefunctions are those equivalent to some term expressible in the language.Set.TermDefinable₁specialize this to case of unary functions.
Main Results #
L.DefinableSet A αforms aBooleanAlgebraSet.Definable.image_compshows that definability is closed under projections in finite dimensions.- The
Set.TermDefinableproperty is transitive, andTermDefinablefunctions are closed under composition.
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
Alias of Set.definable_biInter_finset.
Alias of Set.definable_biUnion_finset.
This lemma is only intended as a helper for Definable.image_comp.
Equations
- FirstOrder.Language.DefinableSet.instSetLike = { coe := Subtype.val, coe_injective' := ⋯ }
Equations
- FirstOrder.Language.DefinableSet.instSup = { max := fun (s t : L.DefinableSet A α) => ⟨↑s ∪ ↑t, ⋯⟩ }
Equations
- FirstOrder.Language.DefinableSet.instInf = { min := fun (s t : L.DefinableSet A α) => ⟨↑s ∩ ↑t, ⋯⟩ }
Equations
- FirstOrder.Language.DefinableSet.instCompl = { compl := fun (s : L.DefinableSet A α) => ⟨(↑s)ᶜ, ⋯⟩ }
Equations
- FirstOrder.Language.DefinableSet.instSDiff = { sdiff := fun (s t : L.DefinableSet A α) => ⟨↑s \ ↑t, ⋯⟩ }
Equations
- FirstOrder.Language.DefinableSet.instHImp = { himp := fun (s t : L.DefinableSet A α) => ⟨↑s ⇨ ↑t, ⋯⟩ }
Equations
- FirstOrder.Language.DefinableSet.instInhabited = { default := ⊥ }
Equations
- FirstOrder.Language.DefinableSet.instBooleanAlgebra = Function.Injective.booleanAlgebra (fun (a : { s : Set (α → M) // A.Definable L s }) => ↑a) ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
A function from a Cartesian power of a structure to that structure is term-definable over
a set A when the value of the function is given by a term with constants A.
Equations
- A.TermDefinable L f = ∃ (φ : (L.withConstants ↑A).Term α), f = fun (v : α → M) => FirstOrder.Language.Term.realize v φ
Instances For
Every TermDefinable function has a tupleGraph that is definable.
TermDefinable is transitive. If f is TermDefinable in a structure S on L, and all of the functions' realizations on S are TermDefinable on a structure T on L', then f is TermDefinable on T in L'.
A function from a structure to itself is term-definable over a set A when the
value of the function is given by a term with constants A. Like TermDefinable
but specialized for unary functions in order to write M → M instead of (Unit → M) → M.
Equations
- Set.TermDefinable₁ L f = A.TermDefinable L fun (x : Unit → M) => f (x ())
Instances For
TermDefinable₁ is defined as TermDefinable on the Unit index type.
Alias of the reverse direction of Set.termDefinable₁_iff_termDefinable.
TermDefinable₁ is defined as TermDefinable on the Unit index type.
Alias of the forward direction of Set.termDefinable₁_iff_termDefinable.
TermDefinable₁ is defined as TermDefinable on the Unit index type.
A TermDefinable₁ function has a graph that's Definable₂.
The identity function is TermDefinable₁
Constant functions are TermDefinable, assuming the constant value is a language constant.
Constant functions are TermDefinable₁, assuming the constant value is a language constant.
A k-ary TermDefinable function composed with k TermDefinable others is TermDefinable.
TermDefinable₁ functions are closed under composition.
A TermDefinable function postcomposed with TermDefinable₁ is TermDefinable.