<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="forest.xsl"?>
<tree expanded="true" show-heading="true" show-metadata="true" toc="false" root="true"><frontmatter> <anchor>235</anchor>   <addr>epa-0001</addr>  <route>index.xml</route>  <authors><author>elpinal</author> </authors> <title>Forest.CBUlt.space</title> </frontmatter> <mainmatter><ul>
  <li>
    <link href="https://cbult.space" type="external">ホームページ</link>
  </li>
  <li>
    <link href="https://mstdn.cbult.space/@elpinal" type="external">Mastodon</link>
  </li>
  <li>
    <link href="https://bsky.app/profile/elpinal.bsky.social" type="external">Bluesky</link>
  </li>
  <li>
    <link href="https://github.com/elpinal" type="external">GitHub</link>
  </li>
</ul>
  
  <tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>236</anchor>   <addr>epa-0002</addr>  <route>epa-0002.xml</route>   <title>Forestについて</title> </frontmatter> <mainmatter><p>このサイトの作成には<link href="https://www.jonmsterling.com/index/index.xml" type="external">Sterling</link>によって開発されている<link href="https://www.forester-notes.org/index/index.xml" type="external">forester</link>というソフトウェアを使用している。いわゆる<link href="https://notes.andymatuschak.org/Evergreen_notes" type="external">evergreen notes</link>のアイデアに基づき、構成単位(treeと呼ぶ)を可能な範囲で小さくし、文書の階層構造を後から課すようにすることで、内容のインクリメンタルな改修を可能にしている。
</p><p>キーボードでControl-KあるいはCommand-Kを押すことで、このウェブサイトの検索が可能になる。</p></mainmatter> </tree>

  
  <tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>237</anchor>   <addr>epa-0003</addr>  <route>epa-0003.xml</route>  <authors><author>elpinal</author> </authors> <title>Notes</title> </frontmatter> <mainmatter><p>
  日付は初出年月日であって、それ以降に更新されることもあります。
</p><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>238</anchor>   <addr>math-00VG</addr>  <route>math-00VG.xml</route> <date><year>2025</year> <month>10</month> <day>1</day></date> <authors><author>elpinal</author> </authors> <title>完備結び半束の可述的表示</title> </frontmatter> <mainmatter><p>
  本稿では構成的な基礎付けを用いる。ただし、<link href="math-0032.xml" type="local" title="冪集合">冪集合</link>を利用する。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>239</anchor>  <taxon>定義</taxon> <addr>math-00VL</addr>  <route>math-00VL.xml</route>   <title>完備結び半束</title> </frontmatter> <mainmatter><p>
  <strong>完備結び半束</strong>(<em>complete join-semilattice; suplattice</em>)とは、（有限とは限らない）任意の<link href="math-0005.xml" type="local" title="結び">結び</link>が存在するような<link href="math-006W.xml" type="local" title="半順序集合">半順序集合</link>である。完備結び半束間の<strong>準同型</strong>(<em>homomorphism</em>)とは、任意の結びを保つ<link href="math-004E.xml" type="local" title="写像">写像</link>のことである。完備結び半束とその間の準同型全体は<link href="math-001E.xml" type="local" title="圏">圏</link>を成す。これを<tex>\mathbf {SL}</tex>と書く。
</p></mainmatter> </tree><p>
  完備結び半束においては実のところすべての<link href="math-0004.xml" type="local" title="交わり">交わり</link>が存在するので、圏の対象としては<link href="math-00NK.xml" type="local" title="完備束">完備束</link>と同一の概念である。しかし、完備結び半束間の準同型はこれらの交わりを保つとは限らないので名前を使い分けている。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>240</anchor>  <taxon>定義</taxon> <addr>math-00VH</addr>  <route>math-00VH.xml</route>   <title>Basic cover</title> </frontmatter> <mainmatter><p>
  集合<tex>S</tex>と、<tex>S</tex>と<tex>\mathcal {P} { \left ( S \right )}</tex>上の<link href="math-004D.xml" type="local" title="集合上の2項関係">2項関係</link><tex>\lhd</tex>が、任意の<tex>a  \in  S</tex>と<tex>U,V  \subseteq  S</tex>について以下の条件を満たすとき、<tex>(S,  \lhd )</tex>を<em>basic cover</em>と呼ぶ。
</p><ol>
  <li>
    <tex>a  \in  U</tex>ならば<tex>a  \lhd  U</tex>
  </li>
  <li>
    <tex>a  \lhd  U</tex>かつ<tex>\forall  u  \in  U (u  \lhd  V)</tex>ならば<tex>a  \lhd  V</tex>
  </li>
</ol><p>
  また、<tex>\lhd</tex>を<tex>S</tex>上の<em>basic cover</em>と呼ぶ。さらに、<tex>U  \lhd  V</tex>と書いて<tex>\forall  u  \in  U (u  \lhd  V)</tex>を表す。これにより上記の条件2は「<tex>a  \lhd  U</tex>かつ<tex>U  \lhd  V</tex>ならば<tex>a  \lhd  V</tex>」と表せる。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>241</anchor>  <taxon>構成</taxon> <addr>math-00VO</addr>  <route>math-00VO.xml</route>   <title>完備結び半束から構成されるBasic cover</title> </frontmatter> <mainmatter><p>
  <link href="math-00VL.xml" type="local" title="完備結び半束">完備結び半束</link><tex>X</tex>が与えられたとき、任意の元<tex>a</tex>と<tex>U  \subseteq  X</tex>について
  <tex display="block">
    a  \lhd  U  \mathrel { \stackrel { \text {def}}{ \iff }}  a  \le   \bigvee  U
  </tex>
  と定義すると、<tex>\lhd</tex>は<tex>X</tex>上の<link href="math-00VH.xml" type="local" title="Basic cover">basic cover</link>となる。
</p>
  <block open="open"><headline><b>証明</b>.</headline> 
  <p>
    <tex>a  \in  U</tex>であるとき、明らかに<tex>a  \le   \bigvee  U</tex>である。
  </p>

  <p>
    <tex>a  \lhd  U</tex>かつ<tex>U  \lhd  V</tex>であるとする。このとき、
    <tex display="block">
      a  \le   \bigvee  U
    </tex>
    かつ、任意の<tex>u  \in  U</tex>について
    <tex display="block">
      u  \le   \bigvee  V
    </tex>
    である。したがって
    <tex display="block">
       \bigvee  U  \le   \bigvee  V
    </tex>
    であり、
    <tex display="block">
      a  \le   \bigvee  V
    </tex>
    となる。以上より、<tex>\lhd</tex>は<tex>X</tex>上のbasic coverとなる。
  </p>
</block>
</mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>242</anchor>  <taxon>定義</taxon> <addr>math-00VI</addr>  <route>math-00VI.xml</route>   <title>Saturation</title> </frontmatter> <mainmatter><p>
  集合<tex>S</tex>上の<em>saturation</em>あるいは<strong>閉包作用素</strong>(<em>closure operator</em>)とは、<link href="math-004E.xml" type="local" title="写像">写像</link><tex>\mathcal {C}  \colon   \mathcal {P} { \left ( S \right )}   \to   \mathcal {P} { \left ( S \right )}</tex>であって、
</p><ol>
  <li>
    単調性：<tex>U  \subseteq  V</tex>ならば<tex>\mathcal {C} U  \subseteq   \mathcal {C} V</tex>
  </li>
  <li>
    expansivity：<tex>U  \subseteq   \mathcal {C} U</tex>
  </li>
  <li>
    冪等性：<tex>\mathcal {C}  \mathcal {C} U =  \mathcal {C} U</tex>
  </li>
</ol><p>
  が任意の<tex>U,V  \subseteq  S</tex>について成り立つものである。(1)と(2)より<tex>\mathcal {C} U  \subseteq   \mathcal {C}  \mathcal {C} U</tex>が成り立つので、それらの元で(3)は<tex>\mathcal {C}  \mathcal {C} U  \subseteq   \mathcal {C} U</tex>と同値である。よって、saturationとは（<link href="math-001E.xml" type="local" title="圏">圏</link>と見なした）<link href="math-006W.xml" type="local" title="半順序集合">半順序集合</link><tex>\mathcal {P} { \left ( S \right )}</tex>上の<link href="math-00D5.xml" type="local" title="モナド">モナド</link>にすぎない。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>243</anchor>  <taxon>定理</taxon> <addr>math-00VJ</addr>  <route>math-00VJ.xml</route>   <title>Basic coverとsaturationは一対一対応する</title> </frontmatter> <mainmatter><p>
  集合<tex>S</tex>上の<link href="math-00VH.xml" type="local" title="Basic cover">basic cover</link> <tex>\lhd</tex>と<link href="math-00VI.xml" type="local" title="Saturation">saturation</link> <tex>\mathcal {C}</tex>について、
  <tex display="block">
     \begin {align*}
    &amp; \mathcal {C}_ \lhd  (U)  \mathrel { \stackrel { \text {def}}{=}}   \set { x  \in  S | x  \lhd  U }  \\ 
    &amp;x  \lhd _{ \mathcal {C}} U  \mathrel { \stackrel { \text {def}}{ \iff }}  x  \in   \mathcal {C} U
     \end {align*}
  </tex>
  としたとき、<tex>\lhd   \mapsto   \mathcal {C}_ \lhd</tex>と<tex>\mathcal {C}  \mapsto   \lhd _{ \mathcal {C}}</tex>は互いに逆となる。
</p>
  <block open="open"><headline><b>証明</b>.</headline> 
    <p>
    まず、<tex>\mathcal {C}_ \lhd</tex>がsaturationであることを示す。<tex>U,V  \subseteq  S</tex>とする。<tex>U  \subseteq  V</tex>であれば
    <tex display="block">
       \mathcal {C}_ \lhd  (U) =  \set { x  \in  S | x  \lhd  U }
    </tex>
    <tex display="block">
       \mathcal {C}_ \lhd  (V) =  \set { x  \in  S | x  \lhd  V }
    </tex>
    より、<tex>x  \in  S</tex>かつ<tex>x  \lhd  U</tex>のときに<tex>x  \lhd  V</tex>であることを示せればよいが、これは任意の<tex>u  \in  U</tex>は<tex>u  \in  V</tex>でもあることから<tex>u  \lhd  V</tex>となり、<tex>x  \lhd  V</tex>が分かる。次に、<tex>U  \subseteq   \mathcal {C}_ \lhd  U</tex>は明らかである。最後に、<tex>x  \in   \mathcal {C}_ \lhd   \mathcal {C}_ \lhd  U</tex>であるとき、<tex>x  \lhd   \mathcal {C}_ \lhd  U</tex>であり、すべての<tex>u  \in   \mathcal {C}_ \lhd  U</tex>は<tex>u  \lhd  U</tex>となるので、<tex>x  \lhd  U</tex>となり、<tex>x  \in   \mathcal {C}_ \lhd  U</tex>となる。以上より、<tex>\mathcal {C}_ \lhd</tex>はsaturationとなる。
  </p>

  <p>
    次に、<tex>\lhd _{ \mathcal {C}}</tex>がbasic coverであることを示す。1つ目の条件は明らか。2つ目の条件も簡単。
  </p>

  <p>
    この2つの写像が互いに逆になることは、任意の<tex>x  \in  S</tex>と<tex>U  \subseteq  S</tex>について、
    <tex display="block">
       \begin {align*}
       \mathcal {C}_{ \lhd _{ \mathcal {C}}} U
      &amp;=  \set { x  \in  S | x  \lhd _{ \mathcal {C}} U }  \\ 
      &amp;=  \set { x  \in  S | x  \in   \mathcal {C} U }  \\ 
      &amp;=  \mathcal {C} U
       \end {align*}
    </tex>
    <tex display="block">
       \begin {align*}
      x  \lhd _{ \mathcal {C}_ \lhd } U
      &amp; \iff  x  \in   \mathcal {C}_ \lhd  U  \\ 
      &amp; \iff  x  \lhd  U
       \end {align*}
    </tex>
    が成り立つことから分かる。
  </p>
</block>
</mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>244</anchor>  <taxon>定義</taxon> <addr>math-00VN</addr>  <route>math-00VN.xml</route>   <title>Saturated subset</title> </frontmatter> <mainmatter><p>
  集合<tex>S</tex>上の<link href="math-00VI.xml" type="local" title="Saturation">saturation</link> <tex>\mathcal {C}</tex>について、集合<tex>U  \subseteq  S</tex>が<tex>\mathcal {C}</tex>-<em>saturated</em>であるとは、等式
  <tex display="block">
     \mathcal {C} U = U
  </tex>
  が成り立つことである。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>245</anchor>  <taxon>定理</taxon> <addr>math-00VK</addr>  <route>math-00VK.xml</route>   <title>Saturationは完備結び半束を表示する</title> </frontmatter> <mainmatter><p>
  集合<tex>S</tex>上の<link href="math-00VI.xml" type="local" title="Saturation">saturation</link> <tex>\mathcal {C}</tex>が与えられたとき、<tex>\mathcal {C}</tex>-<link href="math-00VN.xml" type="local" title="Saturated subset">saturated subset</link>全体の集合
  <tex display="block">
     \mathcal {Sat} ( \mathcal {C})  \mathrel { \stackrel { \text {def}}{=}}   \set { U  \in   \mathcal {P} { \left ( S \right )}  |  \mathcal {C} U = U }
  </tex>
  は<tex>U  \leq  V  \mathrel { \stackrel { \text {def}}{ \iff }}  U  \subseteq  V</tex>とすることで<link href="math-00VL.xml" type="local" title="完備結び半束">完備結び半束</link>となる。
</p>
  <block open="open"><headline><b>証明</b>.</headline> 
  <p>
    <tex>\leq</tex>が<link href="math-006V.xml" type="local" title="半順序">半順序</link>であることは明らかである。
  </p>

  <p>
    集合<tex>A  \subseteq   \mathcal {Sat} ( \mathcal {C})</tex>の<link href="math-0005.xml" type="local" title="結び">結び</link>は
    <tex display="block">
       \bigvee  A  \mathrel { \stackrel { \text {def}}{=}}   \mathcal {C} ( \bigcup  A)
    </tex>
    で与えられる。実際、<tex>\mathcal {C}</tex>の冪等性より
    <tex display="block">
       \mathcal {C} ( \bigvee  A) =  \bigvee  A
    </tex>
    となるので<tex>\bigvee  A  \in   \mathcal {Sat} ( \mathcal {C})</tex>が成り立ち、また、ある<tex>V  \in   \mathcal {Sat} ( \mathcal {C})</tex>が任意の<tex>U  \in  A</tex>について<tex>U  \leq  V</tex>を満たすとき、<tex>\bigcup  A  \leq  V</tex>が成り立つことから、
    <tex display="block">
       \mathcal {C} ( \bigcup  A)  \leq   \mathcal {C} V = V
    </tex>
    となる。
  </p>
</block>
</mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>246</anchor>  <taxon>定理</taxon> <addr>math-00VP</addr>  <route>math-00VP.xml</route>   <title>すべての完備結び半束は表示を持つ</title> </frontmatter> <mainmatter><p>
  <link href="math-00VL.xml" type="local" title="完備結び半束">完備結び半束</link><tex>X</tex>から<tex>X</tex>上の<link href="math-00VH.xml" type="local" title="Basic cover">basic cover</link> <tex>\lhd</tex>を構成（<link href="math-00VO.xml" type="local" title="完備結び半束から構成されるBasic cover">完備結び半束から構成されるbasic cover</link>）し、それに対応する<link href="math-00VI.xml" type="local" title="Saturation">saturation</link> <tex>\mathcal {C}_ \lhd</tex>から完備結び半束<tex>\mathcal {Sat} ( \mathcal {C}_ \lhd )</tex>を作る（<link href="math-00VK.xml" type="local" title="Saturationは完備結び半束を表示する">saturationは完備結び半束を表示する</link>）と、同型
  <tex display="block">
    X  \cong   \mathcal {Sat} ( \mathcal {C}_ \lhd )
  </tex>
  が成り立つ。
</p>
  <block open="open"><headline><b>証明</b>.</headline> 
  <p>
    <link href="math-004E.xml" type="local" title="写像">写像</link><tex>\alpha   \colon  X  \to   \mathcal {Sat} ( \mathcal {C}_ \lhd )</tex>を、<link href="math-0092.xml" type="local" title="Down set">down set</link>を用いて
    <tex display="block">
       \alpha (x)  \mathrel { \stackrel { \text {def}}{=}}   { \downarrow }  x 
    </tex>
    と定義する。任意の<tex>y  \in  X</tex>について
    <tex display="block">
       \begin {align*}
      y  \in   \mathcal {C}_ \lhd   { \downarrow }  x 
      &amp; \iff  y  \lhd   { \downarrow }  x   \\ 
      &amp; \iff  y  \leq   \bigvee   { \downarrow }  x   \\ 
      &amp; \iff  y  \leq  x  \\ 
      &amp; \iff  y  \in   { \downarrow }  x 
       \end {align*}
    </tex>
    であるので、<tex>\alpha (x)</tex>はsaturatedである。次に、<tex>\alpha</tex>が準同型であることを示す。任意の<tex>A  \subseteq  X</tex>について、
    <tex display="block">
       \alpha  ( \bigvee  A) =  \mathcal {C}_ \lhd  ( \bigcup _{a  \in  A}  \alpha  (a))
    </tex>
    を示せばよい。まず、
    <tex display="block">
       \alpha  ( \bigvee  A)
      =  { \downarrow }  \bigvee  A 
    </tex>
    であり、<tex>y  \in  X</tex>について、
    <tex display="block">
       \begin {align*}
      y  \in   \mathcal {C}_ \lhd  ( \bigcup _{a  \in  A}  \alpha  (a))
      &amp; \iff  y  \lhd   \bigcup _{a  \in  A}  \alpha  (a)  \\ 
      &amp; \iff  y  \lhd   \bigcup _{a  \in  A}  { \downarrow }  a   \\ 
      &amp; \iff  y  \le   \bigvee   \bigcup _{a  \in  A}  { \downarrow }  a   \\ 
      &amp; \iff  y  \le   \bigvee  A  \\ 
      &amp; \iff  y  \in   { \downarrow }  \bigvee  A 
       \end {align*}
    </tex>
    である。よって、<tex>\alpha</tex>は準同型となる。
  </p>

  <p>
    <tex>\alpha</tex>が<link href="math-004G.xml" type="local" title="単射">単射</link>であることは明らかである。
  </p>

  <p>
    任意の<tex>U  \in   \mathcal {Sat} ( \mathcal {C}_ \lhd )</tex>が与えられたとき、<tex>y  \in  X</tex>について
    <tex display="block">
       \begin {align*}
      y  \in   \alpha ( \bigvee  U)
      &amp; \iff  y  \in   { \downarrow }  \bigvee  U   \\ 
      &amp; \iff  y  \leq   \bigvee  U  \\ 
      &amp; \iff  y  \lhd  U &amp; \text {$ \lhd $の定義}  \\ 
      &amp; \iff  y  \in   \mathcal {C}_ \lhd  U  \\ 
      &amp; \iff  y  \in  U &amp; \text {$U$はsaturated}
       \end {align*}
    </tex>
    であることから、<tex>\alpha</tex>は<link href="math-004F.xml" type="local" title="全射">全射</link>となる。以上より、<tex>\alpha</tex>は同型となる。
  </p>
</block>
</mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>247</anchor>  <taxon>定義</taxon> <addr>math-00VM</addr>  <route>math-00VM.xml</route>   <title>Basic cover間の射</title> </frontmatter> <mainmatter><p>
  2つの<link href="math-00VH.xml" type="local" title="Basic cover">basic cover</link> <tex>S = (S,  \lhd _S)</tex>と<tex>T = (T,  \lhd _T)</tex>について、<tex>S</tex>から<tex>T</tex>への<strong>射</strong>(<em>morphism</em>)とは、<tex>S</tex>と<tex>T</tex>上の<link href="math-004B.xml" type="local" title="2項関係">2項関係</link><tex>r</tex>であって、任意の<tex>b  \in  T</tex>と<tex>U  \subseteq  T</tex>について
  <tex display="block">
    b  \lhd _T U  \implies  r^{-1}  { \left \{ b \right \} }   \lhd _S r^{-1} U
  </tex>
  となるものである。そのような2つの<tex>r,s</tex>は、任意の<tex>b  \in  T</tex>について
  <tex display="block">
    r^{-1}  { \left \{ b \right \} }  =_S s^{-1}  { \left \{ b \right \} } 
  </tex>
  であるとき、等しいとする。ただし、<tex>V =_S W</tex>は「<tex>V  \lhd  W</tex>かつ<tex>W  \lhd  V</tex>」を表す。
</p><p>
  2つの<link href="math-00VH.xml" type="local" title="Basic cover">basic cover</link> <tex>S = (S,  \lhd _S)</tex>と<tex>T = (T,  \lhd _T)</tex>について、<tex>S</tex>から<tex>T</tex>への<strong>射</strong>(<em>morphism</em>)とは、<link href="math-004E.xml" type="local" title="写像">写像</link><tex>f  \colon  T  \to   \mathcal {Sat} ( \mathcal {C}_{ \lhd _S})</tex>であって、任意の<tex>b  \in  T</tex>と<tex>U  \subseteq  T</tex>について
  <tex display="block">
    b  \lhd _T U  \implies  f(b)  \lhd _S f(U)
  </tex>
  が成り立つものである。ただし、<tex>\mathcal {C}_{ \lhd _S}</tex>は<tex>\lhd _S</tex>に対応する<link href="math-00VI.xml" type="local" title="Saturation">saturation</link>（<link href="math-00VJ.xml" type="local" title="Basic coverとsaturationは一対一対応する">basic coverとsaturationは一対一対応する</link>）であり、<tex>\mathcal {Sat} ( \mathcal {C}_{ \lhd _S})</tex>は<link href="math-00VN.xml" type="local" title="Saturated subset">saturated subset</link>全体の集合であり、
  <tex display="block">
    f(U)  \mathrel { \stackrel { \text {def}}{=}}   \bigcup _{u  \in  U} f(u)
  </tex>
  である。
