プログラム翻訳の完全な完全性と完全な抽象化


15

コンパイラー検証の努力は、多くの場合、コンパイラーが完全に抽象的であることを証明することに帰着します。つまり、(コンテキストの)同等性を保持および反映します。

代わり長谷川[により、いくつかの最近(カテゴリベース)コンパイラ検証作業を完全抽象プルーフを提供する12 ]とエッガーら。等 [ 3 ]さまざまなCPS翻訳の完全性を証明します。

質問: 完全な完全性と完全な抽象化の違いは何ですか?

私にとって、完全性は翻訳の等価性の反映のように見え、完全性は等価性の保存の結果であるように見えます。

:Curien [ 7 ]とAbramsky [ 8 ]はともに、定義可能性、完全な抽象化、およびある程度完全な完全性の間の関係を調査します。これらのリソースには私の質問に対する答えがあるかもしれませんが、表面を読んだ後、私はまだそれを確認していません。

背景:「完全な完全性」という用語は、乗算線形論理のゲームセマンティックモデルの正確さを特徴付けるために、アブラムスキーとジャガディーサン[ 4 ] によって作られました。

Blute [ 5 ]は以下の定義を提供します:

してみましょうF無料カテゴリなります。私たちは、カテゴリモデルと言う Mあるため、完全に完全に Fまたは我々が持っていること の完全な完成度Fに関してMの発電機のいくつかの解釈に関して、場合、ユニークな無料ファンクタ[[]]:FMがいっぱいです。

私の知る限り、[ 6 ]の長谷川は、完全な完全性を適用して、カテゴリーの意味モデルではなくプログラムの翻訳を記述する最初の人物です。この場合、ギラード変換は、単純に型指定されたラムダ計算から線形ラムダ計算になります。後に、[ 1 ]で、彼はCPS翻訳の完全 definesを次のように定義しています()

もしで誘導線形ラムダ計算は、存在Γ Mはσように計算ラムダ計算におけるΓ ○はM = N σ O O線形ラムダ計算に保持します。Γ;N:(σo)oΓM:σΓ;M=N:(σo)o

は線形ラムダ計算(ターゲット言語)の基本型ですが、計算ラムダ計算(ソース言語)ではありません。)o

私にとっては、長谷川の定義は完全性のように思えるので、完全性を得るには完全性と組み合わせる必要があります。

Egger et。等 [ 3 ] CPS変換の完全な完全性を(1)完全性と(2)完全性の組み合わせとして定義する:()v

(1):もしΘのV | - MのV = β η N Vτ V次にΘ M = λ C N τΘM,N:τΘv|Mv=βηNv:!τvΘM=λcN:τ

(2):もし、その後用語が存在 Θ M τようΘのVは| - MのV = β η T τ VΘv|t:!τvΘM:τΘv|Mv=βηt:!τv

(ここで Moggiの計算等式理論です)=λc


[1]「線形に使用される効果:線形ラムダ計算への単項およびCPS変換」、長谷川2002

[2]「名前による連続継続受渡しの意味論」、長谷川2004

[3]「強化効果計算における線形使用CPS翻訳」、Egger et。等 2012

[4]「乗法線形論理のゲームと完全な完全性」、アブラムスキーとジャガディーサン1992

[5]「線形論理学者のカテゴリー理論」、Blute 2003

[6]「ジラール翻訳と論理述語」、長谷川2000

[7]「定義可能性と完全な抽象化」、Curien 2007

[8]「定義可能性と完全な完全性の公理」、アブラムスキー1999

回答:


12

残念ながら、ここで行われていることが多すぎます。だから、物事を混ぜることは簡単です。「完全な完全性」および「完全な抽象化」における「完全な」の使用は、完全に異なる完全なアイデアを指します。しかし、それらの間にはあいまいなつながりもあります。したがって、これは複雑な答えになるでしょう。

完全な完全性:「健全で完全」は、セマンティクスに関して従来のロジックに必要なプロパティです。健全性とは、ロジックで証明できるものがセマンティックモデルで正しいことを意味します。完全性とは、セマンティックモデルに当てはまるものがすべてロジックで証明可能であることを意味します。特定のセマンティックモデルに対して論理は健全で完全であると言います。建設的な論理に来るとき 「完全な完全性」とは、「建設的な完全性」または「証明的な完全性」を意味します。これは完全な抽象化とは関係ありません。、Martin-Lof型理論や線形論理など、式が証明可能かどうかだけでなく、その証明が何であるかにも注意を払っています。証明可能な式には多くの証明があり、建設的なロジックはそれらを区別したい場合があります。したがって、建設的ロジックのセマンティクスには、式が真であるかどうかだけでなく、その真理に対する「証明」(「証拠」)の抽象的なセマンティック概念も指定する必要があります。アブラムスキーと同僚は、論理の証明がモデルのすべての意味論的証明を表現できることを意味する「完全性」という用語を作り出しました。したがって、「フル」はここでの証明を指します。 「完全な」ロジックは、必要なすべてを証明できます。「完全な」ロジックには、必要なすべての証拠があります。

完全な抽象化:「適切かつ完全に抽象的」は、プログラミング言語のセマンティックモデルに必要なプロパティです。(最初の違いに注意してください:現在、セマンティックモデルのプロパティを扱っています言語のプロパティではありません!)妥当性とは、セマンティックモデルで2つの用語が同じ意味を持つ場合、プログラミング言語で(実行の概念に関して)観察的に同等であることを意味します。完全な抽象化とは、2つの用語が観察上同等である場合、セマンティックモデルで同じ意味を持つことを意味します。これらのアイデアは健全性と完全性に関連している可能性がありますが、やや不自然な方法です。プログラミング言語のセマンティックモデルを「論理的」または「証明方法」と見なして観察的等価性について話す場合、妥当性とは、この証明方法が適切であることを意味します。完全な抽象化とは、この証明方法が完全であることを意味します。「完全性」という概念はありません証明方法。(しかし、そのようなことは理論的に可能であり、最近では誰かがそうするかもしれません。)

