First-Order Substructures #
This file defines substructures of first-order structures in a similar manner to the various substructures appearing in the algebra library.
Main Definitions #
- A
FirstOrder.Language.Substructure
is defined so thatL.Substructure M
is the type of all substructures of theL
-structureM
. FirstOrder.Language.Substructure.closure
is defined so that ifs : Set M
,closure L s
is the least substructure ofM
containings
.FirstOrder.Language.Substructure.comap
is defined so thats.comap f
is the preimage of the substructures
under the homomorphismf
, as a substructure.FirstOrder.Language.Substructure.map
is defined so thats.map f
is the image of the substructures
under the homomorphismf
, as a substructure.FirstOrder.Language.Hom.range
is defined so thatf.range
is the range of the homomorphismf
, as a substructure.FirstOrder.Language.Hom.domRestrict
andFirstOrder.Language.Hom.codRestrict
restrict the domain and codomain respectively of first-order homomorphisms to substructures.FirstOrder.Language.Embedding.domRestrict
andFirstOrder.Language.Embedding.codRestrict
restrict the domain and codomain respectively of first-order embeddings to substructures.FirstOrder.Language.Substructure.inclusion
is the inclusion embedding between substructures.
Main Results #
L.Substructure M
forms aCompleteLattice
.
Indicates that a set in a given structure is a closed under a function symbol.
Equations
- FirstOrder.Language.ClosedUnder f s = ∀ (x : Fin n → M), (∀ (i : Fin n), x i ∈ s) → FirstOrder.Language.Structure.funMap f x ∈ s
Instances For
A substructure of a structure M
is a set closed under application of function symbols.
- carrier : Set M
- fun_mem : ∀ {n : ℕ} (f : L.Functions n), FirstOrder.Language.ClosedUnder f ↑self
Instances For
Equations
- FirstOrder.Language.Substructure.instSetLike = { coe := FirstOrder.Language.Substructure.carrier, coe_injective' := (_ : ∀ (p q : FirstOrder.Language.Substructure L M), ↑p = ↑q → p = q) }
See Note [custom simps projection]
Equations
Instances For
Two substructures are equal if they have the same elements.
Copy a substructure replacing carrier
with a set that is equal to it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The substructure M
of the structure M
.
Equations
- One or more equations did not get rendered due to their size.
The inf of two substructures is their intersection.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Substructures of a structure form a complete lattice.
Equations
- One or more equations did not get rendered due to their size.
The L.Substructure
generated by a set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The substructure generated by a set includes the set.
A substructure S
includes closure L s
if and only if it includes s
.
Substructure closure of a set is monotone in its argument: if s ⊆ t
,
then closure L s ≤ closure L t
.
Equations
- (_ : Small.{u, w} ↥((FirstOrder.Language.Substructure.closure L).toFun s)) = (_ : Small.{u, w} ↥((FirstOrder.Language.Substructure.closure L).toFun s))
An induction principle for closure membership. If p
holds for all elements of s
, and
is preserved under function symbols, then p
holds for all elements of the closure of s
.
If s
is a dense set in a structure M
, Substructure.closure L s = ⊤
, then in order to prove
that some predicate p
holds for all x : M
it suffices to verify p x
for x ∈ s
, and verify
that p
is preserved under function symbols.
closure
forms a Galois insertion with the coercion to set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Closure of a substructure S
equals S
.
Equations
- (_ : Small.{u, w} ↥⊥) = (_ : Small.{u, w} ↥⊥)
The preimage of a substructure along a homomorphism is a substructure.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The image of a substructure along a homomorphism is a substructure.
Equations
- One or more equations did not get rendered due to their size.
Instances For
map f
and comap f
form a GaloisCoinsertion
when f
is injective.
Equations
- One or more equations did not get rendered due to their size.
Instances For
map f
and comap f
form a GaloisInsertion
when f
is surjective.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
The natural embedding of an L.Substructure
of M
into M
.
Equations
- FirstOrder.Language.Substructure.subtype S = FirstOrder.Language.Embedding.mk { toFun := Subtype.val, inj' := (_ : Function.Injective fun (a : { x : M // x ∈ ↑S }) => ↑a) }
Instances For
The equivalence between the maximal substructure of a structure and the structure itself.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A dependent version of Substructure.closure_induction
.
Reduces the language of a substructure along a language hom.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Turns any substructure containing a constant set A
into a L[[A]]
-substructure.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The restriction of a first-order hom to a substructure s ⊆ M
gives a hom s → N
.
Equations
Instances For
A first-order hom f : M → N
whose values lie in a substructure p ⊆ N
can be restricted to a
hom M → p
.
Equations
- FirstOrder.Language.Hom.codRestrict p f h = FirstOrder.Language.Hom.mk fun (c : M) => { val := f c, property := (_ : f c ∈ p) }
Instances For
The range of a first-order hom f : M → N
is a submodule of N
.
See Note [range copy pattern].
Equations
- FirstOrder.Language.Hom.range f = FirstOrder.Language.Substructure.copy (FirstOrder.Language.Substructure.map f ⊤) (Set.range ⇑f) (_ : Set.range ⇑f = ⇑f '' Set.univ)
Instances For
The substructure of elements x : M
such that f x = g x
Equations
- One or more equations did not get rendered due to their size.
Instances For
If two L.Hom
s are equal on a set, then they are equal on its substructure closure.
The restriction of a first-order embedding to a substructure s ⊆ M
gives an embedding s → N
.
Equations
Instances For
A first-order embedding f : M → N
whose values lie in a substructure p ⊆ N
can be restricted
to an embedding M → p
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence between a substructure s
and its image s.map f.toHom
, where f
is an
embedding.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence between the domain and the range of an embedding f
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The embedding associated to an inclusion of substructures.
Equations
- One or more equations did not get rendered due to their size.