用語をある言語から別の言語に変換する場合、直感的に望ましいプロパティは、セマンティクスの保持です(たとえば、ここではCPS変換に使用されます)。
しかし、これを古典的な用語の正しさ(または健全性)と論理システムの完全性と一致させることで、少し問題があります。通常、私は上記のステートメントをの完全性プロパティと見なし(正しさの定義を逆にします)。
ただし、直感的には、コンパイラーは完全ではなく正しいはずです(たとえば、型チェックは正しいプログラムを除外することが多いため)。上記の文の逆は、が単射である場合にのみ当てはまります。たとえば、ソース言語にブールとその演算が含まれていて、コンパイルでChurch-encodingを使用して置き換えられた場合、ターゲット言語はブールリテラルからコンパイルされた用語のブール演算を評価できます。ソース言語が評価できないラムダ抽象化。
- 上記のステートメントがの完全性プロパティであると仮定するのは正しいのでしょうか?
- 私はまた、非単射コンパイラは通常正しくないという私の結論で正しいのでしょうか?