この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) @ 0
とf a
心の中で私たちは、次の事実を使用します\(a : A) -> (p a) @ 0 = f a
(の左右側面に名前与えてみましょう)書き換えることfpa = \(a : A) -> (p a) @ 0
にしfa = \(a : A) -> f a
。しかし、これだけで関数拡張性を使用していf = fpa, g = fa
ますか?
私が間違っていなければ、この議論は循環的です。誰かが明確にできますか?
(p a) @ 0
等しいので(f a)
、ラムダの中でそれを書き換えることが許可されていると言うのは正しいでしょうか?したがって、違いは判断とパスの等価性です。私には理にかなっています。