なぜП型に別の表記を必要とするのですか?
-
29-09-2020 - |
質問
main
私は、並びにλ2のタイプシステムで見つけることができるП型の表記の必要性の背後にある動機について混乱しています。答えは通常そのようになります - Identity関数の署名を表すことができる方法について考えます - それはλa:type.λx:a.x
またはλb:type.λx:b.x
にすることができます。微妙な部分は、それらが言うと、これら2つの署名はnot equal
だけでなく、それらが型変数の型変数としてAlpha-italyではなく、a
はそれらの対応抽象化の内部での自由変数ではありません。そのため、このペスキーの構文上の問題を克服するために、アルファ変換でうまく演奏する順式を提示します。
だから質問:なぜですか? Alpha-Timalenceの概念を修正するだけではありませんか?
更新Z:
OH、MEの愚かな、b
とλa:type.λx:a.x
はアルファ当量です。しかし、なぜλb:type.λx:b.x
とa:type -> a -> a
が存在します。
SUC Z:
AHA、興味深い、これは選択的盲検性= d
の完全な例であると思います本タイプ理論と正式な証明、およびIN Lambda2 Authorについての章は、b:type -> b -> b
:П
と正確に\t:*.\v:t.v
を使用して* -> t -> t
の存在をモービティブ化します。 \t:*.\v:t.v
は実際にはアルファ不変です。 \g:*.\v:g.v
とt:* -> t -> t
の違いを考えています。しかし、それはこの議論を少し些細にするわけではなく、t:* -> t -> t
と* -> t -> t
がどんな定量化因子変数によってバインドされていないタイプa -> b
についても意味のあるものでさえあります。
a
は、b
が実際には、追加のベルと笛を伴うラムダの抽象化に似ています。
解決
ここでまっすぐなことを手に入れる必要があると思います:
-
式 $ \ lambda a:\ mathsf {type}で
- 。 \ Lambda x:a。 X $ 変数 $ a $ は(外部 $ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \} Lambda $ )。式 $ \ lambda a:\ mathsf {type}。 \ Lambda x:a。 X $ と $ \ lambda b:\ mathsf {type}。 \ Lambda x:b。 X $ は $ \ alpha $ です。
- 式 $ \ lambda a:\ mathsf {type}。 \ Lambda x:a。 X $ は識別関数です。 not は「ID関数の署名」です。
- 「ID関数の署名」が「ID関数の種類」と言っている場合は、 $ \ pi_ {a:\ mathsf {li)です。タイプ}}。 (a \ to a)$ 、または製品タイプのみが必要な場合は $ \ pi_ {a:\ mathsf {type}} \ pi_ {x: a} $ 。
- ID関数の型 $ \ lambda x:a。 X $ は $ a \ です。
- ID関数の種類 $ \ lambda y:b。 Y $ は $ b \ to b $ です。
- 関数 $ \ lambda x:a。 X $ と $ \ lambda y:b。 y $ は異なります
- $ a \ $ と $ b \ to b $ の種類李>
- 多形 identity関数 $ \ lambda c:\ mathsf {type}。 \ Lambda Z:c。 z $ は $ \ pi_ {c:\ mathsf {type}}です。 c \ to c $ 。
- 関数 $ \ lambda a:\ mathsf {type}。 \ Lambda x:a。 X $ と $ \ lambda c:\ mathsf {type}。 \ Lambda Z:c。 z $ は $ \ alpha $ です.qualal
- 型 $ \ pi_ {a:\ mathsf {type}}。 A $ と $ \ pi_ {c:\ mathsf {type}}。 c \ to c $ は $ \ alpha $ です。
まだ質問がありますか?
多分これは助けになるでしょう:
補足:紅茶の上にアレックスシンプソンと話した後、もう1つのことがあることがあります。 別の $ \ lambda $ と $ \ pi $ 両方とも同じ構文形状を持つように、コンストラクタは(2つの引数を取り、1つの変数をバインドされます)。実際、私の記憶が正しい場合、 automath $ \ Lambda $ -abstractionsと $ \ pi $ -types。しかし、ポイントは、の異なる概念を示すので、が2つの異なるコンストラクタを使用することです。