Isomorphisms, Embeddings, and Substructures #
We define isomorphisms between finite structures, prove they form an equivalence relation, and show that isomorphic structures have the same cardinality. We also define embeddings and substructures.
An isomorphism between two finite structures over the same vocabulary.
The forward map on the universe
The inverse map on the universe
Left inverse
Right inverse
- rel_map (i : Fin V.numRels) (args : Fin (V.relArity i) → Fin A.card) : A.rel i args ↔ B.rel i (self.toFun ∘ args)
Relations are preserved
Constants are preserved
Instances For
A ≅ B denotes an isomorphism between finite structures A and B.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The identity isomorphism.
Equations
Instances For
Composition of isomorphisms.
Equations
Instances For
Isomorphic structures have the same cardinality.
An embedding of structure A into structure B.
The embedding function
- injective : Function.Injective self.toFun
The embedding is injective
- rel_map (i : Fin V.numRels) (args : Fin (V.relArity i) → Fin A.card) : A.rel i args → B.rel i (self.toFun ∘ args)
Relations are preserved (forward direction only)
Constants are preserved
Instances For
Every isomorphism gives an embedding.
Equations
- Complexity.DescriptiveComplexity.Embedding.ofIso f = { toFun := f.toFun, injective := ⋯, rel_map := ⋯, const_map := ⋯ }
Instances For
Structure A is a substructure of B if there is an inclusion that both preserves and reflects relations.
The inclusion function
- injective : Function.Injective self.toFun
The inclusion is injective
- rel_iff (i : Fin V.numRels) (args : Fin (V.relArity i) → Fin A.card) : A.rel i args ↔ B.rel i (self.toFun ∘ args)
Relations are preserved and reflected
Constants are preserved
Instances For
Every structure is a substructure of itself.
Equations
- Complexity.DescriptiveComplexity.IsSubstructure.refl A = { toFun := id, injective := ⋯, rel_iff := ⋯, const_map := ⋯ }
Instances For
Substructure is transitive.