意味論的意味論では操作上の意味論ではできない質問に答えることができますか?


14

プログラミング言語を定義するための操作上のセマンティクス(小さなステップと大きなステップの両方)に精通しています。表記法のセマンティクスの学習にも興味がありますが、努力する価値があるかどうかはわかりません。異なる視点から同じ教材を学習しているだけでしょうか、それとも表示的意味論を理解することからしか得られない洞察はありますか?

回答:


11

構成的でなければならないことを除いて、表示的意味論を特徴付けるものは実際には一致していません(この記事も参照)。つまり、\ newcommand {\ SEMB} [1] {\ lbrack \!\ lbrack#1 \ rbrack \!\ rbrack} \ SEMB {\ cdot}がセマンティック関数である場合、プログラムを次のような意味にマッピングしますすべてのn項プログラムコンストラクタfおよびすべてのプログラムM_1、...、M_n(暗黙的に適切に型付けされていると仮定)の場合に該当する必要があります。[[]]nfM1Mn

[[f(M1,...,Mn)]]=trans(f)([[M1]],...,[[Mn]])

ここで、trans(f)はセマンティックドメインのfに対応するコンストラクタです。合成性は代数の準同型の概念に似ています。

この意味で、操作上のセマンティクスは構成的ではありません。歴史的には、操作的セマンティクスが構成的ではなかったため、表示的セマンティクスが部分的に開発されました。D.スコットの画期的なλ -calculusの順序理論的意味論的セマンティクスに続いて、ほとんどの意味論的意味論はかつて順序論的でした。私は、純粋な知的関心とは別に、表象的な意味論がほとんど発明されたと想像します。

  1. 以前は、操作上のセマンティクスについて推論するのは困難でした。
  2. 以前は、自明でないセマンティクスを自明でない言語に与えることは困難でした。

問題の一部は、プログラムの平等という概念が現在ほどよく理解されていないことでした。私は、両方の問題がかなり改善されていると主張します(1)たとえば、プロセス理論(操作的セマンティクスの特定の形式と見なすことができます)から派生するバイシミレーションベースの技術によって(2)型付きπ計算でのプログラミング言語の埋め込みを介して、ヘネシー・ミルナー型の型付きバージョンとして派生した分離ロジックやホアロジックなどの開発による。プログラムロジック(=公理的セマンティクス)も構成的であることに注意してください。

表記法のセマンティクスを見る別の方法は、多くのプログラミング言語があり、それらはすべて似ているように見えるため、シンプルでありながら普遍的なメタ言語を見つけ、すべてのプログラミング言語をそのメタ言語。1960年代には、いくつかの型付き計算がそのメタ言語であると考えられていました。写真は1000以上の単語を言うかもしれません:λ

ここに画像の説明を入力してください

このアプローチの利点は何ですか?経済的なPOVから見るのが理にかなっているかもしれません。オブジェクトプログラムのクラスについて興味深いことを証明したい場合、2つのオプションがあります。

  • オブジェクトレベルで直接証明します。

  • メタレベルへの変換(およびその逆)がプロパティを「保持」することを証明し、メタレベルでそれを証明してから、結果をオブジェクトレベルに戻します。

後者の合計コストはおそらく前者のコストよりも高いでしょう、翻訳を証明するコストは将来のすべての使用にわたって償却できますが、メタレベルのプロパティを証明するコストは証明のコストよりもはるかに小さくなりますオブジェクトレベルで。

オブジェクト指向、並行性、分散計算などの複雑な言語機能には正確な順序理論的セマンティクスがまだ与えられていないため、表示的セマンティクスに対する元の順序論的アプローチは、これまでのところこの約束に応えていません。「正確」とは、そのような言語の自然な操作上のセマンティクスと一致するセマンティクスを意味します。


表示的意味論を学ぶ価値はありますか?もしあなたがプログラミング言語の理論で働きたいなら、そして古い論文を理解する必要がなければ、表示論的意味論への順序理論的アプローチを意味するなら、おそらくそうではないでしょう。表示的セマンティクスに対する順序理論的アプローチを学習するもう1つの理由は、このアプローチの美しさです。


4

私は書くつもりだけのためにので、(とが存在しない場合)、ために表示的意味論。両方のセマンティクスを適切に定義すると、ほとんどの場合ことに注意してください。またはを意味するを書きます。σ 'P σ σ 'D P P O P σ = D P σ )、S P σ O P σ D p O(p,σ)σp,σσD(p)pO(p,σ)=D(p)(σ)S(p)σO(p,σ)D(p)

次に、コンパイラます。コンパイラであると言うことは、セマンティクス、つまり保持することを意味します。操作上のセマンティクスを使用してそれを証明しようとする場合、任意のおよび任意の、に対してそれを証明する必要があります。表示的意味論を使用してそれを証明するために、あなただけのいずれかのためにそれを証明しなければなら、。を定量化する必要がないため、多くの作業を節約できます。C:XXS(C(p))=S(p)pσO(C(p),σ)=O(p,σ)pD(C(p))=D(p)σ

愚かな例:

q ; q s k i p ; q ; s k i p ; q ; s k i p C(p)=すべてを置き換えます。(q;q)(skip;q;skip;q;skip)

表示的意味論では、帰納法による証明を行うだけで、がコンパイラーであることが簡単にわかります。操作上のセマンティクスでは、派生を取得し、スキップを説明するために派生の断片をどこにでもプラグインする必要があり、それは悪夢です。CpC

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.