このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

論理(学)と仕様

僕は、マークアップとプログラミング(i.e. XML構文とソフトウェア)をつなぐものは仕様技術だと思っています。よって当然、仕様の理論に興味があるわけ。

仕様技術についてヨーク考えてみると、それは結局、論理(logic)*1と同じことに気がつきます。元来は論理的な概念である充足(satisfaction)と伴意(entailment)が、仕様においても核心となる概念です。

α、βなどが何らかの表明/条件式(たとえばホーア論理式で書かれた制約)だとして、実装Mに対して、「M satisfies α」という言明(メタ表明、judgement)にハッキリした意味を持たせない限り、仕様の議論は何もできません。

「M satisfies α」は論理(モデル論)における「M |= α」とまったく同じこと(だと定義できます)。まー、実際には、仕様(制約)が1個の論理式で書けるとは限らないので、A = {α1, α2, ...}を論理式の集合(これが仕様記述に対応する)として、「M satisfies A」を、「A satisfies α1 かつ A satisfies α2 かつ … 」として定義しておきましょう。

そうすれば、仕様における伴意(entailment)「A entails B」は、

  • M satisfies A となるようなMに対しては常に M satisfies B

であること、として定義できます。言い換えれば、

  • 仕様Aを満たす実装Mは、常に仕様Bも満たしている

そのときに、A entails B なわけですね。

*1:「論理学」と書いたほうが誤解が少ないかもしれない。「論理」や「ロジック」はいろいろな意味で使われるから。