論理プログラミングの「極限」は逆像として表すことができることがわかりましたが、逆像は「引き戻し」として表すことができるようです。「引き戻し」は「極限」で表すことができるのでここから考えていきます。
環の理論を使ってクライアント側の関数プログラミングの入出力をサーバー側で無限の時間実行されるプログラムの中に入れていくためのデザインパターンを作る、ということが今のところの目標ですが、この方向で良いのかどうかわかりませんし、できるのかどうかもよくわかりません。
ということで、圏論の極限について見ていきます。
極限の定義
(Wikipediaによる)
を における形が の図式であるとします(これは関手 のことを表します)。
の対象 と の対象 で添え字付けられた射の族 の組 が、全ての の射 が を満たすものを への錐と呼びます。
への錐 が、任意の への錐 に対して一意な射 が存在して、 の全ての対象 が を満たすとき、図式 の極限と呼びます。
(斜めの線が書けないので可換図式を書くのは難しい)
引き戻し
(Wikipediaによる)
2つの射 と に対して、以下の条件を満たす対象 と2つの射 と の組を引き戻しと呼びます。
- 以下の可換図式が成り立ちます。
- 以下の左の図式が可換であるような の組に対して 、 を満たす射 が一意的に存在します。
これを極限の定義を使って書いてみます。圏 を以下のようなものとします。すなわち対象 、、 と射 、 と恒等射からなる圏とします。
図式(関手) により、以上のものに対応する先の圏 の対象と射を 、、、、 とします。
図式 への錐は以下の図式が可換となる対象 と射 、、 の組となります。
は他のもので表すことができるので省略すると、以下の可換図式が成り立つものということになります。
図式 への錐 は以下の可換図式を満たすものです。
図式 への錐 が以下の条件を満たすとき図式 の極限となります。
- 任意の への錐 に対して、 の全ての対象 が を満たす一意な射 が存在します。
は2つの射 と に対する引き戻しになっています。