J
実際に何が言っていたのか、なぜそうなのかを完全に理解したのはつい最近のことです。このブログ投稿では、それについて説明しています。ホモトピー関数と連続関数の観点から考えると、多くの直感が得られ、数学の非常に豊かな領域につながりますが、私は以下の議論を論理的なレベルで維持しようと思います。
等価型を直接公理化したとしましょう(これらはgroupoid演算と法則です):
Γ⊢x:AΓ⊢reflx:x=AxΓ,x:A,y:A⊢p:x=AyΓ,x:A,y:A⊢p−1:y=AxΓ,x:A,y:A⊢p:x=AyΓ,y:A,z:A⊢q:y=AzΓ,x:A,y:A,z:A⊢p⋅q:x=Az
(p−1)−1≡pp⋅p−1≡refl(p⋅q)−1≡q−1⋅p−1refl⋅p≡p≡p⋅refl(p⋅q)⋅r≡p⋅(q⋅r)
機能的な置換があります。
Γ,z:A⊢F(z):UΓ,x:A,y:A⊢p:x=AyΓ,x:A,y:A⊢subst(F,p):F(x)→F(y)
subst(F,refl)=idsubst(F,p⋅q)=subst(F,q)∘subst(F,p)subst(λx.c=Ax,p)(q)=q⋅p
最後に、すべてがこの平等を尊重すると言って、すべてに対して合同のルールがありました。これが最も重要な合同点の1つです。
Γ,x:A,y:A⊢p:x=AyΓ,z:A⊢B(z):UΓ,x:A,y:A,b:B(x)⊢liftB(b,p):⟨x,b⟩=Σx:A.B(x)⟨y,subst(B,p)(b)⟩
次に、置換の特別なケースを考えてみましょう。
Γ⊢c:AΓ,t:Σx:A.c=Ax⊢C(t):UΓ⊢b:C(⟨c,reflc⟩)Γ,y:A,p:c=Ay⊢subst(C,liftλz.c=z(reflc,p))(b):C(⟨y,p⟩)
これですJ
。カレーを使用して見栄えの良いフォームを作成できます。
Γ⊢c:AΓ,y:A,p:c=Ay⊢C(y,p):UΓ⊢b:C(c,reflc)Γ,y:A,p:c=Ay⊢JA,c(C,b,y,p):C(y,p)
もちろん、最初J
に定義した他のすべての構造を再利用できます。
今私たちが持っている場合 p:x=Ay そして q:y=Ay′ その後 liftλz.x=z(p,q):⟨y,p⟩=⟨y′,p⋅q⟩。だから私たちが持っている場合⟨y′,p′⟩、そこに行く方法はありません ⟨y,p⟩ 事前に選択された q 一般的には p⋅q=p′。(ホモトピーの観点から、p⋅q=p′ 三角形でエッジを塗りつぶすことができると言います p、 q、および p′。)より鈍くするには、 p=reflx (そして y=x)そして私たちは q=p′ 一般に真ではない必須の等価であること(typeの値が x=Ay′は任意の同値を表すことができ、2つの同値が同じでなければならないということはありません。これのポイントは、物事が複数の方法で等しい可能性があることを示すことです。つまり、y=y′ 一般的に他のものほど良くはありません。
理解すべき重要なことJ
は、タイプを言うことですΣy:A.x=Ay 帰納的に定義され、タイプについてはほとんど語らない x=Ay 固定用 x そして y。これを確認する1つの方法、およびその理由J
は、エンドポイントが一致する等価タイプでの合同がどのように見えるかを調べることです。次のルールがあります(証明期間を無視すると、次のように表現できます)substまたはJ
):
Γ,x:A⊢p:x=AxΓ,x:A,q:x=Ax⊢_:q=x=Axp⋅q⋅p−1
と
liftλz.x=z 私たちにはオプションがあります
liftλz.x=z(p,p−1⋅p′):⟨y,p⟩=⟨y′,p′⟩ so every point was equivalent to every other point (though not necessarily trivially). With both endpoints matched, we don't have the flexibility of choosing the equalities to first cancel out the input equality and then performing an arbitrary equality.
While J
carefully respects the non-trivial groupoid structure of equality types, in typical dependently typed languages there's no way to actually define a non-trivial element of an equality type. At this point you hit a fork in the road. One route is to add Axiom K which says that the groupoid is actually trivial which makes many proofs much simpler. The other route is to add axioms that allow you to articulate the non-trivial groupoid structure. The most dramatic instance of this is the Univalence Axiom which leads to Homotopy Type Theory.