立方型理論における関数拡張性の証明における欠陥のある議論?


7

このGitHubリポジトリで、キュービカルタイプ理論に関する講義を読んでいます。で講義1著者は、機能extensionalityに次のように定義しています。

funExt (A B : U) (f g : A -> B)
       (p : (x : A) -> Path B (f x) (g x)) :
       Path (A -> B) f g = <i> \(a : A) -> (p a) @ i

そして書きます

To see that this makes sense compute the end-points of the path:

  (<i> \(a : A) -> (p a) @ i) @ 0 = \(a : A) -> (p a) @ 0
                                  = \(a : A) -> f a
                                  = f

私はついていません。我々は交換する際に具体的に、(p a) @ 0f a心の中で私たちは、次の事実を使用します\(a : A) -> (p a) @ 0 = f a(の左右側面に名前与えてみましょう)書き換えることfpa = \(a : A) -> (p a) @ 0にしfa = \(a : A) -> f a。しかし、これだけで関数拡張性を使用していf = fpa, g = faますか?

私が間違っていなければ、この議論は循環的です。誰かが明確にできますか?

回答:


7

表現:

\(a : A) -> (p a) @ 0

次のように解析します:

\(a : A) -> ((p a) @ 0)

だから、これは適用されるp a : Path B (f a) (g a)まで0のポイント。これf aはパスの開始点であるため、に減少します。それは本質的にベータ版が減少し、以前のステップ、と同じことやっている(<i> ...) @ 0(...)[i := 0]を除いて、p a私たちに抽象的ルックスを、しかし、我々はそれが適用されたときに減少し何を知っているので、それは、問題ではない0(または1唯一のそのタイプに基づいて)。

したがって、拡張性を証明するために関数の拡張性を使用していません。これは、Path型が関数の型に似ていること、および2つのPathfunExtが引数の順序が異なる(単に反転する)関数であるという事実を利用しています。


1
判断的に(p a) @ 0等しいので(f a)、ラムダの中でそれを書き換えることが許可されていると言うのは正しいでしょうか?したがって、違いは判断とパスの等価性です。私には理にかなっています。
WorldSEnder 2018

1
それは正しいと思います。パスが適用されている0か、パス1の対応するエンドポイントと判断的に等しい式i
Dan Doel 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.