Skip to content

Commit

Permalink
fix(ja): Update Japanese translation 3-ch08
Browse files Browse the repository at this point in the history
  • Loading branch information
ktgw0316 committed Sep 1, 2024
1 parent b6aed1b commit 89c50fd
Showing 1 changed file with 10 additions and 11 deletions.
21 changes: 10 additions & 11 deletions japanese/part3/ch08.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# F-代数

モノイドについて、集合として、単一対象圏として、モノイダル圏の対象としての定式化を見てきた。この単純な概念からどれだけの果汁をさらに搾り取れるだろうか?

モノイドについて、集合や、単一対象圏や、モノイダル圏の対象としての定式化を見てきた。この単純な概念からどれだけの果汁をさらに搾り取れるだろうか?

やってみよう。次の関数のペアを持つ集合$m$としてのモノイドの定義を取り上げる:

Expand Down Expand Up @@ -29,14 +28,14 @@ $$m^{m\times{}m}\times{}m^1$$

$$m^{m\times{}m + 1}$$

記号$+$は$\Set$の余積を表す。ここで、関数のペアを次のような単一の関数――集合の要素――に置き換える:
記号 $+$ は$\Set$の余積を表す。ここで、関数のペアを次のような単一の関数――集合の要素――に置き換える:

$$m\times{}m + 1 \to m$$

この関数集合のどの要素も潜在的なモノイドだ。

この定式化の利点は、興味深い一般化を導くことだ。たとえば、この言語を使って群を記述するにはどうすればよいだろうか
群は、すべての要素に逆を対応させる関数が追加されたモノイドだ。後者は型$m \to m$の関数だ。たとえば、整数は群を形成し、二項演算として加算、単位元として0、否定として正負反転を持つ。群を定義するには次の3つの関数から始める:
この定式化の利点は、興味深い一般化を導くことだ。たとえば、この言語を使って群 (group) を記述するにはどうすればよいだろうか
群は、すべての要素に逆を対応させる関数が追加されたモノイドだ。後者の関数の型は$m \to m$だ。例を挙げると、整数は群を形成し、二項演算として加算、単位元として0、否定として正負反転を持つ。群を定義するには次の3つの関数から始める:

$$
\begin{aligned}
Expand All @@ -52,18 +51,18 @@ $$m\times{}m + m + 1 \to m$$

1つの二項演算子(加算)、1つの単項演算子(否定)、1つの零項演算子(恒等射――ここでは0)から始めた。そして、それらを1つの関数に結合した。このシグネチャーを持つすべての関数は、潜在的な群を定義する。

同様のことを続けられる。たとえば、環を定義するにはもう1つの二項演算子と1つの零項演算子を追加する、などだ。毎回、左辺が冪の和(0乗――終対象――を含んでよい)であり、右辺が集合自体である関数型が得られる
同様のことを続けられる。たとえば、環を定義するにはもう1つの二項演算子と1つの零項演算子を追加する、などだ。毎回、左辺が冪(0乗――終対象――を含んでよい)の和で、右辺が集合自体である関数型を得られる

きっと一般化に夢中になってしまうだろう。まず、集合を対象に、関数を射に置き換えられる。n項演算子は、n項積からの射として定義できる。これは有限積 (finite product) をサポートする圏が必要であることを意味する。零項演算子については、終対象が存在する必要がある。したがって、カルテシアン圏が必要だ。これらの演算子を結合するには冪が必要なので、必要なのはカルテシアン閉圏だ。最終的に、この代数的な悪ふざけを完成させるには、余積が必要になる。

あるいは、式の導出方法を忘れて、最終的な積に集中することもできる。射の左側にある積の和が自己関手を定義する。代わりに任意の自己関手$F$を選択するとどうなるだろう?
あるいは、式の導出方法を忘れて、最終的な積に集中してもよい。射の左側にある積の和は自己関手を定義している。代わりに任意の自己関手$F$を選択するとどうなるだろう?
その場合は圏に制約を課す必要はない。こうして得られたものはF-代数と呼ばれる。

F-代数は、1つの自己関手$F$、1つの対象$a$、1つの射からなるトリプルだ。
F-代数は、1つの自己関手$F$、1つの対象$a$と、次の1つの射からなるトリプルだ:

$$F\ a \to a$$

この対象はしばしば台 (carrier, underlying object) と呼ばれ、プログラミングの文脈ではキャリア**と呼ばれる。射は評価関数 (evaluation function) または構造マップ (structure map) と呼ばれることが多い。関手`F`が式を形成し、それを射が評価すると考えてほしい。
ここでの対象はしばしば台 (carrier, underlying object) と呼ばれ、プログラミングの文脈ではキャリア**と呼ばれる。また、射は評価射 (evaluation function, structure map) と呼ばれることが多い。関手`F`が式を形成し、それを射が評価すると考えてほしい。

HaskellによるF-代数の定義を示す:

Expand Down Expand Up @@ -93,7 +92,7 @@ data RingF a = RZero

これはHaskell$1 + 1 + a \times{}a + a \times{}a + a$を表したものだ

環の例としては整数の集合が挙げられる`Integer`をキャリア型に選ぶと評価関数を次のように定義できる
環の例としては整数の集合が挙げられる`Integer`をキャリア型に選ぶと評価関数を次のように定義できる

```haskell
evalZ :: Algebra RingF Integer
Expand Down Expand Up @@ -194,7 +193,7 @@ unFix (Fix x) = x

## F-代数の圏

この本の中で最も古いトリックについて述べよう:何か新しい対象を構築する方法を思いついたら、それらが圏を形成するかどうかを常に確認すべし。驚くことではないが、任意の自己関手$F$における代数は圏を形成する。その圏の対象は代数だ――台対象$a$と射$F\ a \to a$からなるペアで、どちらももとの圏$\cat{C}$からのものだ。
この本の中で最も古いトリックについて述べよう:何か新しい対象を構築する方法を思いついたら、それらが圏を形成するかどうかを常に確認すべし。驚くまでもなく、任意の自己関手$F$における代数は圏を形成する。その圏の対象は代数だ――台対象$a$と射$F\ a \to a$からなるペアで、どちらももとの圏$\cat{C}$からのものだ。

この描像を完全なものにするには、F-代数の圏における射を定義する必要がある。射は、ある代数 $(a, f)$ を別の代数 $(b, g)$ に写さなければならない。これを、台を写す射$m$――もとの圏で$a$から$b$へ向かう射――と定義する。どの射でもいいわけではなく、2つの評価子と互換性がなければならない。(構造を保存するそのような射を[準同型]{.keyword #homomorphism}と呼ぶ。)
F-代数の準同型を定義する方法は次のとおりだ。まず、$m$を次の写像にリフトできることに注目してほしい:
Expand Down

0 comments on commit 89c50fd

Please sign in to comment.