Recently I am learning Lawvere Theories.
I watched a video of Dr. Emily Riehl on youtube (https://youtu.be/6t6bsWVOIzs).
She said that "If we cut down the T-program between finite sets and formally turn around arrows, that is a Lawvere theory".
It's great, so I do some experiments about this.
- I want to use a lawvere theory to describe Mon.
- I choice the Kleisili category for the List monad.
- I choice 3 morphisms named $μ_k$, $1+μ_k$, $μ_k+1$ in this category to verify following diagram commute.
μ_k : {x1} -> {x1,x2}
μ : {x1} -> List {x1,x2}
μ = λx.[x1,x2]
1+μ_k : {x1,x2} -> {x1,x2,x3}
1+μ : {x1,x2} -> List {x1,x2,x3}
1+μ = (λx.[x1], λx.[x2,x3])
μ_k+1 : {x1,x2} -> {x1,x2,x3}
μ+1 : {x1,x2} -> List {x1,x2,x3}
μ+1 = (λx.[x1,x2], λx.[x3])
Note that $μ_k$, $1+μ_k$, $μ_k+1$ are morphisms in KLeisili category and I use dot line to describe them. μ
, 1+μ
, μ+1
are corresponding morphisms in the underlying category Set. The implement of 1+μ
and μ+1
are pair of functions which means that when case analyze x1
, apply first component, when case analyze x2
, apply second component.
If we compose the morphisms above (e.g. use bind operator if you know Haskell), the diagram must be commute.
My question is:
Why μ
can not be inserted into the implement of 1+μ
and μ+1
?
If you look into 1+μ
, the name of it seems like "id+μ" or "(id, μ)" , why we can't use μ and id to replace the implementation of 1+μ
?
For example:
1+μ = (id, μ) -- where id = λx.[x]
This seems to be a more natural to impelement 1+μ
, but we can not do that, because
λx.[x2,x3] ≠ λx.[x1,x2]
Unless we define μ like this
μ = λx. case x1 [x1,x2]
case x2 [x2,x3]
case x3 [x3,x4]
....
But since μ : {x1} -> List {x1,x2}
, we can't do that...
This is very weird, because if we turn around the arrows, in the oppsite category, all $μ^{op}_k$ are the same arrow.
Very thanks.