</p><p>
  1つ目の定義から2つ目の定義へは、任意の<tex>b  \in  T</tex>について
  <tex display="block">
    f_r (b)  \mathrel { \stackrel { \text {def}}{=}}   \mathcal {C}_{ \lhd _S} (r^{-1}  { \left \{ b \right \} } )
  </tex>
  と定義すると、<tex>\mathcal {C}_{ \lhd _S}</tex>の冪等性より<tex>f_r(b)  \in   \mathcal {Sat} ( \mathcal {C}_{ \lhd _S})</tex>となる。任意の<tex>b  \in  T</tex>と<tex>U  \subseteq  T</tex>が与えられ、<tex>b  \lhd _T U</tex>であるとする。このとき、
  <tex display="block">
    r^{-1}  { \left \{ b \right \} }   \lhd _S r^{-1} U
  </tex>
  である。任意の<tex>a  \in  r^{-1} U</tex>について、
  <tex display="block">
    a  \lhd _S  \bigcup _{u  \in  U} f_r(u)
  </tex>
  を示したい。まず、<tex>a  \mathrel {r} u_0</tex>となる<tex>u_0  \in  U</tex>が存在する。よって、<tex>a  \in  r^{-1} { \left \{ u_0 \right \} }   \subseteq  f_r (u_0)</tex>となることから、<tex>a  \in   \bigcup _{u  \in  U} f_r(u)</tex>が成り立つ。したがって、<tex>a  \lhd _S  \bigcup _{u  \in  U} f_r(u)</tex>が成り立つ。これにより
  <tex display="block">
    r^{-1} U  \lhd _S f_r(U)
  </tex>
  が分かり、<tex>\lhd _S</tex>の推移律より
  <tex display="block">
    r^{-1}  { \left \{ b \right \} }   \lhd _S f_r(U)
  </tex>
  となる。<tex>\mathcal {C}_{ \lhd _S}</tex>は<tex>( \mathcal {P} { \left ( S \right )} ,  \lhd _S)</tex>上の<link href="math-00D5.xml" type="local" title="モナド">モナド</link>でもあるので、
  <tex display="block">
    f_r(b)  \lhd _S f_r(U)
  </tex>
  となる。
</p><p>
  <tex>S</tex>から<tex>T</tex>への2つの（関係としての）射<tex>r</tex>と<tex>s</tex>が等しいとき、かつそのときに限り<tex>f_r = f_s</tex>であることは、<tex>V =_S W</tex>が<tex>\mathcal {C}_{ \lhd _S} V =  \mathcal {C}_{ \lhd _S} W</tex>と同値であることから分かる。
</p><p>
  <tex>S</tex>から<tex>T</tex>への（写像としての）射<tex>f</tex>が与えられたとき、
  <tex display="block">
    a  \mathrel {r_f} b  \mathrel { \stackrel { \text {def}}{ \iff }}  a  \in  f(b)
  </tex>
  と定義する。任意の<tex>b  \in  T</tex>と<tex>U  \subseteq  T</tex>が与えられ、<tex>b  \lhd _T U</tex>であるとする。このとき、
  <tex display="block">
    f(b)  \lhd _S  \bigcup _{u  \in  U} f(u)
  </tex>
  が成り立つが、これは
  <tex display="block">
    r_f^{-1}  { \left \{ b \right \} }   \lhd _S r_f^{-1} U
  </tex>
  と同値である。したがって、<tex>r_f</tex>は関係としての射となる。また、任意の<tex>b  \in  T</tex>について
  <tex display="block">
    f_{r_f}(b) = f(b)
  </tex>
  であることは、<tex>f(b)</tex>がsaturatedであることから分かる。
</p><p>
  以上より、basic cover間の射の2つの定義は一対一対応している。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>248</anchor>  <taxon>定義</taxon> <addr>math-00VQ</addr>  <route>math-00VQ.xml</route>   <title>Basic coverの圏</title> </frontmatter> <mainmatter><p>
  <link href="math-00VH.xml" type="local" title="Basic cover">Basic cover</link>とその間の<link href="math-00VM.xml" type="local" title="Basic cover間の射">射</link>は<link href="math-001E.xml" type="local" title="圏">圏</link>を成す。これを<tex>\mathbf {BCov}</tex>と書く。射の合成は<link href="math-004K.xml" type="local" title="関係の合成">関係の合成</link>によって与えられる。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>249</anchor>  <taxon>定理</taxon> <addr>math-00VS</addr>  <route>math-00VS.xml</route>   <title>Basic coverの圏は完備結び半束の圏の双対である</title> </frontmatter> <mainmatter><p>
  <link href="math-00VQ.xml" type="local" title="Basic coverの圏">Basic coverの圏</link><tex>\mathbf {BCov}</tex>と<link href="math-00VL.xml" type="local" title="完備結び半束">完備結び半束</link>の<link href="math-001E.xml" type="local" title="圏">圏</link><tex>\mathbf {SL}</tex>の間には以下の<link href="math-002O.xml" type="local" title="圏同値">圏同値</link>が成り立つ。
  <tex display="block">
     \mathbf {BCov}   \simeq   \mathbf {SL} ^ \mathsf {op} 
  </tex>
</p>
  <block open="open"><headline><b>証明</b>.</headline> 
  <p>
    第一に、<link href="math-00VP.xml" type="local" title="すべての完備結び半束は表示を持つ">すべての完備結び半束は表示を持つ</link>。ここでは<link href="math-0020.xml" type="local" title="反変関手">反変関手</link><tex>F  \colon   \mathbf {BCov}   \to   \mathbf {SL} ^ \mathsf {op}</tex>
    <tex display="block">
      F(S)  \mathrel { \stackrel { \text {def}}{=}}   \mathcal {Sat} ( \mathcal {C}_{ \lhd _S})
    </tex>
    が<link href="math-002H.xml" type="local" title="充満忠実関手">充満忠実</link>であることのみ見る。<link href="math-00VM.xml" type="local" title="Basic cover間の射">射</link><tex>f  \colon  S  \to  T</tex>とは、<link href="math-004E.xml" type="local" title="写像">写像</link><tex>f  \colon  T  \to   \mathcal {Sat} ( \mathcal {C}_{ \lhd _S})</tex>であって、任意の<tex>b  \in  T</tex>と<tex>U  \subseteq  T</tex>について、
    <tex display="block">
      b  \lhd _T U  \implies  f(b)  \lhd _S f(U)
    </tex>
    となるものであった。任意の<tex>U  \in  F(T)</tex>について、
    <tex display="block">
      F(f)(U)  \mathrel { \stackrel { \text {def}}{=}}   \bigvee _{b  \in  U} f(b)
    </tex>
    と定義すると、<tex>\mathcal {C}_{ \lhd _S}</tex>の冪等性より<tex>F(f)(U)  \in   \mathcal {Sat} ( \mathcal {C}_{ \lhd _S})</tex>となる。<tex>F(f)</tex>が準同型であることは、任意の<tex>A  \subseteq  F(T)</tex>について
    <tex display="block">
       \begin {align*}
      F(f)( \bigvee _{U  \in  A} U)
      &amp;=  \bigvee _{b  \in   \bigvee _{U  \in  A} U} f(b)  \\ 
      &amp;=  \bigvee _{U  \in  A}  \bigvee _{b  \in  U} f(b)  \\ 
      &amp;=  \bigvee _{U  \in  A} F(f)(U)
       \end {align*}
    </tex>
    となることから分かる。
  </p>

  <p>
    任意の準同型<tex>h  \colon   \mathcal {Sat} ( \mathcal {C}_{ \lhd _T})  \to   \mathcal {Sat} ( \mathcal {C}_{ \lhd _S})</tex>について、
    <tex display="block">
       \bar {h}(b)  \mathrel { \stackrel { \text {def}}{=}}  h( \mathcal {C}_{ \lhd _T}  { \left \{ b \right \} } )
    </tex>
    と定義する。これを使うと<tex>F(f)</tex>が<link href="math-009Z.xml" type="local" title="全単射">全単射</link>であることが分かる。
  </p>
</block>
</mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>250</anchor>   <addr>math-00VR</addr>  <route>math-00VR.xml</route>   <title>参考文献</title> </frontmatter> <mainmatter><ul>
  <li>
    G. Battilotti and G. Sambin, “Pretopologies and a uniform presentation of sup-lattices, quantales and frames,” Annals of Pure and Applied Logic, vol. 137, no. 1–3, pp. 30–61, 2006, <link href="https://doi.org/10.1016/j.apal.2005.05.017" type="external">doi</link>.
  </li>

  <li>
    F. Ciraulo, M. E. Maietti, and G. Sambin, “Convergence in Formal Topology: a unifying notion,” 2012, <link href="https://doi.org/10.48550/arXiv.1211.0720" type="external">doi</link>.
  </li>

  <li>
     F. Ciraulo, T. Kawai, and S. Maschio, “Factorizing the Top-Loc adjunction through positive topologies,” 2018, <link href="https://doi.org/10.48550/arXiv.1812.09190" type="external">doi</link>.
  </li>
</ul></mainmatter> </tree></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>251</anchor>   <addr>math-00J2</addr>  <route>math-00J2.xml</route> <date><year>2024</year> <month>7</month> <day>5</day></date> <authors><author>elpinal</author> </authors> <title>依存型理論の判断と規則について</title> </frontmatter> <mainmatter><p>
  <strong>依存型理論</strong>(<em>dependent type theory</em>)、特にMartin-Löf型理論における主な<strong>判断</strong>(<em>judgment</em>)は以下の形を取る。
  <tex display="block">
     \begin {align*}
     \Gamma   \vdash   A \  \  \mathsf {type}   \\ 
     \Gamma   \vdash   A   \equiv   B   \  \  \mathsf {type}   \\ 
     \Gamma   \vdash   M  :  A   \\ 
     \Gamma   \vdash   M   \equiv   N  :  A 
     \end {align*}
  </tex>
  1つ目は<tex>A</tex>が文脈<tex>\Gamma</tex>における型であることを表し、2つ目は<tex>A</tex>と<tex>B</tex>が<tex>\Gamma</tex>における等しい型であることを表す。3つ目は<tex>M</tex>が文脈<tex>\Gamma</tex>における項であり、かつ(<tex>\Gamma</tex>における)型<tex>A</tex>を持つことを表す。4つ目は<tex>M</tex>と<tex>N</tex>が<tex>\Gamma</tex>における等しい項であり、かつ同じ型<tex>A</tex>を持つことを示す。2つ目と4つ目の判断における「等しさ」は<em>judgmental equality</em>と呼ばれ、以下で扱う<link href="math-00J4.xml" type="local" title="同一視型">同一視型</link>とは区別される。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>252</anchor>   <addr>math-00JB</addr>  <route>math-00JB.xml</route>   <title>依存型理論における文脈</title> </frontmatter> <mainmatter><p>
  <tex>\Gamma</tex>が<strong>文脈</strong>(<em>context</em>)であるという判断を
  <tex display="block">
     \vdash   \Gamma \  \  \mathsf {ctx} 
  </tex>
  と書くことにする。

  空の文脈は以下の規則で与えられ、
  <tex display="block">
     \frac { 

     }{ 
       \vdash   \cdot \  \  \mathsf {ctx} 
     } 
  </tex>
  文脈の拡張は以下の規則で与えられる。
  <tex display="block">
     \frac { 
       \vdash   \Gamma \  \  \mathsf {ctx} 
       \quad 
       \Gamma   \vdash   A \  \  \mathsf {type} 
     }{ 
       \vdash   \Gamma , x {:} A \  \  \mathsf {ctx} 
     } 
  </tex>
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>253</anchor>   <addr>math-00JC</addr>  <route>math-00JC.xml</route>   <title>依存積型</title> </frontmatter> <mainmatter><p>
  <strong>依存積型</strong>(<em>dependent product type</em>)を以下の規則で与える。
  <tex display="block">
     \frac { 
       \Gamma   \vdash   A \  \  \mathsf {type} 
       \quad 
       \Gamma , x {:} A   \vdash   B \  \  \mathsf {type} 
     }{ 
       \Gamma   \vdash   \prod _{x : A} B \  \  \mathsf {type} 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma , x {:} A   \vdash   M  :  B 
     }{ 
       \Gamma   \vdash   \lambda  x . M  :  \prod _{x : A} B 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   M  :  \prod _{x : A} B 
       \quad 
       \Gamma   \vdash   N  :  A 
     }{ 
       \Gamma   \vdash   M \  N  :  [N/x]B 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma , x {:} A   \vdash   M  :  B 
       \quad 
       \Gamma   \vdash   N  :  A 
     }{ 
       \Gamma   \vdash   ( \lambda  x . M) \  N   \equiv   [N/x]M  :  [N/x]B 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   M  :  \prod _{x : A} B 
     }{ 
       \Gamma   \vdash   \lambda  x .  M \  x   \equiv   M  :  \prod _{x : A} B 
     } 
  </tex>

  <tex>B</tex>が自由変数<tex>x</tex>を含まないとき、<tex>A  \to  B</tex>と書いて<tex>\prod _{x : A} B</tex>を表す。<tex>\prod</tex>は比較的強く結合することにする。したがって、<tex>\prod _{x : A} B  \to  C</tex>は<tex>( \prod _{x : A} B)  \to  C</tex>を表す。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>254</anchor>   <addr>math-00JD</addr>  <route>math-00JD.xml</route>   <title>依存和型</title> </frontmatter> <mainmatter><p>
  <strong>依存和型</strong>(<em>dependent sum type</em>)を以下の規則で与える。
  <tex display="block">
     \frac { 
       \Gamma   \vdash   A \  \  \mathsf {type} 
       \quad 
       \Gamma , x {:} A   \vdash   B \  \  \mathsf {type} 
     }{ 
       \Gamma   \vdash   \sum _{x : A} B \  \  \mathsf {type} 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   M  :  A 
       \quad 
       \Gamma   \vdash   N  :  [M/x]B 
     }{ 
       \Gamma   \vdash   (M, N)  :  \sum _{x : A} B 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   M  :  \sum _{x : A} B 
     }{ 
       \Gamma   \vdash   \pi _1 M  :  A 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   M  :  \sum _{x : A} B 
     }{ 
       \Gamma   \vdash   \pi _2 M  :  [ \pi _1 M / x]B 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   M  :  A 
       \quad 
       \Gamma   \vdash   N  :  [M/x]B 
     }{ 
       \Gamma   \vdash   \pi _1 (M, N)   \equiv   M  :  A 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   M  :  A 
       \quad 
       \Gamma   \vdash   N  :  [M/x]B 
     }{ 
       \Gamma   \vdash   \pi _2 (M, N)   \equiv   N  :  [M/x]B 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   M  :  \sum _{x : A} B 
     }{ 
       \Gamma   \vdash   ( \pi _1 M,  \pi _2 M)   \equiv   M  :  \sum _{x : A} B 
     } 
  </tex>

  <tex>B</tex>が自由変数<tex>x</tex>を含まないとき、<tex>A  \times  B</tex>と書いて<tex>\sum _{x : A} B</tex>を表す。<tex>\sum</tex>は比較的強く結合することにする。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>255</anchor>   <addr>math-00JE</addr>  <route>math-00JE.xml</route>   <title>Unit型</title> </frontmatter> <mainmatter><p>
  <strong>Unit型</strong>(<em>unit type</em>)を以下の規則で与える。
  <tex display="block">
     \frac { 
     }{ 
       \Gamma   \vdash   \mathsf {Unit} \  \  \mathsf {type} 
     } 
  </tex>

  <tex display="block">
     \frac { 
     }{ 
       \Gamma   \vdash   \ast  :  \mathsf {Unit} 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   M  :  \mathsf {Unit} 
     }{ 
       \Gamma   \vdash   \ast   \equiv   M  :  \mathsf {Unit} 
     } 
  </tex>
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>256</anchor>   <addr>math-00J4</addr>  <route>math-00J4.xml</route>   <title>同一視型</title> </frontmatter> <mainmatter><p>
  <strong>同一視型</strong>(<em>identity type</em>)を以下の規則で与える。
  <tex display="block">
     \frac { 
       \Gamma   \vdash   A \  \  \mathsf {type} 
       \quad 
       \Gamma   \vdash   M  :  A 
       \quad 
       \Gamma   \vdash   N  :  A 
     }{ 
       \Gamma   \vdash   \mathsf {Id}_{ A }( M ,  N ) \  \  \mathsf {type} 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   M  :  A 
     }{ 
       \Gamma   \vdash   \mathsf {refl} _M  :  \mathsf {Id}_{ A }( M ,  M ) 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   p  :  \mathsf {Id}_{ A }( M ,  N ) 
       \quad 
       \Gamma , x {:} A, q {:}  \mathsf {Id}_{ A }( M ,  x )   \vdash   B \  \  \mathsf {type} 
       \quad 
       \Gamma   \vdash   O  :  [ \mathsf {refl} _M/q][M/x]B 
     }{ 
       \Gamma   \vdash   \mathsf {J} (p, B, O)  :  [p/q][N/x]B 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma , x {:} A, q {:}  \mathsf {Id}_{ A }( M ,  x )   \vdash   B \  \  \mathsf {type} 
       \quad 
       \Gamma   \vdash   O  :  [ \mathsf {refl} _M/q][M/x]B 
     }{ 
       \Gamma   \vdash   \mathsf {J} ( \mathsf {refl} _M, B, O)   \equiv   O  :  [ \mathsf {refl} _M/q][M/x]B 
     } 
  </tex>
</p><p>
  同一視型の除去については更なる規則が考えられる：
</p><ol>
  <li>
    <link href="math-00J7.xml" type="local" title="同一視型の除去の一意性">同一視型の除去の一意性</link>
  </li>
  <li>
    <link href="math-00J5.xml" type="local" title="Equality reflection">Equality reflection</link>
  </li>
  <li>
    <link href="math-00J6.xml" type="local" title="StreicherのK規則">StreicherのK規則</link>
  </li>
  <li>
    <link href="math-00J9.xml" type="local" title="同一性証明の一意性">同一性証明の一意性</link> (UIP)
  </li>
</ol><p>
  <link href="math-00J3.xml" type="local" title="Equality reflectionと同一視型の除去の一意性規則は同値である">1つ目と2つ目は同値</link>であり、<link href="math-00JA.xml" type="local" title="StreicherのK規則はUIPと同値である">3つ目と4つ目は同値</link>である。<link href="math-00J8.xml" type="local" title="Equality reflectionはUIPを含意する">前者のグループは後者のグループを含意する</link>。また、<link href="math-00JG.xml" type="local" title="Equality reflectionは関数の外延性を含意する">前者のグループからは関数の外延性も成り立つ</link>。これらの追加の規則は「型を高次元の構造として見ること」の妨げとなるので、ホモトピー型理論では通常採用されない。
</p></mainmatter> </tree></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>257</anchor>   <addr>math-00G4</addr>  <route>math-00G4.xml</route> <date><year>2024</year> <month>3</month> <day>20</day></date> <authors><author>elpinal</author> </authors> <title>型理論のモデルについて</title> </frontmatter> <mainmatter><p>
  型理論のモデルはまず<strong>文脈</strong>(<em>context</em>)と<strong>代入</strong>(<em>substitution</em>)の<link href="math-001M.xml" type="local" title="小圏">小圏</link><tex>\mathcal { C }</tex>を考えるところから始まる。文脈が重要なのは型や項がそれらに依存しているからであり、代入が重要なのはそれらが文脈間の射となるからである。
</p><p>
  <tex>\mathcal { C }</tex>が<link href="math-001E.xml" type="local" title="圏">圏</link>であることから何が言えるか確認しよう。射の合成は代入を「順番に適用する」ことを表していて、たとえば3つの文脈<tex>\Gamma _1,  \Gamma _2,  \Gamma _3</tex>と2つの代入
  <tex display="block">
     \begin {align*}
     \sigma  &amp; \colon   \Gamma _1  \to   \Gamma _2  \\ 
     \sigma ' &amp; \colon   \Gamma _2  \to   \Gamma _3
     \end {align*}
  </tex>
  が与えられたとき、<tex>\sigma '  \circ   \sigma   \colon   \Gamma _1  \to   \Gamma _3</tex>という別の代入を手に入れることができる。合成が結合的であることにより、等式
  <tex display="block">
    ( \sigma ''  \circ   \sigma ')  \circ   \sigma  =  \sigma ''  \circ  ( \sigma '  \circ   \sigma )
  </tex>
  が<tex>\sigma ''  \colon   \Gamma _3  \to   \Gamma _4</tex>について成り立つことが分かる。恒等射<tex>\mathsf {id} _ \Gamma</tex>は「何もしない」代入を表しており、その直感は等式
  <tex display="block">
     \mathsf {id} _{ \Gamma _2}  \circ   \sigma  =  \sigma  =  \sigma   \circ   \mathsf {id} _{ \Gamma _1}
  </tex>
  が成り立つことによって補強される。
