Fraïssé Classes and Fraïssé Limits #
This file pertains to the ages of countable first-order structures. The age of a structure is the class of all finitely-generated structures that embed into it.
Of particular interest are Fraïssé classes, which are exactly the ages of countable ultrahomogeneous structures. To each is associated a unique (up to nonunique isomorphism) Fraïssé limit - the countable ultrahomogeneous structure with that age.
Main Definitions #
FirstOrder.Language.ageis the class of finitely-generated structures that embed into a particular structure.- A class
KisFirstOrder.Language.Hereditarywhen all finitely-generated structures that embed into structures inKare also inK. - A class
KhasFirstOrder.Language.JointEmbeddingwhen for everyM,NinK, there is another structure inKinto which bothMandNembed. - A class
KhasFirstOrder.Language.Amalgamationwhen for any pair of embeddings of a structureMinKinto other structures inK, those two structures can be embedded into a fourth structure inKsuch that the resulting square of embeddings commutes. FirstOrder.Language.IsFraisseindicates that a class is nonempty, essentially countable, and satisfies the hereditary, joint embedding, and amalgamation properties.FirstOrder.Language.IsFraisseLimitindicates that a structure is a Fraïssé limit for a given class.
Main Results #
- We show that the age of any structure is isomorphism-invariant and satisfies the hereditary and joint-embedding properties.
FirstOrder.Language.age.countable_quotientshows that the age of any countable structure is essentially countable.FirstOrder.Language.exists_countable_is_age_of_iffgives necessary and sufficient conditions for a class to be the age of a countable structure in a language with countably many functions.FirstOrder.Language.IsFraisseLimit.nonempty_equivshows that any class which is Fraïssé has at most one Fraïssé limit up to equivalence.FirstOrder.Language.empty.isFraisseLimit_of_countable_infiniteshows that any countably infinite structure in the empty language is a Fraïssé limit of the class of finite structures.FirstOrder.Language.empty.isFraisse_finiteshows that the class of finite structures in the empty language is Fraïssé.
Implementation Notes #
- Classes of structures are formalized with
Set (Bundled L.Structure). - Some results pertain to countable limit structures, others to countably-generated limit structures. In the case of a language with countably many function symbols, these are equivalent.
References #
TODO #
- Show existence of Fraïssé limits
The Age of a Structure and Fraïssé Classes #
The age of a structure M is the class of finitely-generated structures that embed into it.
Equations
Instances For
A class K has the hereditary property when all finitely-generated structures that embed into
structures in K are also in K.
Equations
- FirstOrder.Language.Hereditary K = ∀ M ∈ K, L.age ↑M ⊆ K
Instances For
A class K has the joint embedding property when for every M, N in K, there is another
structure in K into which both M and N embed.
Equations
- FirstOrder.Language.JointEmbedding K = DirectedOn (fun (M N : CategoryTheory.Bundled L.Structure) => Nonempty (L.Embedding ↑M ↑N)) K
Instances For
A class K has the amalgamation property when for any pair of embeddings of a structure M in
K into other structures in K, those two structures can be embedded into a fourth structure in
K such that the resulting square of embeddings commutes.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A Fraïssé class is a nonempty, essentially countable class of structures satisfying the hereditary, joint embedding, and amalgamation properties.
- is_nonempty : K.Nonempty
- FG (M : CategoryTheory.Bundled L.Structure) : M ∈ K → Structure.FG L ↑M
- is_essentially_countable : (Quotient.mk' '' K).Countable
- hereditary : Hereditary K
- jointEmbedding : JointEmbedding K
- amalgamation : Amalgamation K
Instances
Any class in the age of a structure has a representative which is a finitely generated substructure.
The age of a countable structure is essentially countable (has countably many isomorphism classes).
The age of a direct limit of structures is the union of the ages of the structures.
Sufficient conditions for a class to be the age of a countably-generated structure.
A structure M is ultrahomogeneous if every embedding of a finitely generated substructure
into M extends to an automorphism of M.
Equations
- L.IsUltrahomogeneous M = ∀ (S : L.Substructure M), S.FG → ∀ (f : L.Embedding (↥S) M), ∃ (g : L.Equiv M M), f = g.toEmbedding.comp S.subtype
Instances For
A structure M is a Fraïssé limit for a class K if it is countably generated,
ultrahomogeneous, and has age K.
- ultrahomogeneous : L.IsUltrahomogeneous M
Instances For
Any embedding from a finitely generated S to an ultrahomogeneous structure M
can be extended to an embedding from any structure with an embedding to M.
A countably generated structure is ultrahomogeneous if and only if any equivalence between finitely generated substructures can be extended to any element in the domain.
If a class has a Fraïssé limit, it must be Fraïssé.
The Fraïssé limit of a class is unique, in that any two Fraïssé limits are isomorphic.
Any countable infinite structure in the empty language is a Fraïssé limit of the class of finite structures.
The class of finite structures in the empty language is Fraïssé.