代数とプログラミング・モデリングの関係とは?

#本稿は素人が書いたメモですので,間違いだらけなのをあらかじめご承知ください.また間違いがあればご教示ください

代数はプログラミング/モデリングの数学的な基礎理論になっているようである.ここでは,代数とはなんだろうか,さらにそれがどのようにプログラミング/モデリングの基礎という役割を果たしているのかを自分なりの理解で考えてみようとしたときのメモである.

まず代数とは

代数:集合とその集合の上に定義された演算規則に派生する知識体系.群とか環とか体とかが代表的.

WEBでは以下が参考になる.

■概要
 代数は集合とその上に定義した演算について追求する学問です。従って単なる集合ではなく、集合がある程度の構造を持っています。代数系(algebraic system)は集合と演算子の2つの部分からなります。例えば整数全体に足し算を定義すれば、それは代数系です。集合をSとして、Sの上の演算 * とSの組を代数とします。 S と * を括弧でくくり、(S,*)などと表します。(参照→集合,半群,モノイド,群,環,体,代数系)。また、特別な代数系ブール代数があります。

 集合が有限のとき有限代数系(finite)、そうでないときは無限代数系(infinite)と呼ばれます。代数系では集合Sを代数の台と呼びます。  演算が1つの引数をとるとき、(f:S→S のとき)単項(unary)演算といいます。演算が2つの引数をとるとき、(f:S×S→S のときのf)2項(binary)演算といいます。演算が3つの引数をとるとき、(f:S×S×S→S のときのf)3項(ternary)演算といいます。

 表記する場合は、2項演算子は中置形で表記します。例えば 3×3 等の表記です。3項以上の演算子は前置形で表記します。例えば f(3,4,5,6) 等の表記です。

代数系は、演算子の持つ性質によって半群(semigroup)、モノイド(monoid)、群(group)、環(ring)、体(field)、などに分類されます。本用語集で扱うのはせいぜいガロア体と整数環で、しかも表面的です。それ以外の詳細は専門書や大学のHP等をあたってください。 (S:台 *:乗法 +:加法 0:加法単位元 1:乗法単位元)


■閉じた演算
代数系 (S,*) の閉じた演算とは、演算結果も S に含まれる演算のことです。

定義1) (S,*) が閉じている def⇔ ∀u,v ∈S , u*v∈S □

 例えば、偶数の集合は演算 +,− のもとで閉じている(closed) といいます。しかし、奇数の集合に関して演算 +,− は計算結果が奇数でないため、閉じているとはいえません。整数の集合の演算÷も閉じていません。 代数系では閉じた演算が基本です。




代数系(algebraic system)

プログラミング・モデリングの基礎としての代数の役割

代数がプログラミング・モデリングの基礎となっているのは以下の3つの点に大別されるような気がする。

  1. データ型の数学基礎理論として代数 http://d.hatena.ne.jp/x76789/20100527/1286187864
  2. 振舞い仕様記述の数学基礎理論としての代数(代数的仕様記述:OBJ, Maude, CASLなどhttp://d.hatena.ne.jp/x76789/20100527/1286187865
  3. 状態遷移系の数学基礎理論としての余代数 http://d.hatena.ne.jp/x76789/20100527/1286187866


以下にそれぞれ詳しく見ていく.