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.FirstOrder.Language.Substructure.PartialEquivis defined so thatPartialEquiv L M Nis the type of equivalences between substructures ofMandN.
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
The underlying set of this substructure
Instances For
Equations
- FirstOrder.Language.Substructure.instSetLike = { coe := FirstOrder.Language.Substructure.carrier, coe_injective' := ⋯ }
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.
Instances For
The substructure M of the structure M.
Equations
- FirstOrder.Language.Substructure.instInhabited = { default := ⊤ }
The inf of two substructures is their intersection.
Equations
- FirstOrder.Language.Substructure.instInf = { min := fun (S₁ S₂ : L.Substructure M) => { carrier := ↑S₁ ∩ ↑S₂, fun_mem := ⋯ } }
Equations
- FirstOrder.Language.Substructure.instInfSet = { sInf := fun (s : Set (L.Substructure M)) => { carrier := ⋂ t ∈ s, ↑t, fun_mem := ⋯ } }
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
Instances For
Alias of FirstOrder.Language.Substructure.notMem_of_notMem_closure.
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.
The preimage of a substructure along a homomorphism is a substructure.
Equations
- FirstOrder.Language.Substructure.comap φ S = { carrier := ⇑φ ⁻¹' ↑S, fun_mem := ⋯ }
Instances For
The image of a substructure along a homomorphism is a substructure.
Equations
- FirstOrder.Language.Substructure.map φ S = { carrier := ⇑φ '' ↑S, fun_mem := ⋯ }
Instances For
map f and comap f form a GaloisCoinsertion when f is injective.
Equations
Instances For
map f and comap f form a GaloisInsertion when f is surjective.
Equations
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
- S.subtype = { toFun := Subtype.val, inj' := ⋯, map_fun' := ⋯, map_rel' := ⋯ }
Instances For
The equivalence between the maximal substructure of a structure and the structure itself.
Equations
Instances For
A dependent version of Substructure.closure_induction.
Reduces the language of a substructure along a language hom.
Equations
- φ.substructureReduct = { toFun := fun (S : L'.Substructure M) => { carrier := ↑S, fun_mem := ⋯ }, inj' := ⋯, map_rel_iff' := ⋯ }
Instances For
Turns any substructure containing a constant set A into a L[[A]]-substructure.
Equations
- S.withConstants h = { carrier := ↑S, fun_mem := ⋯ }
Instances For
The restriction of a first-order hom to a substructure s ⊆ M gives a hom s → N.
Equations
- f.domRestrict p = f.comp p.subtype.toHom
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
Instances For
The range of a first-order hom f : M → N is a submodule of N.
See Note [range copy pattern].
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
- f.domRestrict p = f.comp p.subtype
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
- FirstOrder.Language.Embedding.codRestrict p f h = { toFun := ⇑(FirstOrder.Language.Hom.codRestrict p f.toHom h), inj' := ⋯, map_fun' := ⋯, map_rel' := ⋯ }
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.