Free constructions #
Main definitions #
FreeMagma α
: free magma (structure with binary operation without any axioms) over alphabetα
, defined inductively, with traversable instance and decidable equality.MagmaAssocQuotient α
: quotient of a magmaα
by the associativity equivalence relation.FreeSemigroup α
: free semigroup over alphabetα
, defined as a structure with two fieldshead : α
andtail : List α
(i.e. nonempty lists), with traversable instance and decidable equality.FreeMagmaAssocQuotientEquiv α
: isomorphism betweenMagmaAssocQuotient (FreeMagma α)
andFreeSemigroup α
.FreeMagma.lift
: the universal property of the free magma, expressing its adjointness.
If α
is a type, then FreeAddMagma α
is the free additive magma generated by α
.
This is an additive magma equipped with a function FreeAddMagma.of : α → FreeAddMagma α
which has
the following universal property: if M
is any magma, and f : α → M
is any function,
then this function is the composite of FreeAddMagma.of
and a unique additive homomorphism
FreeAddMagma.lift f : FreeAddMagma α →ₙ+ M
.
A typical element of FreeAddMagma α
is a formal non-associative sum of
elements of α
. For example if x
and y
are terms of type α
then x + ((y + y) + x)
is a
"typical" element of FreeAddMagma α
.
One can think of FreeAddMagma α
as the type of binary trees with leaves labelled by α
.
In general, no pair of distinct elements in FreeAddMagma α
will commute.
- of {α : Type u} : α → FreeAddMagma α
- add {α : Type u} : FreeAddMagma α → FreeAddMagma α → FreeAddMagma α
Instances For
Equations
If α
is a type, then FreeMagma α
is the free magma generated by α
.
This is a magma equipped with a function FreeMagma.of : α → FreeMagma α
which has
the following universal property: if M
is any magma, and f : α → M
is any function,
then this function is the composite of FreeMagma.of
and a unique multiplicative homomorphism
FreeMagma.lift f : FreeMagma α →ₙ* M
.
A typical element of FreeMagma α
is a formal non-associative product of
elements of α
. For example if x
and y
are terms of type α
then x * ((y * y) * x)
is a
"typical" element of FreeMagma α
.
One can think of FreeMagma α
as the type of binary trees with leaves labelled by α
.
In general, no pair of distinct elements in FreeMagma α
will commute.
Instances For
Equations
Equations
Recursor for FreeAddMagma
using x + y
instead of FreeAddMagma.add x y
.
Equations
Instances For
Lifts a function α → β
to an additive magma homomorphism FreeAddMagma α → β
given
an additive magma β
.
Equations
Instances For
The universal property of the free additive magma expressing its adjointness.
Equations
Instances For
The unique additive magma homomorphism FreeAddMagma α → FreeAddMagma β
that
sends each of x
to of (f x)
.
Equations
Instances For
Recursor on FreeAddMagma
using pure
instead of of
.
Equations
Instances For
FreeMagma
is traversable.
Equations
Instances For
FreeAddMagma
is traversable.
Equations
Instances For
Representation of an element of a free magma.
Equations
Instances For
Representation of an element of a free additive magma.
Equations
Instances For
Length of an element of a free magma.
Equations
Instances For
Length of an element of a free additive magma.
Equations
Instances For
The length of an element of a free additive magma is positive.
Semigroup quotient of a magma.
Equations
Instances For
Additive semigroup quotient of an additive magma.
Equations
Instances For
Equations
Equations
Embedding from magma to its free semigroup.
Equations
Instances For
Embedding from additive magma to its free additive semigroup.
Equations
Instances For
Equations
Equations
Lifts a magma homomorphism α → β
to a semigroup homomorphism Magma.AssocQuotient α → β
given a semigroup β
.
Equations
Instances For
Lifts an additive magma homomorphism α → β
to an
additive semigroup homomorphism AddMagma.AssocQuotient α → β
given an additive semigroup β
.
Equations
Instances For
From a magma homomorphism α →ₙ* β
to a semigroup homomorphism
Magma.AssocQuotient α →ₙ* Magma.AssocQuotient β
.
Equations
Instances For
From an additive magma homomorphism α → β
to an additive semigroup homomorphism
AddMagma.AssocQuotient α → AddMagma.AssocQuotient β
.
Equations
Instances For
If α
is a type, then FreeAddSemigroup α
is the free additive semigroup generated by α
.
This is an additive semigroup equipped with a function
FreeAddSemigroup.of : α → FreeAddSemigroup α
which has the following universal property:
if M
is any additive semigroup, and f : α → M
is any function,
then this function is the composite of FreeAddSemigroup.of
and a unique semigroup homomorphism
FreeAddSemigroup.lift f : FreeAddSemigroup α →ₙ+ M
.
A typical element of FreeAddSemigroup α
is a nonempty formal sum of elements of α
.
For example if x
and y
are terms of type α
then x + y + y + x
is a
"typical" element of FreeAddSemigroup α
. In particular if α
is empty
then FreeAddSemigroup α
is also empty, and if α
has one term
then FreeAddSemigroup α
is isomorphic to ℕ+
.
If α
has two or more terms then FreeAddSemigroup α
is not commutative.
One can think of FreeAddSemigroup α
as the type of nonempty lists of α
, with addition
given by concatenation.
- head : α
The head of the element
- tail : List α
The tail of the element
Instances For
If α
is a type, then FreeSemigroup α
is the free semigroup generated by α
.
This is a semigroup equipped with a function FreeSemigroup.of : α → FreeSemigroup α
which has
the following universal property: if M
is any semigroup, and f : α → M
is any function,
then this function is the composite of FreeSemigroup.of
and a unique semigroup homomorphism
FreeSemigroup.lift f : FreeSemigroup α →ₙ* M
.
A typical element of FreeSemigroup α
is a nonempty formal product of elements of α
.
For example if x
and y
are terms of type α
then x * y * y * x
is a
"typical" element of FreeSemigroup α
. In particular if α
is empty
then FreeSemigroup α
is also empty, and if α
has one term
then FreeSemigroup α
is isomorphic to Multiplicative ℕ+
.
If α
has two or more terms then FreeSemigroup α
is not commutative.
One can think of FreeSemigroup α
as the type of nonempty lists of α
, with multiplication
given by concatenation.
- head : α
The head of the element
- tail : List α
The tail of the element
Instances For
Equations
Length of an element of free semigroup.
Equations
Instances For
Length of an element of free additive semigroup
Equations
Instances For
Equations
Equations
Recursor for free semigroup using of
and *
.
Equations
Instances For
Recursor for free additive semigroup using of
and +
.
Equations
Instances For
Lifts a function α → β
to a semigroup homomorphism FreeSemigroup α → β
given
a semigroup β
.
Equations
Instances For
Lifts a function α → β
to an additive semigroup
homomorphism FreeAddSemigroup α → β
given an additive semigroup β
.
Equations
Instances For
The unique additive semigroup homomorphism that sends of x
to of (f x)
.
Equations
Instances For
Recursor that uses pure
instead of of
.
Equations
Instances For
Recursor that uses pure
instead of of
.
Equations
Instances For
FreeSemigroup
is traversable.
Equations
Instances For
FreeAddSemigroup
is traversable.
Equations
Instances For
Equations
Equations
Isomorphism between AddMagma.AssocQuotient (FreeAddMagma α)
and
FreeAddSemigroup α
.