ホモトピー型理論

[000U] 同値

同値の定義([001Q])が妥当なものであることを見る。同値の概念にふさわしい性質として次を示す。

  • -恒等関数は同値である([0026])
  • -同値の概念はホモトピー不変である([002G])
  • -六分の二性(2-out-of-6 property):合成可能な関数\(f,g,h\)に対して、\(g\circ f\)\(h\circ g\)が同値ならば\(f,g,h,h\circ g\circ f\)も同値である([002F])
さらに、関数全体のうちの同値のなすクラスはこれらの性質を満たすものの中で最小であることを示す。つまり、任意の同値はこれらの性質のみを使って得られる([002H])。また、もう一つ重要な事実として、(関数外延性の下で)\(\mathord {\textnormal {\textsf {IsEquiv}}}(f)\)命題であるということがある([0044])。命題は後に導入する概念なので今は説明しないが、関数が同値であることをどのように証明したかは気にしなくてよいということが分かる。

[002L] 補題

\(i\)を階数、\(A,B,C:\mathcal {U}(i)\)を型、\(f:A\to B\)\(g:B\to C\)を型、\(c:C\)を要素とすると、\((\sum _{y:\mathord {\textnormal {\textsf {Fiber}}}(g,c)}\mathord {\textnormal {\textsf {Fiber}}}(f,y.\mathord {\textnormal {\textsf {elem}}}))\mathrel {\triangleleft \triangleright }\mathord {\textnormal {\textsf {Fiber}}}(g\circ f,c)\)の要素を構成できる。

証明

次のようにわかる。

\(\sum _{y:\mathord {\textnormal {\textsf {Fiber}}}(g,c)}\mathord {\textnormal {\textsf {Fiber}}}(f,y.\mathord {\textnormal {\textsf {elem}}})\)\(\mathrel {\triangleleft \triangleright }\) {並び換え}\(\sum _{x:A}\sum _{y:B}\sum _{p:f(x)=y}g(y)=c\)\(\mathrel {\triangleleft \triangleright }\) {[001W][0025][001N]}\(\sum _{x:A}g(f(x))=c\)

[002E] 補題

\(i\)を階数、\(A,B,C:\mathcal {U}(i)\)を型、\(f:A\to B\)\(g:B\to C\)を関数とする。\(f\)\(g\)\(g\circ f\)のうちいずれか二つが同値ならば残りの一つも同値である。つまり、次の型の要素を構成できる。

  • -\(\mathord {\textnormal {\textsf {IsEquiv}}}(f)\to \mathord {\textnormal {\textsf {IsEquiv}}}(g)\to \mathord {\textnormal {\textsf {IsEquiv}}}(g\circ f)\)
  • -\(\mathord {\textnormal {\textsf {IsEquiv}}}(f)\to \mathord {\textnormal {\textsf {IsEquiv}}}(g\circ f)\to \mathord {\textnormal {\textsf {IsEquiv}}}(g)\)
  • -\(\mathord {\textnormal {\textsf {IsEquiv}}}(g)\to \mathord {\textnormal {\textsf {IsEquiv}}}(g\circ f)\to \mathord {\textnormal {\textsf {IsEquiv}}}(f)\)

証明

\(f\)が同値であると仮定すると、[002L][001K]から\(\mathord {\textnormal {\textsf {IsEquiv}}}(g)\leftrightarrow \mathord {\textnormal {\textsf {IsEquiv}}}(g\circ f)\)が従う。

\(g\)\(g\circ f\)が同値であると仮定する。\(b:B\)を仮定する。\(r:\mathord {\textnormal {\textsf {Fiber}}}(g,g(b))\)\(\mathord {\textnormal {\textsf {record}}}\mathopen {\{ \negmedspace |}\mathord {\textnormal {\textsf {elem}}}\equiv b,\mathord {\textnormal {\textsf {id}}}\equiv \mathord {\textnormal {\textsf {refl}}}\mathclose {|\negmedspace \} }\)と定義する。レトラクト

