Equations
- treeConcat (Lf a) = [a]
- treeConcat (tl ⋆ tr) = treeConcat tl ++ treeConcat tr
Instances For
Equations
- rightJoinTrees (Lf a) t2 = Lf a ⋆ t2
- rightJoinTrees (tl ⋆ tr) t2 = tl ⋆ rightJoinTrees tr t2
Instances For
Equations
- rightAssociateTree (Lf a) = Lf a
- rightAssociateTree (tl ⋆ tr) = rightJoinTrees (rightAssociateTree tl) (rightAssociateTree tr)
Instances For
theorem
AssocImpliesForkEquivRightJoin
{α : Type u_1}
{G : Type u_2}
[Magma G]
(assoc : Equation4512 G)
(f : α → G)
(tl tr : FreeMagma α)
:
tl ⋆ tr ⬝ f = rightJoinTrees tl tr ⬝ f
theorem
AssocFullyRightAssociate
{α : Type u_1}
{G : Type u_2}
[Magma G]
(assoc : Equation4512 G)
(f : α → G)
(t : FreeMagma α)
:
t ⬝ f = rightAssociateTree t ⬝ f
- Singleton: {α : Type u_1} → α → FreeSemigroup α
- Cons: {α : Type u_1} → α → FreeSemigroup α → FreeSemigroup α
Instances For
Equations
- semigroupConcat (FreeSemigroup.Singleton a) s2 = FreeSemigroup.Cons a s2
- semigroupConcat (FreeSemigroup.Cons a s1tail) s2 = FreeSemigroup.Cons a (semigroupConcat s1tail s2)
Instances For
Equations
- instMagmaFreeSemigroup α = { op := semigroupConcat }
Equations
Instances For
Equations
- evalInSgr f (FreeSemigroup.Singleton a) = f a
- evalInSgr f (FreeSemigroup.Cons a s1tail) = f a ◇ evalInSgr f s1tail
Instances For
def
evalInSgrHom
{α : Type u_1}
{G : Type u_2}
[Magma G]
(assoc : Equation4512 G)
(f : α → G)
:
FreeSemigroup α →◇ G
Equations
- evalInSgrHom assoc f = { toFun := evalInSgr f, map_op' := ⋯ }
Instances For
theorem
evalInSgrHom.mapper
{α : Type u_1}
{G : Type u_2}
[Magma G]
(assoc : Equation4512 G)
(f : α → G)
(ls1 ls2 : FreeSemigroup α)
:
Equations
- foldFreeSemigroup (FreeSemigroup.Singleton a) = a
- foldFreeSemigroup (FreeSemigroup.Cons a s1tail) = a ◇ foldFreeSemigroup s1tail
Instances For
theorem
AssocImpliesSgrProjFaithful
{α : Type u_1}
{G : Type u_2}
[Magma G]
(assoc : Equation4512 G)
(f : α → G)
(t : FreeMagma α)
:
Equations
- insertSgrSorted i (FreeSemigroup.Singleton j) = if i ≤ j then FreeSemigroup.Cons i (FreeSemigroup.Singleton j) else FreeSemigroup.Cons j (FreeSemigroup.Singleton i)
- insertSgrSorted i (FreeSemigroup.Cons j lstail) = if i ≤ j then FreeSemigroup.Cons i (FreeSemigroup.Cons j lstail) else FreeSemigroup.Cons j (FreeSemigroup.Cons i lstail)
Instances For
Equations
- insertionSortSgr (FreeSemigroup.Singleton j) = FreeSemigroup.Singleton j
- insertionSortSgr (FreeSemigroup.Cons j lstail) = insertSgrSorted j (insertionSortSgr lstail)
Instances For
theorem
CommSgrImpliesInsertSortedFaithful
{n : ℕ}
{G : Type u_1}
[Magma G]
(assoc : Equation4512 G)
(comm : Equation43 G)
(f : Fin n → G)
(i : Fin n)
(ls : FreeSemigroup (Fin n))
:
evalInSgr f (insertSgrSorted i ls) = f i ◇ evalInSgr f ls
theorem
CommSgrImpliesInsertionSortFaithful
{n : ℕ}
{G : Type u_1}
[Magma G]
(assoc : Equation4512 G)
(comm : Equation43 G)
(f : Fin n → G)
(ls : FreeSemigroup (Fin n))
:
evalInSgr f ls = evalInSgr f (insertionSortSgr ls)
Equations
- involutionReduce (FreeSemigroup.Singleton a) = FreeSemigroup.Singleton a
- involutionReduce (FreeSemigroup.Cons a (FreeSemigroup.Singleton b)) = FreeSemigroup.Cons a (FreeSemigroup.Singleton b)
- involutionReduce (FreeSemigroup.Cons a (FreeSemigroup.Cons b lstail)) = if a = b then involutionReduce lstail else FreeSemigroup.Cons a (involutionReduce (FreeSemigroup.Cons b lstail))
Instances For
def
InvolutiveImpliesInvolutionReduceFaithful
{α : Type u_1}
[DecidableEq α]
{G : Type u_2}
[Magma G]
(ls : FreeSemigroup α)
(invol : Equation16 G)
(f : α → G)
:
evalInSgr f ls = evalInSgr f (involutionReduce ls)
Equations
- ⋯ = ⋯
Instances For
Equations
- equation1571Reducer t = involutionReduce (insertionSortSgr (freeMagmaToFreeSgr (t ⋆ (Lf (Fin.last n) ⋆ Lf (Fin.last n)))))
Instances For
theorem
AbGrpPow2ImpliesEquation1571ReducerFaithful
{n : ℕ}
{G : Type u_1}
[Magma G]
(t : FreeMagma (Fin (n + 1)))
(f : Fin (n + 1) → G)
(assoc : Equation4512 G)
(comm : Equation43 G)
(invol : Equation16 G)
:
t ⬝ f = evalInSgr f (equation1571Reducer t)