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.Substructureis defined so thatL.Substructure Mis the type of all substructures of theL-structureM. FirstOrder.Language.Substructure.closureis defined so that ifs : Set M,closure L sis the least substructure ofMcontainings.FirstOrder.Language.Substructure.comapis defined so thats.comap fis the preimage of the substructuresunder the homomorphismf, as a substructure.FirstOrder.Language.Substructure.mapis defined so thats.map fis the image of the substructuresunder the homomorphismf, as a substructure.FirstOrder.Language.Hom.rangeis defined so thatf.rangeis the range of the homomorphismf, as a substructure.FirstOrder.Language.Hom.domRestrictandFirstOrder.Language.Hom.codRestrictrestrict the domain and codomain respectively of first-order homomorphisms to substructures.FirstOrder.Language.Embedding.domRestrictandFirstOrder.Language.Embedding.codRestrictrestrict the domain and codomain respectively of first-order embeddings to substructures.FirstOrder.Language.Substructure.inclusionis the inclusion embedding between substructures.
Main Results #
L.Substructure Mforms 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.Homs 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.