意味保存の健全性(または正確性)または完全性


7

用語をある言語から別の言語に変換する場合、直感的に望ましいプロパティは、セマンティクスの保持です(たとえば、ここではCPS変換に使用されます)。

svcscv

しかし、これを古典的な用語の正しさ(または健全性)と論理システムの完全性と一致せることで、少し問題があります。通常、私は上記のステートメントをの完全性プロパティと見なし(正しさの定義を逆にします)。c

ただし、直感的には、コンパイラーは完全ではなく正しいはずです(たとえば、型チェックは正しいプログラムを除外することが多いため)。上記の文の逆は、が単射である場合にのみ当てはまります。たとえば、ソース言語にブールとその演算が含まれていて、コンパイルでChurch-encodingを使用して置き換えられた場合、ターゲット言語はブールリテラルからコンパイルされた用語のブール演算を評価できます。ソース言語が評価できないラムダ抽象化。c

  1. 上記のステートメントがの完全性プロパティであると仮定するのは正しいのでしょうか?c
  2. 私はまた、非単射コンパイラは通常正しくないという私の結論で正しいのでしょうか?

回答:


3

これは実際に運用上の通信の概念についての質問です。

Daniele Gorlaによるプロセス計算のエンコード可能性と分離結果への統一されたアプローチに向けた論文(http://wwwusers.di.uniroma1.it/~gorla/papers/G-CONCUR08.pdf)は、プロセス間の翻訳の正確さの基準に関するものです。結石。

ゴーラは彼の作品で、行動の同等性の概念を導入しています。説明を過度に複雑にしないために、ここでは省略します。

しましょう [[]] エンコーディングにしよう 1 ソース言語に対して定義された遷移関係であり、 2ターゲット言語に対して定義された遷移関係である。それがあれば

  • もし S1S その後 [[S]]2[[S]]、エンコーディングが完了したと言います
  • もし [[S]]2T、次に存在します S そのような S1S そして T2[[S]]エンコーディングはサウンドと言います。

だから、はい、質問で言及されている概念は確かに完全性の概念です。健全性の概念は、ターゲット言語がターゲット言語よりも豊富であるか、動作がソース言語の何にも対応しない構文構造を含むことが多いという事実によって形成されます。これが、中間構成について説明する理由です。T 定義では、注射を要求する代わりに。


ワンステップ導出について確信がありますか S1S私は紙を掘り下げたところ、一見したところ、彼らは多段階の導出を使用しているようです。これはまた、健全性を混乱させます:なぜそのプロパティにSからS 'までの1つのステップが必要なのですか?
choeger 2016年

いいえ、確かに健全性の定義には削減シーケンスが必要です。意図された解釈は、エンコーディング[[S]] 元のステートメントを忠実にシミュレートできます S; いつでも[[S]] は、還元シーケンスを実行します。これは、結果が、 S。回答を更新しました。
HansHüttel、2016年

2

直観的に言えば、評価の概念が定義されている言語に対する変換の正しさの特性は、用語が特定のセマンティクスを持っている場合、その変換による用語のイメージは、そのセマンティクスのイメージに評価されることを示します。つまり、正しいコンパイラとは、プログラムを同じ動作をする別のプログラムに変換するコンパイラです(ターゲット言語で表現されます)。

ここで、私はあなたの記法から、ソース言語は用語の言語であると推測します s 評価の概念 sv という意味です s (任意の数のステップで)値に減少する v。正しいコンパイラc 任意のプログラムを変換するものです s コンパイルされたプログラムに cs 対応するコンパイラ値に評価されます cv

これは、値がそれ自体にコンパイルされる場合のWikipediaの定義に対応します。s プロパティがあります v その後もそうです cs

サウンドコンパイラは単射である必要はありません。同じセマンティクスを持つ異なるソースプログラムを同じコンパイル済みプログラムにコンパイルすることは可能であり、非常に一般的です。

コンパイラーは一般的に完全ではありません。コンパイラーの出力にはならない用語をコンパイルされた言語で使用するのが一般的です。つまり、コンパイラーは全射ではありません。


あなたはハンスの答えの正確な反対者を言っているのですか?それは面白い。あなたの私の表記の解釈は正しいですが、物事を明確にするために:あなたはその記述を正確であると見なします(したがって、その逆は完全です)?
choeger

@choeger厳密に言えば、私は正しさを「すべての人のために s そして vcs 存在し、 sv その後 cv 存在し、 scv」。ソース言語がセマンティクスを定義するものであることを考えると、定量化する方法がわかりませんsvcscv完全性にするためです。
Gilles「SO-邪悪なことをやめなさい」16/10/21
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.