原です。

最近 [ruby-talk:90667][ruby-math:2] の豊福さんの疑問:

  なぜ * は可換なのに ** は非可換なのか?

というのが話題になってました。ruby-math でなされた議論を読
み返すと、いまひとつ豊福さんの意図をとらえきれてないような
ので再論します。結局

   + の繰り返しである * は可換だが、* の繰り返し ** は
  非可換である、それでは + の * に無いどういう性質が *
  を可換にさせているのだろうか?

という話です。まず結論を言うと、

  + のどんな性質が欠けても * は可換にならない。

です。これを証明します。

一般に2項演算 @ があったとき、それの繰り返しを @' と書くこ
とにします。つまり、自然数 m, n に対して

  m @' n = m @ m @ ... @ m    (m は n 個)

と定義します。もちろん m @' 1 == m  ... <*>  です。
このとき次が成り立ちます。

【定理】@ が associative な2項演算とするとき次の3つは同値。
  (1) @' は abelian。
  (2) @ は +。
  (3) @' は *。

(証明)(1) => (2) を言う。
    m @ n = (m @' 1) @ (n @' 1)                                (<*>)
          = (1 @' m) @ (1 @' n)                        (@'がabelian)
          = (1 @ 1 @ .. @ 1) @ (1 @ 1 @ .. @ 1)  (m,n個の1,@'の定義)
          = 1 @ 1 @ .. @ 1               (m+n個の1,@のassociativity)
          = 1 @' (m + n)                                  (@'の定義)
          = (m + n) @' 1                               (@'がabelian)
          = m + n.                                             (<*>)

   更に (2) => (3) は * の定義。(3) => (1) は明らか。

と、いうわけで「+ の * に無いどういう性質が * を可換にさせ
ているのか?」という問いには「+ の全ての性質がそろって初め
て * を可換にしている。」と答えるのが適切なわけです。更に
「** はなぜ可換でないのか?」という問いには「* が + でない
から」あるいは「** が * でないから」というのが冗談抜きで(?)
正しい答えなわけです。

これで納得いくでしょうか。「数の神秘」の一種?