</p><p>
  次に、型の意味論について考える。型は文脈に依存するので、各文脈<tex>\Gamma</tex>について型の集合<tex>\mathcal {U} ( \Gamma )</tex>があることを期待する。この集合の元<tex>A  \in   \mathcal {U} ( \Gamma )</tex>は文脈<tex>\Gamma</tex>における型を表している。さらに、代入<tex>\sigma   \colon   \Delta   \to   \Gamma</tex>が与えられたとき、<tex>\sigma</tex>を<tex>A</tex>に「適用」することによって新たな型<tex>A [ \sigma ]  \in   \mathcal {U} ( \Delta )</tex>を作りたい。これらのことより、<tex>\mathcal {U}</tex>を<strong><link href="math-0021.xml" type="local" title="前層">前層</link></strong><tex>\mathcal { C } ^ \mathsf {op}   \to   \mathbf {Set}</tex>とすることが適切だと考えられる。<tex>\mathcal {U}</tex>の<link href="math-001R.xml" type="local" title="関手">関手</link>則により、以下のような筋の通った等式が成り立つ。
  <tex display="block">
     \begin {align*}
    A[ \mathsf {id} _ \Gamma ] &amp;= A  \\ 
    A[ \sigma   \circ   \tau ] &amp;= A[ \sigma ][ \tau ]
     \end {align*}
  </tex>
  ただし、<tex>\tau   \colon   \Delta '  \to   \Delta</tex>とする。
</p><p>
  今度は項の意味論について考える。項もまた文脈に依存し、代入を適用できることが期待されるので、前層<tex>\widetilde { \mathcal {U}}   \colon   \mathcal { C } ^ \mathsf {op}   \to   \mathbf {Set}</tex>が必要となる。各文脈<tex>\Gamma</tex>に対して元<tex>M  \in   \widetilde { \mathcal {U}} ( \Gamma )</tex>は<tex>\Gamma</tex>における項を表しており、型のときと同じような等式が成り立つ。
  <tex display="block">
     \begin {align*}
    M[ \mathsf {id} _ \Gamma ] &amp;= M  \\ 
    M[ \sigma   \circ   \tau ] &amp;= M[ \sigma ][ \tau ]
     \end {align*}
  </tex>
  ところで項の文脈は<tex>\widetilde { \mathcal {U}}</tex>への引数によって決まったが、項が持つ型にはまだ言及できていない。何らかの方法で2つの前層<tex>\widetilde { \mathcal {U}}</tex>と<tex>\mathcal {U}</tex>を関連付ける必要がある。
</p><p>
  任意の項<tex>M  \in   \widetilde { \mathcal {U}} ( \Gamma )</tex>について一意の型<tex>A  \in   \mathcal {U} ( \Gamma )</tex>が定まるべきであるので、写像<tex>p_ \Gamma   \colon   \widetilde { \mathcal {U}} ( \Gamma )  \to   \mathcal {U} ( \Gamma )</tex>が各<tex>\Gamma</tex>について必要となる。さらに、項<tex>M  \in   \widetilde { \mathcal {U}} ( \Gamma )</tex>が型<tex>A  \in   \mathcal {U} ( \Gamma )</tex>を持つならば、代入<tex>\sigma   \colon   \Delta   \to   \Gamma</tex>によって得られる項<tex>M[ \sigma ]  \in   \widetilde { \mathcal {U}} ( \Delta )</tex>は型<tex>A[ \sigma ]  \in   \mathcal {U} ( \Delta )</tex>を持つべきであるが、これはまさに自然性を指している。したがって、<link href="math-001S.xml" type="local" title="自然変換">自然変換</link><tex>p  \colon   \widetilde { \mathcal {U}}   \Rightarrow   \mathcal {U}</tex>が求めていたものとなる。
</p><p>
  ここまでで、圏<tex>\mathcal { C }</tex>と2つの前層<tex>\mathcal {U} ,  \widetilde { \mathcal {U}}   \colon   \mathcal { C } ^ \mathsf {op}   \to   \mathbf {Set}</tex>、それから自然変換<tex>p  \colon   \widetilde { \mathcal {U}}   \Rightarrow   \mathcal {U}</tex>が必要だと分かった。ところが、文脈<tex>\Gamma</tex>に型<tex>A  \in   \mathcal {U} ( \Gamma )</tex>を追加して文脈<tex>\Gamma   \rhd  A</tex>を作る操作や、項変数をまだ扱っていなかった。これらの概念をモデル化するには、<tex>p</tex>が<strong>表現可能</strong>でなければならない。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>258</anchor>  <taxon>定義</taxon> <addr>math-00G5</addr>  <route>math-00G5.xml</route>   <title>表現可能自然変換</title> <meta name="source"><link href="https://stacks.math.columbia.edu/tag/0023" type="external">The Stacks project</link></meta></frontmatter> <mainmatter><p>
  <link href="math-001M.xml" type="local" title="小圏">小圏</link><tex>\mathcal { C }</tex>上の2つの<link href="math-0021.xml" type="local" title="前層">前層</link><tex>P,Q  \colon   \mathcal { C } ^ \mathsf {op}   \to   \mathbf {Set}</tex>と、<link href="math-001S.xml" type="local" title="自然変換">自然変換</link><tex>\alpha   \colon  P  \Rightarrow  Q</tex>が与えられたとする。<tex>\alpha</tex>が<strong>表現可能</strong>(<em>representable</em>)であるとは、<tex>\mathcal { C }</tex>の任意の対象<tex>a</tex>と元<tex>s  \in  Q(a)</tex>について、前層<tex>\mathsf {h}_{ a }   \times _Q P</tex>が<link href="math-002B.xml" type="local" title="表現可能関手">表現可能</link>であることを指す。ここで、<tex>\mathsf {h}_{ a }   \times _Q P</tex>は<link href="math-0083.xml" type="local" title="前層圏">前層圏</link><tex>\widehat { \mathcal { C } }</tex>における<link href="math-009D.xml" type="local" title="引き戻し">引き戻し</link>のことである。
</p>
  
    <center><img src="resources/b140c1cf71e73f8935cdcba7817bedc7-web.svg"/></center>
  
<p>
  <tex>\mathsf {h}_{ a }</tex>は<link href="math-0023.xml" type="local" title="反変Hom関手">反変hom関手</link>であり、上記の図式では<link href="math-002C.xml" type="local" title="米田の補題">米田の補題</link>を用いて<tex>s</tex>を自然変換と見なした。
</p></mainmatter> </tree><p>
  <tex>p  \colon   \widetilde { \mathcal {U}}   \Rightarrow   \mathcal {U}</tex>が表現可能であれば、任意の文脈<tex>\Gamma</tex>と型<tex>A  \in   \mathcal {U} ( \Gamma )</tex>について、<tex>\mathsf {h}_{ \Gamma }   \times _ \mathcal {U}   \widetilde { \mathcal {U}}</tex>の表現
  <tex display="block">
     \mathsf {h}_{ \Gamma   \rhd  A }   \cong   \mathsf {h}_{ \Gamma }   \times _ \mathcal {U}   \widetilde { \mathcal {U}} 
  </tex>
  が手に入る。<link href="math-002G.xml" type="local" title="米田埋め込みは充満忠実">米田埋め込みが充満忠実</link>であることを思い出すと、以下の図式は引き戻し図式となる。
</p>
  
    <center><img src="resources/587e8b066d75cdc24b2d0d4bceeb0207-web.svg"/></center>
  
<p>
  このとき、代入<tex>\pi   \colon   \Gamma   \rhd  A  \to   \Gamma</tex>は<strong>弱化</strong>(<em>weakening</em>)を表す。<link href="math-002C.xml" type="local" title="米田の補題">米田の補題</link>によって自然変換<tex>\pi '  \colon   \mathsf {h}_{ \Gamma   \rhd  A }   \Rightarrow   \widetilde { \mathcal {U}}</tex>と対応する項<tex>\pi '  \in   \widetilde { \mathcal {U}} ( \Gamma   \rhd  A)</tex>は、文脈の一番右側の変数(de Bruijn indexでいうところの<tex>0</tex>)を指す。それ以外の変数は<tex>\pi '</tex>に<tex>\pi</tex>を複数回適用することによって表すことができる。