\(\mathord {\textnormal {\textsf {Fiber}}}(g\circ f,g(b))\)\(\mathrel {\triangleleft \triangleright }\) {[002L]}\(\sum _{y:\mathord {\textnormal {\textsf {Fiber}}}(g,g(b))}\mathord {\textnormal {\textsf {Fiber}}}(f,y.\mathord {\textnormal {\textsf {elem}}})\)\(\mathrel {\triangleleft \triangleright }\) {\(g\)が同値}\(\mathord {\textnormal {\textsf {Fiber}}}(f,r.\mathord {\textnormal {\textsf {elem}}})\)
を得て、\(r.\mathord {\textnormal {\textsf {elem}}}\equiv b\)であることに注意すると、\(g\circ f\)が同値なので\(\mathord {\textnormal {\textsf {Fiber}}}(f,b)\)は可縮である。

[002J] 補題

\(i\)を階数、\(A:\mathcal {U}(i)\)を型とする。関数\(\lambda z.\mathord {\textnormal {\textsf {proj}}}_{1}(z):(\sum _{x_{1},x_{2}:A}x_{1}=x_{2})\to A\)は同値である。

証明

任意の要素\(a:A\)に対して、レトラクトの列

\(\mathord {\textnormal {\textsf {Fiber}}}(\lambda z.\mathord {\textnormal {\textsf {proj}}}_{1}(z),a)\)\(\triangleleft \) {並び換え}\(\sum _{x_{1}:A}\sum _{p:x_{1}=a}\sum _{x_{2}:A}x_{1}=x_{2}\)\(\triangleleft \) {[0026]}\(\sum _{x_{2}:A}a=x_{2}\)
を得て、最後の型は[001N]により可縮である。

[002K] 補題

\(i\)を階数、\(A:\mathcal {U}(i)\)を型とする。関数\(\lambda x.\mathord {\textnormal {\textsf {pair}}}(x,\mathord {\textnormal {\textsf {pair}}}(x,\mathord {\textnormal {\textsf {refl}}})):A\to (\sum _{x_{1},x_{2}:A}x_{1}=x_{2})\)\(\lambda z.\mathord {\textnormal {\textsf {proj}}}_{1}(\mathord {\textnormal {\textsf {proj}}}_{2}(z)):(\sum _{x_{1},x_{2}:A}x_{1}=x_{2})\to A\)は同値である。

証明

\(f\equiv \lambda z.\mathord {\textnormal {\textsf {proj}}}_{1}(z)\)\(g\equiv \lambda x.\mathord {\textnormal {\textsf {pair}}}(x,\mathord {\textnormal {\textsf {pair}}}(x,\mathord {\textnormal {\textsf {refl}}}))\)\(h\equiv \lambda z.\mathord {\textnormal {\textsf {proj}}}_{1}(\mathord {\textnormal {\textsf {proj}}}_{2}(z))\)と定義すると、\(f\circ g\equiv \mathord {\textnormal {\textsf {id}}}\)かつ\(h\circ g\equiv \mathord {\textnormal {\textsf {id}}}\)である。[002J]より\(f\)は同値であるから、[002E][0026]から\(g\)も同値であると分かる。すると、再び[002E][0026]から\(h\)も同値であると分かる。

[002I] 定義

\(i\)を階数、\(A:\mathcal {U}(i)\)を型、\(B:A\to \mathcal {U}(i)\)を型の族、\(f,g:\prod _{x:A}B(x)\)を関数とする。型\(f\sim g:\mathcal {U}(i)\)\(\prod _{x:A}f(x)=g(x)\)と定義する。\(f\sim g\)の要素を\(f\)\(g\)の間のホモトピー(homotopy)と呼ぶ。

[002G] 命題

\(i\)を階数、\(A,B:\mathcal {U}(i)\)を型、\(f,g:A\to B\)を関数、\(p:f\sim g\)をホモトピーとする。\(f\)が同値ならば\(g\)も同値である。

証明

