Pushouts of Monoids and Groups #
This file defines wide pushouts of monoids and groups and proves some properties of the amalgamated product of groups (i.e. the special case where all the maps in the diagram are injective).
Main definitions #
Monoid.PushoutI
: the pushout of a diagram of monoids indexed by a typeι
Monoid.PushoutI.base
: the map from the amalgamating monoid to the pushoutMonoid.PushoutI.of
: the map from each Monoid in the family to the pushoutMonoid.PushoutI.lift
: the universal property used to define homomorphisms out of the pushout.Monoid.PushoutI.NormalWord
: a normal form for words in the pushoutMonoid.PushoutI.of_injective
: if all the maps in the diagram are injective in a pushout of groups then so isof
Monoid.PushoutI.Reduced.eq_empty_of_mem_range
: For any wordw
in the coproduct, ifw
is reduced (i.e none its letters are in the image of the base monoid), and nonempty, thenw
itself is not in the image of the base monoid.
References #
- The normal form theorem follows these notes from Queen Mary University
Tags #
amalgamated product, pushout, group
The relation we quotient by to form the pushout
Equations
- Monoid.PushoutI.con φ = conGen fun (x y : Monoid.Coprod (Monoid.CoprodI G) H) => ∃ (i : ι) (x' : H), x = Monoid.Coprod.inl (Monoid.CoprodI.of ((φ i) x')) ∧ y = Monoid.Coprod.inr x'
Instances For
The indexed pushout of monoids, which is the pushout in the category of monoids, or the category of groups.
Equations
- Monoid.PushoutI φ = (Monoid.PushoutI.con φ).Quotient
Instances For
The map from each indexing group into the pushout
Equations
- Monoid.PushoutI.of i = (Monoid.PushoutI.con φ).mk'.comp (Monoid.Coprod.inl.comp Monoid.CoprodI.of)
Instances For
The map from the base monoid into the pushout
Equations
- Monoid.PushoutI.base φ = (Monoid.PushoutI.con φ).mk'.comp Monoid.Coprod.inr
Instances For
Define a homomorphism out of the pushout of monoids be defining it on each object in the diagram
Equations
- Monoid.PushoutI.lift f k hf = (Monoid.PushoutI.con φ).lift (Monoid.Coprod.lift (Monoid.CoprodI.lift f) k) ⋯
Instances For
The equivalence that is part of the universal property of the pushout. A hom out of the pushout is just a morphism out of all groups in the pushout that satisfies a commutativity condition.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The data we need to pick a normal form for words in the pushout. We need to pick a canonical element of each coset. We also need all the maps in the diagram to be injective
- injective : ∀ (i : ι), Function.Injective ⇑(φ i)
All maps in the diagram are injective
- set : (i : ι) → Set (G i)
The underlying set, containing exactly one element of each coset of the base group
- one_mem : ∀ (i : ι), 1 ∈ self.set i
The chosen element of the base group itself is the identity
- compl : ∀ (i : ι), Subgroup.IsComplement (↑(φ i).range) (self.set i)
We have exactly one element of each coset of the base group
Instances For
All maps in the diagram are injective
The chosen element of the base group itself is the identity
We have exactly one element of each coset of the base group
The normal form for words in the pushout. Every element of the pushout is the product of an element of the base group and a word made up of letters each of which is in the transversal.
- toList : List ((i : ι) × G i)
- ne_one : ∀ l ∈ self.toList, l.snd ≠ 1
- chain_ne : List.Chain' (fun (l l' : (i : ι) × G i) => l.fst ≠ l'.fst) self.toList
- head : H
Every
NormalWord
is the product of an element of the base group and a word made up of letters each of which is in the transversal.head
is that element of the base group. All letter in the word are in the transversal.
Instances For
All letter in the word are in the transversal.
A Pair d i
is a word in the coproduct, Coprod G
, the tail
, and an element of the group G i
,
the head
. The first letter of the tail
must not be an element of G i
.
Note that the head
may be 1
Every letter in the tail
must be in the transversal given by d
.
Similar to Monoid.CoprodI.Pair
except every letter must be in the transversal
(not including the head letter).
- head : G i
- tail : Monoid.CoprodI.Word G
All letters in the word are in the transversal.
Instances For
All letters in the word are in the transversal.
The empty normalized word, representing the identity element of the group.
Equations
- Monoid.PushoutI.NormalWord.empty = { toWord := Monoid.CoprodI.Word.empty, head := 1, normalized := ⋯ }
Instances For
Equations
- Monoid.PushoutI.NormalWord.instInhabited = { default := Monoid.PushoutI.NormalWord.empty }
Equations
- Monoid.PushoutI.NormalWord.instInhabitedPair i = { default := let __src := Monoid.PushoutI.NormalWord.empty; { head := 1, tail := __src.1, fstIdx_ne := ⋯, normalized := ⋯ } }
Equations
- Monoid.PushoutI.NormalWord.baseAction = MulAction.mk ⋯ ⋯
Take the product of a normal word as an element of the PushoutI
. We show that this is
bijective, in NormalWord.equiv
.
Equations
- w.prod = (Monoid.PushoutI.base φ) w.head * Monoid.PushoutI.ofCoprodI w.prod
Instances For
A constructor that multiplies a NormalWord
by an element, with condition to make
sure the underlying list does get longer.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a word in CoprodI
, if every letter is in the transversal and when
we multiply by an element of the base group it still has this property,
then the element of the base group we multiplied by was one.
Given a pair (head, tail)
, we can form a word by prepending head
to tail
, but
putting head into normal form first, by making sure it is expressed as an element
of the base group multiplied by an element of the transversal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence between NormalWord
s and pairs. We can turn a NormalWord
into a
pair by taking the head of the List
if it is in G i
and multiplying it by the element of the
base group.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- Monoid.PushoutI.NormalWord.mulAction = MulAction.ofEndHom (Monoid.PushoutI.lift (fun (i : ι) => MulAction.toEndHom) MulAction.toEndHom ⋯)
Induction principle for NormalWord
, that corresponds closely to inducting on
the underlying list.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence between normal forms and elements of the pushout
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
All maps into the PushoutI
, or amalgamated product of groups are injective,
provided all maps in the diagram are injective.
See also base_injective
A word in CoprodI
is reduced if none of its letters are in the base group.
Equations
- Monoid.PushoutI.Reduced φ w = ∀ g ∈ w.toList, g.snd ∉ (φ g.fst).range
Instances For
For any word w
in the coproduct,
if w
is reduced (i.e none its letters are in the image of the base monoid), and nonempty, then
w
itself is not in the image of the base group.
The intersection of the images of the maps from any two distinct groups in the diagram into the amalgamated product is the image of the map from the base group in the diagram.