</p><p>
  上記の図式の可換性は、<tex>\pi '  \in   \widetilde { \mathcal {U}} ( \Gamma   \rhd  A)</tex>の型が<tex>A[ \pi ]  \in   \mathcal {U} ( \Gamma   \rhd  A)</tex>であることを意味する。そして、単に可換であるだけでなく引き戻しであることから、任意の代入<tex>\sigma   \colon   \Delta   \to   \Gamma</tex>と、型<tex>A[ \sigma ]</tex>を持つ項<tex>M  \in   \widetilde { \mathcal {U}} ( \Delta )</tex>について、代入<tex>{ \left \langle   \sigma , M   \right \rangle }   \colon   \Delta   \to   \Gamma   \rhd  A</tex>を構成でき、以下の等式が成り立つ。
  <tex display="block">
     \begin {align*}
     \pi   \circ   { \left \langle   \sigma , M   \right \rangle }  &amp;=  \sigma   \\ 
     \pi '[ { \left \langle   \sigma , M   \right \rangle } ] &amp;= M  \\ 
     { \left \langle   \pi   \circ   \tau ,  \pi '[ \tau ]   \right \rangle }  &amp;=  \tau 
     \end {align*}
  </tex>
  ただし、<tex>\tau   \colon   \Delta   \to   \Gamma   \rhd  A</tex>とする。
</p><p>
  最後に、空の文脈を表すために、圏<tex>\mathcal { C }</tex>が<link href="math-008C.xml" type="local" title="終対象">終対象</link><tex>\cdot</tex>を持つことを要請しておく。
</p><p>
  以上で型理論の基本的な部分のモデルを定義することができた。このモデルの構成要素を振り返っておく。
</p><ol>
  <li>
    文脈と代入の小圏<tex>\mathcal { C }</tex>は代入の合成と単位元を提供する。
  </li>
  <li>
    型の<link href="math-0021.xml" type="local" title="前層">前層</link><tex>\mathcal {U}   \colon   \mathcal { C } ^ \mathsf {op}   \to   \mathbf {Set}</tex>は、代入が型の集合に<link href="math-001R.xml" type="local" title="関手">関手</link>的に作用することを保証する。
  </li>
  <li>
    項の前層<tex>\widetilde { \mathcal {U}}   \colon   \mathcal { C } ^ \mathsf {op}   \to   \mathbf {Set}</tex>は、代入が項の集合に関手的に作用することを保証する。
  </li>
  <li>
    <link href="math-001S.xml" type="local" title="自然変換">自然変換</link><tex>p  \colon   \widetilde { \mathcal {U}}   \Rightarrow   \mathcal {U}</tex>は各項の型を、代入と可換となるように指定する。
  </li>
  <li>
    <tex>p</tex>の<link href="math-00G5.xml" type="local" title="表現可能自然変換">表現可能性</link>は、文脈<tex>\Gamma</tex>と型<tex>A  \in   \mathcal {U} ( \Gamma )</tex>から文脈<tex>\Gamma   \rhd  A</tex>の構成を可能にし、これが<tex>\Gamma</tex>と<tex>A</tex>の組として普遍的であることを保証する。
  </li>
  <li>
    <tex>\mathcal { C }</tex>が<link href="math-008C.xml" type="local" title="終対象">終対象</link>を持つことによって、空の文脈を表すことができる。
  </li>
</ol><p>
  本稿では型構成子(<tex>\Pi</tex>型や<tex>\Sigma</tex>型、同一視型など)のモデルについては扱わなかった。興味のある読者は<link href="awodey-2017.xml" type="local" title="Natural models of homotopy type theory">Awodey (2017)</link>を読むと良いだろう。
</p></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>259</anchor>   <addr>math-00C2</addr>  <route>math-00C2.xml</route> <date><year>2023</year> <month>12</month> <day>11</day></date> <authors><author>elpinal</author> </authors> <title>Grothendieck宇宙の前層圏への持ち上げ</title> </frontmatter> <mainmatter><p>
  これは、<link href="https://adventar.org/calendars/8591" type="external">圏論 Advent Calendar 2023</link> 10日目の記事です。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>260</anchor>  <taxon>定義</taxon> <addr>math-005O</addr>  <route>math-005O.xml</route>   <title>Grothendieck宇宙</title> <meta name="source"><link href="https://ncatlab.org/nlab/show/Grothendieck+universe" type="external">nLab</link></meta></frontmatter> <mainmatter><p>
  <strong>Grothendieck宇宙</strong>(<em>Grothendieck universe</em>)とは、以下の条件を満たす集合<tex>\mathcal { U }</tex>のことである。
</p><block open="open"><headline><b>条件</b></headline> 
  <ol>
    <li>
      <tex>\mathcal { U }</tex>は<link href="math-005N.xml" type="local" title="推移的集合">推移的</link>である。
    </li>
    <li>
      任意の<tex>A  \in   \mathcal { U }</tex>について、その<link href="math-0032.xml" type="local" title="冪集合">冪集合</link><tex>\mathcal {P} (A)</tex>が<tex>\mathcal { U }</tex>の元となる。
    </li>
    <li>
      <link href="math-0033.xml" type="local" title="空集合">空集合</link><tex>\emptyset</tex>は<tex>\mathcal { U }</tex>の元である。
    </li>
    <li>
      任意の<tex>I  \in   \mathcal { U }</tex>と<link href="math-005P.xml" type="local" title="集合の元の族">族</link><tex>u : I  \to   \mathcal { U }</tex>について、その<link href="math-005Q.xml" type="local" title="族の合併">合併</link><tex>\bigcup _i u_i</tex>が<tex>\mathcal { U }</tex>の元となる。
    </li>
  </ol>
</block><block open="open"><headline><b>用語</b></headline> 
  <p>
    <tex>\mathcal { U }</tex>の元を<tex>\mathcal { U }</tex>-<em>small</em>な集合と呼ぶ。また、<tex>\mathcal { U }</tex>-smallな集合と同型な集合を<strong>本質的に</strong><em><tex>\mathcal { U }</tex>-small</em>な集合（<em>essentially <tex>\mathcal { U }</tex>-small set</em>）と呼ぶ。
  </p>
</block></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>261</anchor>  <taxon>定義</taxon> <addr>math-007Y</addr>  <route>math-007Y.xml</route>   <title>小さい前層</title> <meta name="source"><link href="hofmann-streicher-1997.xml" type="local" title="Lifting Grothendieck Universes">[hofmann-streicher-1997]</link></meta></frontmatter> <mainmatter><p>
  <tex>\mathcal { U }</tex>を<link href="math-005O.xml" type="local" title="Grothendieck宇宙">Grothendieck宇宙</link>、<tex>\mathcal { C }</tex>を<tex>\mathcal { U }</tex>-smallな<link href="math-001E.xml" type="local" title="圏">圏</link>とする。<tex>\mathcal { C }</tex>上の<link href="math-0021.xml" type="local" title="前層">前層</link><tex>F</tex>が与えられたとする。任意の対象<tex>I</tex>について<tex>F(I)  \in   \mathcal { U }</tex>が成り立つとき、<tex>F</tex>を<strong>小さい</strong>(<em>small</em>)前層と呼ぶ。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>262</anchor>  <taxon>定義</taxon> <addr>math-0086</addr>  <route>math-0086.xml</route>   <title>小さい前層の族</title> <meta name="source"><link href="hofmann-streicher-1997.xml" type="local" title="Lifting Grothendieck Universes">[hofmann-streicher-1997]</link></meta></frontmatter> <mainmatter><p>
  <tex>\mathcal { U }</tex>を<link href="math-005O.xml" type="local" title="Grothendieck宇宙">Grothendieck宇宙</link>、<tex>\mathcal { C }</tex>を<tex>\mathcal { U }</tex>-smallな<link href="math-001E.xml" type="local" title="圏">圏</link>とする。<tex>\mathcal { C }</tex>上の<link href="math-0021.xml" type="local" title="前層">前層</link><tex>F</tex>が与えられたとする。<link href="math-00CN.xml" type="local" title="反変関手の元の圏">元の圏</link><tex>\mathsf {el} (F)</tex>上の<link href="math-007Y.xml" type="local" title="小さい前層">小さい前層</link>のことを<tex>F</tex>上の<strong>小さい前層の族</strong>(<em>family of small presheaves</em> over <tex>F</tex>)と呼ぶ。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>263</anchor>  <taxon>定義</taxon> <addr>math-0087</addr>  <route>math-0087.xml</route>   <title>Hofmann-Streicher宇宙</title> <meta name="source"><link href="awodey-2022.xml" type="local" title="On Hofmann-Streicher universes">[awodey-2022]</link></meta></frontmatter> <mainmatter><p>
  <tex>\mathcal { U }</tex>を<link href="math-005O.xml" type="local" title="Grothendieck宇宙">Grothendieck宇宙</link>、<tex>\mathcal { C }</tex>を<tex>\mathcal { U }</tex>-smallな<link href="math-001E.xml" type="local" title="圏">圏</link>とする。<strong>Hofmann-Streicher宇宙</strong>(<em>Hofmann-Streicher universe</em>)は、以下のように定義される2つの<link href="math-0021.xml" type="local" title="前層">前層</link><tex>U  \colon   \mathcal { C } ^ \mathsf {op}   \to   \mathbf {Set}</tex>と<tex>E  \colon  ( \mathsf {el} (U))^ \mathsf {op}   \to   \mathbf {Set} _{ \mathcal { U } }</tex>から成る。
  <tex display="block">
     \begin {align*}
    U(a)    &amp; \mathrel { \stackrel { \text {def}}{=}}   \mathsf {Ob} { \left ( [( \mathcal { C } /a)^ \mathsf {op} ,  \mathbf {Set} _{ \mathcal { U } }] \right )}   \\ 
    U(f  \colon  a  \to  a') (F  \in  U a') &amp; \mathrel { \stackrel { \text {def}}{=}}  F  \circ  ( \Sigma _f)^ \mathsf {op}   \colon  ( \mathcal { C } /a)^ \mathsf {op}   \to   \mathbf {Set} _{ \mathcal { U } }  \\ 
    E(a, P) &amp; \mathrel { \stackrel { \text {def}}{=}}  P(a,  \mathsf {id} _a)  \\ 
    E(f  \colon  a  \to  a') (v  \colon  P'(a',  \mathsf {id} _{a'})) &amp; \mathrel { \stackrel { \text {def}}{=}}  P'(f  \in   \mathsf {Hom} _{ \mathcal { C } /a' } { \left ( f , \mathsf {id} _{a'} \right )} )(v)  \in  (U(f)(P'))(a,  \mathsf {id} _a)      \end {align*}
  </tex>
  ここで、<tex>( \Sigma _f)^ \mathsf {op}</tex>は<link href="math-006E.xml" type="local" title="依存和関手">依存和関手</link>の<link href="math-008E.xml" type="local" title="反対関手">反対関手</link>を表す。
</p><p>
  <link href="math-0082.xml" type="local" title="元の圏上の前層圏はスライス圏と圏同値である">元の圏上の前層圏はスライス圏と圏同値である</link>ので、<tex>E</tex>は<tex>\widehat { \mathcal { C } }/U</tex>の対象としても与えることができる。前層<tex>E  \colon   \mathcal { C } ^ \mathsf {op}   \to   \mathbf {Set}</tex>と自然変換<tex>e  \colon  E  \Rightarrow  U</tex>は次のように定義できる。
  <tex display="block">
     \begin {align*}
    E(a) &amp; \mathrel { \stackrel { \text {def}}{=}}   \coprod _{P  \in  Ua} P(a,  \mathsf {id} _a)  \\ 
    e_a (P, v) &amp; \mathrel { \stackrel { \text {def}}{=}}  P
     \end {align*}
  </tex>
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>264</anchor>  <taxon>定理</taxon> <addr>math-0088</addr>  <route>math-0088.xml</route>   <title>Hofmann-Streicher宇宙はgeneric objectである</title> </frontmatter> <mainmatter><p>
  <tex>\mathcal { U }</tex>を<link href="math-005O.xml" type="local" title="Grothendieck宇宙">Grothendieck宇宙</link>とし、<tex>(U, E)</tex>を<tex>\mathcal { U }</tex>によって定義される<link href="math-0087.xml" type="local" title="Hofmann-Streicher宇宙">Hofmann-Streicher宇宙</link>とする。<tex>F  \colon   \mathcal { C } ^ \mathsf {op}   \to   \mathbf {Set}</tex>を任意の(小さいとは限らない)<link href="math-0021.xml" type="local" title="前層">前層</link>とする。<tex>F</tex>上の<link href="math-0086.xml" type="local" title="小さい前層の族">小さい前層の族</link><tex>G</tex>が与えられたとき、自然変換<tex>\chi   \colon  F  \Rightarrow  U</tex>と<tex>\chi '  \colon  G  \Rightarrow  E</tex>が存在して、以下の図式が引き戻し図式となる。
</p>
  
    <center><img src="resources/b7469f067f13f615ea20010090ec7416-web.svg"/></center>
  

  <block open="open"><headline><b>証明</b>.</headline> 
  <ol>
    <li>
      <p>
        まず、<tex>\chi   \colon  F  \Rightarrow  U</tex>を定義する。任意の対象<tex>a</tex>について、
        <tex display="block">
           \chi _a (x  \in  Fa)(b, f  \colon  b  \to  a)  \mathrel { \stackrel { \text {def}}{=}}  G(b, F(f)(x))
        </tex>
        と定義する。
      </p>
    </li>

    <li>
      <p>
        次に、<tex>\chi '  \colon  G  \Rightarrow  E</tex>を定義する。任意の対象<tex>a</tex>について、
        <tex display="block">
           \chi '_a (x  \in  Ga)  \mathrel { \stackrel { \text {def}}{=}}  ( \chi _a ( \alpha _a (x)), x  \in  G(a,  \alpha _a (x)))
        </tex>
        と定義する。
      </p>
    </li>

    <li>
      <p>
        上記の図式が可換であることは簡単に分かる。
      </p>
    </li>

    <li>
      <p>
        以下のような可換図式が与えられたとする。
      </p>

      
  
    <center><img src="resources/256d8e1abd26f3416707df860cb12c3c-web.svg"/></center>
  


      <p>
        このとき、任意の対象<tex>a</tex>と元<tex>x  \in  G' a</tex>について、
        <tex display="block">
           \chi _a (p_a (x)) = e_a (q_a (x))
        </tex>
        が成り立つ。<tex>Ua</tex>の元は関手であるので、任意の対象<tex>b</tex>と射<tex>f  \colon  b  \to  a</tex>について、
        <tex display="block">
           \chi _a (p_a (x))(b, f) = e_a (q_a (x)) (b, f)
        </tex>
        も成り立つ。したがって、
        <tex display="block">
          G(b, F(f)(p_a (x))) = e_a (q_a (x)) (b, f)
        </tex>
        となる。自然変換<tex>r  \colon  G'  \Rightarrow  G</tex>を次のように定義する。任意の対象<tex>a</tex>と元<tex>y  \in  Fa</tex>について、
        <tex display="block">
           \begin {align*}
          r_{(a, y)} (v  \in  G' (a, y)) &amp; \in  e_a (q_a (v))(a,  \mathsf {id} _a) = G(a, p_a(v))  \\ 
          &amp; \mathrel { \stackrel { \text {def}}{=}}   \pi _2 (q_a (v))
           \end {align*}
        </tex>
        と定義する。
      </p>

      
  
    <center><img src="resources/a0cb6cd73c9f18e266be599f2bd82177-web.svg"/></center>
  


      <p>
        この図式が可換であることは頑張れば分かる。この<tex>r</tex>の一意性については演習問題とする。
      </p>
    </li>
  </ol>
</block>
</mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>265</anchor>   <addr>math-00C3</addr>  <route>math-00C3.xml</route>   <title>おわりに</title> </frontmatter> <mainmatter><p>
  短時間で書いたこともあり、粗のある文書になりました。Generic objectという用語に関しては<link href="jacobs-1999.xml" type="local" title="Categorical Logic and Type Theory">Jacobsの本</link>や<link href="sterling-2023-generic.xml" type="local" title="What should a generic object be?">Sterling (2023)</link>を見てください。前層圏に限らない一般のトポスにおける宇宙については、<link href="streicher-2005.xml" type="local" title="Universes in toposes">Streicher (2005)</link>が参考になると思います。
</p></mainmatter> </tree></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>266</anchor>   <addr>math-00BK</addr>  <route>math-00BK.xml</route> <date><year>2023</year> <month>12</month> <day>2</day></date> <authors><author>elpinal</author> </authors> <title>Isabelle/HOLで位相空間論の初歩を証明した</title> </frontmatter> <mainmatter><p>
  <link href="https://adventar.org/calendars/9022" type="external">定理証明支援系 Advent Calendar 2023</link>
</p><p>
  Proof assistantとしては普段は<link href="agda.xml" type="local" title="Agda">Agda</link>を使っていて、これは非常に気に入っている。AgdaはMartin-Löf型理論と呼ばれる依存型理論をベースとしているが、依存型理論以外をベースとしたproof assistantがどのくらい実用的なのか気になった私は、<strong>Isabelle/HOL</strong>を使ってみることにした。HOLという名前が示唆するように、これは<strong>高階論理</strong>(<em>higher-order logic</em>)に基づいている。
</p><p>
  Armstrongの<link href="armstrong-1983.xml" type="local" title="Basic topology">Basic topology</link>という本のごく一部分をIsabelle/HOLで実装することにした。具体的には、1章と2章にあるいくつかの定義の同値性や、補題を証明した。定理は特に証明していない。その結果はGitHubで<link href="https://github.com/elpinal/isabelle-hol-proofs/blob/7912eb8d9593cfa8e04da441fe89393903a602d2/Topology/Chapter1And2.thy" type="external">公開している</link>。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>267</anchor>   <addr>math-00BL</addr>  <route>math-00BL.xml</route>   <title>Isabelleについて</title> </frontmatter> <mainmatter><p>
  そもそも<link href="isabelle.xml" type="local" title="Isabelle">Isabelle</link>というのは、ある種の<strong>メタ論理</strong>(<em>metalogic; logical framework</em>)を提供している本体部分があり、そこに基底型や関数記号、公理を追加することで様々な<strong>対象論理</strong>(<em>object logic</em>)を表現している。対象論理の例として、高階論理(Isabelle/HOL)や1階論理(Isabelle/FOL)、ZF集合論(Isabelle/ZF)などがあり、その中で一番使われているのがIsabelle/HOLである。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>268</anchor>   <addr>math-00BM</addr>  <route>math-00BM.xml</route>   <title>基礎付けについて</title> </frontmatter> <mainmatter><p>
  Isabelle/HOLは<strong>古典</strong>高階論理(<em>classical</em> higher-order logic)をベースとしている。他の著名なproof assistant (AgdaやCoq、Leanなど)が<strong>構成的</strong>(<em>constructive</em>)な型理論をベースとしていることを考えると、Isabelle/HOLが排中律や二重否定除去を認めているのは特徴的といえる。また、高階論理には依存和や依存積といった<strong>依存型</strong>(<em>dependent type</em>)がないので、Agdaなどとは書き味がある程度異なる。
</p><p>
  古典高階論理というのは、まず<strong>単純型理論</strong>(<em>simple type theory</em>)があり、その上に1階述語論理のレイヤーが載り、その論理における命題が単純型理論の<code>bool</code>型の項としてinternalizeされるもののことである。基本的にはBooleトポスの内部言語だと思っていればよく、たとえばIsabelle/HOLの関数型<code>=&gt;</code>はexponential objectであり、Isabelle/HOLの含意<code>--&gt;</code>は部分対象分類子<code>bool</code>上の内部Boole代数構造における含意である。ちなみに<code>==&gt;</code>はメタ論理における含意を表す。
</p><p>
  <code>bool</code>が部分対象分類子であるので、<code>a =&gt; bool</code>型の項は<code>a</code>型を持つ項の集合と見なすことができる。実際には、型<code>a set</code>は<code>a =&gt; bool</code>と同型になるように<link href="https://isabelle.in.tum.de/dist/library/HOL/HOL/Set.html" type="external">定義されている</link>。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>269</anchor>   <addr>math-00BO</addr>  <route>math-00BO.xml</route>   <title>コラム：Isabelleのメタ論理</title> </frontmatter> <mainmatter><p>
  少しややこしいが、Isabelleのメタ論理自体はある種の<strong>直観主義</strong>高階論理(<em>intuitionistic</em> higher-order logic)らしい。まあIsabelle/HOLのユーザはそんなことを気にしなくても全く問題ないはず。
</p></mainmatter> </tree></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>270</anchor>   <addr>math-00BN</addr>  <route>math-00BN.xml</route>   <title>Isabelle/HOLを用いた位相空間論の形式化について</title> </frontmatter> <mainmatter><p>
  まず、構文について話しておく。Isabelleでは二重引用符を多用することが特徴的だが、専用のIDEで開けばちゃんとその中身もシンタックスハイライトされるので、そこまで問題とはならない。GitHubでは文字列としてハイライトされてしまうのが残念ではある。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>271</anchor>   <addr>math-00BP</addr>  <route>math-00BP.xml</route>   <title>Isarについて</title> </frontmatter> <mainmatter><p>
  <link href="https://isabelle.in.tum.de/Isar/" type="external">Isar</link>は<em>intelligible semi-automated reasoning</em>の略で、読みやすい構造的な証明を書くための仕組みである。通常のtacticベースの証明は次のようになるのに対して、
</p><pre>
lemma &quot;A ∧ B ⟶ B ∧ A&quot;
  apply (rule impI)
  apply (erule conjE)
  apply (rule conjI)
   apply assumption
  apply assumption
  done
</pre><p>
  Isarを使った証明は次のようになる。
</p><pre>
lemma &quot;A ∧ B ⟶ B ∧ A&quot;
proof (rule impI)
  assume &quot;A ∧ B&quot;
  then have &quot;A&quot; &quot;B&quot; by (simp_all add: conjE)
  thus &quot;B ∧ A&quot; by (intro conjI)
qed
</pre><p>
  前者はいかにも自然演繹の規則を適用しているような証明であるのに対して、後者は証明の部分部分で、「今どんな仮定を導入したのか、今何を証明しようとしているか」が明確になっていて、自然言語で書くような証明により近い形が実現されていることが分かる。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>272</anchor>   <addr>math-00BQ</addr>  <route>math-00BQ.xml</route>   <title>Localeについて</title> </frontmatter> <mainmatter><p>
  Isabelle/HOLは依存和を持たないかわりに、<em>locale</em>という仕組みを使うことができる。これはIsabelle本体の機能である。（localeといってもpoint-free topologyで出てくるlocaleのことではない。）たとえば、位相空間の定義は次のようなlocaleによって与えられる。
</p><pre>
locale topological_space =
  fixes carrier :: &quot;'a set&quot;
  and opens :: &quot;'a set set&quot;
  assumes open_subsets [intro]: &quot;opens ⊆ Pow carrier&quot;
  and union_closed [intro]: &quot;⟦ A ⊆ opens ⟧ ⟹ ⋃ A ∈ opens&quot;
  and binary_inter_closed [intro]: &quot;⟦ X ∈ opens; Y ∈ opens ⟧ ⟹ (X ∩ Y) ∈ opens&quot;
  and nullary_inter_closed [intro, simp]: &quot;carrier ∈ opens&quot;
</pre><p>
  Localeはある種の文脈を表している。たとえば、<code>context topological_space begin ... end</code>、あるいはlocale宣言の直後で<code>begin ... end</code>とすることで、1つの位相空間を一時的に文脈に持ち込むことができる。そうすることによって、様々な定義や定理を位相空間に対して与えることができる。あるいは以下のように<code>(in topological_space)</code>と書いて、各補題や定理ごとに位相空間を文脈に入れることができる。
</p><pre>
lemma (in topological_space) &quot;...&quot;
</pre></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>273</anchor>   <addr>math-00BR</addr>  <route>math-00BR.xml</route>   <title>自動証明</title> </frontmatter> <mainmatter><p>
  Isabelleには<link href="https://isabelle.in.tum.de/dist/Isabelle2023/doc/sledgehammer.pdf" type="external">sledgehammer</link>という強力な自動証明の仕組みがある。さらに、命題の反例を探してくれるツール<link href="https://isabelle.in.tum.de/dist/Isabelle2023/doc/nitpick.pdf" type="external">nitpick</link>もある。これらは何でもかんでも魔法のように解決してくれるツールというわけではないが、上手く使うと効率的に証明を書くことができる。
</p><p>
  Sledgehammerは外部の自動定理証明器(automatic theorem prover)とSMT solverを呼びだし、それらの結果を表示してくれる。Sledgehammerは基本的に時間がかかるので、普段はより軽量な自動証明の仕組みである<code>auto</code>,<code>blast</code>,<code>fast</code>などを使い、それでも駄目だったときに使う。
</p></mainmatter> </tree></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>274</anchor>   <addr>math-00BS</addr>  <route>math-00BS.xml</route>   <title>まとめ</title> </frontmatter> <mainmatter><p>
  IsabelleのIsarとlocaleは形式的な証明の読みやすさと扱いやすさに寄与していて、他のproof assistantには無い魅力を持っていると感じた。
</p></mainmatter> </tree></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>275</anchor>   <addr>math-006G</addr>  <route>math-006G.xml</route> <date><year>2023</year> <month>10</month> <day>16</day></date> <authors><author>elpinal</author> </authors> <title>単純型付きλ計算のCanonicityを証明しよう</title> </frontmatter> <mainmatter><p>
  <em>Canonicity</em>とは、「任意の閉項(closed term)が<em>canonical form</em>と等しい」という主張である。たとえばBool型の閉項であれば、それはtrueかfalseと等しいことが期待される。本稿では、<strong>単純型付きλ計算</strong>(<em>simply typed λ-calculus</em>)のcanonicityを証明する。
</p><p>
  メタ理論は数学で一般的に使われる集合論ではなく、<em>extensional identity type</em>を持つ<strong>Martin-löf型理論</strong>とする。メタレベルと対象レベルを区別しやすくするために、メタレベルは青、対象レベルはピンクで表す。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>276</anchor>   <addr>math-006H</addr>  <route>math-006H.xml</route>   <title>単純型付きλ計算のシグネチャ</title> </frontmatter> <mainmatter><p>
  まず、単純型付きλ計算は4つの<em>sort</em>から成る。
  <tex display="block">
     \begin {align*}
     \textcolor {de1a75}{ \mathsf {Con} }  &amp;:  \textcolor {0f5cf7}{ \mathsf {Set} }   \\ 
     \textcolor {de1a75}{ \mathsf {Sub} }  &amp;: ( \Gamma \  \Delta  :  \textcolor {de1a75}{ \mathsf {Con} } )  \textcolor {0f5cf7}{ \to }   \textcolor {0f5cf7}{ \mathsf {Set} }   \\ 
     \textcolor {de1a75}{ \mathsf {Ty} }   &amp;:  \textcolor {0f5cf7}{ \mathsf {Set} }   \\ 
     \textcolor {de1a75}{ \mathsf {Tm} }   &amp;:  \textcolor {de1a75}{ \mathsf {Con} }   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Ty} }   \textcolor {0f5cf7}{ \to }   \textcolor {0f5cf7}{ \mathsf {Set} } 
     \end {align*}
  </tex>
  このシグネチャは<link href="kaposi-et-al-2019.xml" type="local" title="Constructing quotient inductive-inductive types">QIIT</link>を指定している。QIITについては詳しく説明しないが、多少依存型理論に慣れていれば雰囲気で読めると思う。ここで、<tex>\textcolor {de1a75}{ \mathsf {Con} }</tex>は<strong>文脈</strong>(<em><strong>con</strong>text</em>)、<tex>\textcolor {de1a75}{ \mathsf {Sub} }</tex>は<strong>明示的代入</strong>(<em>explicit <strong>sub</strong>stitution</em>)、<tex>\textcolor {de1a75}{ \mathsf {Ty} }</tex>は<strong>型</strong>(<em><strong>ty</strong>pe</em>)、<tex>\textcolor {de1a75}{ \mathsf {Tm} }</tex>は<strong>項</strong>(<em><strong>t</strong>er<strong>m</strong></em>)を表す。それから、文脈と代入が有限積を持つ<link href="math-001E.xml" type="local" title="圏">圏</link>を成すことと、項の集まりが<link href="math-0021.xml" type="local" title="前層">前層</link>となることを次のシグネチャによって指定する。
  <tex display="block">
     \begin {align*}
     \textcolor {de1a75}{ \cdot }     &amp;:  \textcolor {de1a75}{ \mathsf {Con} }   \\ 
     \textcolor {de1a75}{ \rhd }   &amp;:  \textcolor {de1a75}{ \mathsf {Con} }   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Ty} }   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Con} }   \\ 
     \textcolor {de1a75}{ \mathsf {id} }  &amp;:  \textcolor {de1a75}{ \mathsf {Sub} } \  \Gamma \  \Gamma   \\ 
     \textcolor {de1a75}{ \circ }     &amp;:  \textcolor {de1a75}{ \mathsf {Sub} } \  \Gamma _2 \  \Gamma _3   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Sub} } \  \Gamma _1 \  \Gamma _2   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Sub} } \  \Gamma _1 \  \Gamma _3   \\ 
     \textcolor {de1a75}{ \epsilon }  &amp;:  \textcolor {de1a75}{ \mathsf {Sub} } \  \Gamma \  \textcolor {de1a75}{ \cdot }   \\ 
     \textcolor {de1a75}{ \mathsf {p} }  &amp;:  \textcolor {de1a75}{ \mathsf {Sub} } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd }  A \right )} \  \Gamma   \\ 
     \textcolor {de1a75}{ \mathsf {q} }  &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd }  A \right )} \  A   \\ 
     \textcolor {de1a75}{ \langle } - \textcolor {de1a75}{ , }   - \textcolor {de1a75}{ \rangle }  &amp;:  \textcolor {de1a75}{ \mathsf {Sub} } \  \Delta \  \Gamma   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } \  \Delta \  A   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Sub} } \  \Delta \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd }  A \right )}   \\ 
    - \textcolor {de1a75}{   \lbrack   } - \textcolor {de1a75}{ \rbrack }  &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } \  \Delta \  A   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Sub} } \  \Gamma \  \Delta   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } \  \Gamma \  A   \\ 
     \textcolor {de1a75}{ \mathsf {lunit} }  &amp;:  \textcolor {de1a75}{ \mathsf {id} }   \textcolor {de1a75}{ \circ }   \sigma   \textcolor {0f5cf7}{ = }   \sigma   \\ 
     \textcolor {de1a75}{ \mathsf {runit} }  &amp;:  \sigma   \textcolor {de1a75}{ \circ }   \textcolor {de1a75}{ \mathsf {id} }   \textcolor {0f5cf7}{ = }   \sigma   \\ 
     \textcolor {de1a75}{ \mathsf {assoc} }  &amp;: ( \sigma _3  \textcolor {de1a75}{ \circ }   \sigma _2)  \textcolor {de1a75}{ \circ }   \sigma _1  \textcolor {0f5cf7}{ = }   \sigma _3  \textcolor {de1a75}{ \circ }  ( \sigma _2  \textcolor {de1a75}{ \circ }   \sigma _1)  \\ 
     \textcolor {de1a75}{ \mathsf { \epsilon \text {-}unique} }  &amp;: ( \sigma  :  \textcolor {de1a75}{ \mathsf {Sub} } \  \Gamma \  \textcolor {de1a75}{ \cdot } )  \textcolor {0f5cf7}{ \to }   \sigma   \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \epsilon }   \\ 
     \textcolor {de1a75}{ \mathsf { \textcolor {de1a75}{ \mathsf {p} } \text {-} { \left \langle     \right \rangle } } }  &amp;:  \textcolor {de1a75}{ \mathsf {p} }   \textcolor {de1a75}{ \circ }   \textcolor {de1a75}{ \langle } \sigma \textcolor {de1a75}{ , }   M \textcolor {de1a75}{ \rangle }   \textcolor {0f5cf7}{ = }   \sigma   \\ 
     \textcolor {de1a75}{ \mathsf { \textcolor {de1a75}{ \mathsf {q} } \text {-} { \left \langle     \right \rangle } } }  &amp;:  \textcolor {de1a75}{ \mathsf {q} }   \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \langle } \sigma \textcolor {de1a75}{ , }   M \textcolor {de1a75}{ \rangle } \textcolor {de1a75}{ \rbrack }   \textcolor {0f5cf7}{ = }  M  \\ 
     \textcolor {de1a75}{ \mathsf { { \left \langle     \right \rangle } \text {-}unique} }  &amp;: ( \sigma  :  \textcolor {de1a75}{ \mathsf {Sub} } \  \Delta \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd }  A \right )} )  \textcolor {0f5cf7}{ \to }   \sigma   \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \langle } \textcolor {de1a75}{ \mathsf {p} }   \textcolor {de1a75}{ \circ }   \sigma \textcolor {de1a75}{ , }   \textcolor {de1a75}{ \mathsf {q} }   \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack }   \textcolor {de1a75}{ \rangle }   \\ 
     \textcolor {de1a75}{ \mathsf {[] \text {-}id} }  &amp;: M \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \mathsf {id} } \textcolor {de1a75}{ \rbrack }   \textcolor {0f5cf7}{ = }  M  \\ 
     \textcolor {de1a75}{ \mathsf {[] \text {-} \circ } }  &amp;: M \textcolor {de1a75}{   \lbrack   } \sigma _2  \textcolor {de1a75}{ \circ }   \sigma _1 \textcolor {de1a75}{ \rbrack }   \textcolor {0f5cf7}{ = }  M \textcolor {de1a75}{   \lbrack   } \sigma _2 \textcolor {de1a75}{ \rbrack } \textcolor {de1a75}{   \lbrack   } \sigma _1 \textcolor {de1a75}{ \rbrack } 
     \end {align*}
  </tex>
  項<tex>\textcolor {de1a75}{ \mathsf {q} }  :  \textcolor {de1a75}{ \mathsf {Tm} } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd }  A \right )} \  A</tex>はde Bruijn indexの<tex>0</tex>、すなわち最も内側で束縛された変数を表している。代入<tex>\textcolor {de1a75}{ \mathsf {p} }  :  \textcolor {de1a75}{ \mathsf {Sub} } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd }  A \right )} \  \Gamma</tex>は弱化を表しており、1以上のde Bruijn index <tex>n</tex>は<tex>\textcolor {de1a75}{ \mathsf {q} } \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \mathsf {p} } ^n \textcolor {de1a75}{ \rbrack }</tex>のように、<tex>\textcolor {de1a75}{ \mathsf {p} }</tex>を<tex>\textcolor {de1a75}{ \mathsf {q} }</tex>に<tex>n</tex>回適用することによって表すことができる。ここで、<tex>\sigma  :  \textcolor {de1a75}{ \mathsf {Sub} } \  \Gamma \  \Delta</tex>について、<tex>\sigma ^ { \textcolor {de1a75}{ \uparrow } }  :  \textcolor {de1a75}{ \mathsf {Sub} } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd }  A \right )} \  { \left ( \Delta   \textcolor {de1a75}{ \rhd }  A \right )}</tex>を、<tex>\textcolor {de1a75}{ \langle } \sigma   \textcolor {de1a75}{ \circ }   \textcolor {de1a75}{ \mathsf {p} } \textcolor {de1a75}{ , }   \textcolor {de1a75}{ \mathsf {q} } \textcolor {de1a75}{ \rangle }</tex>と定義する。次に、関数型を追加する。
  <tex display="block">
     \begin {align*}
     \textcolor {de1a75}{ \Rightarrow }  &amp;:  \textcolor {de1a75}{ \mathsf {Ty} }   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Ty} }   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Ty} }   \\ 
     \textcolor {de1a75}{ \mathsf {lam} }  &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd }  A \right )} \  B   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } \  \Gamma \  { \left ( A  \textcolor {de1a75}{ \Rightarrow }  B \right )}   \\ 
     \textcolor {de1a75}{ \mathsf {app} }  &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } \  \Gamma \  { \left ( A  \textcolor {de1a75}{ \Rightarrow }  B \right )}   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd }  A \right )} \  B   \\ 
     \textcolor {de1a75}{ { \textcolor {de1a75}{ \Rightarrow } }  \beta }  &amp;:  \textcolor {de1a75}{ \mathsf {app} } \  { \left ( \textcolor {de1a75}{ \mathsf {lam} } \  M \right )}   \textcolor {0f5cf7}{ = }  M  \\ 
     \textcolor {de1a75}{ { \textcolor {de1a75}{ \Rightarrow } }  \eta }  &amp;:  \textcolor {de1a75}{ \mathsf {lam} } \  { \left ( \textcolor {de1a75}{ \mathsf {app} } \  M \right )}   \textcolor {0f5cf7}{ = }  M  \\ 
     \textcolor {de1a75}{ { \textcolor {de1a75}{ \mathsf {lam} } } \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \rbrack } }  &amp;:  { \left ( \textcolor {de1a75}{ \mathsf {lam} } \  M \right )}   \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack }   \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \mathsf {lam} } \  { \left ( M  \textcolor {de1a75}{   \lbrack   } \sigma ^ { \textcolor {de1a75}{ \uparrow } } \textcolor {de1a75}{ \rbrack } \right )} 
     \end {align*}
  </tex>
  これは次の<link href="math-001T.xml" type="local" title="自然同型">自然同型</link>が成り立つといっている。
  <tex display="block">
     \textcolor {de1a75}{ \mathsf {Tm} } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd }  A \right )} \  B   \textcolor {0f5cf7}{ \cong }   \textcolor {de1a75}{ \mathsf {Tm} } \  \Gamma \  { \left ( A  \textcolor {de1a75}{ \Rightarrow }  B \right )} 
  </tex>
  それから、Bool型も追加する。
  <tex display="block">
     \begin {align*}
     \textcolor {de1a75}{ \mathsf {Bool} }  &amp;:  \textcolor {de1a75}{ \mathsf {Ty} }   \\ 
     \textcolor {de1a75}{ \mathsf {true} }  &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } \  \Gamma \  \textcolor {de1a75}{ \mathsf {Bool} }   \\ 
     \textcolor {de1a75}{ \mathsf {false} }  &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } \  \Gamma \  \textcolor {de1a75}{ \mathsf {Bool} }   \\ 
     \textcolor {de1a75}{ \mathsf {if} }  &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } \  \Gamma \  \textcolor {de1a75}{ \mathsf {Bool} }   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } \  \Gamma \  A   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } \  \Gamma \  A   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } \  \Gamma \  A   \\ 
     \textcolor {de1a75}{ \textcolor {de1a75}{ \mathsf {Bool} }   \beta _1 }  &amp;:  \textcolor {de1a75}{ \mathsf {if} } \  \textcolor {de1a75}{ \mathsf {true} } \  M \  N   \textcolor {0f5cf7}{ = }  M  \\ 
     \textcolor {de1a75}{ \textcolor {de1a75}{ \mathsf {Bool} }   \beta _2 }  &amp;:  \textcolor {de1a75}{ \mathsf {if} } \  \textcolor {de1a75}{ \mathsf {false} } \  M \  N   \textcolor {0f5cf7}{ = }  N  \\ 
     \textcolor {de1a75}{ \textcolor {de1a75}{ \mathsf {true} }   \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \rbrack } }  &amp;:  \textcolor {de1a75}{ \mathsf {true} }   \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack }   \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \mathsf {true} }   \\ 
     \textcolor {de1a75}{ \textcolor {de1a75}{ \mathsf {false} }   \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \rbrack } }  &amp;:  \textcolor {de1a75}{ \mathsf {false} }   \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack }   \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \mathsf {false} }   \\ 
     \textcolor {de1a75}{ \textcolor {de1a75}{ \mathsf {if} }   \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \rbrack } }  &amp;:  { \left ( \textcolor {de1a75}{ \mathsf {if} } \  b \  M \  N \right )}   \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack }   \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \mathsf {if} } \  { \left ( b \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } \right )} \  { \left ( M \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } \right )} \  { \left ( N \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } \right )} 
     \end {align*}
  </tex>
  Bool型に対しては<tex>\eta</tex>同値性は仮定しない。
