「またまたオセッカイなことを」と言われそうですが、、、、
http://d.hatena.ne.jp/oto-oto-oto/20090511/1242055892 :
他にもしりとり圏については、直積ができない、いや何とかなるんじゃないか、といった話も出た。
何ともなりません。しりとりの圏を変形したり拡張したりはしないで、今のままの形を保って直積を導入するのは不可能です。
対象を文字番号にすると解読がシンドイので、オリジナル版しりとりの圏にもどって、ひらがな文字そのものを対象にします。
例えば、対象'い'と対象'う'の直積 'い'×'う' が定義できたとすると、それに付随して射影が存在します。
- 第一射影 p:'い'×'う'→'い'
- 第二射影 q:'い'×'う'→'う'
さらに、任意の射 f:x→'い' 、g:x→'う' に対して次のような射が存在します。
- fとgのデカルトペアリング <f, g>:x→'い'×'う'
そして、次の等式が成立します。
- <f, g>;p = f
- <f, g>;q = g
ここまでは直積の定義そのものです。
さて、しりとりの圏特有の話として、射は文字列なので、文字列としての長さがあります。射(文字列ですね)fの長さを length(f) とすると、
- 任意のfに対して、 length(f) ≧ 1
- 結合可能な任意のf, gに対して、 length(f;g) = length(f) + length(g) - 1
が成立しますね(確認せよ)。
いま特に、f="あい":'あ'→'い' 、g="あう":'あ'→'う' と選んで、射影 p, q とデカルトペアリング <f, g> の長さをそれぞれ n, m, k としましょう。n, mは、f, gとは無関係で、'い'と'う'に対して決まる定数、kはf, gに依存して決まります。
- length(f) = 2
- length(g) = 2
- length(p) = n
- length(q) = m
- length(<f, g>) = k
先の等式の両辺のlengthを取ると、
- length(<f, g>;p) = length(f)
- length(<f, g>;q) = length(g)
これを計算すると、
- k + n - 1 = 2
- k + m - 1 = 2
いままでの条件を全部列挙すると、[追記]4.と5.の計算が間違っています。最後に修正を追加します。[/追記]
- n≧1
- m≧1
- k≧1
- k + n = 1
- k + m = 1
はい、残念でした。そんな n, m, k はありません。[追記]chiguri_sさんのコメントにより、足し算を間違えていた(つうか引き算していた)ことに気が付きました。2 + 1 は 3 ですね。そういえば、僕がサンプルで作った計算サーバーでも 1 + 1 の計算を間違えたのだった。
2 + 1 は 3 なので、
- n≧1
- m≧1
- k≧1
- k + n = 3
- k + m = 3
こういう n, m, k はあります! 可能性としては
- n = m = 1, k = 2
- n = m = 2, k = 1
1番目のケースを考えると、n = length(p) = 1, m = length(q) = 1 なので、pもqも恒等射ということになります(長さ1の射は恒等射しかありません)。p:'い'×'う'→'い' が恒等射だから、'い'×'う' = 'い'。一方、q:'い'×'う'→'う' が恒等射だから、'い'×'う' = 'う'。'い' と 'う' は違う対象だからこれは起こりえません。
今度は2番目のケース。k = length(<f, g>) = 1 なので、<f, g>が恒等射ということになります。<f, g>:'あ'→'い'×'う' なので、'い'×'う' = 'あ' ということになります。しかし、f, g として、"おい", "おう" を取れば、'い'×'う' = 'お' としなければならなくなり、'い'×'う' の一貫した定義はできません。
どうやってもうまく定義できねー。(これでいいかな。)[/追記]