Peter wrote:
Toby wrote:
This is a reasonable requirement anyway, since the unit is the 0fold iterated hom, just as it's the 0fold iterated product.
What is the "0fold iterated" of a non-associative operation?
OK, admittedly it's a bit ambiguous, and I should not have used the adverb "just". But given a finite list (X_i : i < n) of n sets (or other objects), the n-fold iterated hom may be defined by recursion on n as follows: * The 0fold iterated hom of the empty list is the unit object; and * the (n + 1)fold iterated hom of the list (X_i : i < n + 1) is hom[Y,X_n], where Y is the n-fold iterated hom of (X_i : i < n). Of course, you might use hom[X_n,Y] instead, but (even if you change the base case) this will not work. It would work if you make the 1fold version the base case, so there are (at least) two notions of iterated hom, but only one of these has a 0fold case. If you use exponential notation for the hom, then the n-fold iterated hom has a well-known notation $ X_{n-1} ^ {X_{n-2} ^ {X_{n-3} ^ {\rddots ^ {X_2 ^ {X_1 ^ {X_0}}}}}} $ (in TeX, where |rddots| is the reverse of the standard |ddots|). The version using hom[X_n,Y], although written in a more pleasant order, required parentheses (or can be rewritten using multiplication). On the other hand, logicians (using implication for the hom) require parentheses for my iterated hom. Note that the 0fold case relies on the property hom[1,X] = X, so a ~general~ nonassociative operation doesn't have a 0fold iteration. A nonassociative operation both distinct left and right units would have two (a priori) equally justified 0fold iterations. --Toby