</p><p>
  上記のようにQIITを使う利点は、<strong>任意の(finitary) QIITについて、その代数の圏が自動的に手に入り、さらにその圏が<link href="math-008D.xml" type="local" title="始対象">始対象</link>(始代数)を持つ</strong>ことである。その始代数を<strong>構文</strong>(<em>syntax</em>)と呼び、このQIITの各代数を単純型付きλ計算の<strong>モデル</strong>(<em>model</em>)と呼ぶ。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>277</anchor>   <addr>math-006I</addr>  <route>math-006I.xml</route>   <title>単純型付きλ計算の集合モデル</title> </frontmatter> <mainmatter><p>
  次に、<strong>集合モデル</strong>(<em>set model</em>)を与える。
  <tex display="block">
     \begin {align*}
     \textcolor {de1a75}{ \mathsf {Con} } _ \mathsf {Set}  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \mathsf {Set} }   \\ 
     \textcolor {de1a75}{ \mathsf {Sub} } _ \mathsf {Set} \  \Gamma \  \Delta  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \Gamma   \textcolor {0f5cf7}{ \to }   \Delta   \\ 
     \textcolor {de1a75}{ \mathsf {Ty} } _ \mathsf {Set}  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \mathsf {Set} }   \\ 
     \textcolor {de1a75}{ \mathsf {Tm} } _ \mathsf {Set} \  \Gamma \  A &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \Gamma   \textcolor {0f5cf7}{ \to }  A
     \end {align*}
  </tex>
  ここで、メタ理論が少なくとも2つの宇宙<tex>\textcolor {0f5cf7}{ \mathsf {Set} } _0 :  \textcolor {0f5cf7}{ \mathsf {Set} } _1</tex>を持っていると仮定し、本稿において<tex>\textcolor {0f5cf7}{ \mathsf {Set} }</tex>と書いたときは、文脈に合わせて何らかの宇宙を表しているとする。各文脈と各型はメタレベルの型として解釈され、各代入と各項はメタレベルの関数として解釈される。集合モデルはいたって標準的に定義されるので、一部のみを抜粋する。
  <tex display="block">
     \begin {align*}
     \textcolor {de1a75}{ \cdot } _ \mathsf {Set}  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ 1 }   \\ 
    { { \left ( \Gamma   \textcolor {de1a75}{ \rhd }  A \right )} }_ \mathsf {Set}  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \Gamma   \textcolor {0f5cf7}{ \times }  A  \\ 
    { { \left ( A  \textcolor {de1a75}{ \Rightarrow }  B \right )} }_ \mathsf {Set}  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}  A  \textcolor {0f5cf7}{ \to }  B  \\ 
    { \textcolor {de1a75}{ \mathsf {Bool} } }_ \mathsf {Set}  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ 2 }   \\ 
    { { \left ( \textcolor {de1a75}{ \mathsf {lam} } \  M \right )} }_ \mathsf {Set}  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lambda }   \gamma   \mathpunct { \textcolor {0f5cf7}{ . } }  \textcolor {0f5cf7}{ \lambda }   a   \mathpunct { \textcolor {0f5cf7}{ . } }  M  \textcolor {0f5cf7}{ \lparen }   \gamma   \textcolor {0f5cf7}{ , }   a   \textcolor {0f5cf7}{ \rparen }   \\ 
    { \textcolor {de1a75}{ \mathsf {true} } }_ \mathsf {Set}  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lambda }   \_   \mathpunct { \textcolor {0f5cf7}{ . } }  \ast   \\ 
    { \textcolor {de1a75}{ \mathsf {false} } }_ \mathsf {Set}  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lambda }   \_   \mathpunct { \textcolor {0f5cf7}{ . } }  \ast \ast   \\ 
     \end {align*}
  </tex>
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>278</anchor>   <addr>math-006J</addr>  <route>math-006J.xml</route>   <title>単純型付きλ計算のDisplayed modelとその断面</title> </frontmatter> <mainmatter><p>
  次に、displayed modelとその断面の概念を定義する。これらは、一般の<link href="kaposi-et-al-2019.xml" type="local" title="Constructing quotient inductive-inductive types">QIIT</link>に定義される概念を、単純型付きλ計算に特殊化したものである。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>279</anchor>  <taxon>定義</taxon> <addr>math-006O</addr>  <route>math-006O.xml</route>   <title>単純型付きλ計算のDisplayed model</title> </frontmatter> <mainmatter><p>
  モデル<tex>\mathcal { M }</tex>上の<em>displayed model</em> <tex>\mathcal { Q }</tex>とは、以下のデータから成るものである。
</p><block open="open"><headline><b>データ</b></headline> 
  <tex display="block">
     \begin {align*}
     \textcolor {de1a75}{ \mathsf {Con} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Con} } _{ \mathcal { M } }  \textcolor {0f5cf7}{ \to }   \textcolor {0f5cf7}{ \mathsf {Set} }   \\ 
     \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Con} } _{ \mathcal { Q } } \  \Gamma   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Con} } _{ \mathcal { Q } } \  \Delta   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { M } } \  \Gamma \  \Delta   \textcolor {0f5cf7}{ \to }   \textcolor {0f5cf7}{ \mathsf {Set} }   \\ 
     \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathcal { M } }  \textcolor {0f5cf7}{ \to }   \textcolor {0f5cf7}{ \mathsf {Set} }   \\ 
     \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Con} } _{ \mathcal { Q } } \  \Gamma   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathcal { Q } } \  A   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { M } } \  \Gamma \  A   \textcolor {0f5cf7}{ \to }   \textcolor {0f5cf7}{ \mathsf {Set} }   \\ 
     \textcolor {de1a75}{ \cdot } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Con} } _{ \mathcal { Q } } \  \textcolor {de1a75}{ \cdot } _{ \mathcal { M } }   \\ 
     \textcolor {de1a75}{ \rhd } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Con} } _{ \mathcal { Q } } \  \Gamma   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathcal { Q } } \  A   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Con} } _{ \mathcal { Q } } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd } _{ \mathcal { M } } A \right )}   \\ 
     \textcolor {de1a75}{ \mathsf {id} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } \  \Gamma \  \Gamma \  \textcolor {de1a75}{ \mathsf {id} } _{ \mathcal { M } }   \\ 
     \textcolor {de1a75}{ \circ } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } \  \Gamma _2 \  \Gamma _3 \  \sigma '   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } \  \Gamma _1 \  \Gamma _2 \  \sigma   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } \  \Gamma _1 \  \Gamma _3 \  { \left ( \sigma '  \textcolor {de1a75}{ \circ } _{ \mathcal { M } }  \sigma \right )}   \\ 
     \textcolor {de1a75}{ \epsilon } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } \  \Gamma \  \textcolor {de1a75}{ \cdot } _{ \mathcal { Q } } \  \textcolor {de1a75}{ \epsilon } _{ \mathcal { M } }   \\ 
     \textcolor {de1a75}{ \mathsf {p} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd } _{ \mathcal { Q } } A \right )} \  \Gamma \  \textcolor {de1a75}{ \mathsf {p} } _{ \mathcal { M } }   \\ 
     \textcolor {de1a75}{ \mathsf {q} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd } _{ \mathcal { Q } } A \right )} \  A \  \textcolor {de1a75}{ \mathsf {q} } _{ \mathcal { M } }   \\ 
     \textcolor {de1a75}{ \langle } - \textcolor {de1a75}{ , }   - \textcolor {de1a75}{ \rangle } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } \  \Delta \  \Gamma \  \sigma   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  \Delta \  A \  M   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } \  \Delta \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd } _{ \mathcal { Q } } A \right )} \  \textcolor {de1a75}{ \langle } \sigma \textcolor {de1a75}{ , }   M \textcolor {de1a75}{ \rangle } _{ \mathcal { M } }   \\ 
    - \textcolor {de1a75}{   \lbrack   } - \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  \Delta \  A \  M   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } \  \Gamma \  \Delta \  \sigma   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  \Gamma \  A \  { \left ( M \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } _{ \mathcal { M } } \right )}   \\ 
     \textcolor {de1a75}{ \mathsf {lunit} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {id} } _{ \mathcal { Q } }  \textcolor {de1a75}{ \circ } _{ \mathcal { Q } }  \sigma   \textcolor {0f5cf7}{ = }   \sigma   \\ 
     \textcolor {de1a75}{ \mathsf {runit} } _{ \mathcal { Q } } &amp;:  \sigma   \textcolor {de1a75}{ \circ } _{ \mathcal { Q } }  \textcolor {de1a75}{ \mathsf {id} } _{ \mathcal { Q } }  \textcolor {0f5cf7}{ = }   \sigma   \\ 
     \textcolor {de1a75}{ \mathsf {assoc} } _{ \mathcal { Q } } &amp;: ( \sigma _3  \textcolor {de1a75}{ \circ } _{ \mathcal { Q } }  \sigma _2)  \textcolor {de1a75}{ \circ } _{ \mathcal { Q } }  \sigma _1  \textcolor {0f5cf7}{ = }   \sigma _3  \textcolor {de1a75}{ \circ } _{ \mathcal { Q } } ( \sigma _2  \textcolor {de1a75}{ \circ } _{ \mathcal { Q } }  \sigma _1)  \\ 
     \textcolor {de1a75}{ \mathsf { \epsilon \text {-}unique} } _{ \mathcal { Q } } &amp;: ( \sigma  :  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } \  \Gamma \  \textcolor {de1a75}{ \cdot } _{ \mathcal { Q } } \  \tau )  \textcolor {0f5cf7}{ \to }   \sigma   \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \epsilon } _{ \mathcal { Q } }  \\ 
     \textcolor {de1a75}{ \mathsf { \textcolor {de1a75}{ \mathsf {p} } \text {-} { \left \langle     \right \rangle } } } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {p} } _{ \mathcal { Q } }  \textcolor {de1a75}{ \circ } _{ \mathcal { Q } }  \textcolor {de1a75}{ \langle } \sigma \textcolor {de1a75}{ , }   M \textcolor {de1a75}{ \rangle } _{ \mathcal { Q } }  \textcolor {0f5cf7}{ = }   \sigma   \\ 
     \textcolor {de1a75}{ \mathsf { \textcolor {de1a75}{ \mathsf {q} } \text {-} { \left \langle     \right \rangle } } } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {q} } _{ \mathcal { Q } }  \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \langle } \sigma \textcolor {de1a75}{ , }   M \textcolor {de1a75}{ \rangle } _{ \mathcal { Q } } \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } }  \textcolor {0f5cf7}{ = }  M  \\ 
     \textcolor {de1a75}{ \mathsf { { \left \langle     \right \rangle } \text {-}unique} } _{ \mathcal { Q } } &amp;: ( \sigma  :  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } \  \Delta \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd } _{ \mathcal { Q } } A \right )} \  \tau )  \textcolor {0f5cf7}{ \to }   \sigma   \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \langle } \textcolor {de1a75}{ \mathsf {p} } _{ \mathcal { Q } }  \textcolor {de1a75}{ \circ } _{ \mathcal { Q } }  \sigma \textcolor {de1a75}{ , }   \textcolor {de1a75}{ \mathsf {q} } _{ \mathcal { Q } }  \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } } \textcolor {de1a75}{ \rangle } _{ \mathcal { Q } }  \\ 
     \textcolor {de1a75}{ \mathsf {[] \text {-}id} } _{ \mathcal { Q } } &amp;: M \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \mathsf {id} } _{ \mathcal { Q } } \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } }  \textcolor {0f5cf7}{ = }  M  \\ 
     \textcolor {de1a75}{ \mathsf {[] \text {-} \circ } } _{ \mathcal { Q } } &amp;: M \textcolor {de1a75}{   \lbrack   } \sigma _2  \textcolor {de1a75}{ \circ } _{ \mathcal { Q } }  \sigma _1 \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } }  \textcolor {0f5cf7}{ = }  M \textcolor {de1a75}{   \lbrack   } \sigma _2 \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } } \textcolor {de1a75}{   \lbrack   } \sigma _1 \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } }  \\ 
     \textcolor {de1a75}{ \Rightarrow } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathcal { Q } } \  A   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathcal { Q } } \  B   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathcal { Q } } \  { \left ( A  \textcolor {de1a75}{ \Rightarrow } _{ \mathcal { M } } B \right )}   \\ 
     \textcolor {de1a75}{ \mathsf {lam} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd } _{ \mathcal { Q } } A \right )} \  B \  M   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  \Gamma \  { \left ( A  \textcolor {de1a75}{ \Rightarrow } _{ \mathcal { Q } } B \right )} \  { \left ( \textcolor {de1a75}{ \mathsf {lam} } _{ \mathcal { M } } \  M \right )}   \\ 
     \textcolor {de1a75}{ \mathsf {app} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  \Gamma \  { \left ( A  \textcolor {de1a75}{ \Rightarrow } _{ \mathcal { Q } } B \right )} \  M   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd } _{ \mathcal { Q } } A \right )} \  B \  { \left ( \textcolor {de1a75}{ \mathsf {app} } _{ \mathcal { M } } \  M \right )}   \\ 
     \textcolor {de1a75}{ { \textcolor {de1a75}{ \Rightarrow } }  \beta } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {app} } _{ \mathcal { Q } } \  { \left ( \textcolor {de1a75}{ \mathsf {lam} } _{ \mathcal { Q } } \  M \right )}   \textcolor {0f5cf7}{ = }  M  \\ 
     \textcolor {de1a75}{ { \textcolor {de1a75}{ \Rightarrow } }  \eta } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {lam} } _{ \mathcal { Q } } \  { \left ( \textcolor {de1a75}{ \mathsf {app} } _{ \mathcal { Q } } \  M \right )}   \textcolor {0f5cf7}{ = }  M  \\ 
     \textcolor {de1a75}{ { \textcolor {de1a75}{ \mathsf {lam} } } \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \rbrack } } _{ \mathcal { Q } } &amp;:  { \left ( \textcolor {de1a75}{ \mathsf {lam} } _{ \mathcal { Q } } \  M \right )}   \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } }  \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \mathsf {lam} } _{ \mathcal { Q } } \  { \left ( M  \textcolor {de1a75}{   \lbrack   } \sigma ^{ { \textcolor {de1a75}{ \uparrow } } _{ \mathcal { Q } }} \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } } \right )}   \\ 
     \textcolor {de1a75}{ \mathsf {Bool} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathcal { Q } } \  \textcolor {de1a75}{ \mathsf {Bool} } _{ \mathcal { M } }   \\ 
     \textcolor {de1a75}{ \mathsf {true} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  \Gamma \  \textcolor {de1a75}{ \mathsf {Bool} } _{ \mathcal { Q } } \  \textcolor {de1a75}{ \mathsf {true} } _{ \mathcal { M } }   \\ 
     \textcolor {de1a75}{ \mathsf {false} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  \Gamma \  \textcolor {de1a75}{ \mathsf {Bool} } _{ \mathcal { Q } } \  \textcolor {de1a75}{ \mathsf {false} } _{ \mathcal { M } }   \\ 
     \textcolor {de1a75}{ \mathsf {if} } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  \Gamma \  \textcolor {de1a75}{ \mathsf {Bool} } _{ \mathcal { Q } } \  b   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  \Gamma \  A \  M   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  \Gamma \  A \  N   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  \Gamma \  A \  { \left ( \textcolor {de1a75}{ \mathsf {if} } _{ \mathcal { M } } \  b \  M \  N \right )}   \\ 
     \textcolor {de1a75}{ \textcolor {de1a75}{ \mathsf {Bool} }   \beta _1 } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {if} } _{ \mathcal { Q } } \  \textcolor {de1a75}{ \mathsf {true} } _{ \mathcal { Q } } \  M \  N   \textcolor {0f5cf7}{ = }  M  \\ 
     \textcolor {de1a75}{ \textcolor {de1a75}{ \mathsf {Bool} }   \beta _2 } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {if} } _{ \mathcal { Q } } \  \textcolor {de1a75}{ \mathsf {false} } _{ \mathcal { Q } } \  M \  N   \textcolor {0f5cf7}{ = }  N  \\ 
     \textcolor {de1a75}{ \textcolor {de1a75}{ \mathsf {true} }   \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \rbrack } } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {true} } _{ \mathcal { Q } }  \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } }  \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \mathsf {true} } _{ \mathcal { Q } }  \\ 
     \textcolor {de1a75}{ \textcolor {de1a75}{ \mathsf {false} }   \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \rbrack } } _{ \mathcal { Q } } &amp;:  \textcolor {de1a75}{ \mathsf {false} } _{ \mathcal { Q } }  \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } }  \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \mathsf {false} } _{ \mathcal { Q } }  \\ 
     \textcolor {de1a75}{ \textcolor {de1a75}{ \mathsf {if} }   \textcolor {de1a75}{   \lbrack   } \textcolor {de1a75}{ \rbrack } } _{ \mathcal { Q } } &amp;:  { \left ( \textcolor {de1a75}{ \mathsf {if} } _{ \mathcal { Q } } \  b \  M \  N \right )}   \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } }  \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \mathsf {if} } _{ \mathcal { Q } } \  { \left ( b \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } } \right )} \  { \left ( M \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } } \right )} \  { \left ( N \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } _{ \mathcal { Q } } \right )} 
     \end {align*}
  </tex>
