正確さを証明するために、Barendregtの純粋な型システム(PTS)のプログラム等価性使用可能な概念を探しています。欠けている、十分な特定の型システム。私の目標は、単にその概念を使用することであり、それ自体を調査することではありません。
この概念は「拡張的」である必要があります。特に、であることを証明するには、あることを証明するのに十分でなければなりません適切なタイプのすべての値。トン1v
占領的同等性
占領的同等性は、すべての正しい補題を簡単に満たすことができますが、任意のPTSの表示セマンティクスは、かなり難しいようです。システムFの場合、すでに難しいように見えます。
文脈的/観察的同等性
明白な代替案は、さまざまな形の文脈的同等性です(2つの用語は、地上の文脈で区別できない場合は同等です)が、その定義はすぐには使用できません。さまざまな補題は証明するのは簡単ではありません。彼らはPTSのために証明されましたか?あるいは、理論は「明白な拡張」であるか、または理論が大幅に異なると信じる理由はありますか?
編集:私は上記の難しいことは言いませんでした。
簡単な部分:定義
同等性を定義することはそれほど難しいことではなく、その定義は多くの論文に記載されています(少なくともPlotkin 1975のPCFの研究から始まります。我々すべてのためならば地上コンテキスト、 -である、と同じ与える結果を。ここにはいくつかの選択肢があり、多くの選択肢があります。たとえば、強く正規化している言語で、グラウンドタイプの自然の場合、グラウンドコンテキストは自然を返すものでありは、と C C [ T 1 ] ≃ C [ T 2 ] C [ T 1 ] C [ T 2 ] A ≃ B B同じ数に評価します。非終了では、妥当な言語の場合、監視として「X終了」を使用するだけで十分です。これは、終了を監視するときに2つのプログラムが同等であれば、結果を監視するときにも同等であるためです。
難しい部分:証明
ただし、これらの論文では、この定義を実際に使用することがどれほど難しいかについて説明されていないことがよくあります。以下のすべての参考文献は、この問題に対処する方法を示していますが、必要な理論は人が考えるよりも難しいです。ことをどのように証明しますか?実際にケース分析とコンテキストの帰納を行いますか?あなたはそれをしたくありません。
Martin Bergerが指摘するように、代わりに、バイシミュレーション(Pittsによって行われる)または論理等価関係(Harperが単に「論理等価」と呼ぶ)のいずれかを使用する必要があります。
最後に、上で定義した拡張性をどのように証明しますか?
Harperは、かなりの賢さと論理的な関係を通じて、System Tのこれらの質問を10ページで解決しています。ピッツはもっとかかります。一部の言語はさらに複雑です。
これに対処する方法
私は実際にPTSの推測された等価性の理論に基づいて条件付きで証明をするように誘惑されますが、実際の理論は重要な議論を必要とするので、そのような推測がどれほど可能性が高いかわかりません。
私は次の作品を(詳細はしていませんが)知っています:
- Andrew Pitts(たとえば、拡張システムFのATTAPL、および58ページの「操作ベースのプログラム等価理論」などのいくつかの論文)。
- プログラミング言語の実用的な基礎(47〜48章)。これは、ピッツに触発されています(ただし、より単純な証明があると主張しています)。
- プログラムの等価性の論理的研究。私は英語の要約を見つけることができませんが、それは直交する複雑さのように見える副作用(参照)に多大な労力を費やしているようです。