Fraïssé Classes and Fraïssé Limits #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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 #
first_order.language.ageis the class of finitely-generated structures that embed into a particular structure.- A class
Khas thefirst_order.language.hereditarywhen all finitely-generated structures that embed into structures inKare also inK. - A class
Khas thefirst_order.language.joint_embeddingwhen for everyM,NinK, there is another structure inKinto which bothMandNembed. - A class
Khas thefirst_order.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. first_order.language.is_fraisseindicates that a class is nonempty, isomorphism-invariant, essentially countable, and satisfies the hereditary, joint embedding, and amalgamation properties.first_order.language.is_fraisse_limitindicates 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.
first_order.language.age.countable_quotientshows that the age of any countable structure is essentially countable.first_order.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.
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 and uniqueness 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
- L.age M = {N : category_theory.bundled L.Structure | first_order.language.Structure.fg L ↥N ∧ nonempty (L.embedding ↥N M)}
A class K has the hereditary property when all finitely-generated structures that embed into
structures in K are also in K.
Equations
- first_order.language.hereditary K = ∀ (M : category_theory.bundled L.Structure), M ∈ K → L.age ↥M ⊆ K
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
- first_order.language.joint_embedding K = directed_on (λ (M N : category_theory.bundled L.Structure), nonempty (L.embedding ↥M ↥N)) K
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.
- is_nonempty : K.nonempty
- fg : ∀ (M : category_theory.bundled L.Structure), M ∈ K → first_order.language.Structure.fg L ↥M
- is_equiv_invariant : ∀ (M N : category_theory.bundled L.Structure), nonempty (L.equiv ↥M ↥N) → (M ∈ K ↔ N ∈ K)
- is_essentially_countable : (quotient.mk '' K).countable
- hereditary : first_order.language.hereditary K
- joint_embedding : first_order.language.joint_embedding K
- amalgamation : first_order.language.amalgamation K
A Fraïssé class is a nonempty, isomorphism-invariant, essentially countable class of structures satisfying the hereditary, joint embedding, and amalgamation properties.
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.
- ultrahomogeneous : L.is_ultrahomogeneous M
- age : L.age M = K
A structure M is a Fraïssé limit for a class K if it is countably generated,
ultrahomogeneous, and has age K.
If a class has a Fraïssé limit, it must be Fraïssé.