</block></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>280</anchor>  <taxon>定義</taxon> <addr>math-006P</addr>  <route>math-006P.xml</route>   <title>Displayed modelの断面</title> </frontmatter> <mainmatter><p>
  モデル<tex>\mathcal { M }</tex>上の任意の<link href="math-006O.xml" type="local" title="単純型付きλ計算のDisplayed model">displayed model</link> <tex>\mathcal { Q }</tex>について、その<strong>断面</strong>(<em>section</em>) <tex>I</tex>は以下の4つの関数から成り、
  <tex display="block">
     \begin {align*}
    I_{ \textcolor {de1a75}{ \mathsf {Con} } } &amp;: ( \Gamma  :  \textcolor {de1a75}{ \mathsf {Con} } _{ \mathcal { M } })  \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Con} } _{ \mathcal { Q } } \  \Gamma   \\ 
    I_{ \textcolor {de1a75}{ \mathsf {Sub} } } &amp;: ( \sigma  :  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { M } } \  \Gamma \  \Delta )  \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathcal { Q } } \  { \left ( I_{ \textcolor {de1a75}{ \mathsf {Con} } } \  \Gamma \right )} \  { \left ( I_{ \textcolor {de1a75}{ \mathsf {Con} } } \  \Delta \right )} \  \sigma   \\ 
    I_{ \textcolor {de1a75}{ \mathsf {Ty} } }  &amp;: (A :  \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathcal { M } })  \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathcal { Q } } \  A   \\ 
    I_{ \textcolor {de1a75}{ \mathsf {Tm} } }  &amp;: (M :  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { M } } \  \Gamma \  A )  \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathcal { Q } } \  { \left ( I_{ \textcolor {de1a75}{ \mathsf {Con} } } \  \Gamma \right )} \  { \left ( I_{ \textcolor {de1a75}{ \mathsf {Ty} } } \  A \right )} \  M 
     \end {align*}
  </tex>
  すべての演算を保存するものである。次の2つの等式はそのごく一部である。
  <tex display="block">
     \begin {align*}
    I_{ \textcolor {de1a75}{ \mathsf {Con} } } \  \textcolor {de1a75}{ \cdot } _{ \mathcal { M } } &amp; \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \cdot } _{ \mathcal { Q } }  \\ 
    I_{ \textcolor {de1a75}{ \mathsf {Con} } } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd } _{ \mathcal { M } } A \right )}  &amp; \textcolor {0f5cf7}{ = }  (I_{ \textcolor {de1a75}{ \mathsf {Con} } } \  \Gamma )  \textcolor {de1a75}{ \rhd } _{ \mathcal { Q } } (I_{ \textcolor {de1a75}{ \mathsf {Ty} } } \  A)
     \end {align*}
  </tex>
</p></mainmatter> </tree></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>281</anchor>   <addr>math-006K</addr>  <route>math-006K.xml</route>   <title>Global sections functor</title> </frontmatter> <mainmatter><p>
  次に、<em>global sections functor</em> <tex>\mathsf {G}</tex>を定義する。構文を<tex>\mathsf {S}</tex>と書く。<tex>\mathsf {G}</tex>は<tex>\mathsf {S}</tex>から<link href="math-006I.xml" type="local" title="単純型付きλ計算の集合モデル">集合モデル</link><tex>\mathsf {Set}</tex>への4つの関数から成る。
  <tex display="block">
     \begin {align*}
     \mathsf {G} _{ \textcolor {de1a75}{ \mathsf {Con} } } &amp;:  \textcolor {de1a75}{ \mathsf {Con} } _ \mathsf {S}   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Con} } _ \mathsf {Set}   \\ 
     \mathsf {G} _{ \textcolor {de1a75}{ \mathsf {Sub} } } &amp;:  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathsf {S} } \  \Gamma \  \Delta   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathsf {Set} } \  { \left ( \mathsf {G} \  \Gamma \right )} \  { \left ( \mathsf {G} \  \Delta \right )}   \\ 
     \mathsf {G} _{ \textcolor {de1a75}{ \mathsf {Ty} } } &amp;:  \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathsf {S} }  \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathsf {Set} }  \\ 
     \mathsf {G} _{ \textcolor {de1a75}{ \mathsf {Tm} } } &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {S} } \  \Gamma \  A   \textcolor {0f5cf7}{ \to }   \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {Set} } \  { \left ( \mathsf {G} \  \Gamma \right )} \  { \left ( \mathsf {G} \  A \right )} 
     \end {align*}
  </tex>

  これらの関数の定義を以下で与える。
  <tex display="block">
     \begin {align*}
     \mathsf {G} _{ \textcolor {de1a75}{ \mathsf {Con} } } \  \Gamma  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathsf {S} } \  \textcolor {de1a75}{ \cdot } _ \mathsf {S} \  \Gamma   \\ 
     \mathsf {G} _{ \textcolor {de1a75}{ \mathsf {Sub} } } \  \sigma  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lambda }   \sigma '   \mathpunct { \textcolor {0f5cf7}{ . } }  { \left ( \sigma   \textcolor {de1a75}{ \circ } _ \mathsf {S}   \sigma ' \right )}   \\ 
     \mathsf {G} _{ \textcolor {de1a75}{ \mathsf {Ty} } } \  A       &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {S} } \  \textcolor {de1a75}{ \cdot } _ \mathsf {S} \  A   \\ 
     \mathsf {G} _{ \textcolor {de1a75}{ \mathsf {Tm} } } \  M       &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lambda }   \sigma '   \mathpunct { \textcolor {0f5cf7}{ . } }  { \left ( M \textcolor {de1a75}{   \lbrack   } \sigma ' \textcolor {de1a75}{ \rbrack } _ \mathsf {S} \right )}   \\ 
     \end {align*}
  </tex>
</p><p>
  上記の定義より、<tex>\mathsf {G}</tex>が空文脈(<tex>\textcolor {de1a75}{ \cdot }</tex>)と文脈拡張(<tex>\textcolor {de1a75}{ \rhd }</tex>)を、同型を除いて保存することが分かる。
  <tex display="block">
     \begin {align*}
     \mathsf {G} \  \textcolor {de1a75}{ \cdot } _ \mathsf {S} 
      &amp; \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathsf {S} } \  \textcolor {de1a75}{ \cdot } _ \mathsf {S} \  \textcolor {de1a75}{ \cdot } _ \mathsf {S}   \\ 
      &amp; \textcolor {0f5cf7}{ \cong }   \textcolor {0f5cf7}{ 1 }   \\ 
      &amp; \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \cdot } _ \mathsf {Set} 
     \end {align*}
  </tex>
  この同型射を<tex>\mathsf {G} _{ \textcolor {de1a75}{ \cdot } } :  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathsf {Set} } \  { \left ( \mathsf {G} \  \textcolor {de1a75}{ \cdot } _ \mathsf {S} \right )} \  \textcolor {de1a75}{ \cdot } _ \mathsf {Set}</tex>と書く。
  <tex display="block">
     \begin {align*}
     \mathsf {G} \  ( \Gamma   \textcolor {de1a75}{ \rhd } _ \mathsf {S}  A)
      &amp; \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathsf {S} } \  \textcolor {de1a75}{ \cdot } _ \mathsf {S} \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd } _ \mathsf {S}  A \right )}   \\ 
      &amp; \textcolor {0f5cf7}{ \cong }   \mathsf {G} \  \Gamma   \textcolor {0f5cf7}{ \times }   \mathsf {G} \  A  \\ 
      &amp; \textcolor {0f5cf7}{ = }   \mathsf {G} \  \Gamma   \textcolor {de1a75}{ \rhd } _{ \mathsf {Set} }  \mathsf {G} \  A
     \end {align*}
  </tex>
  この同型射を<tex>\mathsf {G} _{ \textcolor {de1a75}{ \rhd } } :  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathsf {Set} } \  { \left ( \mathsf {G} \  ( \Gamma   \textcolor {de1a75}{ \rhd } _ \mathsf {S}  A) \right )} \  { \left ( \mathsf {G} \  \Gamma   \textcolor {de1a75}{ \rhd } _{ \mathsf {Set} }  \mathsf {G} \  A \right )}</tex>と書くと、
  <tex display="block">
     \textcolor {de1a75}{ \mathsf {p} } _ \mathsf {Set}   \textcolor {de1a75}{ \circ } _ \mathsf {Set}   \mathsf {G} _{ \textcolor {de1a75}{ \rhd } }  \textcolor {0f5cf7}{ = }   \mathsf {G} \  \textcolor {de1a75}{ \mathsf {p} } _ \mathsf {S} 
  </tex>
  と
  <tex display="block">
     \textcolor {de1a75}{ \mathsf {q} } _ \mathsf {Set}   \textcolor {de1a75}{   \lbrack   } \mathsf {G} _{ \textcolor {de1a75}{ \rhd } } \textcolor {de1a75}{ \rbrack } _ \mathsf {Set}   \textcolor {0f5cf7}{ = }   \mathsf {G} \  \textcolor {de1a75}{ \mathsf {q} } _ \mathsf {S} 
  </tex>
  が成り立つことも確認できる。さらに、同型<tex>\mathsf {G} _{ \textcolor {de1a75}{ \rhd } }</tex>は<tex>\Gamma</tex>について自然になる。また、関手性と自然性が(strictに)成り立つことも分かる。
  <tex display="block">
     \begin {align*}
     \mathsf {G} \  \textcolor {de1a75}{ \mathsf {id} } _ \mathsf {S}  &amp; \textcolor {0f5cf7}{ = }   \textcolor {de1a75}{ \mathsf {id} } _ \mathsf {Set}   \\ 
     \mathsf {G} \  ( \sigma _2  \textcolor {de1a75}{ \circ } _ \mathsf {S}   \sigma _1) &amp; \textcolor {0f5cf7}{ = }   \mathsf {G} \  \sigma _2  \textcolor {de1a75}{ \circ } _ \mathsf {Set}   \mathsf {G} \  \sigma _1  \\ 
     \mathsf {G} \  (M  \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } _ \mathsf {S} ) &amp; \textcolor {0f5cf7}{ = }  ( \mathsf {G} \  M)  \textcolor {de1a75}{   \lbrack   } \mathsf {G} \  \sigma \textcolor {de1a75}{ \rbrack } _ \mathsf {Set}   \\ 
     \end {align*}
  </tex>
  これらのような性質を持つ関数の4つ組を一般に<em>pseudomorphism</em>と呼ぶが、本稿で扱うpseudomorphismはglobal sections functorのみである。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>282</anchor>   <addr>math-006N</addr>  <route>math-006N.xml</route>   <title>Gluing</title> </frontmatter> <mainmatter><p>
  本稿で<strong>最も重要な概念である</strong><em>gluing</em>を定義する。一般的に(少なくとも対象言語もMartin-löf型理論であるとき)、gluingとは任意のpseudomorphism <tex>\mathcal { M }   \to   \mathcal { N }</tex>から、<tex>\mathcal { M }</tex>上のdisplayed modelを構成する操作である。詳しくは<link href="kaposi-huber-sattler-2019.xml" type="local" title="Gluing for type theory">Gluing for type theory</link>を見よ。しかし、上述の通り本稿ではglobal sections functorに沿ったgluingのみを定義する。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>283</anchor>   <addr>math-006L</addr>  <route>math-006L.xml</route>   <title>Global sections functorに沿ったgluing</title> </frontmatter> <mainmatter><p>
  <link href="math-006K.xml" type="local" title="Global sections functor">Global sections functor</link> <tex>\mathsf {G}  :  \mathsf {S}   \to   \mathsf {Set}</tex>に沿った<em>gluing</em>とは、次のように定義される<tex>\mathsf {S}</tex>上の<link href="math-006O.xml" type="local" title="単純型付きλ計算のDisplayed model">displayed model</link> <tex>\mathsf {S} ^ \mathsf {G}</tex>である。
  <tex display="block">
     \begin {align*}
     \textcolor {de1a75}{ \mathsf {Con} } _{ \mathsf {S} ^ \mathsf {G} } \  \Gamma  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   { \left ( \Delta  :  \textcolor {de1a75}{ \mathsf {Con} } _ \mathsf {Set} \right )}   \textcolor {0f5cf7}{ \times }  ( \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathsf {Set} } \  \Delta \  { \left ( \mathsf {G} \  \Gamma \right )} )  \\ 
     \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathsf {S} ^ \mathsf {G} } \  \textcolor {0f5cf7}{ \lparen }   \Gamma   \textcolor {0f5cf7}{ , }   \sigma _1   \textcolor {0f5cf7}{ \rparen } \  \textcolor {0f5cf7}{ \lparen }   \Delta   \textcolor {0f5cf7}{ , }   \sigma _2   \textcolor {0f5cf7}{ \rparen } \  \tau  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   { \left ( \tau ' :  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathsf {Set} } \  \Gamma \  \Delta \right )}   \textcolor {0f5cf7}{ \times }  ( \mathsf {G} \  \tau   \textcolor {de1a75}{ \circ } _ \mathsf {Set}   \sigma _1  \textcolor {0f5cf7}{ = }   \sigma _2  \textcolor {de1a75}{ \circ } _ \mathsf {Set}   \tau ')  \\ 
     \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathsf {S} ^ \mathsf {G} } \  A  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   { \left ( \Gamma  :  \textcolor {de1a75}{ \mathsf {Con} } _ \mathsf {Set} \right )}   \textcolor {0f5cf7}{ \times }  ( \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {Set} } \  \Gamma \  { \left ( \mathsf {G} \  A \right )} )  \\ 
     \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {S} ^ \mathsf {G} } \  \textcolor {0f5cf7}{ \lparen }   \Gamma   \textcolor {0f5cf7}{ , }   \sigma   \textcolor {0f5cf7}{ \rparen } \  \textcolor {0f5cf7}{ \lparen }   \Delta   \textcolor {0f5cf7}{ , }   M   \textcolor {0f5cf7}{ \rparen } \  N  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   { \left ( \tau  :  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathsf {Set} } \  \Gamma \  \Delta \right )}   \textcolor {0f5cf7}{ \times }  (( \mathsf {G} \  N)  \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } _ \mathsf {Set}   \textcolor {0f5cf7}{ = }  M  \textcolor {de1a75}{   \lbrack   } \tau \textcolor {de1a75}{ \rbrack } _ \mathsf {Set} )
     \end {align*}
  </tex>

  <tex display="block">
     \begin {align*}
     \textcolor {de1a75}{ \cdot } _{ \mathsf {S} ^ \mathsf {G} } &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   \textcolor {de1a75}{ \cdot } _ \mathsf {Set}   \textcolor {0f5cf7}{ , }   \mathsf {G} _{ \textcolor {de1a75}{ \cdot } }^{-1}   \textcolor {0f5cf7}{ \rparen }   \\ 
     \textcolor {0f5cf7}{ \lparen }   \Gamma   \textcolor {0f5cf7}{ , }   \sigma   \textcolor {0f5cf7}{ \rparen }   \textcolor {de1a75}{ \rhd } _{ \mathsf {S} ^ \mathsf {G} }  \textcolor {0f5cf7}{ \lparen }   \Delta   \textcolor {0f5cf7}{ , }   M   \textcolor {0f5cf7}{ \rparen }  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   \Gamma   \textcolor {0f5cf7}{ \times }   \Delta   \textcolor {0f5cf7}{ , }   \mathsf {G} _{ \textcolor {de1a75}{ \rhd } }^{-1}  \textcolor {0f5cf7}{ \lparen }   \sigma   \textcolor {0f5cf7}{ \pi _1 }   \textcolor {0f5cf7}{ , }   M \textcolor {0f5cf7}{ \pi _2 }   \textcolor {0f5cf7}{ \rparen }   \textcolor {0f5cf7}{ \rparen }   \\ 
     \textcolor {de1a75}{ \mathsf {id} } _{ \mathsf {S} ^ \mathsf {G} } &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   \mathsf {id} _ \mathsf {Set}   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \\ 
     \textcolor {0f5cf7}{ \lparen }   \sigma _2   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \textcolor {de1a75}{ \circ } _{ \mathsf {S} ^ \mathsf {G} }  \textcolor {0f5cf7}{ \lparen }   \sigma _1   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   \sigma _2  \textcolor {de1a75}{ \circ } _ \mathsf {Set}   \sigma _1   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \\ 
     \textcolor {de1a75}{ \epsilon } _{ \mathsf {S} ^ \mathsf {G} } &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   \textcolor {de1a75}{ \epsilon } _ \mathsf {Set}   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \\ 
     \textcolor {de1a75}{ \mathsf {p} } _{ \mathsf {S} ^ \mathsf {G} } &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   \textcolor {de1a75}{ \mathsf {p} } _ \mathsf {Set}   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \\ 
     \textcolor {de1a75}{ \mathsf {q} } _{ \mathsf {S} ^ \mathsf {G} } &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   \textcolor {de1a75}{ \mathsf {q} } _ \mathsf {Set}   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \\ 
     \textcolor {de1a75}{ \langle } \sigma \textcolor {de1a75}{ , }   M \textcolor {de1a75}{ \rangle } _{ \mathsf {S} ^ \mathsf {G} } &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   ( \textcolor {0f5cf7}{ \lambda }   x   \mathpunct { \textcolor {0f5cf7}{ . } }  \textcolor {0f5cf7}{ \lparen }   \textcolor {0f5cf7}{ \pi _1 } \sigma  x   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \pi _1 }  M x   \textcolor {0f5cf7}{ \rparen } )   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \\ 
    M \textcolor {de1a75}{   \lbrack   } \sigma \textcolor {de1a75}{ \rbrack } _{ \mathsf {S} ^ \mathsf {G} } &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   ( \textcolor {0f5cf7}{ \lambda }   x   \mathpunct { \textcolor {0f5cf7}{ . } }  \textcolor {0f5cf7}{ \pi _1 }  M x  \textcolor {0f5cf7}{ \circ }   \textcolor {0f5cf7}{ \pi _1 }   \sigma  x )   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \\ 
     \textcolor {0f5cf7}{ \lparen }   \Gamma   \textcolor {0f5cf7}{ , }   M   \textcolor {0f5cf7}{ \rparen }   \textcolor {de1a75}{ \Rightarrow } _{ \mathsf {S} ^ \mathsf {G} }  \textcolor {0f5cf7}{ \lparen }   \Delta   \textcolor {0f5cf7}{ , }   N   \textcolor {0f5cf7}{ \rparen }  &amp;:  \textcolor {de1a75}{ \mathsf {Ty} } _{ \mathsf {S} ^ \mathsf {G} } \  { \left ( A  \textcolor {de1a75}{ \Rightarrow } _ \mathsf {S}  B \right )}   \\ 
    &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   (P :  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {S} } \  { \left ( \textcolor {de1a75}{ \cdot } _ \mathsf {S}   \textcolor {de1a75}{ \rhd } _ \mathsf {S}  A \right )} \  B )  \textcolor {0f5cf7}{ \times }  (f :  \textcolor {de1a75}{ \mathsf {Sub} } _{ \mathsf {Set} } \  \Gamma \  \Delta )  \textcolor {0f5cf7}{ \times }  ( \mathsf {G}  P  \textcolor {0f5cf7}{ \circ }  M  \textcolor {0f5cf7}{ = }  N \textcolor {de1a75}{   \lbrack   } f \textcolor {de1a75}{ \rbrack } _ \mathsf {Set} )   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \lambda }   \textcolor {0f5cf7}{ \lparen }   P   \textcolor {0f5cf7}{ , }   f   \textcolor {0f5cf7}{ , }   e   \textcolor {0f5cf7}{ \rparen }   \mathpunct { \textcolor {0f5cf7}{ . } }  \textcolor {de1a75}{ \mathsf {lam} } _{ \mathsf {S} } \  P   \textcolor {0f5cf7}{ \rparen }   \\ 
     \textcolor {de1a75}{ \mathsf {lam} } _{ \mathsf {S} ^ \mathsf {G} } \  M  &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {S} ^ \mathsf {G} } \  \Gamma \  { \left ( A  \textcolor {de1a75}{ \Rightarrow } _{ \mathsf {S} ^ \mathsf {G} } B \right )} \  { \left ( \textcolor {de1a75}{ \mathsf {lam} } _{ \mathsf {S} } \  M' \right )}   \\ 
    &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   \textcolor {0f5cf7}{ \lambda }   x   \mathpunct { \textcolor {0f5cf7}{ . } }  \textcolor {0f5cf7}{ \lparen }   M' \textcolor {de1a75}{   \lbrack   } ( \textcolor {0f5cf7}{ \pi _2 }   \Gamma  x)^{ { \textcolor {de1a75}{ \uparrow } } _ \mathsf {S} } \textcolor {de1a75}{ \rbrack } _ \mathsf {S}   \textcolor {0f5cf7}{ , }   ( \textcolor {0f5cf7}{ \lambda }   a   \mathpunct { \textcolor {0f5cf7}{ . } }  \textcolor {0f5cf7}{ \pi _1 }  M  \textcolor {0f5cf7}{ \lparen }   x   \textcolor {0f5cf7}{ , }   a   \textcolor {0f5cf7}{ \rparen } )   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \\ 
    &amp; \hspace {16px}  \text {where }  \Gamma  :  \textcolor {de1a75}{ \mathsf {Con} } _{ \mathsf {S} ^ \mathsf {G} } \  \Gamma '   \text { and } M :  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {S} ^ \mathsf {G} } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd } _{ \mathsf {S} ^ \mathsf {G} } A \right )} \  B \  M'   \text { and } M' :  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {S} } \  { \left ( \Gamma '  \textcolor {de1a75}{ \rhd } _ \mathsf {S}  A' \right )} \  B'   \\ 
     \textcolor {de1a75}{ \mathsf {app} } _{ \mathsf {S} ^ \mathsf {G} } \  M  &amp;:  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {S} ^ \mathsf {G} } \  { \left ( \Gamma   \textcolor {de1a75}{ \rhd } _{ \mathsf {S} ^ \mathsf {G} } A \right )} \  B \  { \left ( \textcolor {de1a75}{ \mathsf {app} } _{ \mathsf {S} } \  M' \right )}   \\ 
    &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   \textcolor {0f5cf7}{ \lambda }   \textcolor {0f5cf7}{ \lparen }   \gamma   \textcolor {0f5cf7}{ , }   a   \textcolor {0f5cf7}{ \rparen }   \mathpunct { \textcolor {0f5cf7}{ . } }  \textcolor {0f5cf7}{ \pi _2 }  ( \textcolor {0f5cf7}{ \pi _1 }  M  \gamma )a   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \\ 
    &amp; \hspace {16px}  \text {where }  \Gamma  :  \textcolor {de1a75}{ \mathsf {Con} } _{ \mathsf {S} ^ \mathsf {G} } \  \Gamma '   \text { and } M :  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {S} ^ \mathsf {G} } \  \Gamma \  { \left ( A  \textcolor {de1a75}{ \Rightarrow } _{ \mathsf {S} ^ \mathsf {G} } B \right )} \  M'   \text { and } M' :  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {S} } \  \Gamma ' \  { \left ( A'  \textcolor {de1a75}{ \Rightarrow } _ \mathsf {S}  B' \right )}   \\ 
     \textcolor {de1a75}{ \mathsf {Bool} } _{ \mathsf {S} ^ \mathsf {G} } &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   \textcolor {0f5cf7}{ 2 }   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \lambda }   v   \mathpunct { \textcolor {0f5cf7}{ . } }  \textcolor {0f5cf7}{ \mathsf {case} } \  v \  \textcolor {de1a75}{ \mathsf {true} } _ \mathsf {S} \  \textcolor {de1a75}{ \mathsf {false} } _ \mathsf {S}   \textcolor {0f5cf7}{ \rparen }   \\ 
     \textcolor {de1a75}{ \mathsf {true} } _{ \mathsf {S} ^ \mathsf {G} } &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   ( \textcolor {0f5cf7}{ \lambda }   \_   \mathpunct { \textcolor {0f5cf7}{ . } }  \ast )   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \\ 
     \textcolor {de1a75}{ \mathsf {false} } _{ \mathsf {S} ^ \mathsf {G} } &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   ( \textcolor {0f5cf7}{ \lambda }   \_   \mathpunct { \textcolor {0f5cf7}{ . } }  \ast \ast )   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \\ 
     \textcolor {de1a75}{ \mathsf {if} } _{ \mathsf {S} ^ \mathsf {G} } \  b \  M \  N  &amp; \mathrel { \stackrel { \text {def}}{ \equiv }}   \textcolor {0f5cf7}{ \lparen }   \textcolor {0f5cf7}{ \lambda }   x   \mathpunct { \textcolor {0f5cf7}{ . } }  \textcolor {0f5cf7}{ \mathsf {case} } \  { \left ( \textcolor {0f5cf7}{ \pi _1 }  b x \right )} \  { \left ( \textcolor {0f5cf7}{ \pi _1 }  M x \right )} \  { \left ( \textcolor {0f5cf7}{ \pi _1 }  N x \right )}   \textcolor {0f5cf7}{ , }   \textcolor {0f5cf7}{ \mathsf {refl} }   \textcolor {0f5cf7}{ \rparen }   \\ 
     \end {align*}
  </tex>
</p><p>
  Global sections functorに沿ったgluingは<link href="https://ncatlab.org/nlab/show/Freyd cover" type="external"><em>Freyd cover</em></link>や<em>Sierpinski cone</em> (<em>scone</em>)と呼ばれる。Displayed modelにおけるexponential (<tex>\textcolor {de1a75}{ \Rightarrow } _{ \mathsf {S} ^ \mathsf {G} }</tex>)の定義は<link href="mitchell-scedrov-1993.xml" type="local" title="Notes on sconing and relators">Notes on sconing and relators</link>を参考にした。
</p></mainmatter> </tree></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>284</anchor>   <addr>math-006M</addr>  <route>math-006M.xml</route>   <title>単純型付きλ計算のCanonicity</title> </frontmatter> <mainmatter><p>
  構文<tex>\mathsf {S}</tex>、すなわち始代数について、<tex>\mathsf {S}</tex>上の任意の<link href="math-006O.xml" type="local" title="単純型付きλ計算のDisplayed model">displayed model</link>は一意の<link href="math-006P.xml" type="local" title="Displayed modelの断面">断面</link>を持つ。その断面を<tex>\mathsf {elim}  :  \mathsf {S}   \to   \mathsf {S} ^ \mathsf {G}</tex>と書く。すると、任意の項<tex>M :  \textcolor {de1a75}{ \mathsf {Tm} } _ \mathsf {S}   \textcolor {de1a75}{ \cdot } _ \mathsf {S}   \textcolor {de1a75}{ \mathsf {Bool} } _ \mathsf {S}</tex>について、
  <tex display="block">
     \mathsf {elim} _{ \textcolor {de1a75}{ \mathsf {Tm} } } \  M :  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {S} ^ \mathsf {G} } \  { \left ( \mathsf {elim} _{ \textcolor {de1a75}{ \mathsf {Con} } } \  \textcolor {de1a75}{ \cdot } _ \mathsf {S} \right )} \  { \left ( \mathsf {elim} _{ \textcolor {de1a75}{ \mathsf {Ty} } } \  \textcolor {de1a75}{ \mathsf {Bool} } _ \mathsf {S} \right )} \  M 
  </tex>
  となる。断面はすべての演算を保存するので、これは
  <tex display="block">
     \mathsf {elim} _{ \textcolor {de1a75}{ \mathsf {Tm} } } \  M :  \textcolor {de1a75}{ \mathsf {Tm} } _{ \mathsf {S} ^ \mathsf {G} } \  \textcolor {de1a75}{ \cdot } _{ \mathsf {S} ^ \mathsf {G} } \  \textcolor {de1a75}{ \mathsf {Bool} } _{ \mathsf {S} ^ \mathsf {G} } \  M 
  </tex>
  と表せる。すなわち<tex>\mathsf {elim} _{ \textcolor {de1a75}{ \mathsf {Tm} } } \  M</tex>は、ある<tex>v :  \textcolor {0f5cf7}{ 2 }</tex>が存在して、
  <tex display="block">
    M  \textcolor {0f5cf7}{ = }   \textcolor {0f5cf7}{ \mathsf {case} } \  v \  \textcolor {de1a75}{ \mathsf {true} } _ \mathsf {S} \  \textcolor {de1a75}{ \mathsf {false} } _ \mathsf {S} 
  </tex>
  が成り立つことを意味する。これは、任意のBool型の閉項<tex>M</tex>が<tex>\textcolor {de1a75}{ \mathsf {true} } _ \mathsf {S}</tex>か<tex>\textcolor {de1a75}{ \mathsf {false} } _ \mathsf {S}</tex>と等しいこと、つまりcanonicityを示している。
</p></mainmatter> </tree></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>285</anchor>   <addr>math-003L</addr>  <route>math-003L.xml</route> <date><year>2023</year> <month>9</month> <day>26</day></date> <authors><author>elpinal</author> </authors> <title>依存型理論と宇宙について</title> </frontmatter> <mainmatter><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>286</anchor>   <addr>math-003O</addr>  <route>math-003O.xml</route>   <title>ひとつの宇宙</title> </frontmatter> <mainmatter><p>
  Martin-löf型理論の基礎は次の4つの<strong>判断</strong>(<em>judgment</em>)から始まる。
</p><table>
  <tr>
    <td><tex>\Gamma   \vdash   A   \enspace   \mathsf {type}</tex></td>
    <td><tex>A</tex>は型である。</td>
  </tr>

  <tr>
    <td><tex>\Gamma   \vdash   A   \equiv   B   \enspace   \mathsf {type}</tex></td>
    <td><tex>A</tex>と<tex>B</tex>は等しい型である。</td>
  </tr>

  <tr>
    <td><tex>\Gamma   \vdash   M  :  A</tex></td>
    <td>項<tex>M</tex>は型<tex>A</tex>を持つ。</td>
  </tr>

  <tr>
    <td><tex>\Gamma   \vdash   M   \equiv   N  :  A</tex></td>
    <td>項<tex>M</tex>と<tex>N</tex>は型<tex>A</tex>において等しい。</td>
  </tr>
</table><p>
  型理論に<strong>型結合子</strong>(<em>type connective</em>)を追加するためには、規則を追加する。たとえば<strong>依存積</strong>(<em>dependent product</em>)ならば、次のようにformation規則、導入規則、除去規則、それから<tex>\beta</tex>同値性と<tex>\eta</tex>同値性を表す規則などを追加する。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>287</anchor>  <taxon>定義</taxon> <addr>math-003Q</addr>  <route>math-003Q.xml</route>   <title>依存積</title> </frontmatter> <mainmatter><tex display="block">
   \frac { 
     \Gamma   \vdash   A   \enspace   \mathsf {type} 
     \quad 
     \Gamma , x {:} A   \vdash   B   \enspace   \mathsf {type} 
   }{ 
     \Gamma   \vdash   \prod _{x : A} B   \enspace   \mathsf {type} 
   } 
   \text {($ \Pi $F)}
</tex><tex display="block">
   \frac { 
     \Gamma , x {:} A   \vdash   M  :  B 
   }{ 
     \Gamma   \vdash   \lambda   x \mathpunct {.}  M  :  \prod _{x : A} B 
   } 
   \text {($ \Pi $I)}
</tex><tex display="block">
   \frac { 
     \Gamma   \vdash   M  :  \prod _{x : A} B 
     \quad 
     \Gamma   \vdash   N  :  A 
   }{ 
     \Gamma   \vdash   M \  N  :  [N/x]B 
   } 
   \text {($ \Pi $E)}
</tex><tex display="block">
   \frac { 
     \Gamma , x {:} A   \vdash   M  :  B 
     \quad 
     \Gamma   \vdash   N  :  A 
   }{ 
     \Gamma   \vdash   { \left ( \lambda   x \mathpunct {.}  M \right )} \  N   \equiv   [N/x]M  :  B 
   } 
   \text {($ \Pi \beta $)}
</tex><tex display="block">
   \frac { 
     \Gamma   \vdash   M  :  \prod _{x : A} B 
   }{ 
     \Gamma   \vdash   { \left ( \lambda   x \mathpunct {.}  M \  x \right )}   \equiv   M  :  \prod _{x : A} B 
   } 
   \text {($ \Pi \eta $)}
</tex></mainmatter> </tree><p>
  依存積以外にも、<strong>宇宙</strong>(<em>universe</em>)と呼ばれる型結合子を考えられる。型<tex>\mathsf {U} _0</tex>の要素<tex>a :  \mathsf {U} _0</tex>を<strong>コード</strong>(<em>code</em>)と呼び、コード<tex>a</tex>からは型<tex>\mathsf {El} _0(a)</tex>を構成することができる。

  <tex display="block">
     \frac { 
     }{ 
       \Gamma   \vdash   \mathsf {U} _0   \enspace   \mathsf {type} 
     } 
     \text {($ \mathsf {U} _0$F)}
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   a  :  \mathsf {U} _0 
     }{ 
       \Gamma   \vdash   \mathsf {El} _0(a)   \enspace   \mathsf {type} 
     } 
     \text {($ \mathsf {U} _0$E)}
  </tex>

  すなわち宇宙とは、その要素から何らかの型を作れるような型の一種である。