\(q:A\to (\sum _{y_{1},y_{2}:B}y_{1}=y_{2})\)\(\lambda x.\mathord {\textnormal {\textsf {pair}}}(f(x),\mathord {\textnormal {\textsf {pair}}}(g(x),p(x)))\)と定義すると、\((\lambda z.\mathord {\textnormal {\textsf {proj}}}_{1}(z))\circ q\equiv f\)かつ\((\lambda z.\mathord {\textnormal {\textsf {proj}}}_{1}(\mathord {\textnormal {\textsf {proj}}}_{2}(z)))\circ q\equiv g\)である。[002E][002J]と仮定から\(q\)が同値であると分かり、すると[002E][002K]から\(g\)が同値であると分かる。

[002F] 命題

\(i\)を階数、\(A,B,C,D:\mathcal {U}(i)\)を型、\(f:A\to B\)\(g:B\to C\)\(h:C\to D\)を関数とする。\(g\circ f\)\(h\circ g\)が同値ならば\(f\)\(g\)\(h\)\(h\circ g\circ f\)も同値である。

証明

任意の要素\(d:D\)に対して、レトラクト

\(\mathord {\textnormal {\textsf {Fiber}}}(h\circ g\circ f,d)\)\(\triangleleft \) {[002L]}\(\sum _{z:\mathord {\textnormal {\textsf {Fiber}}}(h,d)}\sum _{y:\mathord {\textnormal {\textsf {Fiber}}}(g,z.\mathord {\textnormal {\textsf {elem}}})}\mathord {\textnormal {\textsf {Fiber}}}(f,y.\mathord {\textnormal {\textsf {elem}}})\)\(\triangleleft \) {[002M]}\(\sum _{z:\mathord {\textnormal {\textsf {Fiber}}}(h,d)}\sum _{y':\mathord {\textnormal {\textsf {Fiber}}}(g,z.\mathord {\textnormal {\textsf {elem}}})}\sum _{y:\mathord {\textnormal {\textsf {Fiber}}}(g,z.\mathord {\textnormal {\textsf {elem}}})}\mathord {\textnormal {\textsf {Fiber}}}(f,y.\mathord {\textnormal {\textsf {elem}}})\)\(\triangleleft \) {\(h\circ g\)が同値}\(\sum _{y:\mathord {\textnormal {\textsf {Fiber}}}(g,\_)}\mathord {\textnormal {\textsf {Fiber}}}(f,y.\mathord {\textnormal {\textsf {elem}}})\)
を得て、最後の型は\(g\circ f\)が同値なので可縮である。よって、\(h\circ g\circ f\)は同値である。すると[002E]より残りの関数もすべて同値である。

[002H] 命題

\(i\)を階数、\(A,B:\mathcal {U}(i)\)を型、\(f:A\to B\)を関数とする。\(f\)が同値ならば、関数\(g,h:B\to A\)とホモトピー\(p:f\circ g\sim \mathord {\textnormal {\textsf {id}}}\)\(q:h\circ f\sim \mathord {\textnormal {\textsf {id}}}\)を構成できる。

証明

\(f\)が同値であると仮定する。関数\(G:\prod _{y:B}\mathord {\textnormal {\textsf {Fiber}}}(f,y)\)と同一視\(P:\prod _{y:B}\prod _{z:\mathord {\textnormal {\textsf {Fiber}}}(f,y)}G(y)=z\)を得る。\(g\equiv \lambda y.(G(y)).\mathord {\textnormal {\textsf {elem}}}\)\(p\equiv \lambda y.(G(y)).\mathord {\textnormal {\textsf {id}}}\)と定義する。\(r:\prod _{x:A}\mathord {\textnormal {\textsf {Fiber}}}(f,f(x))\)\(r\equiv \lambda x.\mathord {\textnormal {\textsf {record}}}\mathopen {\{ \negmedspace |}\mathord {\textnormal {\textsf {elem}}}\equiv x,\mathord {\textnormal {\textsf {id}}}\equiv \mathord {\textnormal {\textsf {refl}}}\mathclose {|\negmedspace \} }\)と定義する。\(h\equiv g\)と定義し、\(q\equiv \lambda x.\mathord {\textnormal {\textsf {ap}}}(\lambda z.z.\mathord {\textnormal {\textsf {id}}},P(f(x),r(x)))\)と定義すればよい。