Motivation
In Haskell, there are a bunch of so-called type classes that are theoretically "alike":
class Monoid m where mempty :: m mappend :: m -> m -> m class (Applicative f) => Alternative f where empty :: f a (<|>) :: f a -> f a -> f a class Category c where id :: c x x (.) :: c y z -> c x y -> c x z
When I see such patterns, I like to know how they can be generalized. So I called these structures "associative n-coids" for the time being, and tried to find such structures for $n>2$.
Definition
Just to be clear, I use the notation $X^n$ ($n \in \mathbb{N}$) for $\underbrace{X \times X \times \cdots X}_n \}$.
$X^0 = \{ () \}$ is a bit of a special case.
0-coid
A 0-coid of $F:X^0\rightarrow Y$ equips $F$ with:
- a binary operation $\ast : F1 \times F1 \rightarrow F1$, and
for every $A\in X^0$, an element $\epsilon_A \in F1$, such that $\epsilon_A$ is:
- the left unit of $\left.\ast\right|_{F1 \times F1 \rightarrow F1}$, and
- the right unit of $\left.\ast\right|_{F1 \times F1 \rightarrow F1}$.
1-coid
A 1-coid of $F:X^1\rightarrow Y$ equips $F$ with:
- a binary operation $\ast : FA \times FA \rightarrow FA$, and
for every $A\in X$, an element $\epsilon_A \in FA$, such that $\epsilon_A$ is:
- the left unit of $\left.\ast\right|_{FA \times FA \rightarrow FA}$, and
- the right unit of $\left.\ast\right|_{FA \times FA \rightarrow FA}$.
2-coid
A 2-coid of $F:X^2\rightarrow Y$ equips $F$ with:
- a binary operation $\ast : FAB \times FBC \rightarrow FAC$, and
for every $A\in X$, an element $\epsilon_A \in FAA$, such that $\epsilon_A$ is:
- the left unit of $\left.\ast\right|_{FAA \times FAB \rightarrow FAB}$ for every $B\in X$, and
- the right unit of $\left.\ast\right|_{FBA \times FAA \rightarrow FBA}$ for every $B\in X$.
Questions, part 1
- I'm unsure about my terminology. If you find any mistakes, please correct them :)
The difference between the definitions of 0-coids and 1-coids seems inelegant to me. Why does this happen? Is $X^0$ the culprit here? If so, have I over-generalized this structure?-edit- I see what's going on now. What I'm doing here is diagonalizing ($FAA$) after quantifying ($A\in X$). What I should be doing is quantifying ($FS$) after diagnoalizing ($S\in \delta X$).
However, this would introduce a lot of clutter in the definition (I'd need to project the tuples to give the types for $\ast$). I'm only doing this to fit 0-coids into the pattern, which seems like an bad justification. I think I have over-generalized this idea.
Perhaps 0-coids should only be noted as a special case of 1-coids (cf. "Reductibility").
- I assume a 0-coid of $F$ forms a unital magma $(F1,\ast)$. Is this correct?
- I assume an associative 2-coid of $F$ is a category $C$, with $\text{Ob}(C)=X$, $\text{Hom}_C(A,B)=FAB$, $1_X = \epsilon_X$, and $f \circ g = g \ast f$. Is this correct?
Reductibility
Any 0-coid on $F:X^0 \rightarrow Y$ can be reduced to a 1-coid on $F':(X^0)^1\rightarrow Y:(()) \mapsto F()$.
Any 1-coid on $F:X^1 \rightarrow Y$ can be reduced to any n-coid on $F':X^n \rightarrow Y:A \mapsto FA\cdots{}A$.
Questions, part 2
- I can't come up with n-coids for $n>2$ that follows the pattern I've seen above. I suspect $n$ is limited by the arity of $\ast$. How can I rationalize this?
- When I move to ternary n-coids, I can imagine definitions for 0-coids, 1-coids, and 3-coids (with $\ast : F\underline{A}BC \times FB\underline{C}D \times FCD\underline{E} \rightarrow FACE$, underlining added for emphasis). However, I can't think of a definition for 2-coids that follows the patterns. This leads me to believe that, for k-ary n-coids, only $n=0$, $n=1$ and $n=k$ make sense. Is this the case?
- Is there an established name for k-ary k-coids?