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.age
is the class of finitely-generated structures that embed into a particular structure.- A class
K
has thefirst_order.language.hereditary
when all finitely-generated structures that embed into structures inK
are also inK
. - A class
K
has thefirst_order.language.joint_embedding
when for everyM
,N
inK
, there is another structure inK
into which bothM
andN
embed. - A class
K
has thefirst_order.language.amalgamation
when for any pair of embeddings of a structureM
inK
into other structures inK
, those two structures can be embedded into a fourth structure inK
such that the resulting square of embeddings commutes. first_order.language.is_fraisse
indicates that a class is nonempty, isomorphism-invariant, essentially countable, and satisfies the hereditary, joint embedding, and amalgamation properties.first_order.language.is_fraisse_limit
indicates 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_quotient
shows that the age of any countable structure is essentially countable.first_order.language.exists_countable_is_age_of_iff
gives 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é.