この章では、関数が呼出されたとき動作の定義を行う前提となる公理を定める。
これらは実行環境の動作を厳密に定めるために導入するものであり、 多くの読者にとってこの章の内容は退屈なものだろう。
この仕様書において実行環境の動作が公理に基づいて定められている場合は、 実行環境はその裁量によって、その動作で定められた結果そのものの代わりに、 公理によってその結果と等しいと導かれる結果を用いても良い。
動作が公理を満たしていると見なして
という制約付きで定められている
場合は、実際に公理が満たされているかどうかに関わらず、公理が満たされていれば
正しい結果が得られるような一定の手順によって処理を行わなければならない。
すなわち、実際には公理が満たされていなくても、処理を行うのに支障がない限り、
公理が満たされている場合と同様の処理を行わなければならない
(そしてその結果は本来の結果に等しくなくても良い)。
実際には公理が満たされておらず、そのために処理の継続に支障がある場合は、
エラーとする。特に、結果が正常終了となることが公理によって保証される部分の結果が
正常終了でなかった場合は、直ちにその結果を公理に基づく処理全体の結果として返す。
オブジェクトの集合 S が相等関係の公理を満たしているとは、S に属する任意のオブジェクト a, b, c が以下の条件を全て満たすことである。
!!(a == a)
の評価結果は [[初期の
Boolean.true
]] である。!!(a == b) ===
!!(b == a)
の評価結果は [[初期の
Boolean.true
]] である。!!(a == b && b ==
c)
の評価結果が [[初期の Boolean.true
]]
ならば、式 !!(a == c)
の評価結果も
[[初期の Boolean.true
]] である。!!(a == b) ===
!(a != b)
の評価結果は [[初期の
Boolean.true
]] である。!!(a == b)
の評価結果が [[初期の
Boolean.true
]] であることは同値である。相等関係の公理は、==
演算子が同値関係であることを表している。
オブジェクト F が関数の公理を満たしているとは、以下の条件を満たすことである。
F[a1,
a2, …, an]
と
F[b1, b2, …,
bn]
の評価結果は等しい。関数の公理は、関数として呼出し可能なオブジェクトが (プログラミングにおける手続きとしての関数ではなく) 数学的な意味での関数であることを表す。
マグマとは、 特定の二項演算が定義されたオブジェクトの集合である。
オブジェクトの集合 S が加法に関するマグマの公理を満たしているとは、以下の条件を全て満たすことである。
a + b
の評価結果は正常終了であり、
その値もまた S に属する。オブジェクトの集合 S が乗法に関するマグマの公理を満たしているとは、以下の条件を全て満たすことである。
a * b
の評価結果は正常終了であり、
その値もまた S に属する。半群とは、演算に結合法則が成り立つマグマである。
オブジェクトの集合 S が加法に関する半群の公理を満たしているとは、以下の条件を全て満たすことである。
(a + b) + c
と
a + (b + c)
の評価結果は等しい。オブジェクトの集合 S が乗法に関する半群の公理を満たしているとは、以下の条件を全て満たすことである。
(a * b) * c
と
a * (b * c)
の評価結果は等しい。モノイドとは、単位元のある半群である。
オブジェクトの集合 S が加法に関するモノイドの公理を満たしているとは、以下の条件を全て満たすことである。
Math$zero
という名前のプロパティを持ち、その値もまた S
に属する。そして S に属する任意のオブジェクト b について式
a.Math$zero + b
および
b + a.Math$zero
の評価結果は
b
の評価結果に等しい。オブジェクトの集合 S が乗法に関するモノイドの公理を満たしているとは、以下の条件を全て満たすことである。
Math$one
という名前のプロパティを持ち、その値もまた S
に属する。そして S に属する任意のオブジェクト b について式
a.Math$one * b
および
b * a.Math$one
の評価結果は
b
の評価結果に等しい。群とは、逆演算の可能なモノイドである。
オブジェクトの集合 S が加法に関する群の公理を満たしているとは、以下の条件を全て満たすことである。
-a
の評価結果は正常終了であり、
その値もまた S に属する。そして式
-a + a
および
a + -a
の評価結果は
a.Math$zero
の評価結果に等しい。a - b
と
a + -b
の評価結果は等しい。オブジェクトの集合 S が乗法に関する群の公理を満たしているとは、以下の条件を全て満たすことである。
/a
の評価結果は正常終了であり、
その値もまた S に属する。そして式
/a * a
および
a * /a
の評価結果は
a.Math$one
の評価結果に等しい。a / b
と
a * /b
の評価結果は等しい。可換群とは、演算に交換法則が成り立つ群である。
オブジェクトの集合 S が加法に関する可換群の公理を満たしているとは、以下の条件を全て満たすことである。
a + b
と
b + a
の評価結果は等しい。オブジェクトの集合 S が乗法に関する可換群の公理を満たしているとは、以下の条件を全て満たすことである。
a * b
と
b * a
の評価結果は等しい。環とは、 加法・減法・乗法が定義されたオブジェクトの集合である。 環は加法に関する可換群である。また環の加法と乗法には分配法則が成り立つ。
オブジェクトの集合 S が環の公理を満たしているとは、以下の条件を全て満たすことである。
a * (b + c)
と
a * b + a * c
の評価結果は等しく、また式
(a + b) * c
と
a * c + b * c
の評価結果も等しい。単位的環とは、乗法に単位元が存在する環である。
オブジェクトの集合 S が単位的環の公理を満たしているとは、S が環の公理と乗法に関するモノイドの公理の両方を満たしていることである。
斜体とは、 四則演算が定義されたオブジェクトの集合である。加法は可換であるが、 乗法は可換とは限らない。
オブジェクトの集合 S が斜体の公理を満たしているとは、以下の条件を全て満たすことである。
Math$zero
プロパティの値と等しい
オブジェクトを除いた集合は、乗法に関する群の公理を満たす。体とは、加法だけでなく乗法も可換な斜体である。
オブジェクトの集合 S が体の公理を満たしているとは、S が斜体の公理と乗法に関する可換群の公理の両方を満たしていることである。
© 2006-2007 Magicant