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.age
is the class of finitely-generated structures that embed into a particular structure.- A class
K
isFirstOrder.Language.Hereditary
when all finitely-generated structures that embed into structures inK
are also inK
. - A class
K
hasFirstOrder.Language.JointEmbedding
when for everyM
,N
inK
, there is another structure inK
into which bothM
andN
embed. - A class
K
hasFirstOrder.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. FirstOrder.Language.IsFraisse
indicates that a class is nonempty, isomorphism-invariant, essentially countable, and satisfies the hereditary, joint embedding, and amalgamation properties.FirstOrder.Language.IsFraisseLimit
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.
FirstOrder.Language.age.countable_quotient
shows that the age of any countable structure is essentially countable.FirstOrder.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.FirstOrder.Language.IsFraisseLimit.nonempty_equiv
shows that any class which is Fraïssé has at most one Fraïssé limit up to equivalence.FirstOrder.Language.empty.isFraisseLimit_of_countable_infinite
shows that any countably infinite structure in the empty language is a Fraïssé limit of the class of finite structures.FirstOrder.Language.empty.isFraisse_finite
shows 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 #
- [W. Hodges, A Shorter Model Theory][Hodges97]
- [K. Tent, M. Ziegler, A Course in Model Theory][Tent_Ziegler]
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
- L.age M = {N : CategoryTheory.Bundled L.Structure | FirstOrder.Language.Structure.FG L ↑N ∧ Nonempty (L.Embedding (↑N) M)}
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, isomorphism-invariant, essentially countable class of structures satisfying the hereditary, joint embedding, and amalgamation properties.
- is_nonempty : K.Nonempty
- FG : ∀ M ∈ K, FirstOrder.Language.Structure.FG L ↑M
- is_equiv_invariant : ∀ (M N : CategoryTheory.Bundled L.Structure), Nonempty (L.Equiv ↑M ↑N) → (M ∈ K ↔ N ∈ K)
- is_essentially_countable : (Quotient.mk' '' K).Countable
- hereditary : FirstOrder.Language.Hereditary K
- jointEmbedding : FirstOrder.Language.JointEmbedding K
- amalgamation : FirstOrder.Language.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
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
- age : L.age M = K
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é.