</p><p>
  しかし、このままだとあまり宇宙のありがたみがない。我々は普通、宇宙がその型理論の型結合子（の一部）で閉じていることを期待する。たとえば、依存積に関して次のような条件を課すだろう。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>288</anchor>  <taxon>定義</taxon> <addr>math-003M</addr>  <route>math-003M.xml</route>   <title>依存積で閉じた宇宙</title> </frontmatter> <mainmatter><p>
  宇宙<tex>\mathsf {U} _0</tex>が<strong>依存積について閉じている</strong>(<em>closed under dependent products</em>)とは、以下のような規則を満たすコード<tex>\hat \prod _{x : a} b :  \mathsf {U} _0</tex>を選択できることである。
  <tex display="block">
     \frac { 
       \Gamma   \vdash   a  :  \mathsf {U} _0 
       \quad 
       \Gamma , x {:}  \mathsf {El} _0(a)   \vdash   b  :  \mathsf {U} _0 
     }{ 
       \Gamma   \vdash   \hat \prod _{x : a} b  :  \mathsf {U} _0 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   a  :  \mathsf {U} _0 
       \quad 
       \Gamma , x {:}  \mathsf {El} _0(a)   \vdash   b  :  \mathsf {U} _0 
     }{ 
       \Gamma   \vdash   \mathsf {El} _0( \hat \prod _{x : a} b)   \equiv   \prod _{x :  \mathsf {El} _0(a)}  \mathsf {El} _0(b)   \enspace   \mathsf {type} 
     } 
  </tex>
</p></mainmatter> </tree></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>289</anchor>   <addr>math-003N</addr>  <route>math-003N.xml</route>   <title>小さい部分宇宙</title> </frontmatter> <mainmatter><p>
  次に、もうひとつの宇宙<tex>\mathsf {U} _1</tex>を追加することにする。

  <tex display="block">
     \frac { 
     }{ 
       \Gamma   \vdash   \mathsf {U} _1   \enspace   \mathsf {type} 
     } 
     \text {($ \mathsf {U} _1$F)}
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   a  :  \mathsf {U} _1 
     }{ 
       \Gamma   \vdash   \mathsf {El} _1(a)   \enspace   \mathsf {type} 
     } 
     \text {($ \mathsf {U} _1$E)}
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   a  :  \mathsf {U} _0 
     }{ 
       \Gamma   \vdash   \mathop { \Uparrow } _0^1 a  :  \mathsf {U} _1 
     } 
     \text {(Lift)}
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   a  :  \mathsf {U} _0 
     }{ 
       \Gamma   \vdash   \mathsf {El} _1 ( \mathop { \Uparrow } _0^1 a)   \equiv   \mathsf {El} _0 (a)   \enspace   \mathsf {type} 
     } 
     \text {(LiftEq)}
  </tex>

  <tex display="block">
     \frac { 
     }{ 
       \Gamma   \vdash   \hat { \mathsf {U} }_0  :  \mathsf {U} _1 
     } 
     \text {($ \mathsf {U} _0$Code)}
  </tex>

  <tex display="block">
     \frac { 
     }{ 
       \Gamma   \vdash   \mathsf {El} _1{ \hat { \mathsf {U} }_0}   \equiv   \mathsf {U} _0   \enspace   \mathsf {type} 
     } 
     \text {($ \mathsf {U} _0$CodeEq)}
  </tex>

  最初の2つの規則は<tex>\mathsf {U} _0</tex>のときと同様だが、残りの4つの規則は新しい。3番目の規則<tex>\text {(Lift)}</tex>は<tex>\mathsf {U} _0</tex>のコードを<tex>\mathsf {U} _1</tex>のコードへと持ち上げることを許可する。4番目の規則<tex>\text {(LiftEq)}</tex>は、そうやって持ち上げられたコードに対して<tex>\mathsf {El} _1</tex>を適用した結果は、もともとのコードに<tex>\mathsf {El} _0</tex>を適用したものと同じであると言っている。このように<tex>U_0</tex>の任意のコードを<tex>U_1</tex>へと「埋め込める」ことから、<tex>\mathsf {U} _0</tex>は<tex>\mathsf {U} _1</tex>の<strong>部分宇宙</strong>(<em>subuniverse</em>)となる。一方、最後の2つの規則は、宇宙<tex>\mathsf {U} _1</tex>が<tex>\mathsf {U} _0</tex>について閉じていることを要請しており、<tex>\mathsf {U} _0</tex>は<tex>\mathsf {U} _1</tex>に対して<strong>小さい宇宙</strong>(<em>small universe</em>)と呼ばれる。これらのことを合わせると、<tex>\mathsf {U} _0</tex>は<tex>\mathsf {U} _1</tex>の<strong>小さい部分宇宙</strong>(<em>small subuniverse</em>)と言える。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>290</anchor>   <addr>math-003P</addr>  <route>math-003P.xml</route>   <title>可算無限個の階層的宇宙</title> </frontmatter> <mainmatter><p>
  上記のプロセスを可算無限回繰り返すことで、可算無限個の宇宙から成る階層を得られる。すなわち、任意の自然数<tex>i</tex>について、以下の規則を得られる。

  <tex display="block">
     \frac { 
     }{ 
       \Gamma   \vdash   \mathsf {U} _i   \enspace   \mathsf {type} 
     } 
     \text {($ \mathsf {U} _i$F)}
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   a  :  \mathsf {U} _i 
     }{ 
       \Gamma   \vdash   \mathsf {El} _i(a)   \enspace   \mathsf {type} 
     } 
     \text {($ \mathsf {U} _i$E)}
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   a  :  \mathsf {U} _i 
     }{ 
       \Gamma   \vdash   \mathop { \Uparrow } _i^{i+1} a  :  \mathsf {U} _{i+1} 
     } 
     \text {(Lift)}
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   a  :  \mathsf {U} _i 
     }{ 
       \Gamma   \vdash   \mathsf {El} _{i+1} ( \mathop { \Uparrow } _i^{i+1} a)   \equiv   \mathsf {El} _i (a)   \enspace   \mathsf {type} 
     } 
     \text {(LiftEq)}
  </tex>

  <tex display="block">
     \frac { 
     }{ 
       \Gamma   \vdash   \hat { \mathsf {U} }_i  :  \mathsf {U} _{i+1} 
     } 
     \text {($ \mathsf {U} _i$Code)}
  </tex>

  <tex display="block">
     \frac { 
     }{ 
       \Gamma   \vdash   \mathsf {El} _{i+1}{ \hat { \mathsf {U} }_i}   \equiv   \mathsf {U} _i   \enspace   \mathsf {type} 
     } 
     \text {($ \mathsf {U} _i$CodeEq)}
  </tex>

  このとき、<tex>i</tex>を<strong>宇宙レベル</strong>(<em>universe level</em>)と呼ぶ。
</p><p>
  「宇宙が可算無限個あるとどうなるのか、有限個の場合と何が違うのか」というと、任意の型に対して何らかのコードが対応する、という状況が作り出せるという点がある。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>291</anchor>   <addr>math-003R</addr>  <route>math-003R.xml</route>   <title>Coquand宇宙</title> </frontmatter> <mainmatter><p>
  そうなってくると、判断<tex>\Gamma   \vdash   A   \enspace   \mathsf {type}</tex>の方を宇宙レベルによって階層化するということが考えられる。

  <tex display="block">
     \Gamma   \vdash   A   \enspace   \mathsf {type}_{ i } 
  </tex>

  <tex display="block">
     \Gamma   \vdash   A   \equiv   B   \enspace   \mathsf {type}_{ i } 
  </tex>

  これらの新しい判断は<tex>A</tex>がレベル<tex>i</tex>の型であることと、<tex>A</tex>と<tex>B</tex>がレベル<tex>i</tex>の型として等しいことを、それぞれ示している。このような定式化の下での新しい規則を以下で与える。

  <tex display="block">
     \frac { 
       \Gamma   \vdash   A   \enspace   \mathsf {type}_{ i } 
       \quad 
       \Gamma , x {:} A   \vdash   B   \enspace   \mathsf {type}_{ i } 
     }{ 
       \Gamma   \vdash   \prod _{x : A} B   \enspace   \mathsf {type}_{ i } 
     } 
     \text {($ \Pi $F)}
  </tex>

  <tex display="block">
     \frac { 
     }{ 
       \Gamma   \vdash   \mathsf {U} _i   \enspace   \mathsf {type}_{ i+1 } 
     } 
     \text {($ \mathsf {U} _i$F)}
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   a  :  \mathsf {U} _i 
     }{ 
       \Gamma   \vdash   \mathsf {El} _i(a)   \enspace   \mathsf {type}_{ i } 
     } 
     \text {($ \mathsf {U} _i$E)}
  </tex>

  さらに、コードの持ち上げの代わりに型の持ち上げをサポートする。コードの持ち上げとは違って、持ち上げ前後の関係は、等価性ではなく同型によって与えられる。

  <tex display="block">
     \frac { 
       \Gamma   \vdash   A   \enspace   \mathsf {type}_{ i } 
     }{ 
       \Gamma   \vdash   \mathsf {Lift} _i^{i+1}(A)   \enspace   \mathsf {type}_{ i+1 } 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   A   \enspace   \mathsf {type}_{ i } 
       \quad 
       \Gamma   \vdash   M  :  A 
     }{ 
       \Gamma   \vdash   \mathop { \uparrow } _i^{i+1} M  :  \mathsf {Lift} _i^{i+1}(A) 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   A   \enspace   \mathsf {type}_{ i } 
       \quad 
       \Gamma   \vdash   M  :  \mathsf {Lift} _i^{i+1}(A) 
     }{ 
       \Gamma   \vdash   \mathop { \downarrow } _i^{i+1} M  :  A 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   A   \enspace   \mathsf {type}_{ i } 
       \quad 
       \Gamma   \vdash   M  :  A 
     }{ 
       \Gamma   \vdash   \mathop { \downarrow } _i^{i+1}  \mathop { \uparrow } _i^{i+1} M   \equiv   M  :  A 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   A   \enspace   \mathsf {type}_{ i } 
       \quad 
       \Gamma   \vdash   M  :  \mathsf {Lift} _i^{i+1}(A) 
     }{ 
       \Gamma   \vdash   \mathop { \uparrow } _i^{i+1}  \mathop { \downarrow } _i^{i+1} M   \equiv   M  :  \mathsf {Lift} _i^{i+1}(A) 
     } 
  </tex>