あなたの場合、意味モデルよりも翻訳に興味があります。適切性と完全な抽象化のプロパティは、次のように翻訳を処理するために拡張できます。ターゲット言語を「セマンティックモデル」、つまり何らかの形で完全に理解している形式主義と考えます。もしそうなら、それと同等の概念があります。次に、2つのソースプログラムの翻訳がターゲット言語で同等である場合は常に、それらがソース言語で観察的に同等であれば、翻訳は適切であると言います。2つのソースプログラムがソース言語で観察的に同等である場合、その翻訳がターゲット言語で同等である場合、それは完全に抽象的であると言います。

τ(M)τ(N)MN
MNτ(M)τ(N)
MNτ(M)τ(N)

AA

N:τ(A).M:A.τ(M)=N

完全な完全性と完全な抽象化との間のあいまいな関係のために。セマンティックモデルまたは翻訳が完全に抽象的であることを証明するには、多くの場合定義可能性が伴います。これは、私たちの言語が一般に高次だからです。したがって、セマンティックモデルまたはターゲット言語の「コンテキスト」が多すぎると、用語またはセマンティックの意味を望ましくない方法で突いて、それらの等価性を損なうことができます。「望ましくない方法」とは、プログラミング言語自体がそれらを突破できない方法を意味します。したがって、完全に抽象化するには、セマンティックモデルまたはターゲット言語で使用可能な「コンテキスト」が、何らかの形でソース言語の「コンテキスト」から来ていることを確認する必要があります。これは完全な完全性プロパティに関連することに注意してください。

なぜそのようなプロパティが必要なのでしょうか?持っている、何もコンパイラと関係がある!ソース言語がターゲット言語に埋め込まれていると主張するために、これらのプロパティが必要です。特定のターゲット言語に満足している場合(クリーン、理解可能、何らかの基本的または神から与えられたものとして)、ソース言語がそれに組み込まれている場合、ソース言語に新しいものはないと主張できます。これは、ターゲット言語のほんの一部であり、私たちが知っていて愛しています。それは単なる構文糖です。そのため、特定のターゲット言語が優れていることを確認するために、完全に抽象的な翻訳が提供されます。また、対処する大きなまたは複雑な言語を持っている人からも与えられます。そのため、セマンティクスを直接定義するのではなく、コア言語に翻訳してから、コア言語にセマンティクスを与えます。たとえば、Haskellレポートはこれを行います。しかし、ソース言語は大きく複雑であるため、これらの翻訳の完全な抽象化はほとんど証明されていません。人々は、翻訳が良いと信じています。

繰り返しますが、これはコンパイラとは関係ありません。コンパイラが適切または完全に抽象的であることはほとんどありません。そして、彼らはそうである必要はありません!コンパイラが行う必要があるのは、完全なプログラムの実行動作を維持することだけです。コンパイラのターゲット言語は一般的に巨大です。つまり、同等性を台無しにする可能性のある多くのコンテキストがあります。したがって、ソース言語の同等のプログラムは、コンパイル時にコンテキスト的に同等になることはほとんどありません。


私たちが本当に完全に「理解」している言語はないということはどういう意味ですか?
マーティンバーガー

建設的な証明方法を表すセマンティックモデルをまだ誰も作成していないということはどういう意味ですか?
マーティンバーガー

1
申し訳ありませんが、以前のテキストと比較して、「翻訳」の意味は間違った方向に思えます。たとえば、PCFの完全な抽象化はM≅N⟹τ(M)≅τ(N)を要求します(τは表示の意味論であり、シンボルを変更する必要性を無視します):あなたが言うように、「完全な抽象化は、 2つの用語は観察的に同等であり、セマンティックモデルで同じ意味を持ちます。しかし、その意味は逆です(つまり、τ(M)≅τ(N)⟹M≅Nと書きます)!または、翻訳は表示的意味論とは異なる働きをしますか?
ブレイザーブレード14年

1
@Blaisorblade:あなたは絶対に正しいです!回答のテキストを修正しました。
ウダイレディ

1
完全な抽象化は、言語レベルのセキュリティ、および潜在的に言語間の統合にとっても興味深いものです。すなわち、ターゲット言語ではソース言語の抽象化に違反するものは何もないことを知っておくと便利です。
dmbarbour

5

要約:完全な完全性とは、解釈関数が完全であるだけでなく、プログラムの全容であることを意味します。完全な抽象化には、全射性の要件はありません。

[[.]]

  • A[[A]]

  • Γ[[Γ]]

  • ΓP:α[[Γ]][[P]]:[[α]]

カテゴリー解釈では、最初の2つのマップは1つになります。解釈関数は、さまざまなプロパティを持つことができます。例えば、構成、終了の保持、または...完全な抽象化はそのようなプロパティの1つです。その完全な抽象化を思い出してください[[.]]

PSQ     iff     [[P]]T[[Q]]

P,QSTターゲット言語のためにその役割を果たしています。より正確には、入力された設定になっているため、

PΓ,αSQ     iff     [[P]][[Γ]],[[α]]T[[Q]]
Γ,α,P,Q[[.]]

[[.]]

[[.]][[Γ]]Q:[[α]]ΓP:αQ=[[P]][[.]]

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