始代数
数学において、始代数 (しだいすう、英: initial algebra) とは、与えられた自己関手 F に対する F-代数の圏における始対象を言う。始代数の持つ始対象性 (initiality) は帰納や再帰といったものの一般の枠組みを与える。
始代数の圏論的双対概念として、F-余代数の圏の終対象は終余代数(しゅうよだいすう、英: final coalgebra)と呼ばれる。終余代数の終対象性 (finality) は余帰納や余再帰といった概念の一般な枠組みを与える。
が A を台集合として、X に 1 + (A × X) を対応させる Set の自己函手 F に対する F-代数を与えることを注意しよう。実はこれが唯一の F-始代数となる。この始代数が持つ始対象性は、HaskellやMLのような関数型プログラミング言語でfoldrと呼ばれている関数によって与えられる。
同様に、葉に要素を持つ二分木は、
[ t i p , j o i n ] : A + ( T r e e ( A ) × T r e e ( A ) ) → T r e e ( A ) {\displaystyle [\mathrm {tip} ,\mathrm {join} ]\colon A+(\mathrm {Tree} (A)\times \mathrm {Tree} (A))\to \mathrm {Tree} (A)}
の与える始代数として得ることができる。この方法で得られるデータ型を代数的データ型と呼ぶ。
函手 F から構成される最小不動点を用いて定義されたデータ型は、 F-代数と見なすことができ、またこのデータ型がパラメトリシティ(英語版)を持つようにすることができる。双対に移って、最大不動点と F-終余代数の間に同様の関係が成立し、余帰納的データ型に応用される。これらを、強正規化性を維持しながら可能無限のオブジェクトを扱うことを許すために用いることができる。強正規化を行うプログラミング言語Charityの、余帰納的データ型は驚くべき結果を得ることが出来る。 例えば、アッカーマン関数のような"強い"関数を実装するために参照の構成要素を定義する。