</p><p>
  そして、型の持ち上げは各型結合子を保存する。

  <tex display="block">
     \frac { 
       \Gamma   \vdash   A   \enspace   \mathsf {type}_{ i } 
       \quad 
       \Gamma , x {:} A   \vdash   B   \enspace   \mathsf {type}_{ i } 
     }{ 
       \Gamma   \vdash   \mathsf {Lift} _i^{i+1} { \left ( \prod _{x:A} B \right )}   \equiv   \prod _{y:  \mathsf {Lift} _i^{i+1}(A)}  \mathsf {Lift} _i^{i+1} { \left ( [ \mathop { \downarrow } _i^{i+1} y/x]B \right )}   \enspace   \mathsf {type}_{ i+1 } 
     } 
  </tex>
</p><p>
  また、型がレベルによって分類されるようになったおかげで、型からコードへの変換を統一的に扱えるようになる。

  <tex display="block">
     \frac { 
       \Gamma   \vdash   A   \enspace   \mathsf {type}_{ i } 
     }{ 
       \Gamma   \vdash   \mathsf {Code} _i (A)  :  \mathsf {U} _i 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   A   \enspace   \mathsf {type}_{ i } 
     }{ 
       \Gamma   \vdash   \mathsf {El} _i  { \left ( \mathsf {Code} _i (A) \right )}   \equiv   A   \enspace   \mathsf {type}_{ i } 
     } 
  </tex>

  <tex display="block">
     \frac { 
       \Gamma   \vdash   a  :  \mathsf {U} _i 
     }{ 
       \Gamma   \vdash   \mathsf {Code} _i  { \left ( \mathsf {El} _i (a) \right )}   \equiv   a  :  \mathsf {U} _i 
     } 
  </tex>

  このように<tex>\mathsf {El} _i</tex>が逆写像<tex>\mathsf {Code} _i</tex>を持つとき、その型理論は<strong>Coquand宇宙</strong>(<em>Coquand universes; universes à la Coquand</em>)をサポートしていると言う。
</p></mainmatter> </tree></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>292</anchor>   <addr>math-003S</addr>  <route>math-003S.xml</route>   <title>あわせて読みたい</title> </frontmatter> <mainmatter><ul>
  <li>
    <link href="kovacs-2022.xml" type="local" title="Generalized Universe Hierarchies and First-Class Universe Levels">Generalized Universe Hierarchies and First-Class Universe Levels</link>
  </li>

  <li>
    <link href="favonia-angiuli-mullanix-2023.xml" type="local" title="An Order-Theoretic Analysis of Universe Polymorphism">An Order-Theoretic Analysis of Universe Polymorphism</link>
  </li>

  <li>
    <link href="sterling-2019.xml" type="local" title="Algebraic Type Theory and Universe Hierarchies">Algebraic Type Theory and Universe Hierarchies</link>
  </li>

  <li>
    <link href="https://ncatlab.org/nlab/show/Tarski+universe" type="external">Tarski universe in nLab</link>
  </li>

  <li>
    <link href="https://ncatlab.org/nlab/show/Russell+universe" type="external">Russell universe in nLab</link>
  </li>
</ul></mainmatter> </tree></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>293</anchor>   <addr>math-0039</addr>  <route>math-0039.xml</route> <date><year>2023</year> <month>9</month> <day>19</day></date> <authors><author>elpinal</author> </authors> <title>型理論における部分集合と族</title> </frontmatter> <mainmatter><p>
  集合論においては<strong>部分集合</strong>の概念がよく使われるが、これを型理論に持ち込むにはどうすればよいか。1つの方法は、ある種の特徴写像を使う方法である。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>294</anchor>  <taxon>定義</taxon> <addr>math-003A</addr>  <route>math-003A.xml</route>   <title>型の冪集合</title> </frontmatter> <mainmatter><p>
  <tex>\mathcal { U } ,  \mathcal { V }</tex>を任意の宇宙とする。任意の型<tex>A :  \mathcal { U }</tex>について、<tex>A</tex>の<strong><tex>\mathcal { V }</tex>-冪集合</strong>(<em><tex>\mathcal { V }</tex>-powerset</em>)とは、次のように定義される型<tex>\mathcal {P} _{ \mathcal { V } } (A) :  \mathcal { U }   \sqcup   \mathcal { V } ^+</tex>のことである。
  <tex display="block">
     \mathcal {P} _{ \mathcal { V } } (A)  \mathrel { \stackrel { \text {def}}{ \equiv }}  A  \to   \mathsf {hProp} _{ \mathcal { V } }
  </tex>
  ただし、<tex>\mathsf {hProp} _{ \mathcal { V } }</tex>は命題の宇宙を表す。
</p></mainmatter> </tree><p>
  <link href="math-003D.xml" type="local" title="命題の宇宙は集合である">命題の宇宙は集合である</link>ので、<tex>A</tex>がたとえ集合でなくても、写像の外延性を仮定すれば、<tex>\mathcal {P} _{ \mathcal { V } } (A)</tex>は集合になる。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>295</anchor>  <taxon>定義</taxon> <addr>math-003B</addr>  <route>math-003B.xml</route>   <title>型の部分集合</title> </frontmatter> <mainmatter><p>
  <tex>\mathcal { V }</tex>を任意の宇宙とする。任意の型<tex>A</tex>について、<tex>A</tex>の<tex>\mathcal { V }</tex>-<link href="math-003A.xml" type="local" title="型の冪集合">冪集合</link>の要素を<strong><tex>\mathcal { V }</tex>-値部分集合</strong>(<em><tex>\mathcal { V }</tex>-valued subset</em>)と呼ぶ。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>296</anchor>  <taxon>記法</taxon> <addr>math-003C</addr>  <route>math-003C.xml</route>   <title>部分集合に属する元</title> </frontmatter> <mainmatter><p>
  <tex>A</tex>を型、<tex>\mathcal { V }</tex>を宇宙とする。<tex>A</tex>の<link href="math-003B.xml" type="local" title="型の部分集合"><tex>\mathcal { V }</tex>-値部分集合</link><tex>S</tex>と<tex>x : A</tex>について、<tex>x  \in  S</tex>と書いて型<tex>S (x)</tex>を表す。
</p></mainmatter> </tree><p>
  ちなみに、型<tex>A  \to  2</tex>の元は部分集合ではなく、<strong>決定可能な部分集合</strong>(<em>decidable subset</em>)と呼ばれ、より強い性質を持つので、ここでは扱わない。
</p><p>
  一方で、族を使うこともできる。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>297</anchor>  <taxon>定義</taxon> <addr>math-003E</addr>  <route>math-003E.xml</route>   <title>族</title> </frontmatter> <mainmatter><p>
  <tex>A :  \mathcal { U }</tex>を型、<tex>\mathcal { V }</tex>を宇宙とする。このとき、型<tex>\mathsf {Fam} _{ \mathcal { V } } (A) :  \mathcal { U }   \sqcup   \mathcal { V } ^+</tex>を次のように定義する。
  <tex display="block">
     \mathsf {Fam} _{ \mathcal { V } } (A)  \mathrel { \stackrel { \text {def}}{ \equiv }}   \sum _{I :  \mathcal { V } } (I  \to  A)
  </tex>
  このとき<tex>\mathsf {Fam} _{ \mathcal { V } } (A)</tex>の元<tex>(I, f)</tex>を、<tex>A</tex>の元の<strong><tex>I</tex>で添字付けられた族</strong>(<em><tex>I</tex>-indexed family</em>)と呼ぶ。
</p></mainmatter> </tree><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>298</anchor>  <taxon>記法</taxon> <addr>math-003F</addr>  <route>math-003F.xml</route>   <title>族の記法</title> </frontmatter> <mainmatter><p>
  型<tex>A</tex>上の<link href="math-003E.xml" type="local" title="族">族</link><tex>U  \equiv  (I, f)</tex>と<tex>i : I</tex>が与えられたとき、<tex>U_i</tex>と書いて元<tex>f(i) : A</tex>を表す。
</p></mainmatter> </tree><p>
  族の定義において、<tex>f</tex>が単射であることを条件に課さなかった。これについては、何らかの定理を証明する際に、必要なときだけ単射性（より正確には<em>embedding</em>性）を要求すればよい。
</p><tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>299</anchor>   <addr>math-003G</addr>  <route>math-003G.xml</route>   <title>部分集合から族を作る</title> </frontmatter> <mainmatter><p>
  型<tex>A</tex>の<link href="math-003B.xml" type="local" title="型の部分集合"><tex>\mathcal { V }</tex>-値部分集合</link><tex>S : A  \to   \mathsf {hProp} _{ \mathcal { V } }</tex>について、
  <tex display="block">
    I  \mathrel { \stackrel { \text {def}}{ \equiv }}   \sum _{x : A} (x  \in  S)
  </tex>
  と定義すると、<tex>(I,  \mathsf {pr}_1  : I  \to  A)</tex>は<link href="math-003E.xml" type="local" title="族">族</link>になる。
</p></mainmatter> </tree></mainmatter> </tree></mainmatter> </tree>

  
  <tree expanded="true" show-heading="true" show-metadata="false" toc="true" root="false"><frontmatter> <anchor>300</anchor>   <addr>epa-0006</addr>  <route>epa-0006.xml</route>   <title>雑録</title> </frontmatter> <mainmatter><ul>
  <li>
    <link href="math-00M8.xml" type="local" title="Fibered limit">Fibered limit</link>
  </li>
</ul></mainmatter> </tree>
</mainmatter> <backmatter><contributions/> <context/> <related/> <backlinks><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>301</anchor>   <addr>base-macros</addr>  <route>base-macros.xml</route>   <title>Basic macros</title> </frontmatter> <mainmatter><p>このツリーは基本的なマクロを定義する。<link href="index.xml" type="local" title="Forest.CBUlt.space"/></p></mainmatter> </tree></backlinks> <references><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>302</anchor>  <taxon>Reference</taxon> <addr>favonia-angiuli-mullanix-2023</addr>  <route>favonia-angiuli-mullanix-2023.xml</route> <date><year>2023</year>  </date> <authors><author><link href="favonia.xml" type="local">Kuen-Bang Hou (Favonia)</link></author><author>Carlo Angiuli</author><author>Reed Mullanix</author> </authors> <title>An Order-Theoretic Analysis of Universe Polymorphism</title> <meta name="doi">10.1145/3571250</meta></frontmatter> <mainmatter><p>
  We present a novel formulation of universe polymorphism in dependent type theory in terms of monads on the category of strict partial orders, and a novel algebraic structure, displacement algebras, on top of which one can implement a generalized form of McBride’s “crude but effective stratification” scheme for lightweight universe polymorphism. We give some examples of exotic but consistent universe hierarchies, and prove that every universe hierarchy in our sense can be embedded in a displacement algebra and hence implemented via our generalization of McBride’s scheme. Many of our technical results are mechanized in Agda, and we have an OCaml library for universe levels based on displacement algebras, for use in proof assistant implementations.
</p></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>303</anchor>  <taxon>Reference</taxon> <addr>sterling-2023-generic</addr>  <route>sterling-2023-generic.xml</route> <date><year>2023</year>  </date> <authors><author>Jonathan Sterling</author> </authors> <title>What should a generic object be?</title> <meta name="doi">10.1017/S0960129523000117</meta></frontmatter> <mainmatter><p>
  Jacobs has proposed definitions for (weak, strong, split) generic objects for a fibered category; building on his definition of (split) generic objects, Jacobs develops a menagerie of important fibrational structures with applications to categorical logic and computer science, including higher order fibrations, polymorphic fibrations,  𝜆2  -fibrations, triposes, and others. We observe that a split generic object need not in particular be a generic object under the given definitions, and that the definitions of polymorphic fibrations, triposes, etc. are strict enough to rule out some fundamental examples: for instance, the fibered preorder induced by a partial combinatory algebra in realizability is not a tripos in this sense. We propose a new alignment of terminology that emphasizes the forms of generic object appearing most commonly in nature, i.e. in the study of internal categories, triposes, and the denotational semantics of polymorphism. In addition, we propose a new class of acyclic generic objects inspired by recent developments in higher category theory and the semantics of homotopy type theory, generalizing the realignment property of universes to the setting of an arbitrary fibration.
</p></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>304</anchor>  <taxon>Reference</taxon> <addr>kovacs-2022</addr>  <route>kovacs-2022.xml</route> <date><year>2022</year>  </date> <authors><author>András Kovács</author> </authors> <title>Generalized Universe Hierarchies and First-Class Universe Levels</title> <meta name="doi">10.4230/LIPIcs.CSL.2022.28</meta></frontmatter> <mainmatter><p>
  In type theories, universe hierarchies are commonly used to increase the expressive power of the theory while avoiding inconsistencies arising from size issues. There are numerous ways to specify universe hierarchies, and theories may differ in details of cumulativity, choice of universe levels, specification of type formers and eliminators, and available internal operations on levels. In the current work, we aim to provide a framework which covers a large part of the design space. First, we develop syntax and semantics for cumulative universe hierarchies, where levels may come from any set equipped with a transitive well-founded ordering. In the semantics, we show that induction-recursion can be used to model transfinite hierarchies, and also support lifting operations on type codes which strictly preserve type formers. Then, we consider a setup where universe levels are first-class types and subject to arbitrary internal reasoning. This generalizes the bounded polymorphism features of Coq and at the same time the internal level computations in Agda.
</p></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>305</anchor>  <taxon>Reference</taxon> <addr>awodey-2022</addr>  <route>awodey-2022.xml</route> <date><year>2022</year>  </date> <authors><author>Steve Awodey</author> </authors> <title>On Hofmann-Streicher universes</title> <meta name="doi">10.48550/arXiv.2205.10917</meta></frontmatter> <mainmatter/> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>306</anchor>  <taxon>Reference</taxon> <addr>sterling-2019</addr>  <route>sterling-2019.xml</route> <date><year>2019</year>  </date> <authors><author>Jonathan Sterling</author> </authors> <title>Algebraic Type Theory and Universe Hierarchies</title> <meta name="doi">10.48550/arXiv.1902.08848</meta></frontmatter> <mainmatter><p>
  It is commonly believed that algebraic notions of type theory support only universes à la Tarski, and that universes à la Russell must be removed by elaboration. We clarify the state of affairs, recalling the details of Cartmell's discipline of _generalized algebraic theory_, showing how to formulate an algebraic version of Coquand's cumulative cwfs with universes à la Russell. To demonstrate the power of algebraic techniques, we sketch a purely algebraic proof of canonicity for Martin-Löf Type Theory with universes, dependent function types, and a base type with two constants.
</p></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>307</anchor>  <taxon>Reference</taxon> <addr>kaposi-et-al-2019</addr>  <route>kaposi-et-al-2019.xml</route> <date><year>2019</year>  </date> <authors><author>Ambrus Kaposi</author><author>András Kovács</author><author>Thorsten Altenkirch</author> </authors> <title>Constructing quotient inductive-inductive types</title> <meta name="doi">10.1145/3290315</meta></frontmatter> <mainmatter><p>
  Quotient inductive-inductive types (QIITs) generalise inductive types in two ways: a QIIT can have more than one sort and the later sorts can be indexed over the previous ones. In addition, equality constructors are also allowed. We work in a setting with uniqueness of identity proofs, hence we use the term QIIT instead of higher inductive-inductive type. An example of a QIIT is the well-typed (intrinsic) syntax of type theory quotiented by conversion. In this paper first we specify finitary QIITs using a domain-specific type theory which we call the theory of signatures. The syntax of the theory of signatures is given by a QIIT as well. Then, using this syntax we show that all specified QIITs exist and they have a dependent elimination principle. We also show that algebras of a signature form a category with families (CwF) and use the internal language of this CwF to show that dependent elimination is equivalent to initiality.
</p></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>308</anchor>  <taxon>Reference</taxon> <addr>kaposi-huber-sattler-2019</addr>  <route>kaposi-huber-sattler-2019.xml</route> <date><year>2019</year>  </date> <authors><author>Ambrus Kaposi</author><author>Simon Huber</author><author>Christian Sattler</author> </authors> <title>Gluing for type theory</title> <meta name="doi">10.4230/LIPICS.FSCD.2019.25</meta></frontmatter> <mainmatter><p>
  The relationship between categorical gluing and proofs using the logical relation technique is folklore. In this paper we work out this relationship for Martin-Löf type theory and show that parametricity and canonicity arise as special cases of gluing. The input of gluing is two models of type theory and a pseudomorphism between them and the output is a displayed model over the first model. A pseudomorphism preserves the categorical structure strictly, the empty context and context extension up to isomorphism, and there are no conditions on preservation of type formers. We look at three examples of pseudomorphisms: the identity on the syntax, the interpretation into the set model and the global section functor. Gluing along these result in syntactic parametricity, semantic parametricity and canonicity, respectively.
</p></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>309</anchor>  <taxon>Reference</taxon> <addr>awodey-2017</addr>  <route>awodey-2017.xml</route> <date><year>2017</year>  </date> <authors><author>Steve Awodey</author> </authors> <title>Natural models of homotopy type theory</title> <meta name="doi">10.48550/arXiv.1406.3219</meta></frontmatter> <mainmatter><p>
  The notion of a natural model of type theory is defined in terms of that of a representable natural transfomation of presheaves. It is shown that such models agree exactly with the concept of a category with families in the sense of Dybjer, which can be regarded as an algebraic formulation of type theory. We determine conditions for such models to satisfy the inference rules for dependent sums, dependent products, and intensional identity types, as used in homotopy type theory. It is then shown that a category admits such a model if it has a class of maps that behave like the abstract fibrations in axiomatic homotopy theory: they should be stable under pullback, closed under composition and relative products, and there should be weakly orthogonal factorizations into the class. It follows that many familiar settings for homotopy theory also admit natural models of the basic system of homotopy type theory.
</p></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>310</anchor>  <taxon>Reference</taxon> <addr>streicher-2005</addr>  <route>streicher-2005.xml</route> <date><year>2005</year>  </date> <authors><author>Thomas Streicher</author> </authors> <title>Universes in toposes</title> <meta name="doi">10.1093/acprof:oso/9780198566519.003.0005</meta><meta name="external">https://www2.mathematik.tu-darmstadt.de/~streicher/NOTES/UniTop.pdf</meta></frontmatter> <mainmatter><p>
  This chapter discusses a notion of universe in toposes, which from a logical point of view gives rise to an extension of Higher Order Intuitionistic Arithmetic (HAH). In this way, one can construct families of types in the universe by structural recursion and quantify over such families. Further, it shows that (hierarchies of) such universes do exist in all sheaf and realizability toposes. They do not exist instead either in the free topos or in the Vω+ω model of Zermelo set theory. Though universes in the category Set are necessarily of strongly inaccessible cardinality, it remains an open question as to whether toposes with a universe allow one to construct internal models of Intuitionistic Zermelo Fraenkel set theory (IZF).
</p></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>311</anchor>  <taxon>Reference</taxon> <addr>jacobs-1999</addr>  <route>jacobs-1999.xml</route> <date><year>1999</year>  </date> <authors><author>Bart Jacobs</author> </authors> <title>Categorical Logic and Type Theory</title> <meta name="isbn">978-0-444-50170-7</meta><meta name="external">https://www.sciencedirect.com/bookseries/studies-in-logic-and-the-foundations-of-mathematics/vol/141</meta></frontmatter> <mainmatter><p>
  This book is an attempt to give a systematic presentation of both logic and type theory from a categorical perspective, using the unifying concept of fibred category. Its intended audience consists of logicians, type theorists, category theorists and (theoretical) computer scientists.
</p></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>312</anchor>  <taxon>Reference</taxon> <addr>hofmann-streicher-1997</addr>  <route>hofmann-streicher-1997.xml</route> <date><year>1997</year>  </date> <authors><author>Martin Hofmann</author><author>Thomas Streicher</author> </authors> <title>Lifting Grothendieck Universes</title> <meta name="external">https://www2.mathematik.tu-darmstadt.de/~streicher/NOTES/lift.pdf</meta></frontmatter> <mainmatter/> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>313</anchor>  <taxon>Reference</taxon> <addr>mitchell-scedrov-1993</addr>  <route>mitchell-scedrov-1993.xml</route> <date><year>1993</year>  </date> <authors><author>John C. Mitchell</author><author>Andre Scedrov</author> </authors> <title>Notes on sconing and relators</title> <meta name="doi">10.1007/3-540-56992-8_21</meta></frontmatter> <mainmatter><p>
  This paper describes a semantics of typed lambda calculi based on relations. The main mathematical tool is a category-theoretic method of sconing, also called glueing or Freyd covers. Its correspondence to logical relations is also examined.
</p></mainmatter> </tree><tree expanded="false" show-heading="true" show-metadata="true" toc="false" root="false"><frontmatter> <anchor>314</anchor>  <taxon>Reference</taxon> <addr>armstrong-1983</addr>  <route>armstrong-1983.xml</route> <date><year>1983</year>  </date> <authors><author>M. A. Armstrong</author> </authors> <title>Basic topology</title> <meta name="doi">10.1007/978-1-4757-1793-8</meta></frontmatter> <mainmatter><p>
  In this broad introduction to topology, the author searches for topological invariants of spaces, together with techniques for calculating them. Students with knowledge of real analysis, elementary group theory, and linear algebra will quickly become familiar with a wide variety of techniques and applications involving point-set, geometric, and algebraic topology. Over 139 illustrations and more than 350 problems of various difficulties will help students gain a rounded understanding of the subject.
</p></mainmatter> </tree></references></backmatter></tree>