「依存的に入力されたLambda calculusのチュートリアル実装」に関する質問
-
29-09-2020 - |
質問
この素晴らしいチュートリアルとのわずかな技術的闘争をしています。 5 Page 5でチュートリアルは、単純化されたLambdasのタイピングルールについて話し、図3の規則を介して導体としての次の判断を提示します。
id
もconst
も同じ理由で証明できませんでした。例えばid
の例を取ります。
- タイプチェックルール
CHK
を探しているとします。check types
のために最初に推論を実行してから、私が期待するものと結果を比較する必要があると言います。 - アプリケーション上の推論をするために、私はすぐに私にアプリケーションの左側のタイプを推測するように
APP
ルールを使用しなければなりません。つまり、(id :: α -> α)
- それをするために、
ANN
を使用してα -> α
がタイプであることを確認する(そして私はそれが問題ないことを証明することができます)。それから私はこの裸のid
シンボルを手に入れました、そしてそれがα -> α
になるようにそれがあることを証明する必要があります。 - 最後に、ここに問題があります。それをするためには、Contextガンマの種類を明示的に設定することが必要ですが、それが行われていない、それが行われていない、それが行われていない、それが行われていない
var
ルールを使用する必要があります。
解決
$ \ mathsf {ID} $ と $ \ mathsf {const} $ は、の変数ではありません。 $ \ lambda x \ reglarrow x $ と $ \ lambda "> $ \ lambda x \ reglarrow \ lambda y \それぞれrightarrow x $ 。これは、§2.2の終わりに記載されており、イタリック体ではなくサンセリフフォントの使用によって微妙に伝えられています(これは一般的な規則ではなく、この特定の文書の活版印刷規則です)。
SOは、例えばタイプ判定です $$ \ alpha :: \ ass、y :: \ alpha \ vdash(\ mathsf {id} :: \ alpha \ ritarrow \ alpha)\:y :: \ ritarrow \ alpha $$ タイプ判断もあります $$ \ alpha :: \ asst、y :: \ alpha \ vdash(\ Lambda X \ Rightarrow X :: \ Alpha \ Rightarrow \ Alpha)\:y :: \ ritarrow \ alpha 。 $$ 同じ数学的オブジェクトの異なる表記です。
所属していません cs.stackexchange