csci8980-f21/versions/20.07/TSPL/2018/Exam/index.html

819 lines
228 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en"><head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Exam: TSPL Mock Exam file | Programming Language Foundations in Agda
</title><!-- Begin Jekyll SEO tag v2.6.1 -->
<meta name="generator" content="Jekyll v3.9.0" />
<meta property="og:title" content="Exam: TSPL Mock Exam file" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="Programming Language Foundations in Agda" />
<meta property="og:description" content="Programming Language Foundations in Agda" />
<link rel="canonical" href="https://plfa.github.io/20.07/TSPL/2018/Exam/" />
<meta property="og:url" content="https://plfa.github.io/20.07/TSPL/2018/Exam/" />
<meta property="og:site_name" content="Programming Language Foundations in Agda" />
<script type="application/ld+json">
{"url":"https://plfa.github.io/20.07/TSPL/2018/Exam/","headline":"Exam: TSPL Mock Exam file","description":"Programming Language Foundations in Agda","@type":"WebPage","@context":"https://schema.org"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/20.07/assets/main.css"></head>
<body><header class="site-header" role="banner">
<div class="wrapper">
<a class="site-title" href="/20.07/">Programming Language Foundations in Agda
</a>
<nav class="site-nav">
<span class="menu-icon">
<svg viewBox="0 0 18 15" width="18px" height="15px">
<path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
<path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
<path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
</svg>
</span>
<div class="trigger">
<a class="page-link" href="/20.07/">The Book</a>
<a class="page-link" href="/20.07/Announcements/">Announcements</a>
<a class="page-link" href="/20.07/GettingStarted/">Getting Started</a>
<a class="page-link" href="/20.07/Citing/">Citing</a>
<a class="page-link" href="https://agda-zh.github.io/PLFA-zh/">中文</a>
</div>
</nav>
</div>
</header>
<main class="page-content" aria-label="Content">
<div class="wrapper">
<article class="post">
<header class="post-header">
<h1 class="post-title">Exam: TSPL Mock Exam file</h1>
</header>
<p style="text-align:center;">
<a alt="Source code" href="https://github.com/plfa/plfa.github.io/blob/dev-20.07/courses/tspl/2018/Exam.lagda.md">Source</a>
</p>
<div class="post-content">
<pre class="Agda"><a id="101" class="Keyword">module</a> <a id="108" href="/20.07/TSPL/2018/Exam/" class="Module">Exam</a> <a id="113" class="Keyword">where</a>
</pre>
<p><strong>IMPORTANT</strong> For ease of marking, when modifying the given code please write</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>-- begin
-- end
</code></pre></div></div>
<p>before and after code you add, to indicate your changes.</p>
<h2 id="imports">Imports</h2>
<pre class="Agda"><a id="302" class="Keyword">import</a> <a id="309" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.html" class="Module">Relation.Binary.PropositionalEquality</a> <a id="347" class="Symbol">as</a> <a id="350" class="Module">Eq</a>
<a id="353" class="Keyword">open</a> <a id="358" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.html" class="Module">Eq</a> <a id="361" class="Keyword">using</a> <a id="367" class="Symbol">(</a><a id="368" href="Agda.Builtin.Equality.html#125" class="Datatype Operator">_≡_</a><a id="371" class="Symbol">;</a> <a id="373" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a><a id="377" class="Symbol">;</a> <a id="379" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.Core.html#939" class="Function">sym</a><a id="382" class="Symbol">;</a> <a id="384" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.Core.html#984" class="Function">trans</a><a id="389" class="Symbol">;</a> <a id="391" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.Core.html#1090" class="Function">cong</a><a id="395" class="Symbol">;</a> <a id="397" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.Core.html#799" class="Function Operator">_≢_</a><a id="400" class="Symbol">)</a>
<a id="402" class="Keyword">open</a> <a id="407" class="Keyword">import</a> <a id="414" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html" class="Module">Data.Empty</a> <a id="425" class="Keyword">using</a> <a id="431" class="Symbol">(</a><a id="432" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#279" class="Datatype"></a><a id="433" class="Symbol">;</a> <a id="435" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#294" class="Function">⊥-elim</a><a id="441" class="Symbol">)</a>
<a id="443" class="Keyword">open</a> <a id="448" class="Keyword">import</a> <a id="455" href="https://agda.github.io/agda-stdlib/v1.1/Data.Nat.html" class="Module">Data.Nat</a> <a id="464" class="Keyword">using</a> <a id="470" class="Symbol">(</a><a id="471" href="Agda.Builtin.Nat.html#165" class="Datatype"></a><a id="472" class="Symbol">;</a> <a id="474" href="Agda.Builtin.Nat.html#183" class="InductiveConstructor">zero</a><a id="478" class="Symbol">;</a> <a id="480" href="Agda.Builtin.Nat.html#196" class="InductiveConstructor">suc</a><a id="483" class="Symbol">)</a>
<a id="485" class="Keyword">open</a> <a id="490" class="Keyword">import</a> <a id="497" href="https://agda.github.io/agda-stdlib/v1.1/Data.List.html" class="Module">Data.List</a> <a id="507" class="Keyword">using</a> <a id="513" class="Symbol">(</a><a id="514" href="Agda.Builtin.List.html#121" class="Datatype">List</a><a id="518" class="Symbol">;</a> <a id="520" href="https://agda.github.io/agda-stdlib/v1.1/Data.List.Base.html#8786" class="InductiveConstructor">[]</a><a id="522" class="Symbol">;</a> <a id="524" href="Agda.Builtin.List.html#173" class="InductiveConstructor Operator">_∷_</a><a id="527" class="Symbol">;</a> <a id="529" href="https://agda.github.io/agda-stdlib/v1.1/Data.List.Base.html#1570" class="Function Operator">_++_</a><a id="533" class="Symbol">)</a>
<a id="535" class="Keyword">open</a> <a id="540" class="Keyword">import</a> <a id="547" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html" class="Module">Data.Product</a> <a id="560" class="Keyword">using</a> <a id="566" class="Symbol">(</a><a id="567" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1364" class="Function"></a><a id="568" class="Symbol">;</a> <a id="570" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1783" class="Function">∃-syntax</a><a id="578" class="Symbol">)</a> <a id="580" class="Keyword">renaming</a> <a id="589" class="Symbol">(</a><a id="590" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">_,_</a> <a id="594" class="Symbol">to</a> <a id="597" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">⟨_,_⟩</a><a id="602" class="Symbol">)</a>
<a id="604" class="Keyword">open</a> <a id="609" class="Keyword">import</a> <a id="616" href="https://agda.github.io/agda-stdlib/v1.1/Data.String.html" class="Module">Data.String</a> <a id="628" class="Keyword">using</a> <a id="634" class="Symbol">(</a><a id="635" href="Agda.Builtin.String.html#206" class="Postulate">String</a><a id="641" class="Symbol">;</a> <a id="643" href="https://agda.github.io/agda-stdlib/v1.1/Data.String.Properties.html#2569" class="Function Operator">_≟_</a><a id="646" class="Symbol">)</a>
<a id="648" class="Keyword">open</a> <a id="653" class="Keyword">import</a> <a id="660" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html" class="Module">Relation.Nullary</a> <a id="677" class="Keyword">using</a> <a id="683" class="Symbol">(</a><a id="684" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#535" class="Function Operator">¬_</a><a id="686" class="Symbol">;</a> <a id="688" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#605" class="Datatype">Dec</a><a id="691" class="Symbol">;</a> <a id="693" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a><a id="696" class="Symbol">;</a> <a id="698" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a><a id="700" class="Symbol">)</a>
<a id="702" class="Keyword">open</a> <a id="707" class="Keyword">import</a> <a id="714" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.html" class="Module">Relation.Binary</a> <a id="730" class="Keyword">using</a> <a id="736" class="Symbol">(</a><a id="737" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.Core.html#5557" class="Function">Decidable</a><a id="746" class="Symbol">)</a>
</pre>
<h2 id="problem-1">Problem 1</h2>
<pre class="Agda"><a id="771" class="Keyword">module</a> <a id="Problem1"></a><a id="778" href="/20.07/TSPL/2018/Exam/#778" class="Module">Problem1</a> <a id="787" class="Keyword">where</a>
<a id="796" class="Keyword">open</a> <a id="801" class="Keyword">import</a> <a id="808" href="https://agda.github.io/agda-stdlib/v1.1/Function.html" class="Module">Function</a> <a id="817" class="Keyword">using</a> <a id="823" class="Symbol">(</a><a id="824" href="https://agda.github.io/agda-stdlib/v1.1/Function.html#1099" class="Function Operator">_∘_</a><a id="827" class="Symbol">)</a>
</pre>
<p>Remember to indent all code by two spaces.</p>
<h3 id="a">(a)</h3>
<h3 id="b">(b)</h3>
<h3 id="c">(c)</h3>
<h2 id="problem-2">Problem 2</h2>
<p>Remember to indent all code by two spaces.</p>
<pre class="Agda"><a id="968" class="Keyword">module</a> <a id="Problem2"></a><a id="975" href="/20.07/TSPL/2018/Exam/#975" class="Module">Problem2</a> <a id="984" class="Keyword">where</a>
</pre>
<h3 id="infix-declarations">Infix declarations</h3>
<pre class="Agda"> <a id="1025" class="Keyword">infix</a> <a id="1032" class="Number">4</a> <a id="1034" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator">_⊢_</a>
<a id="1040" class="Keyword">infix</a> <a id="1047" class="Number">4</a> <a id="1049" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator">_∋_</a>
<a id="1055" class="Keyword">infixl</a> <a id="1062" class="Number">5</a> <a id="1064" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">_,_</a>
<a id="1071" class="Keyword">infixr</a> <a id="1078" class="Number">7</a> <a id="1080" href="/20.07/TSPL/2018/Exam/#1248" class="InductiveConstructor Operator">_⇒_</a>
<a id="1087" class="Keyword">infix</a> <a id="1094" class="Number">5</a> <a id="1096" href="/20.07/TSPL/2018/Exam/#1737" class="InductiveConstructor Operator">ƛ_</a>
<a id="1101" class="Keyword">infix</a> <a id="1108" class="Number">5</a> <a id="1110" href="/20.07/TSPL/2018/Exam/#2124" class="InductiveConstructor Operator">μ_</a>
<a id="1115" class="Keyword">infixl</a> <a id="1122" class="Number">7</a> <a id="1124" href="/20.07/TSPL/2018/Exam/#1816" class="InductiveConstructor Operator">_·_</a>
<a id="1130" class="Keyword">infix</a> <a id="1137" class="Number">8</a> <a id="1139" href="/20.07/TSPL/2018/Exam/#1957" class="InductiveConstructor Operator">`suc_</a>
<a id="1147" class="Keyword">infix</a> <a id="1154" class="Number">9</a> <a id="1156" href="/20.07/TSPL/2018/Exam/#1674" class="InductiveConstructor Operator">`_</a>
<a id="1161" class="Keyword">infix</a> <a id="1168" class="Number">9</a> <a id="1170" href="/20.07/TSPL/2018/Exam/#1520" class="InductiveConstructor Operator">S_</a>
<a id="1175" class="Keyword">infix</a> <a id="1182" class="Number">9</a> <a id="1184" href="/20.07/TSPL/2018/Exam/#2614" class="Function Operator">#_</a>
</pre>
<h3 id="types-and-contexts">Types and contexts</h3>
<pre class="Agda"> <a id="1222" class="Keyword">data</a> <a id="Problem2.Type"></a><a id="1227" href="/20.07/TSPL/2018/Exam/#1227" class="Datatype">Type</a> <a id="1232" class="Symbol">:</a> <a id="1234" class="PrimitiveType">Set</a> <a id="1238" class="Keyword">where</a>
<a id="Problem2.Type._⇒_"></a><a id="1248" href="/20.07/TSPL/2018/Exam/#1248" class="InductiveConstructor Operator">_⇒_</a> <a id="1254" class="Symbol">:</a> <a id="1256" href="/20.07/TSPL/2018/Exam/#1227" class="Datatype">Type</a> <a id="1261" class="Symbol"></a> <a id="1263" href="/20.07/TSPL/2018/Exam/#1227" class="Datatype">Type</a> <a id="1268" class="Symbol"></a> <a id="1270" href="/20.07/TSPL/2018/Exam/#1227" class="Datatype">Type</a>
<a id="Problem2.Type.`"></a><a id="1279" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a> <a id="1285" class="Symbol">:</a> <a id="1287" href="/20.07/TSPL/2018/Exam/#1227" class="Datatype">Type</a>
<a id="1295" class="Keyword">data</a> <a id="Problem2.Context"></a><a id="1300" href="/20.07/TSPL/2018/Exam/#1300" class="Datatype">Context</a> <a id="1308" class="Symbol">:</a> <a id="1310" class="PrimitiveType">Set</a> <a id="1314" class="Keyword">where</a>
<a id="Problem2.Context.∅"></a><a id="1324" href="/20.07/TSPL/2018/Exam/#1324" class="InductiveConstructor"></a> <a id="1328" class="Symbol">:</a> <a id="1330" href="/20.07/TSPL/2018/Exam/#1300" class="Datatype">Context</a>
<a id="Problem2.Context._,_"></a><a id="1342" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">_,_</a> <a id="1346" class="Symbol">:</a> <a id="1348" href="/20.07/TSPL/2018/Exam/#1300" class="Datatype">Context</a> <a id="1356" class="Symbol"></a> <a id="1358" href="/20.07/TSPL/2018/Exam/#1227" class="Datatype">Type</a> <a id="1363" class="Symbol"></a> <a id="1365" href="/20.07/TSPL/2018/Exam/#1300" class="Datatype">Context</a>
</pre>
<h3 id="variables-and-the-lookup-judgment">Variables and the lookup judgment</h3>
<pre class="Agda"> <a id="1423" class="Keyword">data</a> <a id="Problem2._∋_"></a><a id="1428" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator">_∋_</a> <a id="1432" class="Symbol">:</a> <a id="1434" href="/20.07/TSPL/2018/Exam/#1300" class="Datatype">Context</a> <a id="1442" class="Symbol"></a> <a id="1444" href="/20.07/TSPL/2018/Exam/#1227" class="Datatype">Type</a> <a id="1449" class="Symbol"></a> <a id="1451" class="PrimitiveType">Set</a> <a id="1455" class="Keyword">where</a>
<a id="Problem2._∋_.Z"></a><a id="1466" href="/20.07/TSPL/2018/Exam/#1466" class="InductiveConstructor">Z</a> <a id="1468" class="Symbol">:</a> <a id="1470" class="Symbol"></a> <a id="1472" class="Symbol">{</a><a id="1473" href="/20.07/TSPL/2018/Exam/#1473" class="Bound">Γ</a> <a id="1475" href="/20.07/TSPL/2018/Exam/#1475" class="Bound">A</a><a id="1476" class="Symbol">}</a>
<a id="1486" class="Comment">----------</a>
<a id="1503" class="Symbol"></a> <a id="1505" href="/20.07/TSPL/2018/Exam/#1473" class="Bound">Γ</a> <a id="1507" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="1509" href="/20.07/TSPL/2018/Exam/#1475" class="Bound">A</a> <a id="1511" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="1513" href="/20.07/TSPL/2018/Exam/#1475" class="Bound">A</a>
<a id="Problem2._∋_.S_"></a><a id="1520" href="/20.07/TSPL/2018/Exam/#1520" class="InductiveConstructor Operator">S_</a> <a id="1523" class="Symbol">:</a> <a id="1525" class="Symbol"></a> <a id="1527" class="Symbol">{</a><a id="1528" href="/20.07/TSPL/2018/Exam/#1528" class="Bound">Γ</a> <a id="1530" href="/20.07/TSPL/2018/Exam/#1530" class="Bound">A</a> <a id="1532" href="/20.07/TSPL/2018/Exam/#1532" class="Bound">B</a><a id="1533" class="Symbol">}</a>
<a id="1541" class="Symbol"></a> <a id="1543" href="/20.07/TSPL/2018/Exam/#1528" class="Bound">Γ</a> <a id="1545" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="1547" href="/20.07/TSPL/2018/Exam/#1530" class="Bound">A</a>
<a id="1557" class="Comment">---------</a>
<a id="1573" class="Symbol"></a> <a id="1575" href="/20.07/TSPL/2018/Exam/#1528" class="Bound">Γ</a> <a id="1577" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="1579" href="/20.07/TSPL/2018/Exam/#1532" class="Bound">B</a> <a id="1581" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="1583" href="/20.07/TSPL/2018/Exam/#1530" class="Bound">A</a>
</pre>
<h3 id="terms-and-the-typing-judgment">Terms and the typing judgment</h3>
<pre class="Agda"> <a id="1631" class="Keyword">data</a> <a id="Problem2._⊢_"></a><a id="1636" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator">_⊢_</a> <a id="1640" class="Symbol">:</a> <a id="1642" href="/20.07/TSPL/2018/Exam/#1300" class="Datatype">Context</a> <a id="1650" class="Symbol"></a> <a id="1652" href="/20.07/TSPL/2018/Exam/#1227" class="Datatype">Type</a> <a id="1657" class="Symbol"></a> <a id="1659" class="PrimitiveType">Set</a> <a id="1663" class="Keyword">where</a>
<a id="Problem2._⊢_.`_"></a><a id="1674" href="/20.07/TSPL/2018/Exam/#1674" class="InductiveConstructor Operator">`_</a> <a id="1677" class="Symbol">:</a> <a id="1679" class="Symbol"></a> <a id="1681" class="Symbol">{</a><a id="1682" href="/20.07/TSPL/2018/Exam/#1682" class="Bound">Γ</a><a id="1683" class="Symbol">}</a> <a id="1685" class="Symbol">{</a><a id="1686" href="/20.07/TSPL/2018/Exam/#1686" class="Bound">A</a><a id="1687" class="Symbol">}</a>
<a id="1695" class="Symbol"></a> <a id="1697" href="/20.07/TSPL/2018/Exam/#1682" class="Bound">Γ</a> <a id="1699" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="1701" href="/20.07/TSPL/2018/Exam/#1686" class="Bound">A</a>
<a id="1711" class="Comment">------</a>
<a id="1724" class="Symbol"></a> <a id="1726" href="/20.07/TSPL/2018/Exam/#1682" class="Bound">Γ</a> <a id="1728" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="1730" href="/20.07/TSPL/2018/Exam/#1686" class="Bound">A</a>
<a id="Problem2._⊢_.ƛ_"></a><a id="1737" href="/20.07/TSPL/2018/Exam/#1737" class="InductiveConstructor Operator">ƛ_</a> <a id="1741" class="Symbol">:</a> <a id="1744" class="Symbol"></a> <a id="1746" class="Symbol">{</a><a id="1747" href="/20.07/TSPL/2018/Exam/#1747" class="Bound">Γ</a><a id="1748" class="Symbol">}</a> <a id="1750" class="Symbol">{</a><a id="1751" href="/20.07/TSPL/2018/Exam/#1751" class="Bound">A</a> <a id="1753" href="/20.07/TSPL/2018/Exam/#1753" class="Bound">B</a><a id="1754" class="Symbol">}</a>
<a id="1762" class="Symbol"></a> <a id="1764" href="/20.07/TSPL/2018/Exam/#1747" class="Bound">Γ</a> <a id="1766" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="1768" href="/20.07/TSPL/2018/Exam/#1751" class="Bound">A</a> <a id="1770" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="1772" href="/20.07/TSPL/2018/Exam/#1753" class="Bound">B</a>
<a id="1782" class="Comment">----------</a>
<a id="1799" class="Symbol"></a> <a id="1801" href="/20.07/TSPL/2018/Exam/#1747" class="Bound">Γ</a> <a id="1803" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="1805" href="/20.07/TSPL/2018/Exam/#1751" class="Bound">A</a> <a id="1807" href="/20.07/TSPL/2018/Exam/#1248" class="InductiveConstructor Operator"></a> <a id="1809" href="/20.07/TSPL/2018/Exam/#1753" class="Bound">B</a>
<a id="Problem2._⊢_._·_"></a><a id="1816" href="/20.07/TSPL/2018/Exam/#1816" class="InductiveConstructor Operator">_·_</a> <a id="1820" class="Symbol">:</a> <a id="1822" class="Symbol"></a> <a id="1824" class="Symbol">{</a><a id="1825" href="/20.07/TSPL/2018/Exam/#1825" class="Bound">Γ</a><a id="1826" class="Symbol">}</a> <a id="1828" class="Symbol">{</a><a id="1829" href="/20.07/TSPL/2018/Exam/#1829" class="Bound">A</a> <a id="1831" href="/20.07/TSPL/2018/Exam/#1831" class="Bound">B</a><a id="1832" class="Symbol">}</a>
<a id="1840" class="Symbol"></a> <a id="1842" href="/20.07/TSPL/2018/Exam/#1825" class="Bound">Γ</a> <a id="1844" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="1846" href="/20.07/TSPL/2018/Exam/#1829" class="Bound">A</a> <a id="1848" href="/20.07/TSPL/2018/Exam/#1248" class="InductiveConstructor Operator"></a> <a id="1850" href="/20.07/TSPL/2018/Exam/#1831" class="Bound">B</a>
<a id="1858" class="Symbol"></a> <a id="1860" href="/20.07/TSPL/2018/Exam/#1825" class="Bound">Γ</a> <a id="1862" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="1864" href="/20.07/TSPL/2018/Exam/#1829" class="Bound">A</a>
<a id="1874" class="Comment">----------</a>
<a id="1891" class="Symbol"></a> <a id="1893" href="/20.07/TSPL/2018/Exam/#1825" class="Bound">Γ</a> <a id="1895" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="1897" href="/20.07/TSPL/2018/Exam/#1831" class="Bound">B</a>
<a id="Problem2._⊢_.`zero"></a><a id="1904" href="/20.07/TSPL/2018/Exam/#1904" class="InductiveConstructor">`zero</a> <a id="1910" class="Symbol">:</a> <a id="1912" class="Symbol"></a> <a id="1914" class="Symbol">{</a><a id="1915" href="/20.07/TSPL/2018/Exam/#1915" class="Bound">Γ</a><a id="1916" class="Symbol">}</a>
<a id="1926" class="Comment">----------</a>
<a id="1943" class="Symbol"></a> <a id="1945" href="/20.07/TSPL/2018/Exam/#1915" class="Bound">Γ</a> <a id="1947" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="1949" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a>
<a id="Problem2._⊢_.`suc_"></a><a id="1957" href="/20.07/TSPL/2018/Exam/#1957" class="InductiveConstructor Operator">`suc_</a> <a id="1963" class="Symbol">:</a> <a id="1965" class="Symbol"></a> <a id="1967" class="Symbol">{</a><a id="1968" href="/20.07/TSPL/2018/Exam/#1968" class="Bound">Γ</a><a id="1969" class="Symbol">}</a>
<a id="1977" class="Symbol"></a> <a id="1979" href="/20.07/TSPL/2018/Exam/#1968" class="Bound">Γ</a> <a id="1981" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="1983" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a>
<a id="1994" class="Comment">-------</a>
<a id="2008" class="Symbol"></a> <a id="2010" href="/20.07/TSPL/2018/Exam/#1968" class="Bound">Γ</a> <a id="2012" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="2014" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a>
<a id="Problem2._⊢_.case"></a><a id="2022" href="/20.07/TSPL/2018/Exam/#2022" class="InductiveConstructor">case</a> <a id="2027" class="Symbol">:</a> <a id="2029" class="Symbol"></a> <a id="2031" class="Symbol">{</a><a id="2032" href="/20.07/TSPL/2018/Exam/#2032" class="Bound">Γ</a> <a id="2034" href="/20.07/TSPL/2018/Exam/#2034" class="Bound">A</a><a id="2035" class="Symbol">}</a>
<a id="2043" class="Symbol"></a> <a id="2045" href="/20.07/TSPL/2018/Exam/#2032" class="Bound">Γ</a> <a id="2047" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="2049" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a>
<a id="2058" class="Symbol"></a> <a id="2060" href="/20.07/TSPL/2018/Exam/#2032" class="Bound">Γ</a> <a id="2062" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="2064" href="/20.07/TSPL/2018/Exam/#2034" class="Bound">A</a>
<a id="2072" class="Symbol"></a> <a id="2074" href="/20.07/TSPL/2018/Exam/#2032" class="Bound">Γ</a> <a id="2076" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="2078" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a> <a id="2081" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="2083" href="/20.07/TSPL/2018/Exam/#2034" class="Bound">A</a>
<a id="2093" class="Comment">-----------</a>
<a id="2111" class="Symbol"></a> <a id="2113" href="/20.07/TSPL/2018/Exam/#2032" class="Bound">Γ</a> <a id="2115" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="2117" href="/20.07/TSPL/2018/Exam/#2034" class="Bound">A</a>
<a id="Problem2._⊢_.μ_"></a><a id="2124" href="/20.07/TSPL/2018/Exam/#2124" class="InductiveConstructor Operator">μ_</a> <a id="2127" class="Symbol">:</a> <a id="2129" class="Symbol"></a> <a id="2131" class="Symbol">{</a><a id="2132" href="/20.07/TSPL/2018/Exam/#2132" class="Bound">Γ</a> <a id="2134" href="/20.07/TSPL/2018/Exam/#2134" class="Bound">A</a><a id="2135" class="Symbol">}</a>
<a id="2143" class="Symbol"></a> <a id="2145" href="/20.07/TSPL/2018/Exam/#2132" class="Bound">Γ</a> <a id="2147" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="2149" href="/20.07/TSPL/2018/Exam/#2134" class="Bound">A</a> <a id="2151" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="2153" href="/20.07/TSPL/2018/Exam/#2134" class="Bound">A</a>
<a id="2163" class="Comment">----------</a>
<a id="2180" class="Symbol"></a> <a id="2182" href="/20.07/TSPL/2018/Exam/#2132" class="Bound">Γ</a> <a id="2184" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="2186" href="/20.07/TSPL/2018/Exam/#2134" class="Bound">A</a>
</pre>
<h3 id="abbreviating-de-bruijn-indices">Abbreviating de Bruijn indices</h3>
<pre class="Agda"> <a id="Problem2.lookup"></a><a id="2235" href="/20.07/TSPL/2018/Exam/#2235" class="Function">lookup</a> <a id="2242" class="Symbol">:</a> <a id="2244" href="/20.07/TSPL/2018/Exam/#1300" class="Datatype">Context</a> <a id="2252" class="Symbol"></a> <a id="2254" href="Agda.Builtin.Nat.html#165" class="Datatype"></a> <a id="2256" class="Symbol"></a> <a id="2258" href="/20.07/TSPL/2018/Exam/#1227" class="Datatype">Type</a>
<a id="2265" href="/20.07/TSPL/2018/Exam/#2235" class="Function">lookup</a> <a id="2272" class="Symbol">(</a><a id="2273" href="/20.07/TSPL/2018/Exam/#2273" class="Bound">Γ</a> <a id="2275" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="2277" href="/20.07/TSPL/2018/Exam/#2277" class="Bound">A</a><a id="2278" class="Symbol">)</a> <a id="2280" href="Agda.Builtin.Nat.html#183" class="InductiveConstructor">zero</a> <a id="2289" class="Symbol">=</a> <a id="2292" href="/20.07/TSPL/2018/Exam/#2277" class="Bound">A</a>
<a id="2296" href="/20.07/TSPL/2018/Exam/#2235" class="Function">lookup</a> <a id="2303" class="Symbol">(</a><a id="2304" href="/20.07/TSPL/2018/Exam/#2304" class="Bound">Γ</a> <a id="2306" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="2308" class="Symbol">_)</a> <a id="2311" class="Symbol">(</a><a id="2312" href="Agda.Builtin.Nat.html#196" class="InductiveConstructor">suc</a> <a id="2316" href="/20.07/TSPL/2018/Exam/#2316" class="Bound">n</a><a id="2317" class="Symbol">)</a> <a id="2320" class="Symbol">=</a> <a id="2323" href="/20.07/TSPL/2018/Exam/#2235" class="Function">lookup</a> <a id="2330" href="/20.07/TSPL/2018/Exam/#2304" class="Bound">Γ</a> <a id="2332" href="/20.07/TSPL/2018/Exam/#2316" class="Bound">n</a>
<a id="2336" href="/20.07/TSPL/2018/Exam/#2235" class="Function">lookup</a> <a id="2343" href="/20.07/TSPL/2018/Exam/#1324" class="InductiveConstructor"></a> <a id="2351" class="Symbol">_</a> <a id="2360" class="Symbol">=</a> <a id="2363" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#294" class="Function">⊥-elim</a> <a id="2370" href="/20.07/TSPL/2018/Exam/#2401" class="Postulate">impossible</a>
<a id="2385" class="Keyword">where</a> <a id="2391" class="Keyword">postulate</a> <a id="2401" href="/20.07/TSPL/2018/Exam/#2401" class="Postulate">impossible</a> <a id="2412" class="Symbol">:</a> <a id="2414" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#279" class="Datatype"></a>
<a id="Problem2.count"></a><a id="2419" href="/20.07/TSPL/2018/Exam/#2419" class="Function">count</a> <a id="2425" class="Symbol">:</a> <a id="2427" class="Symbol"></a> <a id="2429" class="Symbol">{</a><a id="2430" href="/20.07/TSPL/2018/Exam/#2430" class="Bound">Γ</a><a id="2431" class="Symbol">}</a> <a id="2433" class="Symbol"></a> <a id="2435" class="Symbol">(</a><a id="2436" href="/20.07/TSPL/2018/Exam/#2436" class="Bound">n</a> <a id="2438" class="Symbol">:</a> <a id="2440" href="Agda.Builtin.Nat.html#165" class="Datatype"></a><a id="2441" class="Symbol">)</a> <a id="2443" class="Symbol"></a> <a id="2445" href="/20.07/TSPL/2018/Exam/#2430" class="Bound">Γ</a> <a id="2447" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="2449" href="/20.07/TSPL/2018/Exam/#2235" class="Function">lookup</a> <a id="2456" href="/20.07/TSPL/2018/Exam/#2430" class="Bound">Γ</a> <a id="2458" href="/20.07/TSPL/2018/Exam/#2436" class="Bound">n</a>
<a id="2462" href="/20.07/TSPL/2018/Exam/#2419" class="Function">count</a> <a id="2468" class="Symbol">{</a><a id="2469" href="/20.07/TSPL/2018/Exam/#2469" class="Bound">Γ</a> <a id="2471" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="2473" class="Symbol">_}</a> <a id="2476" href="Agda.Builtin.Nat.html#183" class="InductiveConstructor">zero</a> <a id="2485" class="Symbol">=</a> <a id="2488" href="/20.07/TSPL/2018/Exam/#1466" class="InductiveConstructor">Z</a>
<a id="2492" href="/20.07/TSPL/2018/Exam/#2419" class="Function">count</a> <a id="2498" class="Symbol">{</a><a id="2499" href="/20.07/TSPL/2018/Exam/#2499" class="Bound">Γ</a> <a id="2501" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="2503" class="Symbol">_}</a> <a id="2506" class="Symbol">(</a><a id="2507" href="Agda.Builtin.Nat.html#196" class="InductiveConstructor">suc</a> <a id="2511" href="/20.07/TSPL/2018/Exam/#2511" class="Bound">n</a><a id="2512" class="Symbol">)</a> <a id="2515" class="Symbol">=</a> <a id="2518" href="/20.07/TSPL/2018/Exam/#1520" class="InductiveConstructor Operator">S</a> <a id="2520" class="Symbol">(</a><a id="2521" href="/20.07/TSPL/2018/Exam/#2419" class="Function">count</a> <a id="2527" href="/20.07/TSPL/2018/Exam/#2511" class="Bound">n</a><a id="2528" class="Symbol">)</a>
<a id="2532" href="/20.07/TSPL/2018/Exam/#2419" class="Function">count</a> <a id="2538" class="Symbol">{</a><a id="2539" href="/20.07/TSPL/2018/Exam/#1324" class="InductiveConstructor"></a><a id="2540" class="Symbol">}</a> <a id="2546" class="Symbol">_</a> <a id="2555" class="Symbol">=</a> <a id="2558" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#294" class="Function">⊥-elim</a> <a id="2565" href="/20.07/TSPL/2018/Exam/#2596" class="Postulate">impossible</a>
<a id="2580" class="Keyword">where</a> <a id="2586" class="Keyword">postulate</a> <a id="2596" href="/20.07/TSPL/2018/Exam/#2596" class="Postulate">impossible</a> <a id="2607" class="Symbol">:</a> <a id="2609" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#279" class="Datatype"></a>
<a id="Problem2.#_"></a><a id="2614" href="/20.07/TSPL/2018/Exam/#2614" class="Function Operator">#_</a> <a id="2617" class="Symbol">:</a> <a id="2619" class="Symbol"></a> <a id="2621" class="Symbol">{</a><a id="2622" href="/20.07/TSPL/2018/Exam/#2622" class="Bound">Γ</a><a id="2623" class="Symbol">}</a> <a id="2625" class="Symbol"></a> <a id="2627" class="Symbol">(</a><a id="2628" href="/20.07/TSPL/2018/Exam/#2628" class="Bound">n</a> <a id="2630" class="Symbol">:</a> <a id="2632" href="Agda.Builtin.Nat.html#165" class="Datatype"></a><a id="2633" class="Symbol">)</a> <a id="2635" class="Symbol"></a> <a id="2637" href="/20.07/TSPL/2018/Exam/#2622" class="Bound">Γ</a> <a id="2639" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="2641" href="/20.07/TSPL/2018/Exam/#2235" class="Function">lookup</a> <a id="2648" href="/20.07/TSPL/2018/Exam/#2622" class="Bound">Γ</a> <a id="2650" href="/20.07/TSPL/2018/Exam/#2628" class="Bound">n</a>
<a id="2654" href="/20.07/TSPL/2018/Exam/#2614" class="Function Operator">#</a> <a id="2656" href="/20.07/TSPL/2018/Exam/#2656" class="Bound">n</a> <a id="2659" class="Symbol">=</a> <a id="2662" href="/20.07/TSPL/2018/Exam/#1674" class="InductiveConstructor Operator">`</a> <a id="2664" href="/20.07/TSPL/2018/Exam/#2419" class="Function">count</a> <a id="2670" href="/20.07/TSPL/2018/Exam/#2656" class="Bound">n</a>
</pre>
<h3 id="renaming">Renaming</h3>
<pre class="Agda"> <a id="Problem2.ext"></a><a id="2697" href="/20.07/TSPL/2018/Exam/#2697" class="Function">ext</a> <a id="2701" class="Symbol">:</a> <a id="2703" class="Symbol"></a> <a id="2705" class="Symbol">{</a><a id="2706" href="/20.07/TSPL/2018/Exam/#2706" class="Bound">Γ</a> <a id="2708" href="/20.07/TSPL/2018/Exam/#2708" class="Bound">Δ</a><a id="2709" class="Symbol">}</a> <a id="2711" class="Symbol"></a> <a id="2713" class="Symbol">(∀</a> <a id="2716" class="Symbol">{</a><a id="2717" href="/20.07/TSPL/2018/Exam/#2717" class="Bound">A</a><a id="2718" class="Symbol">}</a> <a id="2720" class="Symbol"></a> <a id="2722" href="/20.07/TSPL/2018/Exam/#2706" class="Bound">Γ</a> <a id="2724" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="2726" href="/20.07/TSPL/2018/Exam/#2717" class="Bound">A</a> <a id="2728" class="Symbol"></a> <a id="2730" href="/20.07/TSPL/2018/Exam/#2708" class="Bound">Δ</a> <a id="2732" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="2734" href="/20.07/TSPL/2018/Exam/#2717" class="Bound">A</a><a id="2735" class="Symbol">)</a>
<a id="2743" class="Comment">-----------------------------------</a>
<a id="2783" class="Symbol"></a> <a id="2785" class="Symbol">(∀</a> <a id="2788" class="Symbol">{</a><a id="2789" href="/20.07/TSPL/2018/Exam/#2789" class="Bound">A</a> <a id="2791" href="/20.07/TSPL/2018/Exam/#2791" class="Bound">B</a><a id="2792" class="Symbol">}</a> <a id="2794" class="Symbol"></a> <a id="2796" href="/20.07/TSPL/2018/Exam/#2706" class="Bound">Γ</a> <a id="2798" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="2800" href="/20.07/TSPL/2018/Exam/#2791" class="Bound">B</a> <a id="2802" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="2804" href="/20.07/TSPL/2018/Exam/#2789" class="Bound">A</a> <a id="2806" class="Symbol"></a> <a id="2808" href="/20.07/TSPL/2018/Exam/#2708" class="Bound">Δ</a> <a id="2810" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="2812" href="/20.07/TSPL/2018/Exam/#2791" class="Bound">B</a> <a id="2814" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="2816" href="/20.07/TSPL/2018/Exam/#2789" class="Bound">A</a><a id="2817" class="Symbol">)</a>
<a id="2821" href="/20.07/TSPL/2018/Exam/#2697" class="Function">ext</a> <a id="2825" href="/20.07/TSPL/2018/Exam/#2825" class="Bound">ρ</a> <a id="2827" href="/20.07/TSPL/2018/Exam/#1466" class="InductiveConstructor">Z</a> <a id="2834" class="Symbol">=</a> <a id="2837" href="/20.07/TSPL/2018/Exam/#1466" class="InductiveConstructor">Z</a>
<a id="2841" href="/20.07/TSPL/2018/Exam/#2697" class="Function">ext</a> <a id="2845" href="/20.07/TSPL/2018/Exam/#2845" class="Bound">ρ</a> <a id="2847" class="Symbol">(</a><a id="2848" href="/20.07/TSPL/2018/Exam/#1520" class="InductiveConstructor Operator">S</a> <a id="2850" href="/20.07/TSPL/2018/Exam/#2850" class="Bound">x</a><a id="2851" class="Symbol">)</a> <a id="2854" class="Symbol">=</a> <a id="2857" href="/20.07/TSPL/2018/Exam/#1520" class="InductiveConstructor Operator">S</a> <a id="2859" class="Symbol">(</a><a id="2860" href="/20.07/TSPL/2018/Exam/#2845" class="Bound">ρ</a> <a id="2862" href="/20.07/TSPL/2018/Exam/#2850" class="Bound">x</a><a id="2863" class="Symbol">)</a>
<a id="Problem2.rename"></a><a id="2868" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="2875" class="Symbol">:</a> <a id="2877" class="Symbol"></a> <a id="2879" class="Symbol">{</a><a id="2880" href="/20.07/TSPL/2018/Exam/#2880" class="Bound">Γ</a> <a id="2882" href="/20.07/TSPL/2018/Exam/#2882" class="Bound">Δ</a><a id="2883" class="Symbol">}</a>
<a id="2889" class="Symbol"></a> <a id="2891" class="Symbol">(∀</a> <a id="2894" class="Symbol">{</a><a id="2895" href="/20.07/TSPL/2018/Exam/#2895" class="Bound">A</a><a id="2896" class="Symbol">}</a> <a id="2898" class="Symbol"></a> <a id="2900" href="/20.07/TSPL/2018/Exam/#2880" class="Bound">Γ</a> <a id="2902" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="2904" href="/20.07/TSPL/2018/Exam/#2895" class="Bound">A</a> <a id="2906" class="Symbol"></a> <a id="2908" href="/20.07/TSPL/2018/Exam/#2882" class="Bound">Δ</a> <a id="2910" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="2912" href="/20.07/TSPL/2018/Exam/#2895" class="Bound">A</a><a id="2913" class="Symbol">)</a>
<a id="2921" class="Comment">------------------------</a>
<a id="2950" class="Symbol"></a> <a id="2952" class="Symbol">(∀</a> <a id="2955" class="Symbol">{</a><a id="2956" href="/20.07/TSPL/2018/Exam/#2956" class="Bound">A</a><a id="2957" class="Symbol">}</a> <a id="2959" class="Symbol"></a> <a id="2961" href="/20.07/TSPL/2018/Exam/#2880" class="Bound">Γ</a> <a id="2963" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="2965" href="/20.07/TSPL/2018/Exam/#2956" class="Bound">A</a> <a id="2967" class="Symbol"></a> <a id="2969" href="/20.07/TSPL/2018/Exam/#2882" class="Bound">Δ</a> <a id="2971" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="2973" href="/20.07/TSPL/2018/Exam/#2956" class="Bound">A</a><a id="2974" class="Symbol">)</a>
<a id="2978" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="2985" href="/20.07/TSPL/2018/Exam/#2985" class="Bound">ρ</a> <a id="2987" class="Symbol">(</a><a id="2988" href="/20.07/TSPL/2018/Exam/#1674" class="InductiveConstructor Operator">`</a> <a id="2990" href="/20.07/TSPL/2018/Exam/#2990" class="Bound">x</a><a id="2991" class="Symbol">)</a> <a id="3002" class="Symbol">=</a> <a id="3005" href="/20.07/TSPL/2018/Exam/#1674" class="InductiveConstructor Operator">`</a> <a id="3007" class="Symbol">(</a><a id="3008" href="/20.07/TSPL/2018/Exam/#2985" class="Bound">ρ</a> <a id="3010" href="/20.07/TSPL/2018/Exam/#2990" class="Bound">x</a><a id="3011" class="Symbol">)</a>
<a id="3015" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3022" href="/20.07/TSPL/2018/Exam/#3022" class="Bound">ρ</a> <a id="3024" class="Symbol">(</a><a id="3025" href="/20.07/TSPL/2018/Exam/#1737" class="InductiveConstructor Operator">ƛ</a> <a id="3027" href="/20.07/TSPL/2018/Exam/#3027" class="Bound">N</a><a id="3028" class="Symbol">)</a> <a id="3039" class="Symbol">=</a> <a id="3042" href="/20.07/TSPL/2018/Exam/#1737" class="InductiveConstructor Operator">ƛ</a> <a id="3044" class="Symbol">(</a><a id="3045" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3052" class="Symbol">(</a><a id="3053" href="/20.07/TSPL/2018/Exam/#2697" class="Function">ext</a> <a id="3057" href="/20.07/TSPL/2018/Exam/#3022" class="Bound">ρ</a><a id="3058" class="Symbol">)</a> <a id="3060" href="/20.07/TSPL/2018/Exam/#3027" class="Bound">N</a><a id="3061" class="Symbol">)</a>
<a id="3065" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3072" href="/20.07/TSPL/2018/Exam/#3072" class="Bound">ρ</a> <a id="3074" class="Symbol">(</a><a id="3075" href="/20.07/TSPL/2018/Exam/#3075" class="Bound">L</a> <a id="3077" href="/20.07/TSPL/2018/Exam/#1816" class="InductiveConstructor Operator">·</a> <a id="3079" href="/20.07/TSPL/2018/Exam/#3079" class="Bound">M</a><a id="3080" class="Symbol">)</a> <a id="3089" class="Symbol">=</a> <a id="3092" class="Symbol">(</a><a id="3093" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3100" href="/20.07/TSPL/2018/Exam/#3072" class="Bound">ρ</a> <a id="3102" href="/20.07/TSPL/2018/Exam/#3075" class="Bound">L</a><a id="3103" class="Symbol">)</a> <a id="3105" href="/20.07/TSPL/2018/Exam/#1816" class="InductiveConstructor Operator">·</a> <a id="3107" class="Symbol">(</a><a id="3108" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3115" href="/20.07/TSPL/2018/Exam/#3072" class="Bound">ρ</a> <a id="3117" href="/20.07/TSPL/2018/Exam/#3079" class="Bound">M</a><a id="3118" class="Symbol">)</a>
<a id="3122" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3129" href="/20.07/TSPL/2018/Exam/#3129" class="Bound">ρ</a> <a id="3131" class="Symbol">(</a><a id="3132" href="/20.07/TSPL/2018/Exam/#1904" class="InductiveConstructor">`zero</a><a id="3137" class="Symbol">)</a> <a id="3146" class="Symbol">=</a> <a id="3149" href="/20.07/TSPL/2018/Exam/#1904" class="InductiveConstructor">`zero</a>
<a id="3157" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3164" href="/20.07/TSPL/2018/Exam/#3164" class="Bound">ρ</a> <a id="3166" class="Symbol">(</a><a id="3167" href="/20.07/TSPL/2018/Exam/#1957" class="InductiveConstructor Operator">`suc</a> <a id="3172" href="/20.07/TSPL/2018/Exam/#3172" class="Bound">M</a><a id="3173" class="Symbol">)</a> <a id="3181" class="Symbol">=</a> <a id="3184" href="/20.07/TSPL/2018/Exam/#1957" class="InductiveConstructor Operator">`suc</a> <a id="3189" class="Symbol">(</a><a id="3190" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3197" href="/20.07/TSPL/2018/Exam/#3164" class="Bound">ρ</a> <a id="3199" href="/20.07/TSPL/2018/Exam/#3172" class="Bound">M</a><a id="3200" class="Symbol">)</a>
<a id="3204" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3211" href="/20.07/TSPL/2018/Exam/#3211" class="Bound">ρ</a> <a id="3213" class="Symbol">(</a><a id="3214" href="/20.07/TSPL/2018/Exam/#2022" class="InductiveConstructor">case</a> <a id="3219" href="/20.07/TSPL/2018/Exam/#3219" class="Bound">L</a> <a id="3221" href="/20.07/TSPL/2018/Exam/#3221" class="Bound">M</a> <a id="3223" href="/20.07/TSPL/2018/Exam/#3223" class="Bound">N</a><a id="3224" class="Symbol">)</a> <a id="3228" class="Symbol">=</a> <a id="3231" href="/20.07/TSPL/2018/Exam/#2022" class="InductiveConstructor">case</a> <a id="3236" class="Symbol">(</a><a id="3237" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3244" href="/20.07/TSPL/2018/Exam/#3211" class="Bound">ρ</a> <a id="3246" href="/20.07/TSPL/2018/Exam/#3219" class="Bound">L</a><a id="3247" class="Symbol">)</a> <a id="3249" class="Symbol">(</a><a id="3250" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3257" href="/20.07/TSPL/2018/Exam/#3211" class="Bound">ρ</a> <a id="3259" href="/20.07/TSPL/2018/Exam/#3221" class="Bound">M</a><a id="3260" class="Symbol">)</a> <a id="3262" class="Symbol">(</a><a id="3263" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3270" class="Symbol">(</a><a id="3271" href="/20.07/TSPL/2018/Exam/#2697" class="Function">ext</a> <a id="3275" href="/20.07/TSPL/2018/Exam/#3211" class="Bound">ρ</a><a id="3276" class="Symbol">)</a> <a id="3278" href="/20.07/TSPL/2018/Exam/#3223" class="Bound">N</a><a id="3279" class="Symbol">)</a>
<a id="3283" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3290" href="/20.07/TSPL/2018/Exam/#3290" class="Bound">ρ</a> <a id="3292" class="Symbol">(</a><a id="3293" href="/20.07/TSPL/2018/Exam/#2124" class="InductiveConstructor Operator">μ</a> <a id="3295" href="/20.07/TSPL/2018/Exam/#3295" class="Bound">N</a><a id="3296" class="Symbol">)</a> <a id="3307" class="Symbol">=</a> <a id="3310" href="/20.07/TSPL/2018/Exam/#2124" class="InductiveConstructor Operator">μ</a> <a id="3312" class="Symbol">(</a><a id="3313" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3320" class="Symbol">(</a><a id="3321" href="/20.07/TSPL/2018/Exam/#2697" class="Function">ext</a> <a id="3325" href="/20.07/TSPL/2018/Exam/#3290" class="Bound">ρ</a><a id="3326" class="Symbol">)</a> <a id="3328" href="/20.07/TSPL/2018/Exam/#3295" class="Bound">N</a><a id="3329" class="Symbol">)</a>
</pre>
<h3 id="simultaneous-substitution">Simultaneous Substitution</h3>
<pre class="Agda"> <a id="Problem2.exts"></a><a id="3373" href="/20.07/TSPL/2018/Exam/#3373" class="Function">exts</a> <a id="3378" class="Symbol">:</a> <a id="3380" class="Symbol"></a> <a id="3382" class="Symbol">{</a><a id="3383" href="/20.07/TSPL/2018/Exam/#3383" class="Bound">Γ</a> <a id="3385" href="/20.07/TSPL/2018/Exam/#3385" class="Bound">Δ</a><a id="3386" class="Symbol">}</a> <a id="3388" class="Symbol"></a> <a id="3390" class="Symbol">(∀</a> <a id="3393" class="Symbol">{</a><a id="3394" href="/20.07/TSPL/2018/Exam/#3394" class="Bound">A</a><a id="3395" class="Symbol">}</a> <a id="3397" class="Symbol"></a> <a id="3399" href="/20.07/TSPL/2018/Exam/#3383" class="Bound">Γ</a> <a id="3401" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="3403" href="/20.07/TSPL/2018/Exam/#3394" class="Bound">A</a> <a id="3405" class="Symbol"></a> <a id="3407" href="/20.07/TSPL/2018/Exam/#3385" class="Bound">Δ</a> <a id="3409" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="3411" href="/20.07/TSPL/2018/Exam/#3394" class="Bound">A</a><a id="3412" class="Symbol">)</a>
<a id="3420" class="Comment">----------------------------------</a>
<a id="3459" class="Symbol"></a> <a id="3461" class="Symbol">(∀</a> <a id="3464" class="Symbol">{</a><a id="3465" href="/20.07/TSPL/2018/Exam/#3465" class="Bound">A</a> <a id="3467" href="/20.07/TSPL/2018/Exam/#3467" class="Bound">B</a><a id="3468" class="Symbol">}</a> <a id="3470" class="Symbol"></a> <a id="3472" href="/20.07/TSPL/2018/Exam/#3383" class="Bound">Γ</a> <a id="3474" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="3476" href="/20.07/TSPL/2018/Exam/#3467" class="Bound">B</a> <a id="3478" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="3480" href="/20.07/TSPL/2018/Exam/#3465" class="Bound">A</a> <a id="3482" class="Symbol"></a> <a id="3484" href="/20.07/TSPL/2018/Exam/#3385" class="Bound">Δ</a> <a id="3486" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="3488" href="/20.07/TSPL/2018/Exam/#3467" class="Bound">B</a> <a id="3490" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="3492" href="/20.07/TSPL/2018/Exam/#3465" class="Bound">A</a><a id="3493" class="Symbol">)</a>
<a id="3497" href="/20.07/TSPL/2018/Exam/#3373" class="Function">exts</a> <a id="3502" href="/20.07/TSPL/2018/Exam/#3502" class="Bound">σ</a> <a id="3504" href="/20.07/TSPL/2018/Exam/#1466" class="InductiveConstructor">Z</a> <a id="3511" class="Symbol">=</a> <a id="3514" href="/20.07/TSPL/2018/Exam/#1674" class="InductiveConstructor Operator">`</a> <a id="3516" href="/20.07/TSPL/2018/Exam/#1466" class="InductiveConstructor">Z</a>
<a id="3520" href="/20.07/TSPL/2018/Exam/#3373" class="Function">exts</a> <a id="3525" href="/20.07/TSPL/2018/Exam/#3525" class="Bound">σ</a> <a id="3527" class="Symbol">(</a><a id="3528" href="/20.07/TSPL/2018/Exam/#1520" class="InductiveConstructor Operator">S</a> <a id="3530" href="/20.07/TSPL/2018/Exam/#3530" class="Bound">x</a><a id="3531" class="Symbol">)</a> <a id="3534" class="Symbol">=</a> <a id="3537" href="/20.07/TSPL/2018/Exam/#2868" class="Function">rename</a> <a id="3544" href="/20.07/TSPL/2018/Exam/#1520" class="InductiveConstructor Operator">S_</a> <a id="3547" class="Symbol">(</a><a id="3548" href="/20.07/TSPL/2018/Exam/#3525" class="Bound">σ</a> <a id="3550" href="/20.07/TSPL/2018/Exam/#3530" class="Bound">x</a><a id="3551" class="Symbol">)</a>
<a id="Problem2.subst"></a><a id="3556" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3562" class="Symbol">:</a> <a id="3564" class="Symbol"></a> <a id="3566" class="Symbol">{</a><a id="3567" href="/20.07/TSPL/2018/Exam/#3567" class="Bound">Γ</a> <a id="3569" href="/20.07/TSPL/2018/Exam/#3569" class="Bound">Δ</a><a id="3570" class="Symbol">}</a>
<a id="3576" class="Symbol"></a> <a id="3578" class="Symbol">(∀</a> <a id="3581" class="Symbol">{</a><a id="3582" href="/20.07/TSPL/2018/Exam/#3582" class="Bound">A</a><a id="3583" class="Symbol">}</a> <a id="3585" class="Symbol"></a> <a id="3587" href="/20.07/TSPL/2018/Exam/#3567" class="Bound">Γ</a> <a id="3589" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="3591" href="/20.07/TSPL/2018/Exam/#3582" class="Bound">A</a> <a id="3593" class="Symbol"></a> <a id="3595" href="/20.07/TSPL/2018/Exam/#3569" class="Bound">Δ</a> <a id="3597" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="3599" href="/20.07/TSPL/2018/Exam/#3582" class="Bound">A</a><a id="3600" class="Symbol">)</a>
<a id="3608" class="Comment">------------------------</a>
<a id="3637" class="Symbol"></a> <a id="3639" class="Symbol">(∀</a> <a id="3642" class="Symbol">{</a><a id="3643" href="/20.07/TSPL/2018/Exam/#3643" class="Bound">A</a><a id="3644" class="Symbol">}</a> <a id="3646" class="Symbol"></a> <a id="3648" href="/20.07/TSPL/2018/Exam/#3567" class="Bound">Γ</a> <a id="3650" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="3652" href="/20.07/TSPL/2018/Exam/#3643" class="Bound">A</a> <a id="3654" class="Symbol"></a> <a id="3656" href="/20.07/TSPL/2018/Exam/#3569" class="Bound">Δ</a> <a id="3658" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="3660" href="/20.07/TSPL/2018/Exam/#3643" class="Bound">A</a><a id="3661" class="Symbol">)</a>
<a id="3665" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3671" href="/20.07/TSPL/2018/Exam/#3671" class="Bound">σ</a> <a id="3673" class="Symbol">(</a><a id="3674" href="/20.07/TSPL/2018/Exam/#1674" class="InductiveConstructor Operator">`</a> <a id="3676" href="/20.07/TSPL/2018/Exam/#3676" class="Bound">k</a><a id="3677" class="Symbol">)</a> <a id="3688" class="Symbol">=</a> <a id="3691" href="/20.07/TSPL/2018/Exam/#3671" class="Bound">σ</a> <a id="3693" href="/20.07/TSPL/2018/Exam/#3676" class="Bound">k</a>
<a id="3697" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3703" href="/20.07/TSPL/2018/Exam/#3703" class="Bound">σ</a> <a id="3705" class="Symbol">(</a><a id="3706" href="/20.07/TSPL/2018/Exam/#1737" class="InductiveConstructor Operator">ƛ</a> <a id="3708" href="/20.07/TSPL/2018/Exam/#3708" class="Bound">N</a><a id="3709" class="Symbol">)</a> <a id="3720" class="Symbol">=</a> <a id="3723" href="/20.07/TSPL/2018/Exam/#1737" class="InductiveConstructor Operator">ƛ</a> <a id="3725" class="Symbol">(</a><a id="3726" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3732" class="Symbol">(</a><a id="3733" href="/20.07/TSPL/2018/Exam/#3373" class="Function">exts</a> <a id="3738" href="/20.07/TSPL/2018/Exam/#3703" class="Bound">σ</a><a id="3739" class="Symbol">)</a> <a id="3741" href="/20.07/TSPL/2018/Exam/#3708" class="Bound">N</a><a id="3742" class="Symbol">)</a>
<a id="3746" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3752" href="/20.07/TSPL/2018/Exam/#3752" class="Bound">σ</a> <a id="3754" class="Symbol">(</a><a id="3755" href="/20.07/TSPL/2018/Exam/#3755" class="Bound">L</a> <a id="3757" href="/20.07/TSPL/2018/Exam/#1816" class="InductiveConstructor Operator">·</a> <a id="3759" href="/20.07/TSPL/2018/Exam/#3759" class="Bound">M</a><a id="3760" class="Symbol">)</a> <a id="3769" class="Symbol">=</a> <a id="3772" class="Symbol">(</a><a id="3773" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3779" href="/20.07/TSPL/2018/Exam/#3752" class="Bound">σ</a> <a id="3781" href="/20.07/TSPL/2018/Exam/#3755" class="Bound">L</a><a id="3782" class="Symbol">)</a> <a id="3784" href="/20.07/TSPL/2018/Exam/#1816" class="InductiveConstructor Operator">·</a> <a id="3786" class="Symbol">(</a><a id="3787" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3793" href="/20.07/TSPL/2018/Exam/#3752" class="Bound">σ</a> <a id="3795" href="/20.07/TSPL/2018/Exam/#3759" class="Bound">M</a><a id="3796" class="Symbol">)</a>
<a id="3800" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3806" href="/20.07/TSPL/2018/Exam/#3806" class="Bound">σ</a> <a id="3808" class="Symbol">(</a><a id="3809" href="/20.07/TSPL/2018/Exam/#1904" class="InductiveConstructor">`zero</a><a id="3814" class="Symbol">)</a> <a id="3823" class="Symbol">=</a> <a id="3826" href="/20.07/TSPL/2018/Exam/#1904" class="InductiveConstructor">`zero</a>
<a id="3834" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3840" href="/20.07/TSPL/2018/Exam/#3840" class="Bound">σ</a> <a id="3842" class="Symbol">(</a><a id="3843" href="/20.07/TSPL/2018/Exam/#1957" class="InductiveConstructor Operator">`suc</a> <a id="3848" href="/20.07/TSPL/2018/Exam/#3848" class="Bound">M</a><a id="3849" class="Symbol">)</a> <a id="3857" class="Symbol">=</a> <a id="3860" href="/20.07/TSPL/2018/Exam/#1957" class="InductiveConstructor Operator">`suc</a> <a id="3865" class="Symbol">(</a><a id="3866" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3872" href="/20.07/TSPL/2018/Exam/#3840" class="Bound">σ</a> <a id="3874" href="/20.07/TSPL/2018/Exam/#3848" class="Bound">M</a><a id="3875" class="Symbol">)</a>
<a id="3879" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3885" href="/20.07/TSPL/2018/Exam/#3885" class="Bound">σ</a> <a id="3887" class="Symbol">(</a><a id="3888" href="/20.07/TSPL/2018/Exam/#2022" class="InductiveConstructor">case</a> <a id="3893" href="/20.07/TSPL/2018/Exam/#3893" class="Bound">L</a> <a id="3895" href="/20.07/TSPL/2018/Exam/#3895" class="Bound">M</a> <a id="3897" href="/20.07/TSPL/2018/Exam/#3897" class="Bound">N</a><a id="3898" class="Symbol">)</a> <a id="3902" class="Symbol">=</a> <a id="3905" href="/20.07/TSPL/2018/Exam/#2022" class="InductiveConstructor">case</a> <a id="3910" class="Symbol">(</a><a id="3911" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3917" href="/20.07/TSPL/2018/Exam/#3885" class="Bound">σ</a> <a id="3919" href="/20.07/TSPL/2018/Exam/#3893" class="Bound">L</a><a id="3920" class="Symbol">)</a> <a id="3922" class="Symbol">(</a><a id="3923" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3929" href="/20.07/TSPL/2018/Exam/#3885" class="Bound">σ</a> <a id="3931" href="/20.07/TSPL/2018/Exam/#3895" class="Bound">M</a><a id="3932" class="Symbol">)</a> <a id="3934" class="Symbol">(</a><a id="3935" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3941" class="Symbol">(</a><a id="3942" href="/20.07/TSPL/2018/Exam/#3373" class="Function">exts</a> <a id="3947" href="/20.07/TSPL/2018/Exam/#3885" class="Bound">σ</a><a id="3948" class="Symbol">)</a> <a id="3950" href="/20.07/TSPL/2018/Exam/#3897" class="Bound">N</a><a id="3951" class="Symbol">)</a>
<a id="3955" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3961" href="/20.07/TSPL/2018/Exam/#3961" class="Bound">σ</a> <a id="3963" class="Symbol">(</a><a id="3964" href="/20.07/TSPL/2018/Exam/#2124" class="InductiveConstructor Operator">μ</a> <a id="3966" href="/20.07/TSPL/2018/Exam/#3966" class="Bound">N</a><a id="3967" class="Symbol">)</a> <a id="3978" class="Symbol">=</a> <a id="3981" href="/20.07/TSPL/2018/Exam/#2124" class="InductiveConstructor Operator">μ</a> <a id="3983" class="Symbol">(</a><a id="3984" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="3990" class="Symbol">(</a><a id="3991" href="/20.07/TSPL/2018/Exam/#3373" class="Function">exts</a> <a id="3996" href="/20.07/TSPL/2018/Exam/#3961" class="Bound">σ</a><a id="3997" class="Symbol">)</a> <a id="3999" href="/20.07/TSPL/2018/Exam/#3966" class="Bound">N</a><a id="4000" class="Symbol">)</a>
</pre>
<h3 id="single-substitution">Single substitution</h3>
<pre class="Agda"> <a id="Problem2._[_]"></a><a id="4038" href="/20.07/TSPL/2018/Exam/#4038" class="Function Operator">_[_]</a> <a id="4043" class="Symbol">:</a> <a id="4045" class="Symbol"></a> <a id="4047" class="Symbol">{</a><a id="4048" href="/20.07/TSPL/2018/Exam/#4048" class="Bound">Γ</a> <a id="4050" href="/20.07/TSPL/2018/Exam/#4050" class="Bound">A</a> <a id="4052" href="/20.07/TSPL/2018/Exam/#4052" class="Bound">B</a><a id="4053" class="Symbol">}</a>
<a id="4065" class="Symbol"></a> <a id="4067" href="/20.07/TSPL/2018/Exam/#4048" class="Bound">Γ</a> <a id="4069" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="4071" href="/20.07/TSPL/2018/Exam/#4052" class="Bound">B</a> <a id="4073" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4075" href="/20.07/TSPL/2018/Exam/#4050" class="Bound">A</a>
<a id="4087" class="Symbol"></a> <a id="4089" href="/20.07/TSPL/2018/Exam/#4048" class="Bound">Γ</a> <a id="4091" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4093" href="/20.07/TSPL/2018/Exam/#4052" class="Bound">B</a>
<a id="4107" class="Comment">---------</a>
<a id="4127" class="Symbol"></a> <a id="4129" href="/20.07/TSPL/2018/Exam/#4048" class="Bound">Γ</a> <a id="4131" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4133" href="/20.07/TSPL/2018/Exam/#4050" class="Bound">A</a>
<a id="4137" href="/20.07/TSPL/2018/Exam/#4038" class="Function Operator">_[_]</a> <a id="4142" class="Symbol">{</a><a id="4143" href="/20.07/TSPL/2018/Exam/#4143" class="Bound">Γ</a><a id="4144" class="Symbol">}</a> <a id="4146" class="Symbol">{</a><a id="4147" href="/20.07/TSPL/2018/Exam/#4147" class="Bound">A</a><a id="4148" class="Symbol">}</a> <a id="4150" class="Symbol">{</a><a id="4151" href="/20.07/TSPL/2018/Exam/#4151" class="Bound">B</a><a id="4152" class="Symbol">}</a> <a id="4154" href="/20.07/TSPL/2018/Exam/#4154" class="Bound">N</a> <a id="4156" href="/20.07/TSPL/2018/Exam/#4156" class="Bound">M</a> <a id="4158" class="Symbol">=</a> <a id="4161" href="/20.07/TSPL/2018/Exam/#3556" class="Function">subst</a> <a id="4167" class="Symbol">{</a><a id="4168" href="/20.07/TSPL/2018/Exam/#4143" class="Bound">Γ</a> <a id="4170" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="4172" href="/20.07/TSPL/2018/Exam/#4151" class="Bound">B</a><a id="4173" class="Symbol">}</a> <a id="4175" class="Symbol">{</a><a id="4176" href="/20.07/TSPL/2018/Exam/#4143" class="Bound">Γ</a><a id="4177" class="Symbol">}</a> <a id="4179" href="/20.07/TSPL/2018/Exam/#4201" class="Function">σ</a> <a id="4181" class="Symbol">{</a><a id="4182" href="/20.07/TSPL/2018/Exam/#4147" class="Bound">A</a><a id="4183" class="Symbol">}</a> <a id="4185" href="/20.07/TSPL/2018/Exam/#4154" class="Bound">N</a>
<a id="4191" class="Keyword">where</a>
<a id="4201" href="/20.07/TSPL/2018/Exam/#4201" class="Function">σ</a> <a id="4203" class="Symbol">:</a> <a id="4205" class="Symbol"></a> <a id="4207" class="Symbol">{</a><a id="4208" href="/20.07/TSPL/2018/Exam/#4208" class="Bound">A</a><a id="4209" class="Symbol">}</a> <a id="4211" class="Symbol"></a> <a id="4213" href="/20.07/TSPL/2018/Exam/#4143" class="Bound">Γ</a> <a id="4215" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="4217" href="/20.07/TSPL/2018/Exam/#4151" class="Bound">B</a> <a id="4219" href="/20.07/TSPL/2018/Exam/#1428" class="Datatype Operator"></a> <a id="4221" href="/20.07/TSPL/2018/Exam/#4208" class="Bound">A</a> <a id="4223" class="Symbol"></a> <a id="4225" href="/20.07/TSPL/2018/Exam/#4143" class="Bound">Γ</a> <a id="4227" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4229" href="/20.07/TSPL/2018/Exam/#4208" class="Bound">A</a>
<a id="4235" href="/20.07/TSPL/2018/Exam/#4201" class="Function">σ</a> <a id="4237" href="/20.07/TSPL/2018/Exam/#1466" class="InductiveConstructor">Z</a> <a id="4244" class="Symbol">=</a> <a id="4247" href="/20.07/TSPL/2018/Exam/#4156" class="Bound">M</a>
<a id="4253" href="/20.07/TSPL/2018/Exam/#4201" class="Function">σ</a> <a id="4255" class="Symbol">(</a><a id="4256" href="/20.07/TSPL/2018/Exam/#1520" class="InductiveConstructor Operator">S</a> <a id="4258" href="/20.07/TSPL/2018/Exam/#4258" class="Bound">x</a><a id="4259" class="Symbol">)</a> <a id="4262" class="Symbol">=</a> <a id="4265" href="/20.07/TSPL/2018/Exam/#1674" class="InductiveConstructor Operator">`</a> <a id="4267" href="/20.07/TSPL/2018/Exam/#4258" class="Bound">x</a>
</pre>
<h3 id="values">Values</h3>
<pre class="Agda"> <a id="4292" class="Keyword">data</a> <a id="Problem2.Value"></a><a id="4297" href="/20.07/TSPL/2018/Exam/#4297" class="Datatype">Value</a> <a id="4303" class="Symbol">:</a> <a id="4305" class="Symbol"></a> <a id="4307" class="Symbol">{</a><a id="4308" href="/20.07/TSPL/2018/Exam/#4308" class="Bound">Γ</a> <a id="4310" href="/20.07/TSPL/2018/Exam/#4310" class="Bound">A</a><a id="4311" class="Symbol">}</a> <a id="4313" class="Symbol"></a> <a id="4315" href="/20.07/TSPL/2018/Exam/#4308" class="Bound">Γ</a> <a id="4317" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4319" href="/20.07/TSPL/2018/Exam/#4310" class="Bound">A</a> <a id="4321" class="Symbol"></a> <a id="4323" class="PrimitiveType">Set</a> <a id="4327" class="Keyword">where</a>
<a id="Problem2.Value.V-ƛ"></a><a id="4338" href="/20.07/TSPL/2018/Exam/#4338" class="InductiveConstructor">V-ƛ</a> <a id="4342" class="Symbol">:</a> <a id="4344" class="Symbol"></a> <a id="4346" class="Symbol">{</a><a id="4347" href="/20.07/TSPL/2018/Exam/#4347" class="Bound">Γ</a> <a id="4349" href="/20.07/TSPL/2018/Exam/#4349" class="Bound">A</a> <a id="4351" href="/20.07/TSPL/2018/Exam/#4351" class="Bound">B</a><a id="4352" class="Symbol">}</a> <a id="4354" class="Symbol">{</a><a id="4355" href="/20.07/TSPL/2018/Exam/#4355" class="Bound">N</a> <a id="4357" class="Symbol">:</a> <a id="4359" href="/20.07/TSPL/2018/Exam/#4347" class="Bound">Γ</a> <a id="4361" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="4363" href="/20.07/TSPL/2018/Exam/#4349" class="Bound">A</a> <a id="4365" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4367" href="/20.07/TSPL/2018/Exam/#4351" class="Bound">B</a><a id="4368" class="Symbol">}</a>
<a id="4378" class="Comment">---------------------------</a>
<a id="4412" class="Symbol"></a> <a id="4414" href="/20.07/TSPL/2018/Exam/#4297" class="Datatype">Value</a> <a id="4420" class="Symbol">(</a><a id="4421" href="/20.07/TSPL/2018/Exam/#1737" class="InductiveConstructor Operator">ƛ</a> <a id="4423" href="/20.07/TSPL/2018/Exam/#4355" class="Bound">N</a><a id="4424" class="Symbol">)</a>
<a id="Problem2.Value.V-zero"></a><a id="4431" href="/20.07/TSPL/2018/Exam/#4431" class="InductiveConstructor">V-zero</a> <a id="4438" class="Symbol">:</a> <a id="4440" class="Symbol"></a> <a id="4442" class="Symbol">{</a><a id="4443" href="/20.07/TSPL/2018/Exam/#4443" class="Bound">Γ</a><a id="4444" class="Symbol">}</a>
<a id="4454" class="Comment">-----------------</a>
<a id="4478" class="Symbol"></a> <a id="4480" href="/20.07/TSPL/2018/Exam/#4297" class="Datatype">Value</a> <a id="4486" class="Symbol">(</a><a id="4487" href="/20.07/TSPL/2018/Exam/#1904" class="InductiveConstructor">`zero</a> <a id="4493" class="Symbol">{</a><a id="4494" href="/20.07/TSPL/2018/Exam/#4443" class="Bound">Γ</a><a id="4495" class="Symbol">})</a>
<a id="Problem2.Value.V-suc"></a><a id="4503" href="/20.07/TSPL/2018/Exam/#4503" class="InductiveConstructor">V-suc</a> <a id="4509" class="Symbol">:</a> <a id="4511" class="Symbol"></a> <a id="4513" class="Symbol">{</a><a id="4514" href="/20.07/TSPL/2018/Exam/#4514" class="Bound">Γ</a><a id="4515" class="Symbol">}</a> <a id="4517" class="Symbol">{</a><a id="4518" href="/20.07/TSPL/2018/Exam/#4518" class="Bound">V</a> <a id="4520" class="Symbol">:</a> <a id="4522" href="/20.07/TSPL/2018/Exam/#4514" class="Bound">Γ</a> <a id="4524" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4526" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a><a id="4528" class="Symbol">}</a>
<a id="4536" class="Symbol"></a> <a id="4538" href="/20.07/TSPL/2018/Exam/#4297" class="Datatype">Value</a> <a id="4544" href="/20.07/TSPL/2018/Exam/#4518" class="Bound">V</a>
<a id="4554" class="Comment">--------------</a>
<a id="4575" class="Symbol"></a> <a id="4577" href="/20.07/TSPL/2018/Exam/#4297" class="Datatype">Value</a> <a id="4583" class="Symbol">(</a><a id="4584" href="/20.07/TSPL/2018/Exam/#1957" class="InductiveConstructor Operator">`suc</a> <a id="4589" href="/20.07/TSPL/2018/Exam/#4518" class="Bound">V</a><a id="4590" class="Symbol">)</a>
</pre>
<h3 id="reduction">Reduction</h3>
<pre class="Agda"> <a id="4618" class="Keyword">infix</a> <a id="4624" class="Number">2</a> <a id="4626" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">_—→_</a>
<a id="4634" class="Keyword">data</a> <a id="Problem2._—→_"></a><a id="4639" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">_—→_</a> <a id="4644" class="Symbol">:</a> <a id="4646" class="Symbol"></a> <a id="4648" class="Symbol">{</a><a id="4649" href="/20.07/TSPL/2018/Exam/#4649" class="Bound">Γ</a> <a id="4651" href="/20.07/TSPL/2018/Exam/#4651" class="Bound">A</a><a id="4652" class="Symbol">}</a> <a id="4654" class="Symbol"></a> <a id="4656" class="Symbol">(</a><a id="4657" href="/20.07/TSPL/2018/Exam/#4649" class="Bound">Γ</a> <a id="4659" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4661" href="/20.07/TSPL/2018/Exam/#4651" class="Bound">A</a><a id="4662" class="Symbol">)</a> <a id="4664" class="Symbol"></a> <a id="4666" class="Symbol">(</a><a id="4667" href="/20.07/TSPL/2018/Exam/#4649" class="Bound">Γ</a> <a id="4669" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4671" href="/20.07/TSPL/2018/Exam/#4651" class="Bound">A</a><a id="4672" class="Symbol">)</a> <a id="4674" class="Symbol"></a> <a id="4676" class="PrimitiveType">Set</a> <a id="4680" class="Keyword">where</a>
<a id="Problem2._—→_.ξ-·₁"></a><a id="4691" href="/20.07/TSPL/2018/Exam/#4691" class="InductiveConstructor">ξ-·₁</a> <a id="4696" class="Symbol">:</a> <a id="4698" class="Symbol"></a> <a id="4700" class="Symbol">{</a><a id="4701" href="/20.07/TSPL/2018/Exam/#4701" class="Bound">Γ</a> <a id="4703" href="/20.07/TSPL/2018/Exam/#4703" class="Bound">A</a> <a id="4705" href="/20.07/TSPL/2018/Exam/#4705" class="Bound">B</a><a id="4706" class="Symbol">}</a> <a id="4708" class="Symbol">{</a><a id="4709" href="/20.07/TSPL/2018/Exam/#4709" class="Bound">L</a> <a id="4711" href="/20.07/TSPL/2018/Exam/#4711" class="Bound">L</a> <a id="4714" class="Symbol">:</a> <a id="4716" href="/20.07/TSPL/2018/Exam/#4701" class="Bound">Γ</a> <a id="4718" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4720" href="/20.07/TSPL/2018/Exam/#4703" class="Bound">A</a> <a id="4722" href="/20.07/TSPL/2018/Exam/#1248" class="InductiveConstructor Operator"></a> <a id="4724" href="/20.07/TSPL/2018/Exam/#4705" class="Bound">B</a><a id="4725" class="Symbol">}</a> <a id="4727" class="Symbol">{</a><a id="4728" href="/20.07/TSPL/2018/Exam/#4728" class="Bound">M</a> <a id="4730" class="Symbol">:</a> <a id="4732" href="/20.07/TSPL/2018/Exam/#4701" class="Bound">Γ</a> <a id="4734" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4736" href="/20.07/TSPL/2018/Exam/#4703" class="Bound">A</a><a id="4737" class="Symbol">}</a>
<a id="4745" class="Symbol"></a> <a id="4747" href="/20.07/TSPL/2018/Exam/#4709" class="Bound">L</a> <a id="4749" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="4752" href="/20.07/TSPL/2018/Exam/#4711" class="Bound">L</a>
<a id="4763" class="Comment">-----------------</a>
<a id="4787" class="Symbol"></a> <a id="4789" href="/20.07/TSPL/2018/Exam/#4709" class="Bound">L</a> <a id="4791" href="/20.07/TSPL/2018/Exam/#1816" class="InductiveConstructor Operator">·</a> <a id="4793" href="/20.07/TSPL/2018/Exam/#4728" class="Bound">M</a> <a id="4795" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="4798" href="/20.07/TSPL/2018/Exam/#4711" class="Bound">L</a> <a id="4801" href="/20.07/TSPL/2018/Exam/#1816" class="InductiveConstructor Operator">·</a> <a id="4803" href="/20.07/TSPL/2018/Exam/#4728" class="Bound">M</a>
<a id="Problem2._—→_.ξ-·₂"></a><a id="4810" href="/20.07/TSPL/2018/Exam/#4810" class="InductiveConstructor">ξ-·₂</a> <a id="4815" class="Symbol">:</a> <a id="4817" class="Symbol"></a> <a id="4819" class="Symbol">{</a><a id="4820" href="/20.07/TSPL/2018/Exam/#4820" class="Bound">Γ</a> <a id="4822" href="/20.07/TSPL/2018/Exam/#4822" class="Bound">A</a> <a id="4824" href="/20.07/TSPL/2018/Exam/#4824" class="Bound">B</a><a id="4825" class="Symbol">}</a> <a id="4827" class="Symbol">{</a><a id="4828" href="/20.07/TSPL/2018/Exam/#4828" class="Bound">V</a> <a id="4830" class="Symbol">:</a> <a id="4832" href="/20.07/TSPL/2018/Exam/#4820" class="Bound">Γ</a> <a id="4834" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4836" href="/20.07/TSPL/2018/Exam/#4822" class="Bound">A</a> <a id="4838" href="/20.07/TSPL/2018/Exam/#1248" class="InductiveConstructor Operator"></a> <a id="4840" href="/20.07/TSPL/2018/Exam/#4824" class="Bound">B</a><a id="4841" class="Symbol">}</a> <a id="4843" class="Symbol">{</a><a id="4844" href="/20.07/TSPL/2018/Exam/#4844" class="Bound">M</a> <a id="4846" href="/20.07/TSPL/2018/Exam/#4846" class="Bound">M</a> <a id="4849" class="Symbol">:</a> <a id="4851" href="/20.07/TSPL/2018/Exam/#4820" class="Bound">Γ</a> <a id="4853" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4855" href="/20.07/TSPL/2018/Exam/#4822" class="Bound">A</a><a id="4856" class="Symbol">}</a>
<a id="4864" class="Symbol"></a> <a id="4866" href="/20.07/TSPL/2018/Exam/#4297" class="Datatype">Value</a> <a id="4872" href="/20.07/TSPL/2018/Exam/#4828" class="Bound">V</a>
<a id="4880" class="Symbol"></a> <a id="4882" href="/20.07/TSPL/2018/Exam/#4844" class="Bound">M</a> <a id="4884" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="4887" href="/20.07/TSPL/2018/Exam/#4846" class="Bound">M</a>
<a id="4898" class="Comment">--------------</a>
<a id="4919" class="Symbol"></a> <a id="4921" href="/20.07/TSPL/2018/Exam/#4828" class="Bound">V</a> <a id="4923" href="/20.07/TSPL/2018/Exam/#1816" class="InductiveConstructor Operator">·</a> <a id="4925" href="/20.07/TSPL/2018/Exam/#4844" class="Bound">M</a> <a id="4927" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="4930" href="/20.07/TSPL/2018/Exam/#4828" class="Bound">V</a> <a id="4932" href="/20.07/TSPL/2018/Exam/#1816" class="InductiveConstructor Operator">·</a> <a id="4934" href="/20.07/TSPL/2018/Exam/#4846" class="Bound">M</a>
<a id="Problem2._—→_.β-ƛ"></a><a id="4942" href="/20.07/TSPL/2018/Exam/#4942" class="InductiveConstructor">β-ƛ</a> <a id="4946" class="Symbol">:</a> <a id="4948" class="Symbol"></a> <a id="4950" class="Symbol">{</a><a id="4951" href="/20.07/TSPL/2018/Exam/#4951" class="Bound">Γ</a> <a id="4953" href="/20.07/TSPL/2018/Exam/#4953" class="Bound">A</a> <a id="4955" href="/20.07/TSPL/2018/Exam/#4955" class="Bound">B</a><a id="4956" class="Symbol">}</a> <a id="4958" class="Symbol">{</a><a id="4959" href="/20.07/TSPL/2018/Exam/#4959" class="Bound">N</a> <a id="4961" class="Symbol">:</a> <a id="4963" href="/20.07/TSPL/2018/Exam/#4951" class="Bound">Γ</a> <a id="4965" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="4967" href="/20.07/TSPL/2018/Exam/#4953" class="Bound">A</a> <a id="4969" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4971" href="/20.07/TSPL/2018/Exam/#4955" class="Bound">B</a><a id="4972" class="Symbol">}</a> <a id="4974" class="Symbol">{</a><a id="4975" href="/20.07/TSPL/2018/Exam/#4975" class="Bound">W</a> <a id="4977" class="Symbol">:</a> <a id="4979" href="/20.07/TSPL/2018/Exam/#4951" class="Bound">Γ</a> <a id="4981" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="4983" href="/20.07/TSPL/2018/Exam/#4953" class="Bound">A</a><a id="4984" class="Symbol">}</a>
<a id="4992" class="Symbol"></a> <a id="4994" href="/20.07/TSPL/2018/Exam/#4297" class="Datatype">Value</a> <a id="5000" href="/20.07/TSPL/2018/Exam/#4975" class="Bound">W</a>
<a id="5010" class="Comment">-------------------</a>
<a id="5036" class="Symbol"></a> <a id="5038" class="Symbol">(</a><a id="5039" href="/20.07/TSPL/2018/Exam/#1737" class="InductiveConstructor Operator">ƛ</a> <a id="5041" href="/20.07/TSPL/2018/Exam/#4959" class="Bound">N</a><a id="5042" class="Symbol">)</a> <a id="5044" href="/20.07/TSPL/2018/Exam/#1816" class="InductiveConstructor Operator">·</a> <a id="5046" href="/20.07/TSPL/2018/Exam/#4975" class="Bound">W</a> <a id="5048" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="5051" href="/20.07/TSPL/2018/Exam/#4959" class="Bound">N</a> <a id="5053" href="/20.07/TSPL/2018/Exam/#4038" class="Function Operator">[</a> <a id="5055" href="/20.07/TSPL/2018/Exam/#4975" class="Bound">W</a> <a id="5057" href="/20.07/TSPL/2018/Exam/#4038" class="Function Operator">]</a>
<a id="Problem2._—→_.ξ-suc"></a><a id="5064" href="/20.07/TSPL/2018/Exam/#5064" class="InductiveConstructor">ξ-suc</a> <a id="5070" class="Symbol">:</a> <a id="5072" class="Symbol"></a> <a id="5074" class="Symbol">{</a><a id="5075" href="/20.07/TSPL/2018/Exam/#5075" class="Bound">Γ</a><a id="5076" class="Symbol">}</a> <a id="5078" class="Symbol">{</a><a id="5079" href="/20.07/TSPL/2018/Exam/#5079" class="Bound">M</a> <a id="5081" href="/20.07/TSPL/2018/Exam/#5081" class="Bound">M</a> <a id="5084" class="Symbol">:</a> <a id="5086" href="/20.07/TSPL/2018/Exam/#5075" class="Bound">Γ</a> <a id="5088" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5090" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a><a id="5092" class="Symbol">}</a>
<a id="5100" class="Symbol"></a> <a id="5102" href="/20.07/TSPL/2018/Exam/#5079" class="Bound">M</a> <a id="5104" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="5107" href="/20.07/TSPL/2018/Exam/#5081" class="Bound">M</a>
<a id="5118" class="Comment">----------------</a>
<a id="5141" class="Symbol"></a> <a id="5143" href="/20.07/TSPL/2018/Exam/#1957" class="InductiveConstructor Operator">`suc</a> <a id="5148" href="/20.07/TSPL/2018/Exam/#5079" class="Bound">M</a> <a id="5150" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="5153" href="/20.07/TSPL/2018/Exam/#1957" class="InductiveConstructor Operator">`suc</a> <a id="5158" href="/20.07/TSPL/2018/Exam/#5081" class="Bound">M</a>
<a id="Problem2._—→_.ξ-case"></a><a id="5166" href="/20.07/TSPL/2018/Exam/#5166" class="InductiveConstructor">ξ-case</a> <a id="5173" class="Symbol">:</a> <a id="5175" class="Symbol"></a> <a id="5177" class="Symbol">{</a><a id="5178" href="/20.07/TSPL/2018/Exam/#5178" class="Bound">Γ</a> <a id="5180" href="/20.07/TSPL/2018/Exam/#5180" class="Bound">A</a><a id="5181" class="Symbol">}</a> <a id="5183" class="Symbol">{</a><a id="5184" href="/20.07/TSPL/2018/Exam/#5184" class="Bound">L</a> <a id="5186" href="/20.07/TSPL/2018/Exam/#5186" class="Bound">L</a> <a id="5189" class="Symbol">:</a> <a id="5191" href="/20.07/TSPL/2018/Exam/#5178" class="Bound">Γ</a> <a id="5193" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5195" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a><a id="5197" class="Symbol">}</a> <a id="5199" class="Symbol">{</a><a id="5200" href="/20.07/TSPL/2018/Exam/#5200" class="Bound">M</a> <a id="5202" class="Symbol">:</a> <a id="5204" href="/20.07/TSPL/2018/Exam/#5178" class="Bound">Γ</a> <a id="5206" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5208" href="/20.07/TSPL/2018/Exam/#5180" class="Bound">A</a><a id="5209" class="Symbol">}</a> <a id="5211" class="Symbol">{</a><a id="5212" href="/20.07/TSPL/2018/Exam/#5212" class="Bound">N</a> <a id="5214" class="Symbol">:</a> <a id="5216" href="/20.07/TSPL/2018/Exam/#5178" class="Bound">Γ</a> <a id="5218" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="5220" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a> <a id="5223" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5225" href="/20.07/TSPL/2018/Exam/#5180" class="Bound">A</a><a id="5226" class="Symbol">}</a>
<a id="5234" class="Symbol"></a> <a id="5236" href="/20.07/TSPL/2018/Exam/#5184" class="Bound">L</a> <a id="5238" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="5241" href="/20.07/TSPL/2018/Exam/#5186" class="Bound">L</a>
<a id="5252" class="Comment">--------------------------</a>
<a id="5285" class="Symbol"></a> <a id="5287" href="/20.07/TSPL/2018/Exam/#2022" class="InductiveConstructor">case</a> <a id="5292" href="/20.07/TSPL/2018/Exam/#5184" class="Bound">L</a> <a id="5294" href="/20.07/TSPL/2018/Exam/#5200" class="Bound">M</a> <a id="5296" href="/20.07/TSPL/2018/Exam/#5212" class="Bound">N</a> <a id="5298" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="5301" href="/20.07/TSPL/2018/Exam/#2022" class="InductiveConstructor">case</a> <a id="5306" href="/20.07/TSPL/2018/Exam/#5186" class="Bound">L</a> <a id="5309" href="/20.07/TSPL/2018/Exam/#5200" class="Bound">M</a> <a id="5311" href="/20.07/TSPL/2018/Exam/#5212" class="Bound">N</a>
<a id="Problem2._—→_.β-zero"></a><a id="5318" href="/20.07/TSPL/2018/Exam/#5318" class="InductiveConstructor">β-zero</a> <a id="5325" class="Symbol">:</a> <a id="5328" class="Symbol"></a> <a id="5330" class="Symbol">{</a><a id="5331" href="/20.07/TSPL/2018/Exam/#5331" class="Bound">Γ</a> <a id="5333" href="/20.07/TSPL/2018/Exam/#5333" class="Bound">A</a><a id="5334" class="Symbol">}</a> <a id="5336" class="Symbol">{</a><a id="5337" href="/20.07/TSPL/2018/Exam/#5337" class="Bound">M</a> <a id="5339" class="Symbol">:</a> <a id="5341" href="/20.07/TSPL/2018/Exam/#5331" class="Bound">Γ</a> <a id="5343" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5345" href="/20.07/TSPL/2018/Exam/#5333" class="Bound">A</a><a id="5346" class="Symbol">}</a> <a id="5348" class="Symbol">{</a><a id="5349" href="/20.07/TSPL/2018/Exam/#5349" class="Bound">N</a> <a id="5351" class="Symbol">:</a> <a id="5353" href="/20.07/TSPL/2018/Exam/#5331" class="Bound">Γ</a> <a id="5355" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="5357" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a> <a id="5360" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5362" href="/20.07/TSPL/2018/Exam/#5333" class="Bound">A</a><a id="5363" class="Symbol">}</a>
<a id="5373" class="Comment">-------------------</a>
<a id="5399" class="Symbol"></a> <a id="5401" href="/20.07/TSPL/2018/Exam/#2022" class="InductiveConstructor">case</a> <a id="5406" href="/20.07/TSPL/2018/Exam/#1904" class="InductiveConstructor">`zero</a> <a id="5412" href="/20.07/TSPL/2018/Exam/#5337" class="Bound">M</a> <a id="5414" href="/20.07/TSPL/2018/Exam/#5349" class="Bound">N</a> <a id="5416" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="5419" href="/20.07/TSPL/2018/Exam/#5337" class="Bound">M</a>
<a id="Problem2._—→_.β-suc"></a><a id="5426" href="/20.07/TSPL/2018/Exam/#5426" class="InductiveConstructor">β-suc</a> <a id="5432" class="Symbol">:</a> <a id="5434" class="Symbol"></a> <a id="5436" class="Symbol">{</a><a id="5437" href="/20.07/TSPL/2018/Exam/#5437" class="Bound">Γ</a> <a id="5439" href="/20.07/TSPL/2018/Exam/#5439" class="Bound">A</a><a id="5440" class="Symbol">}</a> <a id="5442" class="Symbol">{</a><a id="5443" href="/20.07/TSPL/2018/Exam/#5443" class="Bound">V</a> <a id="5445" class="Symbol">:</a> <a id="5447" href="/20.07/TSPL/2018/Exam/#5437" class="Bound">Γ</a> <a id="5449" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5451" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a><a id="5453" class="Symbol">}</a> <a id="5455" class="Symbol">{</a><a id="5456" href="/20.07/TSPL/2018/Exam/#5456" class="Bound">M</a> <a id="5458" class="Symbol">:</a> <a id="5460" href="/20.07/TSPL/2018/Exam/#5437" class="Bound">Γ</a> <a id="5462" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5464" href="/20.07/TSPL/2018/Exam/#5439" class="Bound">A</a><a id="5465" class="Symbol">}</a> <a id="5467" class="Symbol">{</a><a id="5468" href="/20.07/TSPL/2018/Exam/#5468" class="Bound">N</a> <a id="5470" class="Symbol">:</a> <a id="5472" href="/20.07/TSPL/2018/Exam/#5437" class="Bound">Γ</a> <a id="5474" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="5476" href="/20.07/TSPL/2018/Exam/#1279" class="InductiveConstructor">`</a> <a id="5479" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5481" href="/20.07/TSPL/2018/Exam/#5439" class="Bound">A</a><a id="5482" class="Symbol">}</a>
<a id="5490" class="Symbol"></a> <a id="5492" href="/20.07/TSPL/2018/Exam/#4297" class="Datatype">Value</a> <a id="5498" href="/20.07/TSPL/2018/Exam/#5443" class="Bound">V</a>
<a id="5508" class="Comment">-----------------------------</a>
<a id="5544" class="Symbol"></a> <a id="5546" href="/20.07/TSPL/2018/Exam/#2022" class="InductiveConstructor">case</a> <a id="5551" class="Symbol">(</a><a id="5552" href="/20.07/TSPL/2018/Exam/#1957" class="InductiveConstructor Operator">`suc</a> <a id="5557" href="/20.07/TSPL/2018/Exam/#5443" class="Bound">V</a><a id="5558" class="Symbol">)</a> <a id="5560" href="/20.07/TSPL/2018/Exam/#5456" class="Bound">M</a> <a id="5562" href="/20.07/TSPL/2018/Exam/#5468" class="Bound">N</a> <a id="5564" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="5567" href="/20.07/TSPL/2018/Exam/#5468" class="Bound">N</a> <a id="5569" href="/20.07/TSPL/2018/Exam/#4038" class="Function Operator">[</a> <a id="5571" href="/20.07/TSPL/2018/Exam/#5443" class="Bound">V</a> <a id="5573" href="/20.07/TSPL/2018/Exam/#4038" class="Function Operator">]</a>
<a id="Problem2._—→_.β-μ"></a><a id="5580" href="/20.07/TSPL/2018/Exam/#5580" class="InductiveConstructor">β-μ</a> <a id="5584" class="Symbol">:</a> <a id="5586" class="Symbol"></a> <a id="5588" class="Symbol">{</a><a id="5589" href="/20.07/TSPL/2018/Exam/#5589" class="Bound">Γ</a> <a id="5591" href="/20.07/TSPL/2018/Exam/#5591" class="Bound">A</a><a id="5592" class="Symbol">}</a> <a id="5594" class="Symbol">{</a><a id="5595" href="/20.07/TSPL/2018/Exam/#5595" class="Bound">N</a> <a id="5597" class="Symbol">:</a> <a id="5599" href="/20.07/TSPL/2018/Exam/#5589" class="Bound">Γ</a> <a id="5601" href="/20.07/TSPL/2018/Exam/#1342" class="InductiveConstructor Operator">,</a> <a id="5603" href="/20.07/TSPL/2018/Exam/#5591" class="Bound">A</a> <a id="5605" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5607" href="/20.07/TSPL/2018/Exam/#5591" class="Bound">A</a><a id="5608" class="Symbol">}</a>
<a id="5618" class="Comment">---------------</a>
<a id="5640" class="Symbol"></a> <a id="5642" href="/20.07/TSPL/2018/Exam/#2124" class="InductiveConstructor Operator">μ</a> <a id="5644" href="/20.07/TSPL/2018/Exam/#5595" class="Bound">N</a> <a id="5646" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="5649" href="/20.07/TSPL/2018/Exam/#5595" class="Bound">N</a> <a id="5651" href="/20.07/TSPL/2018/Exam/#4038" class="Function Operator">[</a> <a id="5653" href="/20.07/TSPL/2018/Exam/#2124" class="InductiveConstructor Operator">μ</a> <a id="5655" href="/20.07/TSPL/2018/Exam/#5595" class="Bound">N</a> <a id="5657" href="/20.07/TSPL/2018/Exam/#4038" class="Function Operator">]</a>
</pre>
<h3 id="reflexive-and-transitive-closure">Reflexive and transitive closure</h3>
<pre class="Agda"> <a id="5709" class="Keyword">infix</a> <a id="5716" class="Number">2</a> <a id="5718" href="/20.07/TSPL/2018/Exam/#5782" class="Datatype Operator">_—↠_</a>
<a id="5725" class="Keyword">infix</a> <a id="5732" class="Number">1</a> <a id="5734" href="/20.07/TSPL/2018/Exam/#6006" class="Function Operator">begin_</a>
<a id="5743" class="Keyword">infixr</a> <a id="5750" class="Number">2</a> <a id="5752" href="/20.07/TSPL/2018/Exam/#5896" class="InductiveConstructor Operator">_—→⟨_⟩_</a>
<a id="5762" class="Keyword">infix</a> <a id="5769" class="Number">3</a> <a id="5771" href="/20.07/TSPL/2018/Exam/#5834" class="InductiveConstructor Operator">_∎</a>
<a id="5777" class="Keyword">data</a> <a id="Problem2._—↠_"></a><a id="5782" href="/20.07/TSPL/2018/Exam/#5782" class="Datatype Operator">_—↠_</a> <a id="5787" class="Symbol">:</a> <a id="5789" class="Symbol"></a> <a id="5791" class="Symbol">{</a><a id="5792" href="/20.07/TSPL/2018/Exam/#5792" class="Bound">Γ</a> <a id="5794" href="/20.07/TSPL/2018/Exam/#5794" class="Bound">A</a><a id="5795" class="Symbol">}</a> <a id="5797" class="Symbol"></a> <a id="5799" class="Symbol">(</a><a id="5800" href="/20.07/TSPL/2018/Exam/#5792" class="Bound">Γ</a> <a id="5802" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5804" href="/20.07/TSPL/2018/Exam/#5794" class="Bound">A</a><a id="5805" class="Symbol">)</a> <a id="5807" class="Symbol"></a> <a id="5809" class="Symbol">(</a><a id="5810" href="/20.07/TSPL/2018/Exam/#5792" class="Bound">Γ</a> <a id="5812" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5814" href="/20.07/TSPL/2018/Exam/#5794" class="Bound">A</a><a id="5815" class="Symbol">)</a> <a id="5817" class="Symbol"></a> <a id="5819" class="PrimitiveType">Set</a> <a id="5823" class="Keyword">where</a>
<a id="Problem2._—↠_._∎"></a><a id="5834" href="/20.07/TSPL/2018/Exam/#5834" class="InductiveConstructor Operator">_∎</a> <a id="5837" class="Symbol">:</a> <a id="5839" class="Symbol"></a> <a id="5841" class="Symbol">{</a><a id="5842" href="/20.07/TSPL/2018/Exam/#5842" class="Bound">Γ</a> <a id="5844" href="/20.07/TSPL/2018/Exam/#5844" class="Bound">A</a><a id="5845" class="Symbol">}</a> <a id="5847" class="Symbol">(</a><a id="5848" href="/20.07/TSPL/2018/Exam/#5848" class="Bound">M</a> <a id="5850" class="Symbol">:</a> <a id="5852" href="/20.07/TSPL/2018/Exam/#5842" class="Bound">Γ</a> <a id="5854" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5856" href="/20.07/TSPL/2018/Exam/#5844" class="Bound">A</a><a id="5857" class="Symbol">)</a>
<a id="5867" class="Comment">--------</a>
<a id="5882" class="Symbol"></a> <a id="5884" href="/20.07/TSPL/2018/Exam/#5848" class="Bound">M</a> <a id="5886" href="/20.07/TSPL/2018/Exam/#5782" class="Datatype Operator">—↠</a> <a id="5889" href="/20.07/TSPL/2018/Exam/#5848" class="Bound">M</a>
<a id="Problem2._—↠_._—→⟨_⟩_"></a><a id="5896" href="/20.07/TSPL/2018/Exam/#5896" class="InductiveConstructor Operator">_—→⟨_⟩_</a> <a id="5904" class="Symbol">:</a> <a id="5906" class="Symbol"></a> <a id="5908" class="Symbol">{</a><a id="5909" href="/20.07/TSPL/2018/Exam/#5909" class="Bound">Γ</a> <a id="5911" href="/20.07/TSPL/2018/Exam/#5911" class="Bound">A</a><a id="5912" class="Symbol">}</a> <a id="5914" class="Symbol">(</a><a id="5915" href="/20.07/TSPL/2018/Exam/#5915" class="Bound">L</a> <a id="5917" class="Symbol">:</a> <a id="5919" href="/20.07/TSPL/2018/Exam/#5909" class="Bound">Γ</a> <a id="5921" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5923" href="/20.07/TSPL/2018/Exam/#5911" class="Bound">A</a><a id="5924" class="Symbol">)</a> <a id="5926" class="Symbol">{</a><a id="5927" href="/20.07/TSPL/2018/Exam/#5927" class="Bound">M</a> <a id="5929" href="/20.07/TSPL/2018/Exam/#5929" class="Bound">N</a> <a id="5931" class="Symbol">:</a> <a id="5933" href="/20.07/TSPL/2018/Exam/#5909" class="Bound">Γ</a> <a id="5935" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="5937" href="/20.07/TSPL/2018/Exam/#5911" class="Bound">A</a><a id="5938" class="Symbol">}</a>
<a id="5946" class="Symbol"></a> <a id="5948" href="/20.07/TSPL/2018/Exam/#5915" class="Bound">L</a> <a id="5950" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="5953" href="/20.07/TSPL/2018/Exam/#5927" class="Bound">M</a>
<a id="5961" class="Symbol"></a> <a id="5963" href="/20.07/TSPL/2018/Exam/#5927" class="Bound">M</a> <a id="5965" href="/20.07/TSPL/2018/Exam/#5782" class="Datatype Operator">—↠</a> <a id="5968" href="/20.07/TSPL/2018/Exam/#5929" class="Bound">N</a>
<a id="5978" class="Comment">---------</a>
<a id="5994" class="Symbol"></a> <a id="5996" href="/20.07/TSPL/2018/Exam/#5915" class="Bound">L</a> <a id="5998" href="/20.07/TSPL/2018/Exam/#5782" class="Datatype Operator">—↠</a> <a id="6001" href="/20.07/TSPL/2018/Exam/#5929" class="Bound">N</a>
<a id="Problem2.begin_"></a><a id="6006" href="/20.07/TSPL/2018/Exam/#6006" class="Function Operator">begin_</a> <a id="6013" class="Symbol">:</a> <a id="6015" class="Symbol"></a> <a id="6017" class="Symbol">{</a><a id="6018" href="/20.07/TSPL/2018/Exam/#6018" class="Bound">Γ</a><a id="6019" class="Symbol">}</a> <a id="6021" class="Symbol">{</a><a id="6022" href="/20.07/TSPL/2018/Exam/#6022" class="Bound">A</a><a id="6023" class="Symbol">}</a> <a id="6025" class="Symbol">{</a><a id="6026" href="/20.07/TSPL/2018/Exam/#6026" class="Bound">M</a> <a id="6028" href="/20.07/TSPL/2018/Exam/#6028" class="Bound">N</a> <a id="6030" class="Symbol">:</a> <a id="6032" href="/20.07/TSPL/2018/Exam/#6018" class="Bound">Γ</a> <a id="6034" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="6036" href="/20.07/TSPL/2018/Exam/#6022" class="Bound">A</a><a id="6037" class="Symbol">}</a>
<a id="6043" class="Symbol"></a> <a id="6045" href="/20.07/TSPL/2018/Exam/#6026" class="Bound">M</a> <a id="6047" href="/20.07/TSPL/2018/Exam/#5782" class="Datatype Operator">—↠</a> <a id="6050" href="/20.07/TSPL/2018/Exam/#6028" class="Bound">N</a>
<a id="6058" class="Comment">------</a>
<a id="6069" class="Symbol"></a> <a id="6071" href="/20.07/TSPL/2018/Exam/#6026" class="Bound">M</a> <a id="6073" href="/20.07/TSPL/2018/Exam/#5782" class="Datatype Operator">—↠</a> <a id="6076" href="/20.07/TSPL/2018/Exam/#6028" class="Bound">N</a>
<a id="6080" href="/20.07/TSPL/2018/Exam/#6006" class="Function Operator">begin</a> <a id="6086" href="/20.07/TSPL/2018/Exam/#6086" class="Bound">M—↠N</a> <a id="6091" class="Symbol">=</a> <a id="6093" href="/20.07/TSPL/2018/Exam/#6086" class="Bound">M—↠N</a>
</pre>
<h3 id="progress">Progress</h3>
<pre class="Agda"> <a id="6124" class="Keyword">data</a> <a id="Problem2.Progress"></a><a id="6129" href="/20.07/TSPL/2018/Exam/#6129" class="Datatype">Progress</a> <a id="6138" class="Symbol">{</a><a id="6139" href="/20.07/TSPL/2018/Exam/#6139" class="Bound">A</a><a id="6140" class="Symbol">}</a> <a id="6142" class="Symbol">(</a><a id="6143" href="/20.07/TSPL/2018/Exam/#6143" class="Bound">M</a> <a id="6145" class="Symbol">:</a> <a id="6147" href="/20.07/TSPL/2018/Exam/#1324" class="InductiveConstructor"></a> <a id="6149" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="6151" href="/20.07/TSPL/2018/Exam/#6139" class="Bound">A</a><a id="6152" class="Symbol">)</a> <a id="6154" class="Symbol">:</a> <a id="6156" class="PrimitiveType">Set</a> <a id="6160" class="Keyword">where</a>
<a id="Problem2.Progress.step"></a><a id="6171" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="6176" class="Symbol">:</a> <a id="6178" class="Symbol"></a> <a id="6180" class="Symbol">{</a><a id="6181" href="/20.07/TSPL/2018/Exam/#6181" class="Bound">N</a> <a id="6183" class="Symbol">:</a> <a id="6185" href="/20.07/TSPL/2018/Exam/#1324" class="InductiveConstructor"></a> <a id="6187" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="6189" href="/20.07/TSPL/2018/Exam/#6139" class="Bound">A</a><a id="6190" class="Symbol">}</a>
<a id="6198" class="Symbol"></a> <a id="6200" href="/20.07/TSPL/2018/Exam/#6143" class="Bound">M</a> <a id="6202" href="/20.07/TSPL/2018/Exam/#4639" class="Datatype Operator">—→</a> <a id="6205" href="/20.07/TSPL/2018/Exam/#6181" class="Bound">N</a>
<a id="6215" class="Comment">-------------</a>
<a id="6235" class="Symbol"></a> <a id="6237" href="/20.07/TSPL/2018/Exam/#6129" class="Datatype">Progress</a> <a id="6246" href="/20.07/TSPL/2018/Exam/#6143" class="Bound">M</a>
<a id="Problem2.Progress.done"></a><a id="6253" href="/20.07/TSPL/2018/Exam/#6253" class="InductiveConstructor">done</a> <a id="6258" class="Symbol">:</a>
<a id="6268" href="/20.07/TSPL/2018/Exam/#4297" class="Datatype">Value</a> <a id="6274" href="/20.07/TSPL/2018/Exam/#6143" class="Bound">M</a>
<a id="6284" class="Comment">----------</a>
<a id="6301" class="Symbol"></a> <a id="6303" href="/20.07/TSPL/2018/Exam/#6129" class="Datatype">Progress</a> <a id="6312" href="/20.07/TSPL/2018/Exam/#6143" class="Bound">M</a>
<a id="Problem2.progress"></a><a id="6317" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="6326" class="Symbol">:</a> <a id="6328" class="Symbol"></a> <a id="6330" class="Symbol">{</a><a id="6331" href="/20.07/TSPL/2018/Exam/#6331" class="Bound">A</a><a id="6332" class="Symbol">}</a> <a id="6334" class="Symbol"></a> <a id="6336" class="Symbol">(</a><a id="6337" href="/20.07/TSPL/2018/Exam/#6337" class="Bound">M</a> <a id="6339" class="Symbol">:</a> <a id="6341" href="/20.07/TSPL/2018/Exam/#1324" class="InductiveConstructor"></a> <a id="6343" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="6345" href="/20.07/TSPL/2018/Exam/#6331" class="Bound">A</a><a id="6346" class="Symbol">)</a> <a id="6348" class="Symbol"></a> <a id="6350" href="/20.07/TSPL/2018/Exam/#6129" class="Datatype">Progress</a> <a id="6359" href="/20.07/TSPL/2018/Exam/#6337" class="Bound">M</a>
<a id="6363" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="6372" class="Symbol">(</a><a id="6373" href="/20.07/TSPL/2018/Exam/#1674" class="InductiveConstructor Operator">`</a> <a id="6375" class="Symbol">())</a>
<a id="6381" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="6390" class="Symbol">(</a><a id="6391" href="/20.07/TSPL/2018/Exam/#1737" class="InductiveConstructor Operator">ƛ</a> <a id="6393" href="/20.07/TSPL/2018/Exam/#6393" class="Bound">N</a><a id="6394" class="Symbol">)</a> <a id="6421" class="Symbol">=</a> <a id="6424" href="/20.07/TSPL/2018/Exam/#6253" class="InductiveConstructor">done</a> <a id="6429" href="/20.07/TSPL/2018/Exam/#4338" class="InductiveConstructor">V-ƛ</a>
<a id="6435" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="6444" class="Symbol">(</a><a id="6445" href="/20.07/TSPL/2018/Exam/#6445" class="Bound">L</a> <a id="6447" href="/20.07/TSPL/2018/Exam/#1816" class="InductiveConstructor Operator">·</a> <a id="6449" href="/20.07/TSPL/2018/Exam/#6449" class="Bound">M</a><a id="6450" class="Symbol">)</a> <a id="6452" class="Keyword">with</a> <a id="6457" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="6466" href="/20.07/TSPL/2018/Exam/#6445" class="Bound">L</a>
<a id="6470" class="Symbol">...</a> <a id="6477" class="Symbol">|</a> <a id="6479" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="6484" href="/20.07/TSPL/2018/Exam/#6484" class="Bound">L—→L</a> <a id="6510" class="Symbol">=</a> <a id="6513" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="6518" class="Symbol">(</a><a id="6519" href="/20.07/TSPL/2018/Exam/#4691" class="InductiveConstructor">ξ-·₁</a> <a id="6524" href="/20.07/TSPL/2018/Exam/#6484" class="Bound">L—→L</a><a id="6529" class="Symbol">)</a>
<a id="6533" class="Symbol">...</a> <a id="6540" class="Symbol">|</a> <a id="6542" href="/20.07/TSPL/2018/Exam/#6253" class="InductiveConstructor">done</a> <a id="6547" href="/20.07/TSPL/2018/Exam/#4338" class="InductiveConstructor">V-ƛ</a> <a id="6551" class="Keyword">with</a> <a id="6556" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="6565" class="Bound">M</a>
<a id="6569" class="Symbol">...</a> <a id="6580" class="Symbol">|</a> <a id="6582" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="6587" href="/20.07/TSPL/2018/Exam/#6587" class="Bound">M—→M</a> <a id="6609" class="Symbol">=</a> <a id="6612" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="6617" class="Symbol">(</a><a id="6618" href="/20.07/TSPL/2018/Exam/#4810" class="InductiveConstructor">ξ-·₂</a> <a id="6623" href="/20.07/TSPL/2018/Exam/#4338" class="InductiveConstructor">V-ƛ</a> <a id="6627" href="/20.07/TSPL/2018/Exam/#6587" class="Bound">M—→M</a><a id="6632" class="Symbol">)</a>
<a id="6636" class="Symbol">...</a> <a id="6647" class="Symbol">|</a> <a id="6649" href="/20.07/TSPL/2018/Exam/#6253" class="InductiveConstructor">done</a> <a id="6654" href="/20.07/TSPL/2018/Exam/#6654" class="Bound">VM</a> <a id="6676" class="Symbol">=</a> <a id="6679" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="6684" class="Symbol">(</a><a id="6685" href="/20.07/TSPL/2018/Exam/#4942" class="InductiveConstructor">β-ƛ</a> <a id="6689" href="/20.07/TSPL/2018/Exam/#6654" class="Bound">VM</a><a id="6691" class="Symbol">)</a>
<a id="6695" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="6704" class="Symbol">(</a><a id="6705" href="/20.07/TSPL/2018/Exam/#1904" class="InductiveConstructor">`zero</a><a id="6710" class="Symbol">)</a> <a id="6735" class="Symbol">=</a> <a id="6738" href="/20.07/TSPL/2018/Exam/#6253" class="InductiveConstructor">done</a> <a id="6743" href="/20.07/TSPL/2018/Exam/#4431" class="InductiveConstructor">V-zero</a>
<a id="6752" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="6761" class="Symbol">(</a><a id="6762" href="/20.07/TSPL/2018/Exam/#1957" class="InductiveConstructor Operator">`suc</a> <a id="6767" href="/20.07/TSPL/2018/Exam/#6767" class="Bound">M</a><a id="6768" class="Symbol">)</a> <a id="6770" class="Keyword">with</a> <a id="6775" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="6784" href="/20.07/TSPL/2018/Exam/#6767" class="Bound">M</a>
<a id="6788" class="Symbol">...</a> <a id="6795" class="Symbol">|</a> <a id="6797" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="6802" href="/20.07/TSPL/2018/Exam/#6802" class="Bound">M—→M</a> <a id="6828" class="Symbol">=</a> <a id="6831" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="6836" class="Symbol">(</a><a id="6837" href="/20.07/TSPL/2018/Exam/#5064" class="InductiveConstructor">ξ-suc</a> <a id="6843" href="/20.07/TSPL/2018/Exam/#6802" class="Bound">M—→M</a><a id="6848" class="Symbol">)</a>
<a id="6852" class="Symbol">...</a> <a id="6859" class="Symbol">|</a> <a id="6861" href="/20.07/TSPL/2018/Exam/#6253" class="InductiveConstructor">done</a> <a id="6866" href="/20.07/TSPL/2018/Exam/#6866" class="Bound">VM</a> <a id="6892" class="Symbol">=</a> <a id="6895" href="/20.07/TSPL/2018/Exam/#6253" class="InductiveConstructor">done</a> <a id="6900" class="Symbol">(</a><a id="6901" href="/20.07/TSPL/2018/Exam/#4503" class="InductiveConstructor">V-suc</a> <a id="6907" href="/20.07/TSPL/2018/Exam/#6866" class="Bound">VM</a><a id="6909" class="Symbol">)</a>
<a id="6913" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="6922" class="Symbol">(</a><a id="6923" href="/20.07/TSPL/2018/Exam/#2022" class="InductiveConstructor">case</a> <a id="6928" href="/20.07/TSPL/2018/Exam/#6928" class="Bound">L</a> <a id="6930" href="/20.07/TSPL/2018/Exam/#6930" class="Bound">M</a> <a id="6932" href="/20.07/TSPL/2018/Exam/#6932" class="Bound">N</a><a id="6933" class="Symbol">)</a> <a id="6935" class="Keyword">with</a> <a id="6940" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="6949" href="/20.07/TSPL/2018/Exam/#6928" class="Bound">L</a>
<a id="6953" class="Symbol">...</a> <a id="6960" class="Symbol">|</a> <a id="6962" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="6967" href="/20.07/TSPL/2018/Exam/#6967" class="Bound">L—→L</a> <a id="6993" class="Symbol">=</a> <a id="6996" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="7001" class="Symbol">(</a><a id="7002" href="/20.07/TSPL/2018/Exam/#5166" class="InductiveConstructor">ξ-case</a> <a id="7009" href="/20.07/TSPL/2018/Exam/#6967" class="Bound">L—→L</a><a id="7014" class="Symbol">)</a>
<a id="7018" class="Symbol">...</a> <a id="7025" class="Symbol">|</a> <a id="7027" href="/20.07/TSPL/2018/Exam/#6253" class="InductiveConstructor">done</a> <a id="7032" href="/20.07/TSPL/2018/Exam/#4431" class="InductiveConstructor">V-zero</a> <a id="7058" class="Symbol">=</a> <a id="7061" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="7066" class="Symbol">(</a><a id="7067" href="/20.07/TSPL/2018/Exam/#5318" class="InductiveConstructor">β-zero</a><a id="7073" class="Symbol">)</a>
<a id="7077" class="Symbol">...</a> <a id="7084" class="Symbol">|</a> <a id="7086" href="/20.07/TSPL/2018/Exam/#6253" class="InductiveConstructor">done</a> <a id="7091" class="Symbol">(</a><a id="7092" href="/20.07/TSPL/2018/Exam/#4503" class="InductiveConstructor">V-suc</a> <a id="7098" href="/20.07/TSPL/2018/Exam/#7098" class="Bound">VL</a><a id="7100" class="Symbol">)</a> <a id="7117" class="Symbol">=</a> <a id="7120" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="7125" class="Symbol">(</a><a id="7126" href="/20.07/TSPL/2018/Exam/#5426" class="InductiveConstructor">β-suc</a> <a id="7132" href="/20.07/TSPL/2018/Exam/#7098" class="Bound">VL</a><a id="7134" class="Symbol">)</a>
<a id="7138" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="7147" class="Symbol">(</a><a id="7148" href="/20.07/TSPL/2018/Exam/#2124" class="InductiveConstructor Operator">μ</a> <a id="7150" href="/20.07/TSPL/2018/Exam/#7150" class="Bound">N</a><a id="7151" class="Symbol">)</a> <a id="7178" class="Symbol">=</a> <a id="7181" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="7186" class="Symbol">(</a><a id="7187" href="/20.07/TSPL/2018/Exam/#5580" class="InductiveConstructor">β-μ</a><a id="7190" class="Symbol">)</a>
</pre>
<h3 id="evaluation">Evaluation</h3>
<pre class="Agda"> <a id="7219" class="Keyword">data</a> <a id="Problem2.Gas"></a><a id="7224" href="/20.07/TSPL/2018/Exam/#7224" class="Datatype">Gas</a> <a id="7228" class="Symbol">:</a> <a id="7230" class="PrimitiveType">Set</a> <a id="7234" class="Keyword">where</a>
<a id="Problem2.Gas.gas"></a><a id="7244" href="/20.07/TSPL/2018/Exam/#7244" class="InductiveConstructor">gas</a> <a id="7248" class="Symbol">:</a> <a id="7250" href="Agda.Builtin.Nat.html#165" class="Datatype"></a> <a id="7252" class="Symbol"></a> <a id="7254" href="/20.07/TSPL/2018/Exam/#7224" class="Datatype">Gas</a>
<a id="7261" class="Keyword">data</a> <a id="Problem2.Finished"></a><a id="7266" href="/20.07/TSPL/2018/Exam/#7266" class="Datatype">Finished</a> <a id="7275" class="Symbol">{</a><a id="7276" href="/20.07/TSPL/2018/Exam/#7276" class="Bound">Γ</a> <a id="7278" href="/20.07/TSPL/2018/Exam/#7278" class="Bound">A</a><a id="7279" class="Symbol">}</a> <a id="7281" class="Symbol">(</a><a id="7282" href="/20.07/TSPL/2018/Exam/#7282" class="Bound">N</a> <a id="7284" class="Symbol">:</a> <a id="7286" href="/20.07/TSPL/2018/Exam/#7276" class="Bound">Γ</a> <a id="7288" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="7290" href="/20.07/TSPL/2018/Exam/#7278" class="Bound">A</a><a id="7291" class="Symbol">)</a> <a id="7293" class="Symbol">:</a> <a id="7295" class="PrimitiveType">Set</a> <a id="7299" class="Keyword">where</a>
<a id="Problem2.Finished.done"></a><a id="7311" href="/20.07/TSPL/2018/Exam/#7311" class="InductiveConstructor">done</a> <a id="7316" class="Symbol">:</a>
<a id="7327" href="/20.07/TSPL/2018/Exam/#4297" class="Datatype">Value</a> <a id="7333" href="/20.07/TSPL/2018/Exam/#7282" class="Bound">N</a>
<a id="7344" class="Comment">----------</a>
<a id="7362" class="Symbol"></a> <a id="7364" href="/20.07/TSPL/2018/Exam/#7266" class="Datatype">Finished</a> <a id="7373" href="/20.07/TSPL/2018/Exam/#7282" class="Bound">N</a>
<a id="Problem2.Finished.out-of-gas"></a><a id="7381" href="/20.07/TSPL/2018/Exam/#7381" class="InductiveConstructor">out-of-gas</a> <a id="7392" class="Symbol">:</a>
<a id="7403" class="Comment">----------</a>
<a id="7423" href="/20.07/TSPL/2018/Exam/#7266" class="Datatype">Finished</a> <a id="7432" href="/20.07/TSPL/2018/Exam/#7282" class="Bound">N</a>
<a id="7437" class="Keyword">data</a> <a id="Problem2.Steps"></a><a id="7442" href="/20.07/TSPL/2018/Exam/#7442" class="Datatype">Steps</a> <a id="7448" class="Symbol">:</a> <a id="7450" class="Symbol"></a> <a id="7452" class="Symbol">{</a><a id="7453" href="/20.07/TSPL/2018/Exam/#7453" class="Bound">A</a><a id="7454" class="Symbol">}</a> <a id="7456" class="Symbol"></a> <a id="7458" href="/20.07/TSPL/2018/Exam/#1324" class="InductiveConstructor"></a> <a id="7460" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="7462" href="/20.07/TSPL/2018/Exam/#7453" class="Bound">A</a> <a id="7464" class="Symbol"></a> <a id="7466" class="PrimitiveType">Set</a> <a id="7470" class="Keyword">where</a>
<a id="Problem2.Steps.steps"></a><a id="7481" href="/20.07/TSPL/2018/Exam/#7481" class="InductiveConstructor">steps</a> <a id="7487" class="Symbol">:</a> <a id="7489" class="Symbol"></a> <a id="7491" class="Symbol">{</a><a id="7492" href="/20.07/TSPL/2018/Exam/#7492" class="Bound">A</a><a id="7493" class="Symbol">}</a> <a id="7495" class="Symbol">{</a><a id="7496" href="/20.07/TSPL/2018/Exam/#7496" class="Bound">L</a> <a id="7498" href="/20.07/TSPL/2018/Exam/#7498" class="Bound">N</a> <a id="7500" class="Symbol">:</a> <a id="7502" href="/20.07/TSPL/2018/Exam/#1324" class="InductiveConstructor"></a> <a id="7504" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="7506" href="/20.07/TSPL/2018/Exam/#7492" class="Bound">A</a><a id="7507" class="Symbol">}</a>
<a id="7515" class="Symbol"></a> <a id="7517" href="/20.07/TSPL/2018/Exam/#7496" class="Bound">L</a> <a id="7519" href="/20.07/TSPL/2018/Exam/#5782" class="Datatype Operator">—↠</a> <a id="7522" href="/20.07/TSPL/2018/Exam/#7498" class="Bound">N</a>
<a id="7530" class="Symbol"></a> <a id="7532" href="/20.07/TSPL/2018/Exam/#7266" class="Datatype">Finished</a> <a id="7541" href="/20.07/TSPL/2018/Exam/#7498" class="Bound">N</a>
<a id="7551" class="Comment">----------</a>
<a id="7568" class="Symbol"></a> <a id="7570" href="/20.07/TSPL/2018/Exam/#7442" class="Datatype">Steps</a> <a id="7576" href="/20.07/TSPL/2018/Exam/#7496" class="Bound">L</a>
<a id="Problem2.eval"></a><a id="7581" href="/20.07/TSPL/2018/Exam/#7581" class="Function">eval</a> <a id="7586" class="Symbol">:</a> <a id="7588" class="Symbol"></a> <a id="7590" class="Symbol">{</a><a id="7591" href="/20.07/TSPL/2018/Exam/#7591" class="Bound">A</a><a id="7592" class="Symbol">}</a>
<a id="7598" class="Symbol"></a> <a id="7600" href="/20.07/TSPL/2018/Exam/#7224" class="Datatype">Gas</a>
<a id="7608" class="Symbol"></a> <a id="7610" class="Symbol">(</a><a id="7611" href="/20.07/TSPL/2018/Exam/#7611" class="Bound">L</a> <a id="7613" class="Symbol">:</a> <a id="7615" href="/20.07/TSPL/2018/Exam/#1324" class="InductiveConstructor"></a> <a id="7617" href="/20.07/TSPL/2018/Exam/#1636" class="Datatype Operator"></a> <a id="7619" href="/20.07/TSPL/2018/Exam/#7591" class="Bound">A</a><a id="7620" class="Symbol">)</a>
<a id="7628" class="Comment">-----------</a>
<a id="7644" class="Symbol"></a> <a id="7646" href="/20.07/TSPL/2018/Exam/#7442" class="Datatype">Steps</a> <a id="7652" href="/20.07/TSPL/2018/Exam/#7611" class="Bound">L</a>
<a id="7656" href="/20.07/TSPL/2018/Exam/#7581" class="Function">eval</a> <a id="7661" class="Symbol">(</a><a id="7662" href="/20.07/TSPL/2018/Exam/#7244" class="InductiveConstructor">gas</a> <a id="7666" href="Agda.Builtin.Nat.html#183" class="InductiveConstructor">zero</a><a id="7670" class="Symbol">)</a> <a id="7675" href="/20.07/TSPL/2018/Exam/#7675" class="Bound">L</a> <a id="7697" class="Symbol">=</a> <a id="7700" href="/20.07/TSPL/2018/Exam/#7481" class="InductiveConstructor">steps</a> <a id="7706" class="Symbol">(</a><a id="7707" href="/20.07/TSPL/2018/Exam/#7675" class="Bound">L</a> <a id="7709" href="/20.07/TSPL/2018/Exam/#5834" class="InductiveConstructor Operator"></a><a id="7710" class="Symbol">)</a> <a id="7712" href="/20.07/TSPL/2018/Exam/#7381" class="InductiveConstructor">out-of-gas</a>
<a id="7725" href="/20.07/TSPL/2018/Exam/#7581" class="Function">eval</a> <a id="7730" class="Symbol">(</a><a id="7731" href="/20.07/TSPL/2018/Exam/#7244" class="InductiveConstructor">gas</a> <a id="7735" class="Symbol">(</a><a id="7736" href="Agda.Builtin.Nat.html#196" class="InductiveConstructor">suc</a> <a id="7740" href="/20.07/TSPL/2018/Exam/#7740" class="Bound">m</a><a id="7741" class="Symbol">))</a> <a id="7744" href="/20.07/TSPL/2018/Exam/#7744" class="Bound">L</a> <a id="7746" class="Keyword">with</a> <a id="7751" href="/20.07/TSPL/2018/Exam/#6317" class="Function">progress</a> <a id="7760" href="/20.07/TSPL/2018/Exam/#7744" class="Bound">L</a>
<a id="7764" class="Symbol">...</a> <a id="7768" class="Symbol">|</a> <a id="7770" href="/20.07/TSPL/2018/Exam/#6253" class="InductiveConstructor">done</a> <a id="7775" href="/20.07/TSPL/2018/Exam/#7775" class="Bound">VL</a> <a id="7805" class="Symbol">=</a> <a id="7808" href="/20.07/TSPL/2018/Exam/#7481" class="InductiveConstructor">steps</a> <a id="7814" class="Symbol">(</a><a id="7815" class="Bound">L</a> <a id="7817" href="/20.07/TSPL/2018/Exam/#5834" class="InductiveConstructor Operator"></a><a id="7818" class="Symbol">)</a> <a id="7820" class="Symbol">(</a><a id="7821" href="/20.07/TSPL/2018/Exam/#7311" class="InductiveConstructor">done</a> <a id="7826" href="/20.07/TSPL/2018/Exam/#7775" class="Bound">VL</a><a id="7828" class="Symbol">)</a>
<a id="7832" class="Symbol">...</a> <a id="7836" class="Symbol">|</a> <a id="7838" href="/20.07/TSPL/2018/Exam/#6171" class="InductiveConstructor">step</a> <a id="7843" class="Symbol">{</a><a id="7844" href="/20.07/TSPL/2018/Exam/#7844" class="Bound">M</a><a id="7845" class="Symbol">}</a> <a id="7847" href="/20.07/TSPL/2018/Exam/#7847" class="Bound">L—→M</a> <a id="7852" class="Keyword">with</a> <a id="7857" href="/20.07/TSPL/2018/Exam/#7581" class="Function">eval</a> <a id="7862" class="Symbol">(</a><a id="7863" href="/20.07/TSPL/2018/Exam/#7244" class="InductiveConstructor">gas</a> <a id="7867" class="Bound">m</a><a id="7868" class="Symbol">)</a> <a id="7870" href="/20.07/TSPL/2018/Exam/#7844" class="Bound">M</a>
<a id="7874" class="Symbol">...</a> <a id="7881" class="Symbol">|</a> <a id="7883" href="/20.07/TSPL/2018/Exam/#7481" class="InductiveConstructor">steps</a> <a id="7889" href="/20.07/TSPL/2018/Exam/#7889" class="Bound">M—↠N</a> <a id="7894" href="/20.07/TSPL/2018/Exam/#7894" class="Bound">fin</a> <a id="7915" class="Symbol">=</a> <a id="7918" href="/20.07/TSPL/2018/Exam/#7481" class="InductiveConstructor">steps</a> <a id="7924" class="Symbol">(</a><a id="7925" class="Bound">L</a> <a id="7927" href="/20.07/TSPL/2018/Exam/#5896" class="InductiveConstructor Operator">—→⟨</a> <a id="7931" class="Bound">L—→M</a> <a id="7936" href="/20.07/TSPL/2018/Exam/#5896" class="InductiveConstructor Operator"></a> <a id="7938" href="/20.07/TSPL/2018/Exam/#7889" class="Bound">M—↠N</a><a id="7942" class="Symbol">)</a> <a id="7944" href="/20.07/TSPL/2018/Exam/#7894" class="Bound">fin</a>
</pre>
<h2 id="problem-3">Problem 3</h2>
<p>Remember to indent all code by two spaces.</p>
<pre class="Agda"><a id="8015" class="Keyword">module</a> <a id="Problem3"></a><a id="8022" href="/20.07/TSPL/2018/Exam/#8022" class="Module">Problem3</a> <a id="8031" class="Keyword">where</a>
</pre>
<h3 id="imports-1">Imports</h3>
<pre class="Agda"> <a id="8061" class="Keyword">import</a> <a id="8068" href="/20.07/DeBruijn/" class="Module">plfa.part2.DeBruijn</a> <a id="8088" class="Symbol">as</a> <a id="8091" class="Module">DB</a>
</pre>
<h3 id="syntax">Syntax</h3>
<pre class="Agda"> <a id="8117" class="Keyword">infix</a> <a id="8125" class="Number">4</a> <a id="8128" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator">_∋_⦂_</a>
<a id="8136" class="Keyword">infix</a> <a id="8144" class="Number">4</a> <a id="8147" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator">_⊢_↑_</a>
<a id="8155" class="Keyword">infix</a> <a id="8163" class="Number">4</a> <a id="8166" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator">_⊢_↓_</a>
<a id="8174" class="Keyword">infixl</a> <a id="8182" class="Number">5</a> <a id="8185" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator">_,_⦂_</a>
<a id="8194" class="Keyword">infix</a> <a id="8202" class="Number">5</a> <a id="8205" href="/20.07/TSPL/2018/Exam/#8820" class="InductiveConstructor Operator">ƛ_⇒_</a>
<a id="8212" class="Keyword">infix</a> <a id="8220" class="Number">5</a> <a id="8223" href="/20.07/TSPL/2018/Exam/#9018" class="InductiveConstructor Operator">μ_⇒_</a>
<a id="8230" class="Keyword">infix</a> <a id="8238" class="Number">6</a> <a id="8241" href="/20.07/TSPL/2018/Exam/#9068" class="InductiveConstructor Operator">_↑</a>
<a id="8246" class="Keyword">infix</a> <a id="8254" class="Number">6</a> <a id="8257" href="/20.07/TSPL/2018/Exam/#8747" class="InductiveConstructor Operator">_↓_</a>
<a id="8263" class="Keyword">infixl</a> <a id="8271" class="Number">7</a> <a id="8274" href="/20.07/TSPL/2018/Exam/#9591" class="InductiveConstructor Operator">_·_</a>
<a id="8280" class="Keyword">infix</a> <a id="8288" class="Number">8</a> <a id="8291" href="/20.07/TSPL/2018/Exam/#8907" class="InductiveConstructor Operator">`suc_</a>
<a id="8299" class="Keyword">infix</a> <a id="8307" class="Number">9</a> <a id="8310" href="/20.07/TSPL/2018/Exam/#8650" class="InductiveConstructor Operator">`_</a>
</pre>
<h3 id="types">Types</h3>
<pre class="Agda"> <a id="8335" class="Keyword">data</a> <a id="Problem3.Type"></a><a id="8340" href="/20.07/TSPL/2018/Exam/#8340" class="Datatype">Type</a> <a id="8345" class="Symbol">:</a> <a id="8347" class="PrimitiveType">Set</a> <a id="8351" class="Keyword">where</a>
<a id="Problem3.Type._⇒_"></a><a id="8361" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator">_⇒_</a> <a id="8367" class="Symbol">:</a> <a id="8369" href="/20.07/TSPL/2018/Exam/#8340" class="Datatype">Type</a> <a id="8374" class="Symbol"></a> <a id="8376" href="/20.07/TSPL/2018/Exam/#8340" class="Datatype">Type</a> <a id="8381" class="Symbol"></a> <a id="8383" href="/20.07/TSPL/2018/Exam/#8340" class="Datatype">Type</a>
<a id="Problem3.Type.`"></a><a id="8392" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="8398" class="Symbol">:</a> <a id="8400" href="/20.07/TSPL/2018/Exam/#8340" class="Datatype">Type</a>
</pre>
<h3 id="identifiers">Identifiers</h3>
<pre class="Agda"> <a id="Problem3.Id"></a><a id="8433" href="/20.07/TSPL/2018/Exam/#8433" class="Function">Id</a> <a id="8436" class="Symbol">:</a> <a id="8438" class="PrimitiveType">Set</a>
<a id="8444" href="/20.07/TSPL/2018/Exam/#8433" class="Function">Id</a> <a id="8447" class="Symbol">=</a> <a id="8449" href="Agda.Builtin.String.html#206" class="Postulate">String</a>
</pre>
<h3 id="contexts">Contexts</h3>
<pre class="Agda"> <a id="8481" class="Keyword">data</a> <a id="Problem3.Context"></a><a id="8486" href="/20.07/TSPL/2018/Exam/#8486" class="Datatype">Context</a> <a id="8494" class="Symbol">:</a> <a id="8496" class="PrimitiveType">Set</a> <a id="8500" class="Keyword">where</a>
<a id="Problem3.Context.∅"></a><a id="8510" href="/20.07/TSPL/2018/Exam/#8510" class="InductiveConstructor"></a> <a id="8516" class="Symbol">:</a> <a id="8518" href="/20.07/TSPL/2018/Exam/#8486" class="Datatype">Context</a>
<a id="Problem3.Context._,_⦂_"></a><a id="8530" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator">_,_⦂_</a> <a id="8536" class="Symbol">:</a> <a id="8538" href="/20.07/TSPL/2018/Exam/#8486" class="Datatype">Context</a> <a id="8546" class="Symbol"></a> <a id="8548" href="/20.07/TSPL/2018/Exam/#8433" class="Function">Id</a> <a id="8551" class="Symbol"></a> <a id="8553" href="/20.07/TSPL/2018/Exam/#8340" class="Datatype">Type</a> <a id="8558" class="Symbol"></a> <a id="8560" href="/20.07/TSPL/2018/Exam/#8486" class="Datatype">Context</a>
</pre>
<h3 id="terms">Terms</h3>
<pre class="Agda"> <a id="8590" class="Keyword">data</a> <a id="Problem3.Term⁺"></a><a id="8595" href="/20.07/TSPL/2018/Exam/#8595" class="Datatype">Term⁺</a> <a id="8601" class="Symbol">:</a> <a id="8603" class="PrimitiveType">Set</a>
<a id="8609" class="Keyword">data</a> <a id="Problem3.Term⁻"></a><a id="8614" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a> <a id="8620" class="Symbol">:</a> <a id="8622" class="PrimitiveType">Set</a>
<a id="8629" class="Keyword">data</a> <a id="8634" href="/20.07/TSPL/2018/Exam/#8595" class="Datatype">Term⁺</a> <a id="8640" class="Keyword">where</a>
<a id="Problem3.Term⁺.`_"></a><a id="8650" href="/20.07/TSPL/2018/Exam/#8650" class="InductiveConstructor Operator">`_</a> <a id="8676" class="Symbol">:</a> <a id="8678" href="/20.07/TSPL/2018/Exam/#8433" class="Function">Id</a> <a id="8681" class="Symbol"></a> <a id="8683" href="/20.07/TSPL/2018/Exam/#8595" class="Datatype">Term⁺</a>
<a id="Problem3.Term⁺._·_"></a><a id="8693" href="/20.07/TSPL/2018/Exam/#8693" class="InductiveConstructor Operator">_·_</a> <a id="8719" class="Symbol">:</a> <a id="8721" href="/20.07/TSPL/2018/Exam/#8595" class="Datatype">Term⁺</a> <a id="8727" class="Symbol"></a> <a id="8729" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a> <a id="8735" class="Symbol"></a> <a id="8737" href="/20.07/TSPL/2018/Exam/#8595" class="Datatype">Term⁺</a>
<a id="Problem3.Term⁺._↓_"></a><a id="8747" href="/20.07/TSPL/2018/Exam/#8747" class="InductiveConstructor Operator">_↓_</a> <a id="8773" class="Symbol">:</a> <a id="8775" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a> <a id="8781" class="Symbol"></a> <a id="8783" href="/20.07/TSPL/2018/Exam/#8340" class="Datatype">Type</a> <a id="8788" class="Symbol"></a> <a id="8790" href="/20.07/TSPL/2018/Exam/#8595" class="Datatype">Term⁺</a>
<a id="8799" class="Keyword">data</a> <a id="8804" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a> <a id="8810" class="Keyword">where</a>
<a id="Problem3.Term⁻.ƛ_⇒_"></a><a id="8820" href="/20.07/TSPL/2018/Exam/#8820" class="InductiveConstructor Operator">ƛ_⇒_</a> <a id="8845" class="Symbol">:</a> <a id="8847" href="/20.07/TSPL/2018/Exam/#8433" class="Function">Id</a> <a id="8850" class="Symbol"></a> <a id="8852" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a> <a id="8858" class="Symbol"></a> <a id="8860" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a>
<a id="Problem3.Term⁻.`zero"></a><a id="8870" href="/20.07/TSPL/2018/Exam/#8870" class="InductiveConstructor">`zero</a> <a id="8895" class="Symbol">:</a> <a id="8897" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a>
<a id="Problem3.Term⁻.`suc_"></a><a id="8907" href="/20.07/TSPL/2018/Exam/#8907" class="InductiveConstructor Operator">`suc_</a> <a id="8932" class="Symbol">:</a> <a id="8934" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a> <a id="8940" class="Symbol"></a> <a id="8942" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a>
<a id="Problem3.Term⁻.`case_[zero⇒_|suc_⇒_]"></a><a id="8952" href="/20.07/TSPL/2018/Exam/#8952" class="InductiveConstructor Operator">`case_[zero⇒_|suc_⇒_]</a> <a id="8977" class="Symbol">:</a> <a id="8979" href="/20.07/TSPL/2018/Exam/#8595" class="Datatype">Term⁺</a> <a id="8985" class="Symbol"></a> <a id="8987" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a> <a id="8993" class="Symbol"></a> <a id="8995" href="/20.07/TSPL/2018/Exam/#8433" class="Function">Id</a> <a id="8998" class="Symbol"></a> <a id="9000" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a> <a id="9006" class="Symbol"></a> <a id="9008" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a>
<a id="Problem3.Term⁻.μ_⇒_"></a><a id="9018" href="/20.07/TSPL/2018/Exam/#9018" class="InductiveConstructor Operator">μ_⇒_</a> <a id="9043" class="Symbol">:</a> <a id="9045" href="/20.07/TSPL/2018/Exam/#8433" class="Function">Id</a> <a id="9048" class="Symbol"></a> <a id="9050" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a> <a id="9056" class="Symbol"></a> <a id="9058" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a>
<a id="Problem3.Term⁻._↑"></a><a id="9068" href="/20.07/TSPL/2018/Exam/#9068" class="InductiveConstructor Operator">_↑</a> <a id="9093" class="Symbol">:</a> <a id="9095" href="/20.07/TSPL/2018/Exam/#8595" class="Datatype">Term⁺</a> <a id="9101" class="Symbol"></a> <a id="9103" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a>
</pre>
<h3 id="lookup">Lookup</h3>
<pre class="Agda"> <a id="9132" class="Keyword">data</a> <a id="Problem3._∋_⦂_"></a><a id="9137" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator">_∋_⦂_</a> <a id="9143" class="Symbol">:</a> <a id="9145" href="/20.07/TSPL/2018/Exam/#8486" class="Datatype">Context</a> <a id="9153" class="Symbol"></a> <a id="9155" href="/20.07/TSPL/2018/Exam/#8433" class="Function">Id</a> <a id="9158" class="Symbol"></a> <a id="9160" href="/20.07/TSPL/2018/Exam/#8340" class="Datatype">Type</a> <a id="9165" class="Symbol"></a> <a id="9167" class="PrimitiveType">Set</a> <a id="9171" class="Keyword">where</a>
<a id="Problem3._∋_⦂_.Z"></a><a id="9182" href="/20.07/TSPL/2018/Exam/#9182" class="InductiveConstructor">Z</a> <a id="9184" class="Symbol">:</a> <a id="9186" class="Symbol"></a> <a id="9188" class="Symbol">{</a><a id="9189" href="/20.07/TSPL/2018/Exam/#9189" class="Bound">Γ</a> <a id="9191" href="/20.07/TSPL/2018/Exam/#9191" class="Bound">x</a> <a id="9193" href="/20.07/TSPL/2018/Exam/#9193" class="Bound">A</a><a id="9194" class="Symbol">}</a>
<a id="9204" class="Comment">--------------------</a>
<a id="9231" class="Symbol"></a> <a id="9233" href="/20.07/TSPL/2018/Exam/#9189" class="Bound">Γ</a> <a id="9235" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator">,</a> <a id="9237" href="/20.07/TSPL/2018/Exam/#9191" class="Bound">x</a> <a id="9239" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator"></a> <a id="9241" href="/20.07/TSPL/2018/Exam/#9193" class="Bound">A</a> <a id="9243" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="9245" href="/20.07/TSPL/2018/Exam/#9191" class="Bound">x</a> <a id="9247" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="9249" href="/20.07/TSPL/2018/Exam/#9193" class="Bound">A</a>
<a id="Problem3._∋_⦂_.S"></a><a id="9256" href="/20.07/TSPL/2018/Exam/#9256" class="InductiveConstructor">S</a> <a id="9258" class="Symbol">:</a> <a id="9260" class="Symbol"></a> <a id="9262" class="Symbol">{</a><a id="9263" href="/20.07/TSPL/2018/Exam/#9263" class="Bound">Γ</a> <a id="9265" href="/20.07/TSPL/2018/Exam/#9265" class="Bound">x</a> <a id="9267" href="/20.07/TSPL/2018/Exam/#9267" class="Bound">y</a> <a id="9269" href="/20.07/TSPL/2018/Exam/#9269" class="Bound">A</a> <a id="9271" href="/20.07/TSPL/2018/Exam/#9271" class="Bound">B</a><a id="9272" class="Symbol">}</a>
<a id="9280" class="Symbol"></a> <a id="9282" href="/20.07/TSPL/2018/Exam/#9265" class="Bound">x</a> <a id="9284" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.Core.html#799" class="Function Operator"></a> <a id="9286" href="/20.07/TSPL/2018/Exam/#9267" class="Bound">y</a>
<a id="9294" class="Symbol"></a> <a id="9296" href="/20.07/TSPL/2018/Exam/#9263" class="Bound">Γ</a> <a id="9298" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="9300" href="/20.07/TSPL/2018/Exam/#9265" class="Bound">x</a> <a id="9302" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="9304" href="/20.07/TSPL/2018/Exam/#9269" class="Bound">A</a>
<a id="9314" class="Comment">-----------------</a>
<a id="9338" class="Symbol"></a> <a id="9340" href="/20.07/TSPL/2018/Exam/#9263" class="Bound">Γ</a> <a id="9342" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator">,</a> <a id="9344" href="/20.07/TSPL/2018/Exam/#9267" class="Bound">y</a> <a id="9346" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator"></a> <a id="9348" href="/20.07/TSPL/2018/Exam/#9271" class="Bound">B</a> <a id="9350" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="9352" href="/20.07/TSPL/2018/Exam/#9265" class="Bound">x</a> <a id="9354" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="9356" href="/20.07/TSPL/2018/Exam/#9269" class="Bound">A</a>
</pre>
<h3 id="bidirectional-type-checking">Bidirectional type checking</h3>
<pre class="Agda"> <a id="9402" class="Keyword">data</a> <a id="Problem3._⊢_↑_"></a><a id="9407" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator">_⊢_↑_</a> <a id="9413" class="Symbol">:</a> <a id="9415" href="/20.07/TSPL/2018/Exam/#8486" class="Datatype">Context</a> <a id="9423" class="Symbol"></a> <a id="9425" href="/20.07/TSPL/2018/Exam/#8595" class="Datatype">Term⁺</a> <a id="9431" class="Symbol"></a> <a id="9433" href="/20.07/TSPL/2018/Exam/#8340" class="Datatype">Type</a> <a id="9438" class="Symbol"></a> <a id="9440" class="PrimitiveType">Set</a>
<a id="9446" class="Keyword">data</a> <a id="Problem3._⊢_↓_"></a><a id="9451" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator">_⊢_↓_</a> <a id="9457" class="Symbol">:</a> <a id="9459" href="/20.07/TSPL/2018/Exam/#8486" class="Datatype">Context</a> <a id="9467" class="Symbol"></a> <a id="9469" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a> <a id="9475" class="Symbol"></a> <a id="9477" href="/20.07/TSPL/2018/Exam/#8340" class="Datatype">Type</a> <a id="9482" class="Symbol"></a> <a id="9484" class="PrimitiveType">Set</a>
<a id="9491" class="Keyword">data</a> <a id="9496" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator">_⊢_↑_</a> <a id="9502" class="Keyword">where</a>
<a id="Problem3._⊢_↑_.⊢`"></a><a id="9513" href="/20.07/TSPL/2018/Exam/#9513" class="InductiveConstructor">⊢`</a> <a id="9516" class="Symbol">:</a> <a id="9518" class="Symbol"></a> <a id="9520" class="Symbol">{</a><a id="9521" href="/20.07/TSPL/2018/Exam/#9521" class="Bound">Γ</a> <a id="9523" href="/20.07/TSPL/2018/Exam/#9523" class="Bound">A</a> <a id="9525" href="/20.07/TSPL/2018/Exam/#9525" class="Bound">x</a><a id="9526" class="Symbol">}</a>
<a id="9534" class="Symbol"></a> <a id="9536" href="/20.07/TSPL/2018/Exam/#9521" class="Bound">Γ</a> <a id="9538" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="9540" href="/20.07/TSPL/2018/Exam/#9525" class="Bound">x</a> <a id="9542" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="9544" href="/20.07/TSPL/2018/Exam/#9523" class="Bound">A</a>
<a id="9554" class="Comment">-----------</a>
<a id="9572" class="Symbol"></a> <a id="9574" href="/20.07/TSPL/2018/Exam/#9521" class="Bound">Γ</a> <a id="9576" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="9578" href="/20.07/TSPL/2018/Exam/#8650" class="InductiveConstructor Operator">`</a> <a id="9580" href="/20.07/TSPL/2018/Exam/#9525" class="Bound">x</a> <a id="9582" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="9584" href="/20.07/TSPL/2018/Exam/#9523" class="Bound">A</a>
<a id="Problem3._⊢_↑_._·_"></a><a id="9591" href="/20.07/TSPL/2018/Exam/#9591" class="InductiveConstructor Operator">_·_</a> <a id="9595" class="Symbol">:</a> <a id="9597" class="Symbol"></a> <a id="9599" class="Symbol">{</a><a id="9600" href="/20.07/TSPL/2018/Exam/#9600" class="Bound">Γ</a> <a id="9602" href="/20.07/TSPL/2018/Exam/#9602" class="Bound">L</a> <a id="9604" href="/20.07/TSPL/2018/Exam/#9604" class="Bound">M</a> <a id="9606" href="/20.07/TSPL/2018/Exam/#9606" class="Bound">A</a> <a id="9608" href="/20.07/TSPL/2018/Exam/#9608" class="Bound">B</a><a id="9609" class="Symbol">}</a>
<a id="9617" class="Symbol"></a> <a id="9619" href="/20.07/TSPL/2018/Exam/#9600" class="Bound">Γ</a> <a id="9621" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="9623" href="/20.07/TSPL/2018/Exam/#9602" class="Bound">L</a> <a id="9625" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="9627" href="/20.07/TSPL/2018/Exam/#9606" class="Bound">A</a> <a id="9629" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="9631" href="/20.07/TSPL/2018/Exam/#9608" class="Bound">B</a>
<a id="9639" class="Symbol"></a> <a id="9641" href="/20.07/TSPL/2018/Exam/#9600" class="Bound">Γ</a> <a id="9643" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="9645" href="/20.07/TSPL/2018/Exam/#9604" class="Bound">M</a> <a id="9647" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="9649" href="/20.07/TSPL/2018/Exam/#9606" class="Bound">A</a>
<a id="9659" class="Comment">-------------</a>
<a id="9679" class="Symbol"></a> <a id="9681" href="/20.07/TSPL/2018/Exam/#9600" class="Bound">Γ</a> <a id="9683" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="9685" href="/20.07/TSPL/2018/Exam/#9602" class="Bound">L</a> <a id="9687" href="/20.07/TSPL/2018/Exam/#8693" class="InductiveConstructor Operator">·</a> <a id="9689" href="/20.07/TSPL/2018/Exam/#9604" class="Bound">M</a> <a id="9691" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="9693" href="/20.07/TSPL/2018/Exam/#9608" class="Bound">B</a>
<a id="Problem3._⊢_↑_.⊢↓"></a><a id="9700" href="/20.07/TSPL/2018/Exam/#9700" class="InductiveConstructor">⊢↓</a> <a id="9703" class="Symbol">:</a> <a id="9705" class="Symbol"></a> <a id="9707" class="Symbol">{</a><a id="9708" href="/20.07/TSPL/2018/Exam/#9708" class="Bound">Γ</a> <a id="9710" href="/20.07/TSPL/2018/Exam/#9710" class="Bound">M</a> <a id="9712" href="/20.07/TSPL/2018/Exam/#9712" class="Bound">A</a><a id="9713" class="Symbol">}</a>
<a id="9721" class="Symbol"></a> <a id="9723" href="/20.07/TSPL/2018/Exam/#9708" class="Bound">Γ</a> <a id="9725" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="9727" href="/20.07/TSPL/2018/Exam/#9710" class="Bound">M</a> <a id="9729" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="9731" href="/20.07/TSPL/2018/Exam/#9712" class="Bound">A</a>
<a id="9741" class="Comment">---------------</a>
<a id="9763" class="Symbol"></a> <a id="9765" href="/20.07/TSPL/2018/Exam/#9708" class="Bound">Γ</a> <a id="9767" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="9769" class="Symbol">(</a><a id="9770" href="/20.07/TSPL/2018/Exam/#9710" class="Bound">M</a> <a id="9772" href="/20.07/TSPL/2018/Exam/#8747" class="InductiveConstructor Operator"></a> <a id="9774" href="/20.07/TSPL/2018/Exam/#9712" class="Bound">A</a><a id="9775" class="Symbol">)</a> <a id="9777" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="9779" href="/20.07/TSPL/2018/Exam/#9712" class="Bound">A</a>
<a id="9784" class="Keyword">data</a> <a id="9789" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator">_⊢_↓_</a> <a id="9795" class="Keyword">where</a>
<a id="Problem3._⊢_↓_.⊢ƛ"></a><a id="9806" href="/20.07/TSPL/2018/Exam/#9806" class="InductiveConstructor">⊢ƛ</a> <a id="9809" class="Symbol">:</a> <a id="9811" class="Symbol"></a> <a id="9813" class="Symbol">{</a><a id="9814" href="/20.07/TSPL/2018/Exam/#9814" class="Bound">Γ</a> <a id="9816" href="/20.07/TSPL/2018/Exam/#9816" class="Bound">x</a> <a id="9818" href="/20.07/TSPL/2018/Exam/#9818" class="Bound">N</a> <a id="9820" href="/20.07/TSPL/2018/Exam/#9820" class="Bound">A</a> <a id="9822" href="/20.07/TSPL/2018/Exam/#9822" class="Bound">B</a><a id="9823" class="Symbol">}</a>
<a id="9831" class="Symbol"></a> <a id="9833" href="/20.07/TSPL/2018/Exam/#9814" class="Bound">Γ</a> <a id="9835" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator">,</a> <a id="9837" href="/20.07/TSPL/2018/Exam/#9816" class="Bound">x</a> <a id="9839" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator"></a> <a id="9841" href="/20.07/TSPL/2018/Exam/#9820" class="Bound">A</a> <a id="9843" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="9845" href="/20.07/TSPL/2018/Exam/#9818" class="Bound">N</a> <a id="9847" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="9849" href="/20.07/TSPL/2018/Exam/#9822" class="Bound">B</a>
<a id="9859" class="Comment">-------------------</a>
<a id="9885" class="Symbol"></a> <a id="9887" href="/20.07/TSPL/2018/Exam/#9814" class="Bound">Γ</a> <a id="9889" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="9891" href="/20.07/TSPL/2018/Exam/#8820" class="InductiveConstructor Operator">ƛ</a> <a id="9893" href="/20.07/TSPL/2018/Exam/#9816" class="Bound">x</a> <a id="9895" href="/20.07/TSPL/2018/Exam/#8820" class="InductiveConstructor Operator"></a> <a id="9897" href="/20.07/TSPL/2018/Exam/#9818" class="Bound">N</a> <a id="9899" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="9901" href="/20.07/TSPL/2018/Exam/#9820" class="Bound">A</a> <a id="9903" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="9905" href="/20.07/TSPL/2018/Exam/#9822" class="Bound">B</a>
<a id="Problem3._⊢_↓_.⊢zero"></a><a id="9912" href="/20.07/TSPL/2018/Exam/#9912" class="InductiveConstructor">⊢zero</a> <a id="9918" class="Symbol">:</a> <a id="9920" class="Symbol"></a> <a id="9922" class="Symbol">{</a><a id="9923" href="/20.07/TSPL/2018/Exam/#9923" class="Bound">Γ</a><a id="9924" class="Symbol">}</a>
<a id="9934" class="Comment">--------------</a>
<a id="9955" class="Symbol"></a> <a id="9957" href="/20.07/TSPL/2018/Exam/#9923" class="Bound">Γ</a> <a id="9959" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="9961" href="/20.07/TSPL/2018/Exam/#8870" class="InductiveConstructor">`zero</a> <a id="9967" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="9969" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a>
<a id="Problem3._⊢_↓_.⊢suc"></a><a id="9977" href="/20.07/TSPL/2018/Exam/#9977" class="InductiveConstructor">⊢suc</a> <a id="9982" class="Symbol">:</a> <a id="9984" class="Symbol"></a> <a id="9986" class="Symbol">{</a><a id="9987" href="/20.07/TSPL/2018/Exam/#9987" class="Bound">Γ</a> <a id="9989" href="/20.07/TSPL/2018/Exam/#9989" class="Bound">M</a><a id="9990" class="Symbol">}</a>
<a id="9998" class="Symbol"></a> <a id="10000" href="/20.07/TSPL/2018/Exam/#9987" class="Bound">Γ</a> <a id="10002" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10004" href="/20.07/TSPL/2018/Exam/#9989" class="Bound">M</a> <a id="10006" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10008" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a>
<a id="10019" class="Comment">---------------</a>
<a id="10041" class="Symbol"></a> <a id="10043" href="/20.07/TSPL/2018/Exam/#9987" class="Bound">Γ</a> <a id="10045" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10047" href="/20.07/TSPL/2018/Exam/#8907" class="InductiveConstructor Operator">`suc</a> <a id="10052" href="/20.07/TSPL/2018/Exam/#9989" class="Bound">M</a> <a id="10054" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10056" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a>
<a id="Problem3._⊢_↓_.⊢case"></a><a id="10064" href="/20.07/TSPL/2018/Exam/#10064" class="InductiveConstructor">⊢case</a> <a id="10070" class="Symbol">:</a> <a id="10072" class="Symbol"></a> <a id="10074" class="Symbol">{</a><a id="10075" href="/20.07/TSPL/2018/Exam/#10075" class="Bound">Γ</a> <a id="10077" href="/20.07/TSPL/2018/Exam/#10077" class="Bound">L</a> <a id="10079" href="/20.07/TSPL/2018/Exam/#10079" class="Bound">M</a> <a id="10081" href="/20.07/TSPL/2018/Exam/#10081" class="Bound">x</a> <a id="10083" href="/20.07/TSPL/2018/Exam/#10083" class="Bound">N</a> <a id="10085" href="/20.07/TSPL/2018/Exam/#10085" class="Bound">A</a><a id="10086" class="Symbol">}</a>
<a id="10094" class="Symbol"></a> <a id="10096" href="/20.07/TSPL/2018/Exam/#10075" class="Bound">Γ</a> <a id="10098" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="10100" href="/20.07/TSPL/2018/Exam/#10077" class="Bound">L</a> <a id="10102" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="10104" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a>
<a id="10113" class="Symbol"></a> <a id="10115" href="/20.07/TSPL/2018/Exam/#10075" class="Bound">Γ</a> <a id="10117" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10119" href="/20.07/TSPL/2018/Exam/#10079" class="Bound">M</a> <a id="10121" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10123" href="/20.07/TSPL/2018/Exam/#10085" class="Bound">A</a>
<a id="10131" class="Symbol"></a> <a id="10133" href="/20.07/TSPL/2018/Exam/#10075" class="Bound">Γ</a> <a id="10135" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator">,</a> <a id="10137" href="/20.07/TSPL/2018/Exam/#10081" class="Bound">x</a> <a id="10139" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator"></a> <a id="10141" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="10144" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10146" href="/20.07/TSPL/2018/Exam/#10083" class="Bound">N</a> <a id="10148" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10150" href="/20.07/TSPL/2018/Exam/#10085" class="Bound">A</a>
<a id="10160" class="Comment">-------------------------------------</a>
<a id="10204" class="Symbol"></a> <a id="10206" href="/20.07/TSPL/2018/Exam/#10075" class="Bound">Γ</a> <a id="10208" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10210" href="/20.07/TSPL/2018/Exam/#8952" class="InductiveConstructor Operator">`case</a> <a id="10216" href="/20.07/TSPL/2018/Exam/#10077" class="Bound">L</a> <a id="10218" href="/20.07/TSPL/2018/Exam/#8952" class="InductiveConstructor Operator">[zero⇒</a> <a id="10225" href="/20.07/TSPL/2018/Exam/#10079" class="Bound">M</a> <a id="10227" href="/20.07/TSPL/2018/Exam/#8952" class="InductiveConstructor Operator">|suc</a> <a id="10232" href="/20.07/TSPL/2018/Exam/#10081" class="Bound">x</a> <a id="10234" href="/20.07/TSPL/2018/Exam/#8952" class="InductiveConstructor Operator"></a> <a id="10236" href="/20.07/TSPL/2018/Exam/#10083" class="Bound">N</a> <a id="10238" href="/20.07/TSPL/2018/Exam/#8952" class="InductiveConstructor Operator">]</a> <a id="10240" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10242" href="/20.07/TSPL/2018/Exam/#10085" class="Bound">A</a>
<a id="Problem3._⊢_↓_.⊢μ"></a><a id="10249" href="/20.07/TSPL/2018/Exam/#10249" class="InductiveConstructor">⊢μ</a> <a id="10252" class="Symbol">:</a> <a id="10254" class="Symbol"></a> <a id="10256" class="Symbol">{</a><a id="10257" href="/20.07/TSPL/2018/Exam/#10257" class="Bound">Γ</a> <a id="10259" href="/20.07/TSPL/2018/Exam/#10259" class="Bound">x</a> <a id="10261" href="/20.07/TSPL/2018/Exam/#10261" class="Bound">N</a> <a id="10263" href="/20.07/TSPL/2018/Exam/#10263" class="Bound">A</a><a id="10264" class="Symbol">}</a>
<a id="10272" class="Symbol"></a> <a id="10274" href="/20.07/TSPL/2018/Exam/#10257" class="Bound">Γ</a> <a id="10276" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator">,</a> <a id="10278" href="/20.07/TSPL/2018/Exam/#10259" class="Bound">x</a> <a id="10280" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator"></a> <a id="10282" href="/20.07/TSPL/2018/Exam/#10263" class="Bound">A</a> <a id="10284" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10286" href="/20.07/TSPL/2018/Exam/#10261" class="Bound">N</a> <a id="10288" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10290" href="/20.07/TSPL/2018/Exam/#10263" class="Bound">A</a>
<a id="10300" class="Comment">-----------------</a>
<a id="10324" class="Symbol"></a> <a id="10326" href="/20.07/TSPL/2018/Exam/#10257" class="Bound">Γ</a> <a id="10328" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10330" href="/20.07/TSPL/2018/Exam/#9018" class="InductiveConstructor Operator">μ</a> <a id="10332" href="/20.07/TSPL/2018/Exam/#10259" class="Bound">x</a> <a id="10334" href="/20.07/TSPL/2018/Exam/#9018" class="InductiveConstructor Operator"></a> <a id="10336" href="/20.07/TSPL/2018/Exam/#10261" class="Bound">N</a> <a id="10338" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10340" href="/20.07/TSPL/2018/Exam/#10263" class="Bound">A</a>
<a id="Problem3._⊢_↓_.⊢↑"></a><a id="10347" href="/20.07/TSPL/2018/Exam/#10347" class="InductiveConstructor">⊢↑</a> <a id="10350" class="Symbol">:</a> <a id="10352" class="Symbol"></a> <a id="10354" class="Symbol">{</a><a id="10355" href="/20.07/TSPL/2018/Exam/#10355" class="Bound">Γ</a> <a id="10357" href="/20.07/TSPL/2018/Exam/#10357" class="Bound">M</a> <a id="10359" href="/20.07/TSPL/2018/Exam/#10359" class="Bound">A</a> <a id="10361" href="/20.07/TSPL/2018/Exam/#10361" class="Bound">B</a><a id="10362" class="Symbol">}</a>
<a id="10370" class="Symbol"></a> <a id="10372" href="/20.07/TSPL/2018/Exam/#10355" class="Bound">Γ</a> <a id="10374" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="10376" href="/20.07/TSPL/2018/Exam/#10357" class="Bound">M</a> <a id="10378" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="10380" href="/20.07/TSPL/2018/Exam/#10359" class="Bound">A</a>
<a id="10388" class="Symbol"></a> <a id="10390" href="/20.07/TSPL/2018/Exam/#10359" class="Bound">A</a> <a id="10392" href="Agda.Builtin.Equality.html#125" class="Datatype Operator"></a> <a id="10394" href="/20.07/TSPL/2018/Exam/#10361" class="Bound">B</a>
<a id="10404" class="Comment">-------------</a>
<a id="10424" class="Symbol"></a> <a id="10426" href="/20.07/TSPL/2018/Exam/#10355" class="Bound">Γ</a> <a id="10428" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10430" class="Symbol">(</a><a id="10431" href="/20.07/TSPL/2018/Exam/#10357" class="Bound">M</a> <a id="10433" href="/20.07/TSPL/2018/Exam/#9068" class="InductiveConstructor Operator"></a><a id="10434" class="Symbol">)</a> <a id="10436" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="10438" href="/20.07/TSPL/2018/Exam/#10361" class="Bound">B</a>
</pre>
<h3 id="type-equality">Type equality</h3>
<pre class="Agda"> <a id="Problem3._≟Tp_"></a><a id="10471" href="/20.07/TSPL/2018/Exam/#10471" class="Function Operator">_≟Tp_</a> <a id="10477" class="Symbol">:</a> <a id="10479" class="Symbol">(</a><a id="10480" href="/20.07/TSPL/2018/Exam/#10480" class="Bound">A</a> <a id="10482" href="/20.07/TSPL/2018/Exam/#10482" class="Bound">B</a> <a id="10484" class="Symbol">:</a> <a id="10486" href="/20.07/TSPL/2018/Exam/#8340" class="Datatype">Type</a><a id="10490" class="Symbol">)</a> <a id="10492" class="Symbol"></a> <a id="10494" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#605" class="Datatype">Dec</a> <a id="10498" class="Symbol">(</a><a id="10499" href="/20.07/TSPL/2018/Exam/#10480" class="Bound">A</a> <a id="10501" href="Agda.Builtin.Equality.html#125" class="Datatype Operator"></a> <a id="10503" href="/20.07/TSPL/2018/Exam/#10482" class="Bound">B</a><a id="10504" class="Symbol">)</a>
<a id="10508" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="10516" href="/20.07/TSPL/2018/Exam/#10471" class="Function Operator">≟Tp</a> <a id="10520" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="10536" class="Symbol">=</a> <a id="10539" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="10543" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a>
<a id="10550" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="10558" href="/20.07/TSPL/2018/Exam/#10471" class="Function Operator">≟Tp</a> <a id="10562" class="Symbol">(</a><a id="10563" href="/20.07/TSPL/2018/Exam/#10563" class="Bound">A</a> <a id="10565" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="10567" href="/20.07/TSPL/2018/Exam/#10567" class="Bound">B</a><a id="10568" class="Symbol">)</a> <a id="10578" class="Symbol">=</a> <a id="10581" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="10584" class="Symbol">λ()</a>
<a id="10590" class="Symbol">(</a><a id="10591" href="/20.07/TSPL/2018/Exam/#10591" class="Bound">A</a> <a id="10593" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="10595" href="/20.07/TSPL/2018/Exam/#10595" class="Bound">B</a><a id="10596" class="Symbol">)</a> <a id="10598" href="/20.07/TSPL/2018/Exam/#10471" class="Function Operator">≟Tp</a> <a id="10602" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="10618" class="Symbol">=</a> <a id="10621" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="10624" class="Symbol">λ()</a>
<a id="10630" class="Symbol">(</a><a id="10631" href="/20.07/TSPL/2018/Exam/#10631" class="Bound">A</a> <a id="10633" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="10635" href="/20.07/TSPL/2018/Exam/#10635" class="Bound">B</a><a id="10636" class="Symbol">)</a> <a id="10638" href="/20.07/TSPL/2018/Exam/#10471" class="Function Operator">≟Tp</a> <a id="10642" class="Symbol">(</a><a id="10643" href="/20.07/TSPL/2018/Exam/#10643" class="Bound">A</a> <a id="10646" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="10648" href="/20.07/TSPL/2018/Exam/#10648" class="Bound">B</a><a id="10650" class="Symbol">)</a>
<a id="10656" class="Keyword">with</a> <a id="10661" href="/20.07/TSPL/2018/Exam/#10631" class="Bound">A</a> <a id="10663" href="/20.07/TSPL/2018/Exam/#10471" class="Function Operator">≟Tp</a> <a id="10667" href="/20.07/TSPL/2018/Exam/#10643" class="Bound">A</a> <a id="10670" class="Symbol">|</a> <a id="10672" href="/20.07/TSPL/2018/Exam/#10635" class="Bound">B</a> <a id="10674" href="/20.07/TSPL/2018/Exam/#10471" class="Function Operator">≟Tp</a> <a id="10678" href="/20.07/TSPL/2018/Exam/#10648" class="Bound">B</a>
<a id="10683" class="Symbol">...</a> <a id="10688" class="Symbol">|</a> <a id="10690" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="10693" href="/20.07/TSPL/2018/Exam/#10693" class="Bound">A≢</a> <a id="10699" class="Symbol">|</a> <a id="10701" class="Symbol">_</a> <a id="10711" class="Symbol">=</a> <a id="10714" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="10717" class="Symbol">λ{</a><a id="10719" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a> <a id="10724" class="Symbol"></a> <a id="10726" href="/20.07/TSPL/2018/Exam/#10693" class="Bound">A≢</a> <a id="10729" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a><a id="10733" class="Symbol">}</a>
<a id="10737" class="Symbol">...</a> <a id="10742" class="Symbol">|</a> <a id="10744" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="10748" class="Symbol">_</a> <a id="10753" class="Symbol">|</a> <a id="10755" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="10758" href="/20.07/TSPL/2018/Exam/#10758" class="Bound">B≢</a> <a id="10765" class="Symbol">=</a> <a id="10768" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="10771" class="Symbol">λ{</a><a id="10773" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a> <a id="10778" class="Symbol"></a> <a id="10780" href="/20.07/TSPL/2018/Exam/#10758" class="Bound">B≢</a> <a id="10783" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a><a id="10787" class="Symbol">}</a>
<a id="10791" class="Symbol">...</a> <a id="10796" class="Symbol">|</a> <a id="10798" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="10802" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a> <a id="10807" class="Symbol">|</a> <a id="10809" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="10813" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a> <a id="10819" class="Symbol">=</a> <a id="10822" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="10826" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a>
</pre>
<h3 id="prerequisites">Prerequisites</h3>
<pre class="Agda"> <a id="Problem3.dom≡"></a><a id="10861" href="/20.07/TSPL/2018/Exam/#10861" class="Function">dom≡</a> <a id="10866" class="Symbol">:</a> <a id="10868" class="Symbol"></a> <a id="10870" class="Symbol">{</a><a id="10871" href="/20.07/TSPL/2018/Exam/#10871" class="Bound">A</a> <a id="10873" href="/20.07/TSPL/2018/Exam/#10873" class="Bound">A</a> <a id="10876" href="/20.07/TSPL/2018/Exam/#10876" class="Bound">B</a> <a id="10878" href="/20.07/TSPL/2018/Exam/#10878" class="Bound">B</a><a id="10880" class="Symbol">}</a> <a id="10882" class="Symbol"></a> <a id="10884" href="/20.07/TSPL/2018/Exam/#10871" class="Bound">A</a> <a id="10886" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="10888" href="/20.07/TSPL/2018/Exam/#10876" class="Bound">B</a> <a id="10890" href="Agda.Builtin.Equality.html#125" class="Datatype Operator"></a> <a id="10892" href="/20.07/TSPL/2018/Exam/#10873" class="Bound">A</a> <a id="10895" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="10897" href="/20.07/TSPL/2018/Exam/#10878" class="Bound">B</a> <a id="10900" class="Symbol"></a> <a id="10902" href="/20.07/TSPL/2018/Exam/#10871" class="Bound">A</a> <a id="10904" href="Agda.Builtin.Equality.html#125" class="Datatype Operator"></a> <a id="10906" href="/20.07/TSPL/2018/Exam/#10873" class="Bound">A</a>
<a id="10911" href="/20.07/TSPL/2018/Exam/#10861" class="Function">dom≡</a> <a id="10916" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a> <a id="10921" class="Symbol">=</a> <a id="10923" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a>
<a id="Problem3.rng≡"></a><a id="10931" href="/20.07/TSPL/2018/Exam/#10931" class="Function">rng≡</a> <a id="10936" class="Symbol">:</a> <a id="10938" class="Symbol"></a> <a id="10940" class="Symbol">{</a><a id="10941" href="/20.07/TSPL/2018/Exam/#10941" class="Bound">A</a> <a id="10943" href="/20.07/TSPL/2018/Exam/#10943" class="Bound">A</a> <a id="10946" href="/20.07/TSPL/2018/Exam/#10946" class="Bound">B</a> <a id="10948" href="/20.07/TSPL/2018/Exam/#10948" class="Bound">B</a><a id="10950" class="Symbol">}</a> <a id="10952" class="Symbol"></a> <a id="10954" href="/20.07/TSPL/2018/Exam/#10941" class="Bound">A</a> <a id="10956" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="10958" href="/20.07/TSPL/2018/Exam/#10946" class="Bound">B</a> <a id="10960" href="Agda.Builtin.Equality.html#125" class="Datatype Operator"></a> <a id="10962" href="/20.07/TSPL/2018/Exam/#10943" class="Bound">A</a> <a id="10965" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="10967" href="/20.07/TSPL/2018/Exam/#10948" class="Bound">B</a> <a id="10970" class="Symbol"></a> <a id="10972" href="/20.07/TSPL/2018/Exam/#10946" class="Bound">B</a> <a id="10974" href="Agda.Builtin.Equality.html#125" class="Datatype Operator"></a> <a id="10976" href="/20.07/TSPL/2018/Exam/#10948" class="Bound">B</a>
<a id="10981" href="/20.07/TSPL/2018/Exam/#10931" class="Function">rng≡</a> <a id="10986" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a> <a id="10991" class="Symbol">=</a> <a id="10993" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a>
<a id="Problem3.ℕ≢⇒"></a><a id="11001" href="/20.07/TSPL/2018/Exam/#11001" class="Function">ℕ≢⇒</a> <a id="11005" class="Symbol">:</a> <a id="11007" class="Symbol"></a> <a id="11009" class="Symbol">{</a><a id="11010" href="/20.07/TSPL/2018/Exam/#11010" class="Bound">A</a> <a id="11012" href="/20.07/TSPL/2018/Exam/#11012" class="Bound">B</a><a id="11013" class="Symbol">}</a> <a id="11015" class="Symbol"></a> <a id="11017" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="11020" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.Core.html#799" class="Function Operator"></a> <a id="11022" href="/20.07/TSPL/2018/Exam/#11010" class="Bound">A</a> <a id="11024" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="11026" href="/20.07/TSPL/2018/Exam/#11012" class="Bound">B</a>
<a id="11030" href="/20.07/TSPL/2018/Exam/#11001" class="Function">ℕ≢⇒</a> <a id="11034" class="Symbol">()</a>
</pre>
<h3 id="unique-lookup">Unique lookup</h3>
<pre class="Agda"> <a id="Problem3.uniq-∋"></a><a id="11068" href="/20.07/TSPL/2018/Exam/#11068" class="Function">uniq-∋</a> <a id="11075" class="Symbol">:</a> <a id="11077" class="Symbol"></a> <a id="11079" class="Symbol">{</a><a id="11080" href="/20.07/TSPL/2018/Exam/#11080" class="Bound">Γ</a> <a id="11082" href="/20.07/TSPL/2018/Exam/#11082" class="Bound">x</a> <a id="11084" href="/20.07/TSPL/2018/Exam/#11084" class="Bound">A</a> <a id="11086" href="/20.07/TSPL/2018/Exam/#11086" class="Bound">B</a><a id="11087" class="Symbol">}</a> <a id="11089" class="Symbol"></a> <a id="11091" href="/20.07/TSPL/2018/Exam/#11080" class="Bound">Γ</a> <a id="11093" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="11095" href="/20.07/TSPL/2018/Exam/#11082" class="Bound">x</a> <a id="11097" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="11099" href="/20.07/TSPL/2018/Exam/#11084" class="Bound">A</a> <a id="11101" class="Symbol"></a> <a id="11103" href="/20.07/TSPL/2018/Exam/#11080" class="Bound">Γ</a> <a id="11105" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="11107" href="/20.07/TSPL/2018/Exam/#11082" class="Bound">x</a> <a id="11109" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="11111" href="/20.07/TSPL/2018/Exam/#11086" class="Bound">B</a> <a id="11113" class="Symbol"></a> <a id="11115" href="/20.07/TSPL/2018/Exam/#11084" class="Bound">A</a> <a id="11117" href="Agda.Builtin.Equality.html#125" class="Datatype Operator"></a> <a id="11119" href="/20.07/TSPL/2018/Exam/#11086" class="Bound">B</a>
<a id="11123" href="/20.07/TSPL/2018/Exam/#11068" class="Function">uniq-∋</a> <a id="11130" href="/20.07/TSPL/2018/Exam/#9182" class="InductiveConstructor">Z</a> <a id="11132" href="/20.07/TSPL/2018/Exam/#9182" class="InductiveConstructor">Z</a> <a id="11150" class="Symbol">=</a> <a id="11153" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a>
<a id="11160" href="/20.07/TSPL/2018/Exam/#11068" class="Function">uniq-∋</a> <a id="11167" href="/20.07/TSPL/2018/Exam/#9182" class="InductiveConstructor">Z</a> <a id="11169" class="Symbol">(</a><a id="11170" href="/20.07/TSPL/2018/Exam/#9256" class="InductiveConstructor">S</a> <a id="11172" href="/20.07/TSPL/2018/Exam/#11172" class="Bound">x≢y</a> <a id="11176" class="Symbol">_)</a> <a id="11187" class="Symbol">=</a> <a id="11190" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#294" class="Function">⊥-elim</a> <a id="11197" class="Symbol">(</a><a id="11198" href="/20.07/TSPL/2018/Exam/#11172" class="Bound">x≢y</a> <a id="11202" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a><a id="11206" class="Symbol">)</a>
<a id="11210" href="/20.07/TSPL/2018/Exam/#11068" class="Function">uniq-∋</a> <a id="11217" class="Symbol">(</a><a id="11218" href="/20.07/TSPL/2018/Exam/#9256" class="InductiveConstructor">S</a> <a id="11220" href="/20.07/TSPL/2018/Exam/#11220" class="Bound">x≢y</a> <a id="11224" class="Symbol">_)</a> <a id="11227" href="/20.07/TSPL/2018/Exam/#9182" class="InductiveConstructor">Z</a> <a id="11237" class="Symbol">=</a> <a id="11240" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#294" class="Function">⊥-elim</a> <a id="11247" class="Symbol">(</a><a id="11248" href="/20.07/TSPL/2018/Exam/#11220" class="Bound">x≢y</a> <a id="11252" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a><a id="11256" class="Symbol">)</a>
<a id="11260" href="/20.07/TSPL/2018/Exam/#11068" class="Function">uniq-∋</a> <a id="11267" class="Symbol">(</a><a id="11268" href="/20.07/TSPL/2018/Exam/#9256" class="InductiveConstructor">S</a> <a id="11270" class="Symbol">_</a> <a id="11272" href="/20.07/TSPL/2018/Exam/#11272" class="Bound">∋x</a><a id="11274" class="Symbol">)</a> <a id="11276" class="Symbol">(</a><a id="11277" href="/20.07/TSPL/2018/Exam/#9256" class="InductiveConstructor">S</a> <a id="11279" class="Symbol">_</a> <a id="11281" href="/20.07/TSPL/2018/Exam/#11281" class="Bound">∋x</a><a id="11284" class="Symbol">)</a> <a id="11287" class="Symbol">=</a> <a id="11290" href="/20.07/TSPL/2018/Exam/#11068" class="Function">uniq-∋</a> <a id="11297" href="/20.07/TSPL/2018/Exam/#11272" class="Bound">∋x</a> <a id="11300" href="/20.07/TSPL/2018/Exam/#11281" class="Bound">∋x</a>
</pre>
<h3 id="unique-synthesis">Unique synthesis</h3>
<pre class="Agda"> <a id="Problem3.uniq-↑"></a><a id="11337" href="/20.07/TSPL/2018/Exam/#11337" class="Function">uniq-↑</a> <a id="11344" class="Symbol">:</a> <a id="11346" class="Symbol"></a> <a id="11348" class="Symbol">{</a><a id="11349" href="/20.07/TSPL/2018/Exam/#11349" class="Bound">Γ</a> <a id="11351" href="/20.07/TSPL/2018/Exam/#11351" class="Bound">M</a> <a id="11353" href="/20.07/TSPL/2018/Exam/#11353" class="Bound">A</a> <a id="11355" href="/20.07/TSPL/2018/Exam/#11355" class="Bound">B</a><a id="11356" class="Symbol">}</a> <a id="11358" class="Symbol"></a> <a id="11360" href="/20.07/TSPL/2018/Exam/#11349" class="Bound">Γ</a> <a id="11362" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="11364" href="/20.07/TSPL/2018/Exam/#11351" class="Bound">M</a> <a id="11366" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="11368" href="/20.07/TSPL/2018/Exam/#11353" class="Bound">A</a> <a id="11370" class="Symbol"></a> <a id="11372" href="/20.07/TSPL/2018/Exam/#11349" class="Bound">Γ</a> <a id="11374" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="11376" href="/20.07/TSPL/2018/Exam/#11351" class="Bound">M</a> <a id="11378" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="11380" href="/20.07/TSPL/2018/Exam/#11355" class="Bound">B</a> <a id="11382" class="Symbol"></a> <a id="11384" href="/20.07/TSPL/2018/Exam/#11353" class="Bound">A</a> <a id="11386" href="Agda.Builtin.Equality.html#125" class="Datatype Operator"></a> <a id="11388" href="/20.07/TSPL/2018/Exam/#11355" class="Bound">B</a>
<a id="11392" href="/20.07/TSPL/2018/Exam/#11337" class="Function">uniq-↑</a> <a id="11399" class="Symbol">(</a><a id="11400" href="/20.07/TSPL/2018/Exam/#9513" class="InductiveConstructor">⊢`</a> <a id="11403" href="/20.07/TSPL/2018/Exam/#11403" class="Bound">∋x</a><a id="11405" class="Symbol">)</a> <a id="11407" class="Symbol">(</a><a id="11408" href="/20.07/TSPL/2018/Exam/#9513" class="InductiveConstructor">⊢`</a> <a id="11411" href="/20.07/TSPL/2018/Exam/#11411" class="Bound">∋x</a><a id="11414" class="Symbol">)</a> <a id="11422" class="Symbol">=</a> <a id="11425" href="/20.07/TSPL/2018/Exam/#11068" class="Function">uniq-∋</a> <a id="11432" href="/20.07/TSPL/2018/Exam/#11403" class="Bound">∋x</a> <a id="11435" href="/20.07/TSPL/2018/Exam/#11411" class="Bound">∋x</a>
<a id="11441" href="/20.07/TSPL/2018/Exam/#11337" class="Function">uniq-↑</a> <a id="11448" class="Symbol">(</a><a id="11449" href="/20.07/TSPL/2018/Exam/#11449" class="Bound">⊢L</a> <a id="11452" href="/20.07/TSPL/2018/Exam/#9591" class="InductiveConstructor Operator">·</a> <a id="11454" href="/20.07/TSPL/2018/Exam/#11454" class="Bound">⊢M</a><a id="11456" class="Symbol">)</a> <a id="11458" class="Symbol">(</a><a id="11459" href="/20.07/TSPL/2018/Exam/#11459" class="Bound">⊢L</a> <a id="11463" href="/20.07/TSPL/2018/Exam/#9591" class="InductiveConstructor Operator">·</a> <a id="11465" href="/20.07/TSPL/2018/Exam/#11465" class="Bound">⊢M</a><a id="11468" class="Symbol">)</a> <a id="11471" class="Symbol">=</a> <a id="11474" href="/20.07/TSPL/2018/Exam/#10931" class="Function">rng≡</a> <a id="11479" class="Symbol">(</a><a id="11480" href="/20.07/TSPL/2018/Exam/#11337" class="Function">uniq-↑</a> <a id="11487" href="/20.07/TSPL/2018/Exam/#11449" class="Bound">⊢L</a> <a id="11490" href="/20.07/TSPL/2018/Exam/#11459" class="Bound">⊢L</a><a id="11493" class="Symbol">)</a>
<a id="11497" href="/20.07/TSPL/2018/Exam/#11337" class="Function">uniq-↑</a> <a id="11504" class="Symbol">(</a><a id="11505" href="/20.07/TSPL/2018/Exam/#9700" class="InductiveConstructor">⊢↓</a> <a id="11508" href="/20.07/TSPL/2018/Exam/#11508" class="Bound">⊢M</a><a id="11510" class="Symbol">)</a> <a id="11512" class="Symbol">(</a><a id="11513" href="/20.07/TSPL/2018/Exam/#9700" class="InductiveConstructor">⊢↓</a> <a id="11516" href="/20.07/TSPL/2018/Exam/#11516" class="Bound">⊢M</a><a id="11519" class="Symbol">)</a> <a id="11527" class="Symbol">=</a> <a id="11530" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a>
</pre>
<h2 id="lookup-type-of-a-variable-in-the-context">Lookup type of a variable in the context</h2>
<pre class="Agda"> <a id="Problem3.ext∋"></a><a id="11591" href="/20.07/TSPL/2018/Exam/#11591" class="Function">ext∋</a> <a id="11596" class="Symbol">:</a> <a id="11598" class="Symbol"></a> <a id="11600" class="Symbol">{</a><a id="11601" href="/20.07/TSPL/2018/Exam/#11601" class="Bound">Γ</a> <a id="11603" href="/20.07/TSPL/2018/Exam/#11603" class="Bound">B</a> <a id="11605" href="/20.07/TSPL/2018/Exam/#11605" class="Bound">x</a> <a id="11607" href="/20.07/TSPL/2018/Exam/#11607" class="Bound">y</a><a id="11608" class="Symbol">}</a>
<a id="11614" class="Symbol"></a> <a id="11616" href="/20.07/TSPL/2018/Exam/#11605" class="Bound">x</a> <a id="11618" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.Core.html#799" class="Function Operator"></a> <a id="11620" href="/20.07/TSPL/2018/Exam/#11607" class="Bound">y</a>
<a id="11626" class="Symbol"></a> <a id="11628" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#535" class="Function Operator">¬</a> <a id="11630" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1783" class="Function">∃[</a> <a id="11633" href="/20.07/TSPL/2018/Exam/#11633" class="Bound">A</a> <a id="11635" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1783" class="Function">]</a><a id="11636" class="Symbol">(</a> <a id="11638" href="/20.07/TSPL/2018/Exam/#11601" class="Bound">Γ</a> <a id="11640" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="11642" href="/20.07/TSPL/2018/Exam/#11605" class="Bound">x</a> <a id="11644" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="11646" href="/20.07/TSPL/2018/Exam/#11633" class="Bound">A</a> <a id="11648" class="Symbol">)</a>
<a id="11656" class="Comment">-----------------------------</a>
<a id="11690" class="Symbol"></a> <a id="11692" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#535" class="Function Operator">¬</a> <a id="11694" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1783" class="Function">∃[</a> <a id="11697" href="/20.07/TSPL/2018/Exam/#11697" class="Bound">A</a> <a id="11699" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1783" class="Function">]</a><a id="11700" class="Symbol">(</a> <a id="11702" href="/20.07/TSPL/2018/Exam/#11601" class="Bound">Γ</a> <a id="11704" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator">,</a> <a id="11706" href="/20.07/TSPL/2018/Exam/#11607" class="Bound">y</a> <a id="11708" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator"></a> <a id="11710" href="/20.07/TSPL/2018/Exam/#11603" class="Bound">B</a> <a id="11712" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="11714" href="/20.07/TSPL/2018/Exam/#11605" class="Bound">x</a> <a id="11716" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="11718" href="/20.07/TSPL/2018/Exam/#11697" class="Bound">A</a> <a id="11720" class="Symbol">)</a>
<a id="11724" href="/20.07/TSPL/2018/Exam/#11591" class="Function">ext∋</a> <a id="11729" href="/20.07/TSPL/2018/Exam/#11729" class="Bound">x≢y</a> <a id="11733" class="Symbol">_</a> <a id="11736" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="11738" href="/20.07/TSPL/2018/Exam/#11738" class="Bound">A</a> <a id="11740" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="11742" href="/20.07/TSPL/2018/Exam/#9182" class="InductiveConstructor">Z</a> <a id="11744" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="11752" class="Symbol">=</a> <a id="11755" href="/20.07/TSPL/2018/Exam/#11729" class="Bound">x≢y</a> <a id="11759" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a>
<a id="11766" href="/20.07/TSPL/2018/Exam/#11591" class="Function">ext∋</a> <a id="11771" class="Symbol">_</a> <a id="11775" href="/20.07/TSPL/2018/Exam/#11775" class="Bound">¬∃</a> <a id="11778" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="11780" href="/20.07/TSPL/2018/Exam/#11780" class="Bound">A</a> <a id="11782" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="11784" href="/20.07/TSPL/2018/Exam/#9256" class="InductiveConstructor">S</a> <a id="11786" class="Symbol">_</a> <a id="11788" href="/20.07/TSPL/2018/Exam/#11788" class="Bound">⊢x</a> <a id="11791" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="11794" class="Symbol">=</a> <a id="11797" href="/20.07/TSPL/2018/Exam/#11775" class="Bound">¬∃</a> <a id="11800" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="11802" href="/20.07/TSPL/2018/Exam/#11780" class="Bound">A</a> <a id="11804" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="11806" href="/20.07/TSPL/2018/Exam/#11788" class="Bound">⊢x</a> <a id="11809" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a>
<a id="Problem3.lookup"></a><a id="11814" href="/20.07/TSPL/2018/Exam/#11814" class="Function">lookup</a> <a id="11821" class="Symbol">:</a> <a id="11823" class="Symbol"></a> <a id="11825" class="Symbol">(</a><a id="11826" href="/20.07/TSPL/2018/Exam/#11826" class="Bound">Γ</a> <a id="11828" class="Symbol">:</a> <a id="11830" href="/20.07/TSPL/2018/Exam/#8486" class="Datatype">Context</a><a id="11837" class="Symbol">)</a> <a id="11839" class="Symbol">(</a><a id="11840" href="/20.07/TSPL/2018/Exam/#11840" class="Bound">x</a> <a id="11842" class="Symbol">:</a> <a id="11844" href="/20.07/TSPL/2018/Exam/#8433" class="Function">Id</a><a id="11846" class="Symbol">)</a>
<a id="11854" class="Comment">-----------------------</a>
<a id="11882" class="Symbol"></a> <a id="11884" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#605" class="Datatype">Dec</a> <a id="11888" class="Symbol">(</a><a id="11889" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1783" class="Function">∃[</a> <a id="11892" href="/20.07/TSPL/2018/Exam/#11892" class="Bound">A</a> <a id="11894" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1783" class="Function">]</a><a id="11895" class="Symbol">(</a><a id="11896" href="/20.07/TSPL/2018/Exam/#11826" class="Bound">Γ</a> <a id="11898" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="11900" href="/20.07/TSPL/2018/Exam/#11840" class="Bound">x</a> <a id="11902" href="/20.07/TSPL/2018/Exam/#9137" class="Datatype Operator"></a> <a id="11904" href="/20.07/TSPL/2018/Exam/#11892" class="Bound">A</a><a id="11905" class="Symbol">))</a>
<a id="11910" href="/20.07/TSPL/2018/Exam/#11814" class="Function">lookup</a> <a id="11917" href="/20.07/TSPL/2018/Exam/#8510" class="InductiveConstructor"></a> <a id="11919" href="/20.07/TSPL/2018/Exam/#11919" class="Bound">x</a> <a id="11944" class="Symbol">=</a> <a id="11947" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="11951" class="Symbol"></a> <a id="11954" class="Symbol">())</a>
<a id="11960" href="/20.07/TSPL/2018/Exam/#11814" class="Function">lookup</a> <a id="11967" class="Symbol">(</a><a id="11968" href="/20.07/TSPL/2018/Exam/#11968" class="Bound">Γ</a> <a id="11970" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator">,</a> <a id="11972" href="/20.07/TSPL/2018/Exam/#11972" class="Bound">y</a> <a id="11974" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator"></a> <a id="11976" href="/20.07/TSPL/2018/Exam/#11976" class="Bound">B</a><a id="11977" class="Symbol">)</a> <a id="11979" href="/20.07/TSPL/2018/Exam/#11979" class="Bound">x</a> <a id="11981" class="Keyword">with</a> <a id="11986" href="/20.07/TSPL/2018/Exam/#11979" class="Bound">x</a> <a id="11988" href="https://agda.github.io/agda-stdlib/v1.1/Data.String.Properties.html#2569" class="Function Operator"></a> <a id="11990" href="/20.07/TSPL/2018/Exam/#11972" class="Bound">y</a>
<a id="11994" class="Symbol">...</a> <a id="11998" class="Symbol">|</a> <a id="12000" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="12004" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a> <a id="12028" class="Symbol">=</a> <a id="12031" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="12035" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12037" class="Bound">B</a> <a id="12039" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="12041" href="/20.07/TSPL/2018/Exam/#9182" class="InductiveConstructor">Z</a> <a id="12043" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a>
<a id="12047" class="Symbol">...</a> <a id="12051" class="Symbol">|</a> <a id="12053" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="12056" href="/20.07/TSPL/2018/Exam/#12056" class="Bound">x≢y</a> <a id="12060" class="Keyword">with</a> <a id="12065" href="/20.07/TSPL/2018/Exam/#11814" class="Function">lookup</a> <a id="12072" class="Bound">Γ</a> <a id="12074" class="Bound">x</a>
<a id="12078" class="Symbol">...</a> <a id="12094" class="Symbol">|</a> <a id="12096" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="12100" href="/20.07/TSPL/2018/Exam/#12100" class="Bound">¬∃</a> <a id="12112" class="Symbol">=</a> <a id="12115" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="12119" class="Symbol">(</a><a id="12120" href="/20.07/TSPL/2018/Exam/#11591" class="Function">ext∋</a> <a id="12125" class="Bound">x≢y</a> <a id="12129" href="/20.07/TSPL/2018/Exam/#12100" class="Bound">¬∃</a><a id="12131" class="Symbol">)</a>
<a id="12135" class="Symbol">...</a> <a id="12151" class="Symbol">|</a> <a id="12153" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="12157" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12159" href="/20.07/TSPL/2018/Exam/#12159" class="Bound">A</a> <a id="12161" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="12163" href="/20.07/TSPL/2018/Exam/#12163" class="Bound">⊢x</a> <a id="12166" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12169" class="Symbol">=</a> <a id="12172" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="12176" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12178" href="/20.07/TSPL/2018/Exam/#12159" class="Bound">A</a> <a id="12180" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="12182" href="/20.07/TSPL/2018/Exam/#9256" class="InductiveConstructor">S</a> <a id="12184" class="Bound">x≢y</a> <a id="12188" href="/20.07/TSPL/2018/Exam/#12163" class="Bound">⊢x</a> <a id="12191" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a>
</pre>
<h3 id="promoting-negations">Promoting negations</h3>
<pre class="Agda"> <a id="Problem3.¬arg"></a><a id="12229" href="/20.07/TSPL/2018/Exam/#12229" class="Function">¬arg</a> <a id="12234" class="Symbol">:</a> <a id="12236" class="Symbol"></a> <a id="12238" class="Symbol">{</a><a id="12239" href="/20.07/TSPL/2018/Exam/#12239" class="Bound">Γ</a> <a id="12241" href="/20.07/TSPL/2018/Exam/#12241" class="Bound">A</a> <a id="12243" href="/20.07/TSPL/2018/Exam/#12243" class="Bound">B</a> <a id="12245" href="/20.07/TSPL/2018/Exam/#12245" class="Bound">L</a> <a id="12247" href="/20.07/TSPL/2018/Exam/#12247" class="Bound">M</a><a id="12248" class="Symbol">}</a>
<a id="12254" class="Symbol"></a> <a id="12256" href="/20.07/TSPL/2018/Exam/#12239" class="Bound">Γ</a> <a id="12258" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="12260" href="/20.07/TSPL/2018/Exam/#12245" class="Bound">L</a> <a id="12262" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="12264" href="/20.07/TSPL/2018/Exam/#12241" class="Bound">A</a> <a id="12266" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="12268" href="/20.07/TSPL/2018/Exam/#12243" class="Bound">B</a>
<a id="12274" class="Symbol"></a> <a id="12276" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#535" class="Function Operator">¬</a> <a id="12278" href="/20.07/TSPL/2018/Exam/#12239" class="Bound">Γ</a> <a id="12280" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="12282" href="/20.07/TSPL/2018/Exam/#12247" class="Bound">M</a> <a id="12284" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="12286" href="/20.07/TSPL/2018/Exam/#12241" class="Bound">A</a>
<a id="12294" class="Comment">-------------------------</a>
<a id="12324" class="Symbol"></a> <a id="12326" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#535" class="Function Operator">¬</a> <a id="12328" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1783" class="Function">∃[</a> <a id="12331" href="/20.07/TSPL/2018/Exam/#12331" class="Bound">B</a> <a id="12334" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1783" class="Function">]</a><a id="12335" class="Symbol">(</a><a id="12336" href="/20.07/TSPL/2018/Exam/#12239" class="Bound">Γ</a> <a id="12338" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="12340" href="/20.07/TSPL/2018/Exam/#12245" class="Bound">L</a> <a id="12342" href="/20.07/TSPL/2018/Exam/#8693" class="InductiveConstructor Operator">·</a> <a id="12344" href="/20.07/TSPL/2018/Exam/#12247" class="Bound">M</a> <a id="12346" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="12348" href="/20.07/TSPL/2018/Exam/#12331" class="Bound">B</a><a id="12350" class="Symbol">)</a>
<a id="12354" href="/20.07/TSPL/2018/Exam/#12229" class="Function">¬arg</a> <a id="12359" href="/20.07/TSPL/2018/Exam/#12359" class="Bound">⊢L</a> <a id="12362" href="/20.07/TSPL/2018/Exam/#12362" class="Bound">¬⊢M</a> <a id="12366" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12368" href="/20.07/TSPL/2018/Exam/#12368" class="Bound">B</a> <a id="12371" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="12373" href="/20.07/TSPL/2018/Exam/#12373" class="Bound">⊢L</a> <a id="12377" href="/20.07/TSPL/2018/Exam/#9591" class="InductiveConstructor Operator">·</a> <a id="12379" href="/20.07/TSPL/2018/Exam/#12379" class="Bound">⊢M</a> <a id="12383" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12385" class="Keyword">rewrite</a> <a id="12393" href="/20.07/TSPL/2018/Exam/#10861" class="Function">dom≡</a> <a id="12398" class="Symbol">(</a><a id="12399" href="/20.07/TSPL/2018/Exam/#11337" class="Function">uniq-↑</a> <a id="12406" href="/20.07/TSPL/2018/Exam/#12359" class="Bound">⊢L</a> <a id="12409" href="/20.07/TSPL/2018/Exam/#12373" class="Bound">⊢L</a><a id="12412" class="Symbol">)</a> <a id="12414" class="Symbol">=</a> <a id="12416" href="/20.07/TSPL/2018/Exam/#12362" class="Bound">¬⊢M</a> <a id="12420" href="/20.07/TSPL/2018/Exam/#12379" class="Bound">⊢M</a>
<a id="Problem3.¬switch"></a><a id="12427" href="/20.07/TSPL/2018/Exam/#12427" class="Function">¬switch</a> <a id="12435" class="Symbol">:</a> <a id="12437" class="Symbol"></a> <a id="12439" class="Symbol">{</a><a id="12440" href="/20.07/TSPL/2018/Exam/#12440" class="Bound">Γ</a> <a id="12442" href="/20.07/TSPL/2018/Exam/#12442" class="Bound">M</a> <a id="12444" href="/20.07/TSPL/2018/Exam/#12444" class="Bound">A</a> <a id="12446" href="/20.07/TSPL/2018/Exam/#12446" class="Bound">B</a><a id="12447" class="Symbol">}</a>
<a id="12453" class="Symbol"></a> <a id="12455" href="/20.07/TSPL/2018/Exam/#12440" class="Bound">Γ</a> <a id="12457" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="12459" href="/20.07/TSPL/2018/Exam/#12442" class="Bound">M</a> <a id="12461" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="12463" href="/20.07/TSPL/2018/Exam/#12444" class="Bound">A</a>
<a id="12469" class="Symbol"></a> <a id="12471" href="/20.07/TSPL/2018/Exam/#12444" class="Bound">A</a> <a id="12473" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.Core.html#799" class="Function Operator"></a> <a id="12475" href="/20.07/TSPL/2018/Exam/#12446" class="Bound">B</a>
<a id="12483" class="Comment">---------------</a>
<a id="12503" class="Symbol"></a> <a id="12505" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#535" class="Function Operator">¬</a> <a id="12507" href="/20.07/TSPL/2018/Exam/#12440" class="Bound">Γ</a> <a id="12509" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="12511" class="Symbol">(</a><a id="12512" href="/20.07/TSPL/2018/Exam/#12442" class="Bound">M</a> <a id="12514" href="/20.07/TSPL/2018/Exam/#9068" class="InductiveConstructor Operator"></a><a id="12515" class="Symbol">)</a> <a id="12517" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="12519" href="/20.07/TSPL/2018/Exam/#12446" class="Bound">B</a>
<a id="12523" href="/20.07/TSPL/2018/Exam/#12427" class="Function">¬switch</a> <a id="12531" href="/20.07/TSPL/2018/Exam/#12531" class="Bound">⊢M</a> <a id="12534" href="/20.07/TSPL/2018/Exam/#12534" class="Bound">A≢B</a> <a id="12538" class="Symbol">(</a><a id="12539" href="/20.07/TSPL/2018/Exam/#10347" class="InductiveConstructor">⊢↑</a> <a id="12542" href="/20.07/TSPL/2018/Exam/#12542" class="Bound">⊢M</a> <a id="12546" href="/20.07/TSPL/2018/Exam/#12546" class="Bound">A≡B</a><a id="12550" class="Symbol">)</a> <a id="12552" class="Keyword">rewrite</a> <a id="12560" href="/20.07/TSPL/2018/Exam/#11337" class="Function">uniq-↑</a> <a id="12567" href="/20.07/TSPL/2018/Exam/#12531" class="Bound">⊢M</a> <a id="12570" href="/20.07/TSPL/2018/Exam/#12542" class="Bound">⊢M</a> <a id="12574" class="Symbol">=</a> <a id="12576" href="/20.07/TSPL/2018/Exam/#12534" class="Bound">A≢B</a> <a id="12580" href="/20.07/TSPL/2018/Exam/#12546" class="Bound">A≡B</a>
</pre>
<h2 id="synthesize-and-inherit-types">Synthesize and inherit types</h2>
<pre class="Agda"> <a id="Problem3.synthesize"></a><a id="12630" href="/20.07/TSPL/2018/Exam/#12630" class="Function">synthesize</a> <a id="12641" class="Symbol">:</a> <a id="12643" class="Symbol"></a> <a id="12645" class="Symbol">(</a><a id="12646" href="/20.07/TSPL/2018/Exam/#12646" class="Bound">Γ</a> <a id="12648" class="Symbol">:</a> <a id="12650" href="/20.07/TSPL/2018/Exam/#8486" class="Datatype">Context</a><a id="12657" class="Symbol">)</a> <a id="12659" class="Symbol">(</a><a id="12660" href="/20.07/TSPL/2018/Exam/#12660" class="Bound">M</a> <a id="12662" class="Symbol">:</a> <a id="12664" href="/20.07/TSPL/2018/Exam/#8595" class="Datatype">Term⁺</a><a id="12669" class="Symbol">)</a>
<a id="12677" class="Comment">-----------------------</a>
<a id="12705" class="Symbol"></a> <a id="12707" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#605" class="Datatype">Dec</a> <a id="12711" class="Symbol">(</a><a id="12712" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1783" class="Function">∃[</a> <a id="12715" href="/20.07/TSPL/2018/Exam/#12715" class="Bound">A</a> <a id="12717" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1783" class="Function">]</a><a id="12718" class="Symbol">(</a><a id="12719" href="/20.07/TSPL/2018/Exam/#12646" class="Bound">Γ</a> <a id="12721" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="12723" href="/20.07/TSPL/2018/Exam/#12660" class="Bound">M</a> <a id="12725" href="/20.07/TSPL/2018/Exam/#9407" class="Datatype Operator"></a> <a id="12727" href="/20.07/TSPL/2018/Exam/#12715" class="Bound">A</a><a id="12728" class="Symbol">))</a>
<a id="Problem3.inherit"></a><a id="12734" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="12742" class="Symbol">:</a> <a id="12744" class="Symbol"></a> <a id="12746" class="Symbol">(</a><a id="12747" href="/20.07/TSPL/2018/Exam/#12747" class="Bound">Γ</a> <a id="12749" class="Symbol">:</a> <a id="12751" href="/20.07/TSPL/2018/Exam/#8486" class="Datatype">Context</a><a id="12758" class="Symbol">)</a> <a id="12760" class="Symbol">(</a><a id="12761" href="/20.07/TSPL/2018/Exam/#12761" class="Bound">M</a> <a id="12763" class="Symbol">:</a> <a id="12765" href="/20.07/TSPL/2018/Exam/#8614" class="Datatype">Term⁻</a><a id="12770" class="Symbol">)</a> <a id="12772" class="Symbol">(</a><a id="12773" href="/20.07/TSPL/2018/Exam/#12773" class="Bound">A</a> <a id="12775" class="Symbol">:</a> <a id="12777" href="/20.07/TSPL/2018/Exam/#8340" class="Datatype">Type</a><a id="12781" class="Symbol">)</a>
<a id="12789" class="Comment">---------------</a>
<a id="12809" class="Symbol"></a> <a id="12811" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#605" class="Datatype">Dec</a> <a id="12815" class="Symbol">(</a><a id="12816" href="/20.07/TSPL/2018/Exam/#12747" class="Bound">Γ</a> <a id="12818" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="12820" href="/20.07/TSPL/2018/Exam/#12761" class="Bound">M</a> <a id="12822" href="/20.07/TSPL/2018/Exam/#9451" class="Datatype Operator"></a> <a id="12824" href="/20.07/TSPL/2018/Exam/#12773" class="Bound">A</a><a id="12825" class="Symbol">)</a>
<a id="12830" href="/20.07/TSPL/2018/Exam/#12630" class="Function">synthesize</a> <a id="12841" href="/20.07/TSPL/2018/Exam/#12841" class="Bound">Γ</a> <a id="12843" class="Symbol">(</a><a id="12844" href="/20.07/TSPL/2018/Exam/#8650" class="InductiveConstructor Operator">`</a> <a id="12846" href="/20.07/TSPL/2018/Exam/#12846" class="Bound">x</a><a id="12847" class="Symbol">)</a> <a id="12849" class="Keyword">with</a> <a id="12854" href="/20.07/TSPL/2018/Exam/#11814" class="Function">lookup</a> <a id="12861" href="/20.07/TSPL/2018/Exam/#12841" class="Bound">Γ</a> <a id="12863" href="/20.07/TSPL/2018/Exam/#12846" class="Bound">x</a>
<a id="12867" class="Symbol">...</a> <a id="12871" class="Symbol">|</a> <a id="12873" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="12877" href="/20.07/TSPL/2018/Exam/#12877" class="Bound">¬∃</a> <a id="12893" class="Symbol">=</a> <a id="12896" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="12900" class="Symbol">(λ{</a> <a id="12904" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12906" href="/20.07/TSPL/2018/Exam/#12906" class="Bound">A</a> <a id="12908" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="12910" href="/20.07/TSPL/2018/Exam/#9513" class="InductiveConstructor">⊢`</a> <a id="12913" href="/20.07/TSPL/2018/Exam/#12913" class="Bound">∋x</a> <a id="12916" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12918" class="Symbol"></a> <a id="12920" href="/20.07/TSPL/2018/Exam/#12877" class="Bound">¬∃</a> <a id="12923" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12925" href="/20.07/TSPL/2018/Exam/#12906" class="Bound">A</a> <a id="12927" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="12929" href="/20.07/TSPL/2018/Exam/#12913" class="Bound">∋x</a> <a id="12932" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12934" class="Symbol">})</a>
<a id="12939" class="Symbol">...</a> <a id="12943" class="Symbol">|</a> <a id="12945" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="12949" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12951" href="/20.07/TSPL/2018/Exam/#12951" class="Bound">A</a> <a id="12953" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="12955" href="/20.07/TSPL/2018/Exam/#12955" class="Bound">∋x</a> <a id="12958" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12965" class="Symbol">=</a> <a id="12968" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="12972" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="12974" href="/20.07/TSPL/2018/Exam/#12951" class="Bound">A</a> <a id="12976" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="12978" href="/20.07/TSPL/2018/Exam/#9513" class="InductiveConstructor">⊢`</a> <a id="12981" href="/20.07/TSPL/2018/Exam/#12955" class="Bound">∋x</a> <a id="12984" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a>
<a id="12988" href="/20.07/TSPL/2018/Exam/#12630" class="Function">synthesize</a> <a id="12999" href="/20.07/TSPL/2018/Exam/#12999" class="Bound">Γ</a> <a id="13001" class="Symbol">(</a><a id="13002" href="/20.07/TSPL/2018/Exam/#13002" class="Bound">L</a> <a id="13004" href="/20.07/TSPL/2018/Exam/#8693" class="InductiveConstructor Operator">·</a> <a id="13006" href="/20.07/TSPL/2018/Exam/#13006" class="Bound">M</a><a id="13007" class="Symbol">)</a> <a id="13009" class="Keyword">with</a> <a id="13014" href="/20.07/TSPL/2018/Exam/#12630" class="Function">synthesize</a> <a id="13025" href="/20.07/TSPL/2018/Exam/#12999" class="Bound">Γ</a> <a id="13027" href="/20.07/TSPL/2018/Exam/#13002" class="Bound">L</a>
<a id="13031" class="Symbol">...</a> <a id="13035" class="Symbol">|</a> <a id="13037" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13041" href="/20.07/TSPL/2018/Exam/#13041" class="Bound">¬∃</a> <a id="13057" class="Symbol">=</a> <a id="13060" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13064" class="Symbol">(λ{</a> <a id="13068" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13070" class="Symbol">_</a> <a id="13072" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="13074" href="/20.07/TSPL/2018/Exam/#13074" class="Bound">⊢L</a> <a id="13078" href="/20.07/TSPL/2018/Exam/#9591" class="InductiveConstructor Operator">·</a> <a id="13080" class="Symbol">_</a> <a id="13083" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13086" class="Symbol"></a> <a id="13089" href="/20.07/TSPL/2018/Exam/#13041" class="Bound">¬∃</a> <a id="13092" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13094" class="Symbol">_</a> <a id="13096" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="13098" href="/20.07/TSPL/2018/Exam/#13074" class="Bound">⊢L</a> <a id="13101" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13103" class="Symbol">})</a>
<a id="13108" class="Symbol">...</a> <a id="13112" class="Symbol">|</a> <a id="13114" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="13118" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13120" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="13123" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="13128" href="/20.07/TSPL/2018/Exam/#13128" class="Bound">⊢L</a> <a id="13131" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13134" class="Symbol">=</a> <a id="13137" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13141" class="Symbol">(λ{</a> <a id="13145" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13147" class="Symbol">_</a> <a id="13149" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="13151" href="/20.07/TSPL/2018/Exam/#13151" class="Bound">⊢L</a> <a id="13155" href="/20.07/TSPL/2018/Exam/#9591" class="InductiveConstructor Operator">·</a> <a id="13157" class="Symbol">_</a> <a id="13160" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13163" class="Symbol"></a> <a id="13166" href="/20.07/TSPL/2018/Exam/#11001" class="Function">ℕ≢⇒</a> <a id="13170" class="Symbol">(</a><a id="13171" href="/20.07/TSPL/2018/Exam/#11337" class="Function">uniq-↑</a> <a id="13178" href="/20.07/TSPL/2018/Exam/#13128" class="Bound">⊢L</a> <a id="13181" href="/20.07/TSPL/2018/Exam/#13151" class="Bound">⊢L</a><a id="13184" class="Symbol">)</a> <a id="13186" class="Symbol">})</a>
<a id="13191" class="Symbol">...</a> <a id="13195" class="Symbol">|</a> <a id="13197" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="13201" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13203" href="/20.07/TSPL/2018/Exam/#13203" class="Bound">A</a> <a id="13205" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="13207" href="/20.07/TSPL/2018/Exam/#13207" class="Bound">B</a> <a id="13209" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="13211" href="/20.07/TSPL/2018/Exam/#13211" class="Bound">⊢L</a> <a id="13214" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13216" class="Keyword">with</a> <a id="13221" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="13229" class="Bound">Γ</a> <a id="13231" class="Bound">M</a> <a id="13233" href="/20.07/TSPL/2018/Exam/#13203" class="Bound">A</a>
<a id="13237" class="Symbol">...</a> <a id="13244" class="Symbol">|</a> <a id="13246" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13250" href="/20.07/TSPL/2018/Exam/#13250" class="Bound">¬⊢M</a> <a id="13263" class="Symbol">=</a> <a id="13266" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13270" class="Symbol">(</a><a id="13271" href="/20.07/TSPL/2018/Exam/#12229" class="Function">¬arg</a> <a id="13276" class="Bound">⊢L</a> <a id="13279" href="/20.07/TSPL/2018/Exam/#13250" class="Bound">¬⊢M</a><a id="13282" class="Symbol">)</a>
<a id="13286" class="Symbol">...</a> <a id="13293" class="Symbol">|</a> <a id="13295" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="13299" href="/20.07/TSPL/2018/Exam/#13299" class="Bound">⊢M</a> <a id="13312" class="Symbol">=</a> <a id="13315" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="13319" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13321" class="Bound">B</a> <a id="13323" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="13325" class="Bound">⊢L</a> <a id="13328" href="/20.07/TSPL/2018/Exam/#9591" class="InductiveConstructor Operator">·</a> <a id="13330" href="/20.07/TSPL/2018/Exam/#13299" class="Bound">⊢M</a> <a id="13333" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a>
<a id="13337" href="/20.07/TSPL/2018/Exam/#12630" class="Function">synthesize</a> <a id="13348" href="/20.07/TSPL/2018/Exam/#13348" class="Bound">Γ</a> <a id="13350" class="Symbol">(</a><a id="13351" href="/20.07/TSPL/2018/Exam/#13351" class="Bound">M</a> <a id="13353" href="/20.07/TSPL/2018/Exam/#8747" class="InductiveConstructor Operator"></a> <a id="13355" href="/20.07/TSPL/2018/Exam/#13355" class="Bound">A</a><a id="13356" class="Symbol">)</a> <a id="13358" class="Keyword">with</a> <a id="13363" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="13371" href="/20.07/TSPL/2018/Exam/#13348" class="Bound">Γ</a> <a id="13373" href="/20.07/TSPL/2018/Exam/#13351" class="Bound">M</a> <a id="13375" href="/20.07/TSPL/2018/Exam/#13355" class="Bound">A</a>
<a id="13379" class="Symbol">...</a> <a id="13383" class="Symbol">|</a> <a id="13385" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13389" href="/20.07/TSPL/2018/Exam/#13389" class="Bound">¬⊢M</a> <a id="13405" class="Symbol">=</a> <a id="13408" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13412" class="Symbol">(λ{</a> <a id="13416" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13418" class="Symbol">_</a> <a id="13420" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="13422" href="/20.07/TSPL/2018/Exam/#9700" class="InductiveConstructor">⊢↓</a> <a id="13425" href="/20.07/TSPL/2018/Exam/#13425" class="Bound">⊢M</a> <a id="13428" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13431" class="Symbol"></a> <a id="13434" href="/20.07/TSPL/2018/Exam/#13389" class="Bound">¬⊢M</a> <a id="13438" href="/20.07/TSPL/2018/Exam/#13425" class="Bound">⊢M</a> <a id="13441" class="Symbol">})</a>
<a id="13446" class="Symbol">...</a> <a id="13450" class="Symbol">|</a> <a id="13452" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="13456" href="/20.07/TSPL/2018/Exam/#13456" class="Bound">⊢M</a> <a id="13472" class="Symbol">=</a> <a id="13475" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="13479" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="13481" class="Bound">A</a> <a id="13483" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="13485" href="/20.07/TSPL/2018/Exam/#9700" class="InductiveConstructor">⊢↓</a> <a id="13488" href="/20.07/TSPL/2018/Exam/#13456" class="Bound">⊢M</a> <a id="13491" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a>
<a id="13496" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="13504" href="/20.07/TSPL/2018/Exam/#13504" class="Bound">Γ</a> <a id="13506" class="Symbol">(</a><a id="13507" href="/20.07/TSPL/2018/Exam/#8820" class="InductiveConstructor Operator">ƛ</a> <a id="13509" href="/20.07/TSPL/2018/Exam/#13509" class="Bound">x</a> <a id="13511" href="/20.07/TSPL/2018/Exam/#8820" class="InductiveConstructor Operator"></a> <a id="13513" href="/20.07/TSPL/2018/Exam/#13513" class="Bound">N</a><a id="13514" class="Symbol">)</a> <a id="13516" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="13524" class="Symbol">=</a> <a id="13527" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13531" class="Symbol">(λ())</a>
<a id="13539" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="13547" href="/20.07/TSPL/2018/Exam/#13547" class="Bound">Γ</a> <a id="13549" class="Symbol">(</a><a id="13550" href="/20.07/TSPL/2018/Exam/#8820" class="InductiveConstructor Operator">ƛ</a> <a id="13552" href="/20.07/TSPL/2018/Exam/#13552" class="Bound">x</a> <a id="13554" href="/20.07/TSPL/2018/Exam/#8820" class="InductiveConstructor Operator"></a> <a id="13556" href="/20.07/TSPL/2018/Exam/#13556" class="Bound">N</a><a id="13557" class="Symbol">)</a> <a id="13559" class="Symbol">(</a><a id="13560" href="/20.07/TSPL/2018/Exam/#13560" class="Bound">A</a> <a id="13562" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="13564" href="/20.07/TSPL/2018/Exam/#13564" class="Bound">B</a><a id="13565" class="Symbol">)</a> <a id="13567" class="Keyword">with</a> <a id="13572" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="13580" class="Symbol">(</a><a id="13581" href="/20.07/TSPL/2018/Exam/#13547" class="Bound">Γ</a> <a id="13583" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator">,</a> <a id="13585" href="/20.07/TSPL/2018/Exam/#13552" class="Bound">x</a> <a id="13587" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator"></a> <a id="13589" href="/20.07/TSPL/2018/Exam/#13560" class="Bound">A</a><a id="13590" class="Symbol">)</a> <a id="13592" href="/20.07/TSPL/2018/Exam/#13556" class="Bound">N</a> <a id="13594" href="/20.07/TSPL/2018/Exam/#13564" class="Bound">B</a>
<a id="13598" class="Symbol">...</a> <a id="13602" class="Symbol">|</a> <a id="13604" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13607" href="/20.07/TSPL/2018/Exam/#13607" class="Bound">¬⊢N</a> <a id="13626" class="Symbol">=</a> <a id="13629" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13633" class="Symbol">(λ{</a> <a id="13637" class="Symbol">(</a><a id="13638" href="/20.07/TSPL/2018/Exam/#9806" class="InductiveConstructor">⊢ƛ</a> <a id="13641" href="/20.07/TSPL/2018/Exam/#13641" class="Bound">⊢N</a><a id="13643" class="Symbol">)</a> <a id="13646" class="Symbol"></a> <a id="13649" href="/20.07/TSPL/2018/Exam/#13607" class="Bound">¬⊢N</a> <a id="13653" href="/20.07/TSPL/2018/Exam/#13641" class="Bound">⊢N</a> <a id="13656" class="Symbol">})</a>
<a id="13661" class="Symbol">...</a> <a id="13665" class="Symbol">|</a> <a id="13667" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="13671" href="/20.07/TSPL/2018/Exam/#13671" class="Bound">⊢N</a> <a id="13689" class="Symbol">=</a> <a id="13692" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="13696" class="Symbol">(</a><a id="13697" href="/20.07/TSPL/2018/Exam/#9806" class="InductiveConstructor">⊢ƛ</a> <a id="13700" href="/20.07/TSPL/2018/Exam/#13671" class="Bound">⊢N</a><a id="13702" class="Symbol">)</a>
<a id="13706" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="13714" href="/20.07/TSPL/2018/Exam/#13714" class="Bound">Γ</a> <a id="13716" href="/20.07/TSPL/2018/Exam/#8870" class="InductiveConstructor">`zero</a> <a id="13722" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="13734" class="Symbol">=</a> <a id="13737" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="13741" href="/20.07/TSPL/2018/Exam/#9912" class="InductiveConstructor">⊢zero</a>
<a id="13749" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="13757" href="/20.07/TSPL/2018/Exam/#13757" class="Bound">Γ</a> <a id="13759" href="/20.07/TSPL/2018/Exam/#8870" class="InductiveConstructor">`zero</a> <a id="13765" class="Symbol">(</a><a id="13766" href="/20.07/TSPL/2018/Exam/#13766" class="Bound">A</a> <a id="13768" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="13770" href="/20.07/TSPL/2018/Exam/#13770" class="Bound">B</a><a id="13771" class="Symbol">)</a> <a id="13777" class="Symbol">=</a> <a id="13780" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13784" class="Symbol">(λ())</a>
<a id="13792" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="13800" href="/20.07/TSPL/2018/Exam/#13800" class="Bound">Γ</a> <a id="13802" class="Symbol">(</a><a id="13803" href="/20.07/TSPL/2018/Exam/#8907" class="InductiveConstructor Operator">`suc</a> <a id="13808" href="/20.07/TSPL/2018/Exam/#13808" class="Bound">M</a><a id="13809" class="Symbol">)</a> <a id="13811" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="13814" class="Keyword">with</a> <a id="13819" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="13827" href="/20.07/TSPL/2018/Exam/#13800" class="Bound">Γ</a> <a id="13829" href="/20.07/TSPL/2018/Exam/#13808" class="Bound">M</a> <a id="13831" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a>
<a id="13836" class="Symbol">...</a> <a id="13840" class="Symbol">|</a> <a id="13842" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13845" href="/20.07/TSPL/2018/Exam/#13845" class="Bound">¬⊢M</a> <a id="13864" class="Symbol">=</a> <a id="13867" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13871" class="Symbol">(λ{</a> <a id="13875" class="Symbol">(</a><a id="13876" href="/20.07/TSPL/2018/Exam/#9977" class="InductiveConstructor">⊢suc</a> <a id="13881" href="/20.07/TSPL/2018/Exam/#13881" class="Bound">⊢M</a><a id="13883" class="Symbol">)</a> <a id="13886" class="Symbol"></a> <a id="13889" href="/20.07/TSPL/2018/Exam/#13845" class="Bound">¬⊢M</a> <a id="13893" href="/20.07/TSPL/2018/Exam/#13881" class="Bound">⊢M</a> <a id="13896" class="Symbol">})</a>
<a id="13901" class="Symbol">...</a> <a id="13905" class="Symbol">|</a> <a id="13907" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="13911" href="/20.07/TSPL/2018/Exam/#13911" class="Bound">⊢M</a> <a id="13929" class="Symbol">=</a> <a id="13932" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="13936" class="Symbol">(</a><a id="13937" href="/20.07/TSPL/2018/Exam/#9977" class="InductiveConstructor">⊢suc</a> <a id="13942" href="/20.07/TSPL/2018/Exam/#13911" class="Bound">⊢M</a><a id="13944" class="Symbol">)</a>
<a id="13948" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="13956" href="/20.07/TSPL/2018/Exam/#13956" class="Bound">Γ</a> <a id="13958" class="Symbol">(</a><a id="13959" href="/20.07/TSPL/2018/Exam/#8907" class="InductiveConstructor Operator">`suc</a> <a id="13964" href="/20.07/TSPL/2018/Exam/#13964" class="Bound">M</a><a id="13965" class="Symbol">)</a> <a id="13967" class="Symbol">(</a><a id="13968" href="/20.07/TSPL/2018/Exam/#13968" class="Bound">A</a> <a id="13970" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="13972" href="/20.07/TSPL/2018/Exam/#13972" class="Bound">B</a><a id="13973" class="Symbol">)</a> <a id="13976" class="Symbol">=</a> <a id="13979" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="13983" class="Symbol">(λ())</a>
<a id="13991" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="13999" href="/20.07/TSPL/2018/Exam/#13999" class="Bound">Γ</a> <a id="14001" class="Symbol">(</a><a id="14002" href="/20.07/TSPL/2018/Exam/#8952" class="InductiveConstructor Operator">`case</a> <a id="14008" href="/20.07/TSPL/2018/Exam/#14008" class="Bound">L</a> <a id="14010" href="/20.07/TSPL/2018/Exam/#8952" class="InductiveConstructor Operator">[zero⇒</a> <a id="14017" href="/20.07/TSPL/2018/Exam/#14017" class="Bound">M</a> <a id="14019" href="/20.07/TSPL/2018/Exam/#8952" class="InductiveConstructor Operator">|suc</a> <a id="14024" href="/20.07/TSPL/2018/Exam/#14024" class="Bound">x</a> <a id="14026" href="/20.07/TSPL/2018/Exam/#8952" class="InductiveConstructor Operator"></a> <a id="14028" href="/20.07/TSPL/2018/Exam/#14028" class="Bound">N</a> <a id="14030" href="/20.07/TSPL/2018/Exam/#8952" class="InductiveConstructor Operator">]</a><a id="14031" class="Symbol">)</a> <a id="14033" href="/20.07/TSPL/2018/Exam/#14033" class="Bound">A</a> <a id="14035" class="Keyword">with</a> <a id="14040" href="/20.07/TSPL/2018/Exam/#12630" class="Function">synthesize</a> <a id="14051" href="/20.07/TSPL/2018/Exam/#13999" class="Bound">Γ</a> <a id="14053" href="/20.07/TSPL/2018/Exam/#14008" class="Bound">L</a>
<a id="14057" class="Symbol">...</a> <a id="14061" class="Symbol">|</a> <a id="14063" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14066" href="/20.07/TSPL/2018/Exam/#14066" class="Bound">¬∃</a> <a id="14085" class="Symbol">=</a> <a id="14088" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14092" class="Symbol">(λ{</a> <a id="14096" class="Symbol">(</a><a id="14097" href="/20.07/TSPL/2018/Exam/#10064" class="InductiveConstructor">⊢case</a> <a id="14103" href="/20.07/TSPL/2018/Exam/#14103" class="Bound">⊢L</a> <a id="14107" class="Symbol">_</a> <a id="14109" class="Symbol">_)</a> <a id="14112" class="Symbol"></a> <a id="14114" href="/20.07/TSPL/2018/Exam/#14066" class="Bound">¬∃</a> <a id="14117" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="14119" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="14122" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="14124" href="/20.07/TSPL/2018/Exam/#14103" class="Bound">⊢L</a> <a id="14127" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a><a id="14128" class="Symbol">})</a>
<a id="14133" class="Symbol">...</a> <a id="14137" class="Symbol">|</a> <a id="14139" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="14143" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="14145" class="Symbol">_</a> <a id="14147" href="/20.07/TSPL/2018/Exam/#8361" class="InductiveConstructor Operator"></a> <a id="14149" class="Symbol">_</a> <a id="14151" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="14153" href="/20.07/TSPL/2018/Exam/#14153" class="Bound">⊢L</a> <a id="14156" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="14161" class="Symbol">=</a> <a id="14164" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14168" class="Symbol">(λ{</a> <a id="14172" class="Symbol">(</a><a id="14173" href="/20.07/TSPL/2018/Exam/#10064" class="InductiveConstructor">⊢case</a> <a id="14179" href="/20.07/TSPL/2018/Exam/#14179" class="Bound">⊢L</a> <a id="14183" class="Symbol">_</a> <a id="14185" class="Symbol">_)</a> <a id="14188" class="Symbol"></a> <a id="14190" href="/20.07/TSPL/2018/Exam/#11001" class="Function">ℕ≢⇒</a> <a id="14194" class="Symbol">(</a><a id="14195" href="/20.07/TSPL/2018/Exam/#11337" class="Function">uniq-↑</a> <a id="14202" href="/20.07/TSPL/2018/Exam/#14179" class="Bound">⊢L</a> <a id="14206" href="/20.07/TSPL/2018/Exam/#14153" class="Bound">⊢L</a><a id="14208" class="Symbol">)</a> <a id="14210" class="Symbol">})</a>
<a id="14215" class="Symbol">...</a> <a id="14219" class="Symbol">|</a> <a id="14221" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="14225" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="14227" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a> <a id="14230" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="14235" href="/20.07/TSPL/2018/Exam/#14235" class="Bound">⊢L</a> <a id="14238" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="14240" class="Keyword">with</a> <a id="14245" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="14253" class="Bound">Γ</a> <a id="14255" class="Bound">M</a> <a id="14257" class="Bound">A</a>
<a id="14261" class="Symbol">...</a> <a id="14268" class="Symbol">|</a> <a id="14270" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14273" href="/20.07/TSPL/2018/Exam/#14273" class="Bound">¬⊢M</a> <a id="14289" class="Symbol">=</a> <a id="14292" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14296" class="Symbol">(λ{</a> <a id="14300" class="Symbol">(</a><a id="14301" href="/20.07/TSPL/2018/Exam/#10064" class="InductiveConstructor">⊢case</a> <a id="14307" class="Symbol">_</a> <a id="14309" href="/20.07/TSPL/2018/Exam/#14309" class="Bound">⊢M</a> <a id="14312" class="Symbol">_)</a> <a id="14315" class="Symbol"></a> <a id="14317" href="/20.07/TSPL/2018/Exam/#14273" class="Bound">¬⊢M</a> <a id="14321" href="/20.07/TSPL/2018/Exam/#14309" class="Bound">⊢M</a> <a id="14324" class="Symbol">})</a>
<a id="14329" class="Symbol">...</a> <a id="14336" class="Symbol">|</a> <a id="14338" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="14342" href="/20.07/TSPL/2018/Exam/#14342" class="Bound">⊢M</a> <a id="14345" class="Keyword">with</a> <a id="14350" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="14358" class="Symbol">(</a><a id="14359" class="Bound">Γ</a> <a id="14361" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator">,</a> <a id="14363" class="Bound">x</a> <a id="14365" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator"></a> <a id="14367" href="/20.07/TSPL/2018/Exam/#8392" class="InductiveConstructor">`</a><a id="14369" class="Symbol">)</a> <a id="14371" class="Bound">N</a> <a id="14373" class="Bound">A</a>
<a id="14377" class="Symbol">...</a> <a id="14387" class="Symbol">|</a> <a id="14389" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14392" href="/20.07/TSPL/2018/Exam/#14392" class="Bound">¬⊢N</a> <a id="14405" class="Symbol">=</a> <a id="14408" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14412" class="Symbol">(λ{</a> <a id="14416" class="Symbol">(</a><a id="14417" href="/20.07/TSPL/2018/Exam/#10064" class="InductiveConstructor">⊢case</a> <a id="14423" class="Symbol">_</a> <a id="14425" class="Symbol">_</a> <a id="14427" href="/20.07/TSPL/2018/Exam/#14427" class="Bound">⊢N</a><a id="14429" class="Symbol">)</a> <a id="14431" class="Symbol"></a> <a id="14433" href="/20.07/TSPL/2018/Exam/#14392" class="Bound">¬⊢N</a> <a id="14437" href="/20.07/TSPL/2018/Exam/#14427" class="Bound">⊢N</a> <a id="14440" class="Symbol">})</a>
<a id="14445" class="Symbol">...</a> <a id="14455" class="Symbol">|</a> <a id="14457" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="14461" href="/20.07/TSPL/2018/Exam/#14461" class="Bound">⊢N</a> <a id="14473" class="Symbol">=</a> <a id="14476" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="14480" class="Symbol">(</a><a id="14481" href="/20.07/TSPL/2018/Exam/#10064" class="InductiveConstructor">⊢case</a> <a id="14487" class="Bound">⊢L</a> <a id="14490" class="Bound">⊢M</a> <a id="14493" href="/20.07/TSPL/2018/Exam/#14461" class="Bound">⊢N</a><a id="14495" class="Symbol">)</a>
<a id="14499" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="14507" href="/20.07/TSPL/2018/Exam/#14507" class="Bound">Γ</a> <a id="14509" class="Symbol">(</a><a id="14510" href="/20.07/TSPL/2018/Exam/#9018" class="InductiveConstructor Operator">μ</a> <a id="14512" href="/20.07/TSPL/2018/Exam/#14512" class="Bound">x</a> <a id="14514" href="/20.07/TSPL/2018/Exam/#9018" class="InductiveConstructor Operator"></a> <a id="14516" href="/20.07/TSPL/2018/Exam/#14516" class="Bound">N</a><a id="14517" class="Symbol">)</a> <a id="14519" href="/20.07/TSPL/2018/Exam/#14519" class="Bound">A</a> <a id="14521" class="Keyword">with</a> <a id="14526" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="14534" class="Symbol">(</a><a id="14535" href="/20.07/TSPL/2018/Exam/#14507" class="Bound">Γ</a> <a id="14537" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator">,</a> <a id="14539" href="/20.07/TSPL/2018/Exam/#14512" class="Bound">x</a> <a id="14541" href="/20.07/TSPL/2018/Exam/#8530" class="InductiveConstructor Operator"></a> <a id="14543" href="/20.07/TSPL/2018/Exam/#14519" class="Bound">A</a><a id="14544" class="Symbol">)</a> <a id="14546" href="/20.07/TSPL/2018/Exam/#14516" class="Bound">N</a> <a id="14548" href="/20.07/TSPL/2018/Exam/#14519" class="Bound">A</a>
<a id="14552" class="Symbol">...</a> <a id="14556" class="Symbol">|</a> <a id="14558" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14561" href="/20.07/TSPL/2018/Exam/#14561" class="Bound">¬⊢N</a> <a id="14580" class="Symbol">=</a> <a id="14583" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14587" class="Symbol">(λ{</a> <a id="14591" class="Symbol">(</a><a id="14592" href="/20.07/TSPL/2018/Exam/#10249" class="InductiveConstructor">⊢μ</a> <a id="14595" href="/20.07/TSPL/2018/Exam/#14595" class="Bound">⊢N</a><a id="14597" class="Symbol">)</a> <a id="14599" class="Symbol"></a> <a id="14601" href="/20.07/TSPL/2018/Exam/#14561" class="Bound">¬⊢N</a> <a id="14605" href="/20.07/TSPL/2018/Exam/#14595" class="Bound">⊢N</a> <a id="14608" class="Symbol">})</a>
<a id="14613" class="Symbol">...</a> <a id="14617" class="Symbol">|</a> <a id="14619" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="14623" href="/20.07/TSPL/2018/Exam/#14623" class="Bound">⊢N</a> <a id="14641" class="Symbol">=</a> <a id="14644" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="14648" class="Symbol">(</a><a id="14649" href="/20.07/TSPL/2018/Exam/#10249" class="InductiveConstructor">⊢μ</a> <a id="14652" href="/20.07/TSPL/2018/Exam/#14623" class="Bound">⊢N</a><a id="14654" class="Symbol">)</a>
<a id="14658" href="/20.07/TSPL/2018/Exam/#12734" class="Function">inherit</a> <a id="14666" href="/20.07/TSPL/2018/Exam/#14666" class="Bound">Γ</a> <a id="14668" class="Symbol">(</a><a id="14669" href="/20.07/TSPL/2018/Exam/#14669" class="Bound">M</a> <a id="14671" href="/20.07/TSPL/2018/Exam/#9068" class="InductiveConstructor Operator"></a><a id="14672" class="Symbol">)</a> <a id="14674" href="/20.07/TSPL/2018/Exam/#14674" class="Bound">B</a> <a id="14676" class="Keyword">with</a> <a id="14681" href="/20.07/TSPL/2018/Exam/#12630" class="Function">synthesize</a> <a id="14692" href="/20.07/TSPL/2018/Exam/#14666" class="Bound">Γ</a> <a id="14694" href="/20.07/TSPL/2018/Exam/#14669" class="Bound">M</a>
<a id="14698" class="Symbol">...</a> <a id="14702" class="Symbol">|</a> <a id="14704" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14708" href="/20.07/TSPL/2018/Exam/#14708" class="Bound">¬∃</a> <a id="14726" class="Symbol">=</a> <a id="14729" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14733" class="Symbol">(λ{</a> <a id="14737" class="Symbol">(</a><a id="14738" href="/20.07/TSPL/2018/Exam/#10347" class="InductiveConstructor">⊢↑</a> <a id="14741" href="/20.07/TSPL/2018/Exam/#14741" class="Bound">⊢M</a> <a id="14744" class="Symbol">_)</a> <a id="14747" class="Symbol"></a> <a id="14749" href="/20.07/TSPL/2018/Exam/#14708" class="Bound">¬∃</a> <a id="14752" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="14754" class="Symbol">_</a> <a id="14756" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="14758" href="/20.07/TSPL/2018/Exam/#14741" class="Bound">⊢M</a> <a id="14761" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="14763" class="Symbol">})</a>
<a id="14768" class="Symbol">...</a> <a id="14772" class="Symbol">|</a> <a id="14774" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="14778" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="14780" href="/20.07/TSPL/2018/Exam/#14780" class="Bound">A</a> <a id="14782" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">,</a> <a id="14784" href="/20.07/TSPL/2018/Exam/#14784" class="Bound">⊢M</a> <a id="14787" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator"></a> <a id="14789" class="Keyword">with</a> <a id="14794" href="/20.07/TSPL/2018/Exam/#14780" class="Bound">A</a> <a id="14796" href="/20.07/TSPL/2018/Exam/#10471" class="Function Operator">≟Tp</a> <a id="14800" class="Bound">B</a>
<a id="14804" class="Symbol">...</a> <a id="14810" class="Symbol">|</a> <a id="14812" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14816" href="/20.07/TSPL/2018/Exam/#14816" class="Bound">A≢B</a> <a id="14832" class="Symbol">=</a> <a id="14835" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a> <a id="14839" class="Symbol">(</a><a id="14840" href="/20.07/TSPL/2018/Exam/#12427" class="Function">¬switch</a> <a id="14848" class="Bound">⊢M</a> <a id="14851" href="/20.07/TSPL/2018/Exam/#14816" class="Bound">A≢B</a><a id="14854" class="Symbol">)</a>
<a id="14858" class="Symbol">...</a> <a id="14864" class="Symbol">|</a> <a id="14866" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="14870" href="/20.07/TSPL/2018/Exam/#14870" class="Bound">A≡B</a> <a id="14886" class="Symbol">=</a> <a id="14889" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a> <a id="14893" class="Symbol">(</a><a id="14894" href="/20.07/TSPL/2018/Exam/#10347" class="InductiveConstructor">⊢↑</a> <a id="14897" class="Bound">⊢M</a> <a id="14900" href="/20.07/TSPL/2018/Exam/#14870" class="Bound">A≡B</a><a id="14903" class="Symbol">)</a>
</pre>
</div>
<p style="text-align:center;">
<a alt="Source code" href="https://github.com/plfa/plfa.github.io/blob/dev-20.07/courses/tspl/2018/Exam.lagda.md">Source</a>
</p>
</article>
</div>
</main><footer class="site-footer h-card">
<data class="u-url" href="/20.07/"></data>
<div class="wrapper">
<h2 class="footer-heading">Programming Language Foundations in Agda
</h2><div class="footer-col-wrapper">
<div class="footer-col footer-col-1">
<ul class="contact-list">
<li class="p-name">Philip Wadler</li>
<li><a class="u-email" href="mailto:wadler@inf.ed.ac.uk">wadler@inf.ed.ac.uk</a></li>
</ul>
</div>
<div class="footer-col footer-col-2"><ul class="social-media-list"><li><a href="https://github.com/wadler"><svg class="svg-icon"><use xlink:href="/20.07/assets/minima-social-icons.svg#github"></use></svg> <span class="username">wadler</span></a></li></ul>
</div>
<div class="footer-col footer-col-3"></div>
</div><div class="footer-col-wrapper">
<div class="footer-col footer-col-1">
<ul class="contact-list">
<li class="p-name">Wen Kokke</li>
<li><a class="u-email" href="mailto:wen.kokke@ed.ac.uk">wen.kokke@ed.ac.uk</a></li>
</ul>
</div>
<div class="footer-col footer-col-2"><ul class="social-media-list"><li><a href="https://github.com/wenkokke"><svg class="svg-icon"><use xlink:href="/20.07/assets/minima-social-icons.svg#github"></use></svg> <span class="username">wenkokke</span></a></li><li><a href="https://www.twitter.com/wenkokke"><svg class="svg-icon"><use xlink:href="/20.07/assets/minima-social-icons.svg#twitter"></use></svg> <span class="username">wenkokke</span></a></li></ul>
</div>
<div class="footer-col footer-col-3"></div>
</div><div class="footer-col-wrapper">
<div class="footer-col footer-col-1">
<ul class="contact-list">
<li class="p-name">Jeremy G. Siek</li>
<li><a class="u-email" href="mailto:jsiek@indiana.edu">jsiek@indiana.edu</a></li>
</ul>
</div>
<div class="footer-col footer-col-2"><ul class="social-media-list"><li><a href="https://github.com/jsiek"><svg class="svg-icon"><use xlink:href="/20.07/assets/minima-social-icons.svg#github"></use></svg> <span class="username">jsiek</span></a></li><li><a href="https://www.twitter.com/jeremysiek"><svg class="svg-icon"><use xlink:href="/20.07/assets/minima-social-icons.svg#twitter"></use></svg> <span class="username">jeremysiek</span></a></li></ul>
</div>
<div class="footer-col footer-col-3"></div>
</div>This work is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>
</div>
</footer>
<!-- Import jQuery -->
<script type="text/javascript" src="/20.07/assets/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.2.2/anchor.min.js" integrity="sha256-E4RlfxwyJVmkkk0szw7LYJxuPlp6evtPSBDlWHsYYL8=" crossorigin="anonymous"></script>
<script type="text/javascript">
anchors.add();
</script>
<script type="text/javascript">
// Makes sandwhich menu works
$('.menu-icon').click(function(){
$('.trigger').toggle();
});
// Script which allows for foldable code blocks
$('div.foldable pre').each(function(){
var autoHeight = $(this).height();
var lineHeight = parseFloat($(this).css('line-height'));
var plus = $("<div></div>");
var horLine = $("<div></div>");
var verLine = $("<div></div>");
$(this).prepend(plus);
plus.css({
'position' : 'relative',
'float' : 'right',
'right' : '-' + (0.5 * lineHeight - 1.5) + 'px',
'width' : lineHeight,
'height' : lineHeight});
verLine.css({
'position' : 'relative',
'height' : lineHeight,
'width' : '3px',
'background-color' : '#C1E0FF'});
horLine.css({
'position' : 'relative',
'top' : '-' + (0.5 * lineHeight + 1.5) + 'px',
'left' : '-' + (0.5 * lineHeight - 1.5) + 'px',
'height' : '3px',
'width' : lineHeight,
'background-color' : '#C1E0FF'});
plus.append(verLine);
plus.append(horLine);
$(this).height(2.0 * lineHeight);
$(this).css('overflow','hidden');
$(this).click(function(){
if ($(this).height() == autoHeight) {
$(this).height(2.0 * lineHeight);
plus.show();
}
else {
$(this).height('auto');
plus.hide();
}
});
});
</script>
<!-- Import KaTeX -->
<script type="text/javascript" src="/20.07/assets/katex.js"></script>
<!-- Script which renders TeX using KaTeX -->
<script type="text/javascript">
$("script[type='math/tex']").replaceWith(
function(){
var tex = $(this).text();
return "<span class=\"inline-equation\">" +
katex.renderToString(tex) +
"</span>";
});
$("script[type='math/tex; mode=display']").replaceWith(
function(){
var tex = $(this).text().replace(/%.*?(\n|$)/g,"");
return "<div class=\"equation\">" +
katex.renderToString("\\displaystyle "+tex) +
"</div>";
});
</script>
</body>
</html>