900 lines
252 KiB
HTML
900 lines
252 KiB
HTML
<!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>Assignment4: PUC Assignment 4 | 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="Assignment4: PUC Assignment 4" />
|
||
<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/PUC/2019/Assignment4/" />
|
||
<meta property="og:url" content="https://plfa.github.io/20.07/PUC/2019/Assignment4/" />
|
||
<meta property="og:site_name" content="Programming Language Foundations in Agda" />
|
||
<script type="application/ld+json">
|
||
{"url":"https://plfa.github.io/20.07/PUC/2019/Assignment4/","headline":"Assignment4: PUC Assignment 4","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">Assignment4: PUC Assignment 4</h1>
|
||
</header>
|
||
|
||
<p style="text-align:center;">
|
||
|
||
|
||
|
||
<a alt="Source code" href="https://github.com/plfa/plfa.github.io/blob/dev-20.07/courses/puc/2019/Assignment4.lagda.md">Source</a>
|
||
|
||
|
||
|
||
</p>
|
||
|
||
|
||
<div class="post-content">
|
||
<pre class="Agda"><a id="110" class="Keyword">module</a> <a id="117" href="/20.07/PUC/2019/Assignment4/" class="Module">Assignment4</a> <a id="129" class="Keyword">where</a>
|
||
</pre>
|
||
<h2 id="your-name-and-email-goes-here">YOUR NAME AND EMAIL GOES HERE</h2>
|
||
|
||
<h2 id="introduction">Introduction</h2>
|
||
|
||
<p>You must do <em>all</em> the exercises labelled “(recommended)”.</p>
|
||
|
||
<p>Exercises labelled “(stretch)” are there to provide an extra challenge.
|
||
You don’t need to do all of these, but should attempt at least a few.</p>
|
||
|
||
<p>Exercises without a label are optional, and may be done if you want
|
||
some extra practice.</p>
|
||
|
||
<p>Please ensure your files execute correctly under Agda!</p>
|
||
|
||
<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="719" class="Keyword">import</a> <a id="726" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.html" class="Module">Relation.Binary.PropositionalEquality</a> <a id="764" class="Symbol">as</a> <a id="767" class="Module">Eq</a>
|
||
<a id="770" class="Keyword">open</a> <a id="775" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.html" class="Module">Eq</a> <a id="778" class="Keyword">using</a> <a id="784" class="Symbol">(</a><a id="785" href="Agda.Builtin.Equality.html#125" class="Datatype Operator">_≡_</a><a id="788" class="Symbol">;</a> <a id="790" href="Agda.Builtin.Equality.html#182" class="InductiveConstructor">refl</a><a id="794" class="Symbol">;</a> <a id="796" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.Core.html#939" class="Function">sym</a><a id="799" class="Symbol">;</a> <a id="801" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.Core.html#984" class="Function">trans</a><a id="806" class="Symbol">;</a> <a id="808" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.Core.html#1090" class="Function">cong</a><a id="812" class="Symbol">;</a> <a id="814" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.html#1436" class="Function">cong₂</a><a id="819" class="Symbol">;</a> <a id="821" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Binary.PropositionalEquality.Core.html#799" class="Function Operator">_≢_</a><a id="824" class="Symbol">)</a>
|
||
<a id="826" class="Keyword">open</a> <a id="831" class="Keyword">import</a> <a id="838" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html" class="Module">Data.Empty</a> <a id="849" class="Keyword">using</a> <a id="855" class="Symbol">(</a><a id="856" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#279" class="Datatype">⊥</a><a id="857" class="Symbol">;</a> <a id="859" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#294" class="Function">⊥-elim</a><a id="865" class="Symbol">)</a>
|
||
<a id="867" class="Keyword">open</a> <a id="872" class="Keyword">import</a> <a id="879" href="https://agda.github.io/agda-stdlib/v1.1/Data.Nat.html" class="Module">Data.Nat</a> <a id="888" class="Keyword">using</a> <a id="894" class="Symbol">(</a><a id="895" href="Agda.Builtin.Nat.html#165" class="Datatype">ℕ</a><a id="896" class="Symbol">;</a> <a id="898" href="Agda.Builtin.Nat.html#183" class="InductiveConstructor">zero</a><a id="902" class="Symbol">;</a> <a id="904" href="Agda.Builtin.Nat.html#196" class="InductiveConstructor">suc</a><a id="907" class="Symbol">;</a> <a id="909" href="Agda.Builtin.Nat.html#298" class="Primitive Operator">_+_</a><a id="912" class="Symbol">;</a> <a id="914" href="Agda.Builtin.Nat.html#501" class="Primitive Operator">_*_</a><a id="917" class="Symbol">)</a>
|
||
<a id="919" class="Keyword">open</a> <a id="924" class="Keyword">import</a> <a id="931" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html" class="Module">Data.Product</a> <a id="944" class="Keyword">using</a> <a id="950" class="Symbol">(</a><a id="951" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1162" class="Function Operator">_×_</a><a id="954" class="Symbol">;</a> <a id="956" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1364" class="Function">∃</a><a id="957" class="Symbol">;</a> <a id="959" href="https://agda.github.io/agda-stdlib/v1.1/Data.Product.html#1783" class="Function">∃-syntax</a><a id="967" class="Symbol">)</a> <a id="969" class="Keyword">renaming</a> <a id="978" class="Symbol">(</a><a id="979" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">_,_</a> <a id="983" class="Symbol">to</a> <a id="986" href="Agda.Builtin.Sigma.html#209" class="InductiveConstructor Operator">⟨_,_⟩</a><a id="991" class="Symbol">)</a>
|
||
<a id="993" class="Keyword">open</a> <a id="998" class="Keyword">import</a> <a id="1005" href="https://agda.github.io/agda-stdlib/v1.1/Data.String.html" class="Module">Data.String</a> <a id="1017" class="Keyword">using</a> <a id="1023" class="Symbol">(</a><a id="1024" href="Agda.Builtin.String.html#206" class="Postulate">String</a><a id="1030" class="Symbol">;</a> <a id="1032" href="https://agda.github.io/agda-stdlib/v1.1/Data.String.Properties.html#2569" class="Function Operator">_≟_</a><a id="1035" class="Symbol">)</a>
|
||
<a id="1037" class="Keyword">open</a> <a id="1042" class="Keyword">import</a> <a id="1049" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html" class="Module">Relation.Nullary</a> <a id="1066" class="Keyword">using</a> <a id="1072" class="Symbol">(</a><a id="1073" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#535" class="Function Operator">¬_</a><a id="1075" class="Symbol">;</a> <a id="1077" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#605" class="Datatype">Dec</a><a id="1080" class="Symbol">;</a> <a id="1082" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#641" class="InductiveConstructor">yes</a><a id="1085" class="Symbol">;</a> <a id="1087" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#668" class="InductiveConstructor">no</a><a id="1089" class="Symbol">)</a>
|
||
</pre>
|
||
|
||
<h2 id="debruijn">DeBruijn</h2>
|
||
|
||
<pre class="Agda"><a id="1115" class="Keyword">module</a> <a id="DeBruijn"></a><a id="1122" href="/20.07/PUC/2019/Assignment4/#1122" class="Module">DeBruijn</a> <a id="1131" class="Keyword">where</a>
|
||
</pre>
|
||
<p>Remember to indent all code by two spaces.</p>
|
||
|
||
<pre class="Agda"> <a id="1192" class="Keyword">open</a> <a id="1197" class="Keyword">import</a> <a id="1204" href="/20.07/DeBruijn/" class="Module">plfa.part2.DeBruijn</a>
|
||
</pre>
|
||
|
||
<h4 id="exercise-mul-recommended">Exercise (<code class="language-plaintext highlighter-rouge">mul</code>) (recommended)</h4>
|
||
|
||
<p>Write out the definition of a lambda term that multiplies
|
||
two natural numbers, now adapted to the inherently typed
|
||
DeBruijn representation.</p>
|
||
|
||
<h4 id="exercise-v">Exercise <code class="language-plaintext highlighter-rouge">V¬—→</code></h4>
|
||
|
||
<p>Following the previous development, show values do
|
||
not reduce, and its corollary, terms that reduce are not
|
||
values.</p>
|
||
|
||
<h4 id="exercise-mul-example-recommended">Exercise <code class="language-plaintext highlighter-rouge">mul-example</code> (recommended)</h4>
|
||
|
||
<p>Using the evaluator, confirm that two times two is four.</p>
|
||
|
||
<h2 id="more">More</h2>
|
||
|
||
<pre class="Agda"><a id="1664" class="Keyword">module</a> <a id="More"></a><a id="1671" href="/20.07/PUC/2019/Assignment4/#1671" class="Module">More</a> <a id="1676" class="Keyword">where</a>
|
||
</pre>
|
||
<p>Remember to indent all code by two spaces.</p>
|
||
|
||
<h3 id="syntax">Syntax</h3>
|
||
|
||
<pre class="Agda"> <a id="1750" class="Keyword">infix</a> <a id="1757" class="Number">4</a> <a id="1759" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">_⊢_</a>
|
||
<a id="1765" class="Keyword">infix</a> <a id="1772" class="Number">4</a> <a id="1774" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">_∋_</a>
|
||
<a id="1780" class="Keyword">infixl</a> <a id="1787" class="Number">5</a> <a id="1789" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">_,_</a>
|
||
|
||
<a id="1796" class="Keyword">infixr</a> <a id="1803" class="Number">7</a> <a id="1805" href="/20.07/PUC/2019/Assignment4/#2025" class="InductiveConstructor Operator">_⇒_</a>
|
||
<a id="1811" class="Keyword">infixr</a> <a id="1818" class="Number">8</a> <a id="1820" href="/20.07/PUC/2019/Assignment4/#2104" class="InductiveConstructor Operator">_`⊎_</a>
|
||
<a id="1827" class="Keyword">infixr</a> <a id="1834" class="Number">9</a> <a id="1836" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">_`×_</a>
|
||
|
||
<a id="1844" class="Keyword">infix</a> <a id="1851" class="Number">5</a> <a id="1853" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ_</a>
|
||
<a id="1858" class="Keyword">infix</a> <a id="1865" class="Number">5</a> <a id="1867" href="/20.07/PUC/2019/Assignment4/#3092" class="InductiveConstructor Operator">μ_</a>
|
||
<a id="1872" class="Keyword">infixl</a> <a id="1879" class="Number">7</a> <a id="1881" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">_·_</a>
|
||
<a id="1887" class="Keyword">infixl</a> <a id="1894" class="Number">8</a> <a id="1896" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">_`*_</a>
|
||
<a id="1903" class="Keyword">infix</a> <a id="1910" class="Number">8</a> <a id="1912" href="/20.07/PUC/2019/Assignment4/#2915" class="InductiveConstructor Operator">`suc_</a>
|
||
<a id="1920" class="Keyword">infix</a> <a id="1927" class="Number">9</a> <a id="1929" href="/20.07/PUC/2019/Assignment4/#2610" class="InductiveConstructor Operator">`_</a>
|
||
<a id="1934" class="Keyword">infix</a> <a id="1941" class="Number">9</a> <a id="1943" href="/20.07/PUC/2019/Assignment4/#2438" class="InductiveConstructor Operator">S_</a>
|
||
<a id="1948" class="Keyword">infix</a> <a id="1955" class="Number">9</a> <a id="1957" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#_</a>
|
||
</pre>
|
||
<h3 id="types">Types</h3>
|
||
|
||
<pre class="Agda"> <a id="1982" class="Keyword">data</a> <a id="More.Type"></a><a id="1987" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a> <a id="1992" class="Symbol">:</a> <a id="1994" class="PrimitiveType">Set</a> <a id="1998" class="Keyword">where</a>
|
||
<a id="More.Type.`ℕ"></a><a id="2008" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a> <a id="2014" class="Symbol">:</a> <a id="2016" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a>
|
||
<a id="More.Type._⇒_"></a><a id="2025" href="/20.07/PUC/2019/Assignment4/#2025" class="InductiveConstructor Operator">_⇒_</a> <a id="2031" class="Symbol">:</a> <a id="2033" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a> <a id="2038" class="Symbol">→</a> <a id="2040" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a> <a id="2045" class="Symbol">→</a> <a id="2047" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a>
|
||
<a id="More.Type.Nat"></a><a id="2056" href="/20.07/PUC/2019/Assignment4/#2056" class="InductiveConstructor">Nat</a> <a id="2062" class="Symbol">:</a> <a id="2064" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a>
|
||
<a id="More.Type._`×_"></a><a id="2073" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">_`×_</a> <a id="2079" class="Symbol">:</a> <a id="2081" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a> <a id="2086" class="Symbol">→</a> <a id="2088" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a> <a id="2093" class="Symbol">→</a> <a id="2095" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a>
|
||
<a id="More.Type._`⊎_"></a><a id="2104" href="/20.07/PUC/2019/Assignment4/#2104" class="InductiveConstructor Operator">_`⊎_</a> <a id="2110" class="Symbol">:</a> <a id="2112" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a> <a id="2117" class="Symbol">→</a> <a id="2119" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a> <a id="2124" class="Symbol">→</a> <a id="2126" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a>
|
||
<a id="More.Type.`⊤"></a><a id="2135" href="/20.07/PUC/2019/Assignment4/#2135" class="InductiveConstructor">`⊤</a> <a id="2141" class="Symbol">:</a> <a id="2143" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a>
|
||
<a id="More.Type.`⊥"></a><a id="2152" href="/20.07/PUC/2019/Assignment4/#2152" class="InductiveConstructor">`⊥</a> <a id="2158" class="Symbol">:</a> <a id="2160" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a>
|
||
<a id="More.Type.`List"></a><a id="2169" href="/20.07/PUC/2019/Assignment4/#2169" class="InductiveConstructor">`List</a> <a id="2175" class="Symbol">:</a> <a id="2177" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a> <a id="2182" class="Symbol">→</a> <a id="2184" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a>
|
||
</pre>
|
||
<h3 id="contexts">Contexts</h3>
|
||
|
||
<pre class="Agda"> <a id="2214" class="Keyword">data</a> <a id="More.Context"></a><a id="2219" href="/20.07/PUC/2019/Assignment4/#2219" class="Datatype">Context</a> <a id="2227" class="Symbol">:</a> <a id="2229" class="PrimitiveType">Set</a> <a id="2233" class="Keyword">where</a>
|
||
<a id="More.Context.∅"></a><a id="2243" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a> <a id="2247" class="Symbol">:</a> <a id="2249" href="/20.07/PUC/2019/Assignment4/#2219" class="Datatype">Context</a>
|
||
<a id="More.Context._,_"></a><a id="2261" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">_,_</a> <a id="2265" class="Symbol">:</a> <a id="2267" href="/20.07/PUC/2019/Assignment4/#2219" class="Datatype">Context</a> <a id="2275" class="Symbol">→</a> <a id="2277" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a> <a id="2282" class="Symbol">→</a> <a id="2284" href="/20.07/PUC/2019/Assignment4/#2219" class="Datatype">Context</a>
|
||
</pre>
|
||
<h3 id="variables-and-the-lookup-judgment">Variables and the lookup judgment</h3>
|
||
|
||
<pre class="Agda"> <a id="2342" class="Keyword">data</a> <a id="More._∋_"></a><a id="2347" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">_∋_</a> <a id="2351" class="Symbol">:</a> <a id="2353" href="/20.07/PUC/2019/Assignment4/#2219" class="Datatype">Context</a> <a id="2361" class="Symbol">→</a> <a id="2363" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a> <a id="2368" class="Symbol">→</a> <a id="2370" class="PrimitiveType">Set</a> <a id="2374" class="Keyword">where</a>
|
||
|
||
<a id="More._∋_.Z"></a><a id="2385" href="/20.07/PUC/2019/Assignment4/#2385" class="InductiveConstructor">Z</a> <a id="2387" class="Symbol">:</a> <a id="2389" class="Symbol">∀</a> <a id="2391" class="Symbol">{</a><a id="2392" href="/20.07/PUC/2019/Assignment4/#2392" class="Bound">Γ</a> <a id="2394" href="/20.07/PUC/2019/Assignment4/#2394" class="Bound">A</a><a id="2395" class="Symbol">}</a>
|
||
<a id="2405" class="Comment">---------</a>
|
||
<a id="2421" class="Symbol">→</a> <a id="2423" href="/20.07/PUC/2019/Assignment4/#2392" class="Bound">Γ</a> <a id="2425" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="2427" href="/20.07/PUC/2019/Assignment4/#2394" class="Bound">A</a> <a id="2429" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="2431" href="/20.07/PUC/2019/Assignment4/#2394" class="Bound">A</a>
|
||
|
||
<a id="More._∋_.S_"></a><a id="2438" href="/20.07/PUC/2019/Assignment4/#2438" class="InductiveConstructor Operator">S_</a> <a id="2441" class="Symbol">:</a> <a id="2443" class="Symbol">∀</a> <a id="2445" class="Symbol">{</a><a id="2446" href="/20.07/PUC/2019/Assignment4/#2446" class="Bound">Γ</a> <a id="2448" href="/20.07/PUC/2019/Assignment4/#2448" class="Bound">A</a> <a id="2450" href="/20.07/PUC/2019/Assignment4/#2450" class="Bound">B</a><a id="2451" class="Symbol">}</a>
|
||
<a id="2459" class="Symbol">→</a> <a id="2461" href="/20.07/PUC/2019/Assignment4/#2446" class="Bound">Γ</a> <a id="2463" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="2465" href="/20.07/PUC/2019/Assignment4/#2450" class="Bound">B</a>
|
||
<a id="2475" class="Comment">---------</a>
|
||
<a id="2491" class="Symbol">→</a> <a id="2493" href="/20.07/PUC/2019/Assignment4/#2446" class="Bound">Γ</a> <a id="2495" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="2497" href="/20.07/PUC/2019/Assignment4/#2448" class="Bound">A</a> <a id="2499" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="2501" href="/20.07/PUC/2019/Assignment4/#2450" class="Bound">B</a>
|
||
</pre>
|
||
<h3 id="terms-and-the-typing-judgment">Terms and the typing judgment</h3>
|
||
|
||
<pre class="Agda"> <a id="2549" class="Keyword">data</a> <a id="More._⊢_"></a><a id="2554" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">_⊢_</a> <a id="2558" class="Symbol">:</a> <a id="2560" href="/20.07/PUC/2019/Assignment4/#2219" class="Datatype">Context</a> <a id="2568" class="Symbol">→</a> <a id="2570" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a> <a id="2575" class="Symbol">→</a> <a id="2577" class="PrimitiveType">Set</a> <a id="2581" class="Keyword">where</a>
|
||
|
||
<a id="2592" class="Comment">-- variables</a>
|
||
|
||
<a id="More._⊢_.`_"></a><a id="2610" href="/20.07/PUC/2019/Assignment4/#2610" class="InductiveConstructor Operator">`_</a> <a id="2613" class="Symbol">:</a> <a id="2615" class="Symbol">∀</a> <a id="2617" class="Symbol">{</a><a id="2618" href="/20.07/PUC/2019/Assignment4/#2618" class="Bound">Γ</a> <a id="2620" href="/20.07/PUC/2019/Assignment4/#2620" class="Bound">A</a><a id="2621" class="Symbol">}</a>
|
||
<a id="2629" class="Symbol">→</a> <a id="2631" href="/20.07/PUC/2019/Assignment4/#2618" class="Bound">Γ</a> <a id="2633" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="2635" href="/20.07/PUC/2019/Assignment4/#2620" class="Bound">A</a>
|
||
<a id="2645" class="Comment">-----</a>
|
||
<a id="2657" class="Symbol">→</a> <a id="2659" href="/20.07/PUC/2019/Assignment4/#2618" class="Bound">Γ</a> <a id="2661" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="2663" href="/20.07/PUC/2019/Assignment4/#2620" class="Bound">A</a>
|
||
|
||
<a id="2670" class="Comment">-- functions</a>
|
||
|
||
<a id="More._⊢_.ƛ_"></a><a id="2688" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ_</a> <a id="2692" class="Symbol">:</a> <a id="2695" class="Symbol">∀</a> <a id="2697" class="Symbol">{</a><a id="2698" href="/20.07/PUC/2019/Assignment4/#2698" class="Bound">Γ</a> <a id="2700" href="/20.07/PUC/2019/Assignment4/#2700" class="Bound">A</a> <a id="2702" href="/20.07/PUC/2019/Assignment4/#2702" class="Bound">B</a><a id="2703" class="Symbol">}</a>
|
||
<a id="2711" class="Symbol">→</a> <a id="2713" href="/20.07/PUC/2019/Assignment4/#2698" class="Bound">Γ</a> <a id="2715" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="2717" href="/20.07/PUC/2019/Assignment4/#2700" class="Bound">A</a> <a id="2719" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="2721" href="/20.07/PUC/2019/Assignment4/#2702" class="Bound">B</a>
|
||
<a id="2731" class="Comment">---------</a>
|
||
<a id="2747" class="Symbol">→</a> <a id="2749" href="/20.07/PUC/2019/Assignment4/#2698" class="Bound">Γ</a> <a id="2751" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="2753" href="/20.07/PUC/2019/Assignment4/#2700" class="Bound">A</a> <a id="2755" href="/20.07/PUC/2019/Assignment4/#2025" class="InductiveConstructor Operator">⇒</a> <a id="2757" href="/20.07/PUC/2019/Assignment4/#2702" class="Bound">B</a>
|
||
|
||
<a id="More._⊢_._·_"></a><a id="2764" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">_·_</a> <a id="2768" class="Symbol">:</a> <a id="2770" class="Symbol">∀</a> <a id="2772" class="Symbol">{</a><a id="2773" href="/20.07/PUC/2019/Assignment4/#2773" class="Bound">Γ</a> <a id="2775" href="/20.07/PUC/2019/Assignment4/#2775" class="Bound">A</a> <a id="2777" href="/20.07/PUC/2019/Assignment4/#2777" class="Bound">B</a><a id="2778" class="Symbol">}</a>
|
||
<a id="2786" class="Symbol">→</a> <a id="2788" href="/20.07/PUC/2019/Assignment4/#2773" class="Bound">Γ</a> <a id="2790" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="2792" href="/20.07/PUC/2019/Assignment4/#2775" class="Bound">A</a> <a id="2794" href="/20.07/PUC/2019/Assignment4/#2025" class="InductiveConstructor Operator">⇒</a> <a id="2796" href="/20.07/PUC/2019/Assignment4/#2777" class="Bound">B</a>
|
||
<a id="2804" class="Symbol">→</a> <a id="2806" href="/20.07/PUC/2019/Assignment4/#2773" class="Bound">Γ</a> <a id="2808" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="2810" href="/20.07/PUC/2019/Assignment4/#2775" class="Bound">A</a>
|
||
<a id="2820" class="Comment">---------</a>
|
||
<a id="2836" class="Symbol">→</a> <a id="2838" href="/20.07/PUC/2019/Assignment4/#2773" class="Bound">Γ</a> <a id="2840" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="2842" href="/20.07/PUC/2019/Assignment4/#2777" class="Bound">B</a>
|
||
|
||
<a id="2849" class="Comment">-- naturals</a>
|
||
|
||
<a id="More._⊢_.`zero"></a><a id="2866" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="2872" class="Symbol">:</a> <a id="2874" class="Symbol">∀</a> <a id="2876" class="Symbol">{</a><a id="2877" href="/20.07/PUC/2019/Assignment4/#2877" class="Bound">Γ</a><a id="2878" class="Symbol">}</a>
|
||
<a id="2888" class="Comment">------</a>
|
||
<a id="2901" class="Symbol">→</a> <a id="2903" href="/20.07/PUC/2019/Assignment4/#2877" class="Bound">Γ</a> <a id="2905" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="2907" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a>
|
||
|
||
<a id="More._⊢_.`suc_"></a><a id="2915" href="/20.07/PUC/2019/Assignment4/#2915" class="InductiveConstructor Operator">`suc_</a> <a id="2921" class="Symbol">:</a> <a id="2923" class="Symbol">∀</a> <a id="2925" class="Symbol">{</a><a id="2926" href="/20.07/PUC/2019/Assignment4/#2926" class="Bound">Γ</a><a id="2927" class="Symbol">}</a>
|
||
<a id="2935" class="Symbol">→</a> <a id="2937" href="/20.07/PUC/2019/Assignment4/#2926" class="Bound">Γ</a> <a id="2939" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="2941" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a>
|
||
<a id="2952" class="Comment">------</a>
|
||
<a id="2965" class="Symbol">→</a> <a id="2967" href="/20.07/PUC/2019/Assignment4/#2926" class="Bound">Γ</a> <a id="2969" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="2971" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a>
|
||
|
||
<a id="More._⊢_.case"></a><a id="2979" href="/20.07/PUC/2019/Assignment4/#2979" class="InductiveConstructor">case</a> <a id="2984" class="Symbol">:</a> <a id="2986" class="Symbol">∀</a> <a id="2988" class="Symbol">{</a><a id="2989" href="/20.07/PUC/2019/Assignment4/#2989" class="Bound">Γ</a> <a id="2991" href="/20.07/PUC/2019/Assignment4/#2991" class="Bound">A</a><a id="2992" class="Symbol">}</a>
|
||
<a id="3000" class="Symbol">→</a> <a id="3002" href="/20.07/PUC/2019/Assignment4/#2989" class="Bound">Γ</a> <a id="3004" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3006" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a>
|
||
<a id="3015" class="Symbol">→</a> <a id="3017" href="/20.07/PUC/2019/Assignment4/#2989" class="Bound">Γ</a> <a id="3019" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3021" href="/20.07/PUC/2019/Assignment4/#2991" class="Bound">A</a>
|
||
<a id="3029" class="Symbol">→</a> <a id="3031" href="/20.07/PUC/2019/Assignment4/#2989" class="Bound">Γ</a> <a id="3033" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="3035" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a> <a id="3038" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3040" href="/20.07/PUC/2019/Assignment4/#2991" class="Bound">A</a>
|
||
<a id="3050" class="Comment">-----</a>
|
||
<a id="3062" class="Symbol">→</a> <a id="3064" href="/20.07/PUC/2019/Assignment4/#2989" class="Bound">Γ</a> <a id="3066" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3068" href="/20.07/PUC/2019/Assignment4/#2991" class="Bound">A</a>
|
||
|
||
<a id="3075" class="Comment">-- fixpoint</a>
|
||
|
||
<a id="More._⊢_.μ_"></a><a id="3092" href="/20.07/PUC/2019/Assignment4/#3092" class="InductiveConstructor Operator">μ_</a> <a id="3095" class="Symbol">:</a> <a id="3097" class="Symbol">∀</a> <a id="3099" class="Symbol">{</a><a id="3100" href="/20.07/PUC/2019/Assignment4/#3100" class="Bound">Γ</a> <a id="3102" href="/20.07/PUC/2019/Assignment4/#3102" class="Bound">A</a><a id="3103" class="Symbol">}</a>
|
||
<a id="3111" class="Symbol">→</a> <a id="3113" href="/20.07/PUC/2019/Assignment4/#3100" class="Bound">Γ</a> <a id="3115" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="3117" href="/20.07/PUC/2019/Assignment4/#3102" class="Bound">A</a> <a id="3119" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3121" href="/20.07/PUC/2019/Assignment4/#3102" class="Bound">A</a>
|
||
<a id="3131" class="Comment">----------</a>
|
||
<a id="3148" class="Symbol">→</a> <a id="3150" href="/20.07/PUC/2019/Assignment4/#3100" class="Bound">Γ</a> <a id="3152" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3154" href="/20.07/PUC/2019/Assignment4/#3102" class="Bound">A</a>
|
||
|
||
<a id="3161" class="Comment">-- primitive numbers</a>
|
||
|
||
<a id="More._⊢_.con"></a><a id="3187" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="3191" class="Symbol">:</a> <a id="3193" class="Symbol">∀</a> <a id="3195" class="Symbol">{</a><a id="3196" href="/20.07/PUC/2019/Assignment4/#3196" class="Bound">Γ</a><a id="3197" class="Symbol">}</a>
|
||
<a id="3205" class="Symbol">→</a> <a id="3207" href="Agda.Builtin.Nat.html#165" class="Datatype">ℕ</a>
|
||
<a id="3217" class="Comment">-------</a>
|
||
<a id="3231" class="Symbol">→</a> <a id="3233" href="/20.07/PUC/2019/Assignment4/#3196" class="Bound">Γ</a> <a id="3235" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3237" href="/20.07/PUC/2019/Assignment4/#2056" class="InductiveConstructor">Nat</a>
|
||
|
||
<a id="More._⊢_._`*_"></a><a id="3246" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">_`*_</a> <a id="3251" class="Symbol">:</a> <a id="3253" class="Symbol">∀</a> <a id="3255" class="Symbol">{</a><a id="3256" href="/20.07/PUC/2019/Assignment4/#3256" class="Bound">Γ</a><a id="3257" class="Symbol">}</a>
|
||
<a id="3265" class="Symbol">→</a> <a id="3267" href="/20.07/PUC/2019/Assignment4/#3256" class="Bound">Γ</a> <a id="3269" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3271" href="/20.07/PUC/2019/Assignment4/#2056" class="InductiveConstructor">Nat</a>
|
||
<a id="3281" class="Symbol">→</a> <a id="3283" href="/20.07/PUC/2019/Assignment4/#3256" class="Bound">Γ</a> <a id="3285" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3287" href="/20.07/PUC/2019/Assignment4/#2056" class="InductiveConstructor">Nat</a>
|
||
<a id="3299" class="Comment">-------</a>
|
||
<a id="3313" class="Symbol">→</a> <a id="3315" href="/20.07/PUC/2019/Assignment4/#3256" class="Bound">Γ</a> <a id="3317" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3319" href="/20.07/PUC/2019/Assignment4/#2056" class="InductiveConstructor">Nat</a>
|
||
|
||
<a id="3328" class="Comment">-- let</a>
|
||
|
||
<a id="More._⊢_.`let"></a><a id="3340" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="3345" class="Symbol">:</a> <a id="3347" class="Symbol">∀</a> <a id="3349" class="Symbol">{</a><a id="3350" href="/20.07/PUC/2019/Assignment4/#3350" class="Bound">Γ</a> <a id="3352" href="/20.07/PUC/2019/Assignment4/#3352" class="Bound">A</a> <a id="3354" href="/20.07/PUC/2019/Assignment4/#3354" class="Bound">B</a><a id="3355" class="Symbol">}</a>
|
||
<a id="3363" class="Symbol">→</a> <a id="3365" href="/20.07/PUC/2019/Assignment4/#3350" class="Bound">Γ</a> <a id="3367" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3369" href="/20.07/PUC/2019/Assignment4/#3352" class="Bound">A</a>
|
||
<a id="3377" class="Symbol">→</a> <a id="3379" href="/20.07/PUC/2019/Assignment4/#3350" class="Bound">Γ</a> <a id="3381" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="3383" href="/20.07/PUC/2019/Assignment4/#3352" class="Bound">A</a> <a id="3385" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3387" href="/20.07/PUC/2019/Assignment4/#3354" class="Bound">B</a>
|
||
<a id="3397" class="Comment">----------</a>
|
||
<a id="3414" class="Symbol">→</a> <a id="3416" href="/20.07/PUC/2019/Assignment4/#3350" class="Bound">Γ</a> <a id="3418" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3420" href="/20.07/PUC/2019/Assignment4/#3354" class="Bound">B</a>
|
||
|
||
<a id="3427" class="Comment">-- products</a>
|
||
|
||
<a id="More._⊢_.`⟨_,_⟩"></a><a id="3444" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨_,_⟩</a> <a id="3451" class="Symbol">:</a> <a id="3453" class="Symbol">∀</a> <a id="3455" class="Symbol">{</a><a id="3456" href="/20.07/PUC/2019/Assignment4/#3456" class="Bound">Γ</a> <a id="3458" href="/20.07/PUC/2019/Assignment4/#3458" class="Bound">A</a> <a id="3460" href="/20.07/PUC/2019/Assignment4/#3460" class="Bound">B</a><a id="3461" class="Symbol">}</a>
|
||
<a id="3469" class="Symbol">→</a> <a id="3471" href="/20.07/PUC/2019/Assignment4/#3456" class="Bound">Γ</a> <a id="3473" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3475" href="/20.07/PUC/2019/Assignment4/#3458" class="Bound">A</a>
|
||
<a id="3483" class="Symbol">→</a> <a id="3485" href="/20.07/PUC/2019/Assignment4/#3456" class="Bound">Γ</a> <a id="3487" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3489" href="/20.07/PUC/2019/Assignment4/#3460" class="Bound">B</a>
|
||
<a id="3499" class="Comment">-----------</a>
|
||
<a id="3517" class="Symbol">→</a> <a id="3519" href="/20.07/PUC/2019/Assignment4/#3456" class="Bound">Γ</a> <a id="3521" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3523" href="/20.07/PUC/2019/Assignment4/#3458" class="Bound">A</a> <a id="3525" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">`×</a> <a id="3528" href="/20.07/PUC/2019/Assignment4/#3460" class="Bound">B</a>
|
||
|
||
<a id="More._⊢_.`proj₁"></a><a id="3535" href="/20.07/PUC/2019/Assignment4/#3535" class="InductiveConstructor">`proj₁</a> <a id="3542" class="Symbol">:</a> <a id="3544" class="Symbol">∀</a> <a id="3546" class="Symbol">{</a><a id="3547" href="/20.07/PUC/2019/Assignment4/#3547" class="Bound">Γ</a> <a id="3549" href="/20.07/PUC/2019/Assignment4/#3549" class="Bound">A</a> <a id="3551" href="/20.07/PUC/2019/Assignment4/#3551" class="Bound">B</a><a id="3552" class="Symbol">}</a>
|
||
<a id="3560" class="Symbol">→</a> <a id="3562" href="/20.07/PUC/2019/Assignment4/#3547" class="Bound">Γ</a> <a id="3564" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3566" href="/20.07/PUC/2019/Assignment4/#3549" class="Bound">A</a> <a id="3568" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">`×</a> <a id="3571" href="/20.07/PUC/2019/Assignment4/#3551" class="Bound">B</a>
|
||
<a id="3581" class="Comment">-----------</a>
|
||
<a id="3599" class="Symbol">→</a> <a id="3601" href="/20.07/PUC/2019/Assignment4/#3547" class="Bound">Γ</a> <a id="3603" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3605" href="/20.07/PUC/2019/Assignment4/#3549" class="Bound">A</a>
|
||
|
||
<a id="More._⊢_.`proj₂"></a><a id="3612" href="/20.07/PUC/2019/Assignment4/#3612" class="InductiveConstructor">`proj₂</a> <a id="3619" class="Symbol">:</a> <a id="3621" class="Symbol">∀</a> <a id="3623" class="Symbol">{</a><a id="3624" href="/20.07/PUC/2019/Assignment4/#3624" class="Bound">Γ</a> <a id="3626" href="/20.07/PUC/2019/Assignment4/#3626" class="Bound">A</a> <a id="3628" href="/20.07/PUC/2019/Assignment4/#3628" class="Bound">B</a><a id="3629" class="Symbol">}</a>
|
||
<a id="3637" class="Symbol">→</a> <a id="3639" href="/20.07/PUC/2019/Assignment4/#3624" class="Bound">Γ</a> <a id="3641" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3643" href="/20.07/PUC/2019/Assignment4/#3626" class="Bound">A</a> <a id="3645" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">`×</a> <a id="3648" href="/20.07/PUC/2019/Assignment4/#3628" class="Bound">B</a>
|
||
<a id="3658" class="Comment">-----------</a>
|
||
<a id="3676" class="Symbol">→</a> <a id="3678" href="/20.07/PUC/2019/Assignment4/#3624" class="Bound">Γ</a> <a id="3680" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3682" href="/20.07/PUC/2019/Assignment4/#3628" class="Bound">B</a>
|
||
|
||
<a id="3689" class="Comment">-- alternative formulation of products</a>
|
||
|
||
<a id="More._⊢_.case×"></a><a id="3733" href="/20.07/PUC/2019/Assignment4/#3733" class="InductiveConstructor">case×</a> <a id="3739" class="Symbol">:</a> <a id="3741" class="Symbol">∀</a> <a id="3743" class="Symbol">{</a><a id="3744" href="/20.07/PUC/2019/Assignment4/#3744" class="Bound">Γ</a> <a id="3746" href="/20.07/PUC/2019/Assignment4/#3746" class="Bound">A</a> <a id="3748" href="/20.07/PUC/2019/Assignment4/#3748" class="Bound">B</a> <a id="3750" href="/20.07/PUC/2019/Assignment4/#3750" class="Bound">C</a><a id="3751" class="Symbol">}</a>
|
||
<a id="3759" class="Symbol">→</a> <a id="3761" href="/20.07/PUC/2019/Assignment4/#3744" class="Bound">Γ</a> <a id="3763" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3765" href="/20.07/PUC/2019/Assignment4/#3746" class="Bound">A</a> <a id="3767" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">`×</a> <a id="3770" href="/20.07/PUC/2019/Assignment4/#3748" class="Bound">B</a>
|
||
<a id="3778" class="Symbol">→</a> <a id="3780" href="/20.07/PUC/2019/Assignment4/#3744" class="Bound">Γ</a> <a id="3782" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="3784" href="/20.07/PUC/2019/Assignment4/#3746" class="Bound">A</a> <a id="3786" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="3788" href="/20.07/PUC/2019/Assignment4/#3748" class="Bound">B</a> <a id="3790" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3792" href="/20.07/PUC/2019/Assignment4/#3750" class="Bound">C</a>
|
||
<a id="3802" class="Comment">--------------</a>
|
||
<a id="3823" class="Symbol">→</a> <a id="3825" href="/20.07/PUC/2019/Assignment4/#3744" class="Bound">Γ</a> <a id="3827" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="3829" href="/20.07/PUC/2019/Assignment4/#3750" class="Bound">C</a>
|
||
|
||
</pre>
|
||
<h3 id="abbreviating-de-bruijn-indices">Abbreviating de Bruijn indices</h3>
|
||
|
||
<pre class="Agda"> <a id="More.lookup"></a><a id="3879" href="/20.07/PUC/2019/Assignment4/#3879" class="Function">lookup</a> <a id="3886" class="Symbol">:</a> <a id="3888" href="/20.07/PUC/2019/Assignment4/#2219" class="Datatype">Context</a> <a id="3896" class="Symbol">→</a> <a id="3898" href="Agda.Builtin.Nat.html#165" class="Datatype">ℕ</a> <a id="3900" class="Symbol">→</a> <a id="3902" href="/20.07/PUC/2019/Assignment4/#1987" class="Datatype">Type</a>
|
||
<a id="3909" href="/20.07/PUC/2019/Assignment4/#3879" class="Function">lookup</a> <a id="3916" class="Symbol">(</a><a id="3917" href="/20.07/PUC/2019/Assignment4/#3917" class="Bound">Γ</a> <a id="3919" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="3921" href="/20.07/PUC/2019/Assignment4/#3921" class="Bound">A</a><a id="3922" class="Symbol">)</a> <a id="3924" href="Agda.Builtin.Nat.html#183" class="InductiveConstructor">zero</a> <a id="3933" class="Symbol">=</a> <a id="3936" href="/20.07/PUC/2019/Assignment4/#3921" class="Bound">A</a>
|
||
<a id="3940" href="/20.07/PUC/2019/Assignment4/#3879" class="Function">lookup</a> <a id="3947" class="Symbol">(</a><a id="3948" href="/20.07/PUC/2019/Assignment4/#3948" class="Bound">Γ</a> <a id="3950" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="3952" class="Symbol">_)</a> <a id="3955" class="Symbol">(</a><a id="3956" href="Agda.Builtin.Nat.html#196" class="InductiveConstructor">suc</a> <a id="3960" href="/20.07/PUC/2019/Assignment4/#3960" class="Bound">n</a><a id="3961" class="Symbol">)</a> <a id="3964" class="Symbol">=</a> <a id="3967" href="/20.07/PUC/2019/Assignment4/#3879" class="Function">lookup</a> <a id="3974" href="/20.07/PUC/2019/Assignment4/#3948" class="Bound">Γ</a> <a id="3976" href="/20.07/PUC/2019/Assignment4/#3960" class="Bound">n</a>
|
||
<a id="3980" href="/20.07/PUC/2019/Assignment4/#3879" class="Function">lookup</a> <a id="3987" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a> <a id="3995" class="Symbol">_</a> <a id="4004" class="Symbol">=</a> <a id="4007" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#294" class="Function">⊥-elim</a> <a id="4014" href="/20.07/PUC/2019/Assignment4/#4045" class="Postulate">impossible</a>
|
||
<a id="4029" class="Keyword">where</a> <a id="4035" class="Keyword">postulate</a> <a id="4045" href="/20.07/PUC/2019/Assignment4/#4045" class="Postulate">impossible</a> <a id="4056" class="Symbol">:</a> <a id="4058" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#279" class="Datatype">⊥</a>
|
||
|
||
<a id="More.count"></a><a id="4063" href="/20.07/PUC/2019/Assignment4/#4063" class="Function">count</a> <a id="4069" class="Symbol">:</a> <a id="4071" class="Symbol">∀</a> <a id="4073" class="Symbol">{</a><a id="4074" href="/20.07/PUC/2019/Assignment4/#4074" class="Bound">Γ</a><a id="4075" class="Symbol">}</a> <a id="4077" class="Symbol">→</a> <a id="4079" class="Symbol">(</a><a id="4080" href="/20.07/PUC/2019/Assignment4/#4080" class="Bound">n</a> <a id="4082" class="Symbol">:</a> <a id="4084" href="Agda.Builtin.Nat.html#165" class="Datatype">ℕ</a><a id="4085" class="Symbol">)</a> <a id="4087" class="Symbol">→</a> <a id="4089" href="/20.07/PUC/2019/Assignment4/#4074" class="Bound">Γ</a> <a id="4091" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="4093" href="/20.07/PUC/2019/Assignment4/#3879" class="Function">lookup</a> <a id="4100" href="/20.07/PUC/2019/Assignment4/#4074" class="Bound">Γ</a> <a id="4102" href="/20.07/PUC/2019/Assignment4/#4080" class="Bound">n</a>
|
||
<a id="4106" href="/20.07/PUC/2019/Assignment4/#4063" class="Function">count</a> <a id="4112" class="Symbol">{</a><a id="4113" href="/20.07/PUC/2019/Assignment4/#4113" class="Bound">Γ</a> <a id="4115" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="4117" class="Symbol">_}</a> <a id="4120" href="Agda.Builtin.Nat.html#183" class="InductiveConstructor">zero</a> <a id="4129" class="Symbol">=</a> <a id="4132" href="/20.07/PUC/2019/Assignment4/#2385" class="InductiveConstructor">Z</a>
|
||
<a id="4136" href="/20.07/PUC/2019/Assignment4/#4063" class="Function">count</a> <a id="4142" class="Symbol">{</a><a id="4143" href="/20.07/PUC/2019/Assignment4/#4143" class="Bound">Γ</a> <a id="4145" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="4147" class="Symbol">_}</a> <a id="4150" class="Symbol">(</a><a id="4151" href="Agda.Builtin.Nat.html#196" class="InductiveConstructor">suc</a> <a id="4155" href="/20.07/PUC/2019/Assignment4/#4155" class="Bound">n</a><a id="4156" class="Symbol">)</a> <a id="4159" class="Symbol">=</a> <a id="4162" href="/20.07/PUC/2019/Assignment4/#2438" class="InductiveConstructor Operator">S</a> <a id="4164" class="Symbol">(</a><a id="4165" href="/20.07/PUC/2019/Assignment4/#4063" class="Function">count</a> <a id="4171" href="/20.07/PUC/2019/Assignment4/#4155" class="Bound">n</a><a id="4172" class="Symbol">)</a>
|
||
<a id="4176" href="/20.07/PUC/2019/Assignment4/#4063" class="Function">count</a> <a id="4182" class="Symbol">{</a><a id="4183" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a><a id="4184" class="Symbol">}</a> <a id="4190" class="Symbol">_</a> <a id="4199" class="Symbol">=</a> <a id="4202" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#294" class="Function">⊥-elim</a> <a id="4209" href="/20.07/PUC/2019/Assignment4/#4240" class="Postulate">impossible</a>
|
||
<a id="4224" class="Keyword">where</a> <a id="4230" class="Keyword">postulate</a> <a id="4240" href="/20.07/PUC/2019/Assignment4/#4240" class="Postulate">impossible</a> <a id="4251" class="Symbol">:</a> <a id="4253" href="https://agda.github.io/agda-stdlib/v1.1/Data.Empty.html#279" class="Datatype">⊥</a>
|
||
|
||
<a id="More.#_"></a><a id="4258" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#_</a> <a id="4261" class="Symbol">:</a> <a id="4263" class="Symbol">∀</a> <a id="4265" class="Symbol">{</a><a id="4266" href="/20.07/PUC/2019/Assignment4/#4266" class="Bound">Γ</a><a id="4267" class="Symbol">}</a> <a id="4269" class="Symbol">→</a> <a id="4271" class="Symbol">(</a><a id="4272" href="/20.07/PUC/2019/Assignment4/#4272" class="Bound">n</a> <a id="4274" class="Symbol">:</a> <a id="4276" href="Agda.Builtin.Nat.html#165" class="Datatype">ℕ</a><a id="4277" class="Symbol">)</a> <a id="4279" class="Symbol">→</a> <a id="4281" href="/20.07/PUC/2019/Assignment4/#4266" class="Bound">Γ</a> <a id="4283" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="4285" href="/20.07/PUC/2019/Assignment4/#3879" class="Function">lookup</a> <a id="4292" href="/20.07/PUC/2019/Assignment4/#4266" class="Bound">Γ</a> <a id="4294" href="/20.07/PUC/2019/Assignment4/#4272" class="Bound">n</a>
|
||
<a id="4298" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="4300" href="/20.07/PUC/2019/Assignment4/#4300" class="Bound">n</a> <a id="4303" class="Symbol">=</a> <a id="4306" href="/20.07/PUC/2019/Assignment4/#2610" class="InductiveConstructor Operator">`</a> <a id="4308" href="/20.07/PUC/2019/Assignment4/#4063" class="Function">count</a> <a id="4314" href="/20.07/PUC/2019/Assignment4/#4300" class="Bound">n</a>
|
||
</pre>
|
||
<h2 id="renaming">Renaming</h2>
|
||
|
||
<pre class="Agda"> <a id="More.ext"></a><a id="4340" href="/20.07/PUC/2019/Assignment4/#4340" class="Function">ext</a> <a id="4344" class="Symbol">:</a> <a id="4346" class="Symbol">∀</a> <a id="4348" class="Symbol">{</a><a id="4349" href="/20.07/PUC/2019/Assignment4/#4349" class="Bound">Γ</a> <a id="4351" href="/20.07/PUC/2019/Assignment4/#4351" class="Bound">Δ</a><a id="4352" class="Symbol">}</a> <a id="4354" class="Symbol">→</a> <a id="4356" class="Symbol">(∀</a> <a id="4359" class="Symbol">{</a><a id="4360" href="/20.07/PUC/2019/Assignment4/#4360" class="Bound">A</a><a id="4361" class="Symbol">}</a> <a id="4363" class="Symbol">→</a> <a id="4365" href="/20.07/PUC/2019/Assignment4/#4349" class="Bound">Γ</a> <a id="4367" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="4369" href="/20.07/PUC/2019/Assignment4/#4360" class="Bound">A</a> <a id="4371" class="Symbol">→</a> <a id="4373" href="/20.07/PUC/2019/Assignment4/#4351" class="Bound">Δ</a> <a id="4375" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="4377" href="/20.07/PUC/2019/Assignment4/#4360" class="Bound">A</a><a id="4378" class="Symbol">)</a> <a id="4380" class="Symbol">→</a> <a id="4382" class="Symbol">(∀</a> <a id="4385" class="Symbol">{</a><a id="4386" href="/20.07/PUC/2019/Assignment4/#4386" class="Bound">A</a> <a id="4388" href="/20.07/PUC/2019/Assignment4/#4388" class="Bound">B</a><a id="4389" class="Symbol">}</a> <a id="4391" class="Symbol">→</a> <a id="4393" href="/20.07/PUC/2019/Assignment4/#4349" class="Bound">Γ</a> <a id="4395" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="4397" href="/20.07/PUC/2019/Assignment4/#4386" class="Bound">A</a> <a id="4399" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="4401" href="/20.07/PUC/2019/Assignment4/#4388" class="Bound">B</a> <a id="4403" class="Symbol">→</a> <a id="4405" href="/20.07/PUC/2019/Assignment4/#4351" class="Bound">Δ</a> <a id="4407" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="4409" href="/20.07/PUC/2019/Assignment4/#4386" class="Bound">A</a> <a id="4411" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="4413" href="/20.07/PUC/2019/Assignment4/#4388" class="Bound">B</a><a id="4414" class="Symbol">)</a>
|
||
<a id="4418" href="/20.07/PUC/2019/Assignment4/#4340" class="Function">ext</a> <a id="4422" href="/20.07/PUC/2019/Assignment4/#4422" class="Bound">ρ</a> <a id="4424" href="/20.07/PUC/2019/Assignment4/#2385" class="InductiveConstructor">Z</a> <a id="4431" class="Symbol">=</a> <a id="4434" href="/20.07/PUC/2019/Assignment4/#2385" class="InductiveConstructor">Z</a>
|
||
<a id="4438" href="/20.07/PUC/2019/Assignment4/#4340" class="Function">ext</a> <a id="4442" href="/20.07/PUC/2019/Assignment4/#4442" class="Bound">ρ</a> <a id="4444" class="Symbol">(</a><a id="4445" href="/20.07/PUC/2019/Assignment4/#2438" class="InductiveConstructor Operator">S</a> <a id="4447" href="/20.07/PUC/2019/Assignment4/#4447" class="Bound">x</a><a id="4448" class="Symbol">)</a> <a id="4451" class="Symbol">=</a> <a id="4454" href="/20.07/PUC/2019/Assignment4/#2438" class="InductiveConstructor Operator">S</a> <a id="4456" class="Symbol">(</a><a id="4457" href="/20.07/PUC/2019/Assignment4/#4442" class="Bound">ρ</a> <a id="4459" href="/20.07/PUC/2019/Assignment4/#4447" class="Bound">x</a><a id="4460" class="Symbol">)</a>
|
||
|
||
<a id="More.rename"></a><a id="4465" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4472" class="Symbol">:</a> <a id="4474" class="Symbol">∀</a> <a id="4476" class="Symbol">{</a><a id="4477" href="/20.07/PUC/2019/Assignment4/#4477" class="Bound">Γ</a> <a id="4479" href="/20.07/PUC/2019/Assignment4/#4479" class="Bound">Δ</a><a id="4480" class="Symbol">}</a> <a id="4482" class="Symbol">→</a> <a id="4484" class="Symbol">(∀</a> <a id="4487" class="Symbol">{</a><a id="4488" href="/20.07/PUC/2019/Assignment4/#4488" class="Bound">A</a><a id="4489" class="Symbol">}</a> <a id="4491" class="Symbol">→</a> <a id="4493" href="/20.07/PUC/2019/Assignment4/#4477" class="Bound">Γ</a> <a id="4495" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="4497" href="/20.07/PUC/2019/Assignment4/#4488" class="Bound">A</a> <a id="4499" class="Symbol">→</a> <a id="4501" href="/20.07/PUC/2019/Assignment4/#4479" class="Bound">Δ</a> <a id="4503" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="4505" href="/20.07/PUC/2019/Assignment4/#4488" class="Bound">A</a><a id="4506" class="Symbol">)</a> <a id="4508" class="Symbol">→</a> <a id="4510" class="Symbol">(∀</a> <a id="4513" class="Symbol">{</a><a id="4514" href="/20.07/PUC/2019/Assignment4/#4514" class="Bound">A</a><a id="4515" class="Symbol">}</a> <a id="4517" class="Symbol">→</a> <a id="4519" href="/20.07/PUC/2019/Assignment4/#4477" class="Bound">Γ</a> <a id="4521" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="4523" href="/20.07/PUC/2019/Assignment4/#4514" class="Bound">A</a> <a id="4525" class="Symbol">→</a> <a id="4527" href="/20.07/PUC/2019/Assignment4/#4479" class="Bound">Δ</a> <a id="4529" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="4531" href="/20.07/PUC/2019/Assignment4/#4514" class="Bound">A</a><a id="4532" class="Symbol">)</a>
|
||
<a id="4536" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4543" href="/20.07/PUC/2019/Assignment4/#4543" class="Bound">ρ</a> <a id="4545" class="Symbol">(</a><a id="4546" href="/20.07/PUC/2019/Assignment4/#2610" class="InductiveConstructor Operator">`</a> <a id="4548" href="/20.07/PUC/2019/Assignment4/#4548" class="Bound">x</a><a id="4549" class="Symbol">)</a> <a id="4560" class="Symbol">=</a> <a id="4563" href="/20.07/PUC/2019/Assignment4/#2610" class="InductiveConstructor Operator">`</a> <a id="4565" class="Symbol">(</a><a id="4566" href="/20.07/PUC/2019/Assignment4/#4543" class="Bound">ρ</a> <a id="4568" href="/20.07/PUC/2019/Assignment4/#4548" class="Bound">x</a><a id="4569" class="Symbol">)</a>
|
||
<a id="4573" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4580" href="/20.07/PUC/2019/Assignment4/#4580" class="Bound">ρ</a> <a id="4582" class="Symbol">(</a><a id="4583" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ</a> <a id="4585" href="/20.07/PUC/2019/Assignment4/#4585" class="Bound">N</a><a id="4586" class="Symbol">)</a> <a id="4597" class="Symbol">=</a> <a id="4600" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ</a> <a id="4602" class="Symbol">(</a><a id="4603" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4610" class="Symbol">(</a><a id="4611" href="/20.07/PUC/2019/Assignment4/#4340" class="Function">ext</a> <a id="4615" href="/20.07/PUC/2019/Assignment4/#4580" class="Bound">ρ</a><a id="4616" class="Symbol">)</a> <a id="4618" href="/20.07/PUC/2019/Assignment4/#4585" class="Bound">N</a><a id="4619" class="Symbol">)</a>
|
||
<a id="4623" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4630" href="/20.07/PUC/2019/Assignment4/#4630" class="Bound">ρ</a> <a id="4632" class="Symbol">(</a><a id="4633" href="/20.07/PUC/2019/Assignment4/#4633" class="Bound">L</a> <a id="4635" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="4637" href="/20.07/PUC/2019/Assignment4/#4637" class="Bound">M</a><a id="4638" class="Symbol">)</a> <a id="4647" class="Symbol">=</a> <a id="4650" class="Symbol">(</a><a id="4651" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4658" href="/20.07/PUC/2019/Assignment4/#4630" class="Bound">ρ</a> <a id="4660" href="/20.07/PUC/2019/Assignment4/#4633" class="Bound">L</a><a id="4661" class="Symbol">)</a> <a id="4663" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="4665" class="Symbol">(</a><a id="4666" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4673" href="/20.07/PUC/2019/Assignment4/#4630" class="Bound">ρ</a> <a id="4675" href="/20.07/PUC/2019/Assignment4/#4637" class="Bound">M</a><a id="4676" class="Symbol">)</a>
|
||
<a id="4680" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4687" href="/20.07/PUC/2019/Assignment4/#4687" class="Bound">ρ</a> <a id="4689" class="Symbol">(</a><a id="4690" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a><a id="4695" class="Symbol">)</a> <a id="4704" class="Symbol">=</a> <a id="4707" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a>
|
||
<a id="4715" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4722" href="/20.07/PUC/2019/Assignment4/#4722" class="Bound">ρ</a> <a id="4724" class="Symbol">(</a><a id="4725" href="/20.07/PUC/2019/Assignment4/#2915" class="InductiveConstructor Operator">`suc</a> <a id="4730" href="/20.07/PUC/2019/Assignment4/#4730" class="Bound">M</a><a id="4731" class="Symbol">)</a> <a id="4739" class="Symbol">=</a> <a id="4742" href="/20.07/PUC/2019/Assignment4/#2915" class="InductiveConstructor Operator">`suc</a> <a id="4747" class="Symbol">(</a><a id="4748" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4755" href="/20.07/PUC/2019/Assignment4/#4722" class="Bound">ρ</a> <a id="4757" href="/20.07/PUC/2019/Assignment4/#4730" class="Bound">M</a><a id="4758" class="Symbol">)</a>
|
||
<a id="4762" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4769" href="/20.07/PUC/2019/Assignment4/#4769" class="Bound">ρ</a> <a id="4771" class="Symbol">(</a><a id="4772" href="/20.07/PUC/2019/Assignment4/#2979" class="InductiveConstructor">case</a> <a id="4777" href="/20.07/PUC/2019/Assignment4/#4777" class="Bound">L</a> <a id="4779" href="/20.07/PUC/2019/Assignment4/#4779" class="Bound">M</a> <a id="4781" href="/20.07/PUC/2019/Assignment4/#4781" class="Bound">N</a><a id="4782" class="Symbol">)</a> <a id="4786" class="Symbol">=</a> <a id="4789" href="/20.07/PUC/2019/Assignment4/#2979" class="InductiveConstructor">case</a> <a id="4794" class="Symbol">(</a><a id="4795" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4802" href="/20.07/PUC/2019/Assignment4/#4769" class="Bound">ρ</a> <a id="4804" href="/20.07/PUC/2019/Assignment4/#4777" class="Bound">L</a><a id="4805" class="Symbol">)</a> <a id="4807" class="Symbol">(</a><a id="4808" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4815" href="/20.07/PUC/2019/Assignment4/#4769" class="Bound">ρ</a> <a id="4817" href="/20.07/PUC/2019/Assignment4/#4779" class="Bound">M</a><a id="4818" class="Symbol">)</a> <a id="4820" class="Symbol">(</a><a id="4821" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4828" class="Symbol">(</a><a id="4829" href="/20.07/PUC/2019/Assignment4/#4340" class="Function">ext</a> <a id="4833" href="/20.07/PUC/2019/Assignment4/#4769" class="Bound">ρ</a><a id="4834" class="Symbol">)</a> <a id="4836" href="/20.07/PUC/2019/Assignment4/#4781" class="Bound">N</a><a id="4837" class="Symbol">)</a>
|
||
<a id="4841" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4848" href="/20.07/PUC/2019/Assignment4/#4848" class="Bound">ρ</a> <a id="4850" class="Symbol">(</a><a id="4851" href="/20.07/PUC/2019/Assignment4/#3092" class="InductiveConstructor Operator">μ</a> <a id="4853" href="/20.07/PUC/2019/Assignment4/#4853" class="Bound">N</a><a id="4854" class="Symbol">)</a> <a id="4865" class="Symbol">=</a> <a id="4868" href="/20.07/PUC/2019/Assignment4/#3092" class="InductiveConstructor Operator">μ</a> <a id="4870" class="Symbol">(</a><a id="4871" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4878" class="Symbol">(</a><a id="4879" href="/20.07/PUC/2019/Assignment4/#4340" class="Function">ext</a> <a id="4883" href="/20.07/PUC/2019/Assignment4/#4848" class="Bound">ρ</a><a id="4884" class="Symbol">)</a> <a id="4886" href="/20.07/PUC/2019/Assignment4/#4853" class="Bound">N</a><a id="4887" class="Symbol">)</a>
|
||
<a id="4891" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4898" href="/20.07/PUC/2019/Assignment4/#4898" class="Bound">ρ</a> <a id="4900" class="Symbol">(</a><a id="4901" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="4905" href="/20.07/PUC/2019/Assignment4/#4905" class="Bound">n</a><a id="4906" class="Symbol">)</a> <a id="4915" class="Symbol">=</a> <a id="4918" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="4922" href="/20.07/PUC/2019/Assignment4/#4905" class="Bound">n</a>
|
||
<a id="4926" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4933" href="/20.07/PUC/2019/Assignment4/#4933" class="Bound">ρ</a> <a id="4935" class="Symbol">(</a><a id="4936" href="/20.07/PUC/2019/Assignment4/#4936" class="Bound">M</a> <a id="4938" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="4941" href="/20.07/PUC/2019/Assignment4/#4941" class="Bound">N</a><a id="4942" class="Symbol">)</a> <a id="4950" class="Symbol">=</a> <a id="4953" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4960" href="/20.07/PUC/2019/Assignment4/#4933" class="Bound">ρ</a> <a id="4962" href="/20.07/PUC/2019/Assignment4/#4936" class="Bound">M</a> <a id="4964" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="4967" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4974" href="/20.07/PUC/2019/Assignment4/#4933" class="Bound">ρ</a> <a id="4976" href="/20.07/PUC/2019/Assignment4/#4941" class="Bound">N</a>
|
||
<a id="4980" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="4987" href="/20.07/PUC/2019/Assignment4/#4987" class="Bound">ρ</a> <a id="4989" class="Symbol">(</a><a id="4990" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="4995" href="/20.07/PUC/2019/Assignment4/#4995" class="Bound">M</a> <a id="4997" href="/20.07/PUC/2019/Assignment4/#4997" class="Bound">N</a><a id="4998" class="Symbol">)</a> <a id="5004" class="Symbol">=</a> <a id="5007" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="5012" class="Symbol">(</a><a id="5013" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5020" href="/20.07/PUC/2019/Assignment4/#4987" class="Bound">ρ</a> <a id="5022" href="/20.07/PUC/2019/Assignment4/#4995" class="Bound">M</a><a id="5023" class="Symbol">)</a> <a id="5025" class="Symbol">(</a><a id="5026" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5033" class="Symbol">(</a><a id="5034" href="/20.07/PUC/2019/Assignment4/#4340" class="Function">ext</a> <a id="5038" href="/20.07/PUC/2019/Assignment4/#4987" class="Bound">ρ</a><a id="5039" class="Symbol">)</a> <a id="5041" href="/20.07/PUC/2019/Assignment4/#4997" class="Bound">N</a><a id="5042" class="Symbol">)</a>
|
||
<a id="5046" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5053" href="/20.07/PUC/2019/Assignment4/#5053" class="Bound">ρ</a> <a id="5055" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="5058" href="/20.07/PUC/2019/Assignment4/#5058" class="Bound">M</a> <a id="5060" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="5062" href="/20.07/PUC/2019/Assignment4/#5062" class="Bound">N</a> <a id="5064" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="5070" class="Symbol">=</a> <a id="5073" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="5076" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5083" href="/20.07/PUC/2019/Assignment4/#5053" class="Bound">ρ</a> <a id="5085" href="/20.07/PUC/2019/Assignment4/#5058" class="Bound">M</a> <a id="5087" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="5089" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5096" href="/20.07/PUC/2019/Assignment4/#5053" class="Bound">ρ</a> <a id="5098" href="/20.07/PUC/2019/Assignment4/#5062" class="Bound">N</a> <a id="5100" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="5104" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5111" href="/20.07/PUC/2019/Assignment4/#5111" class="Bound">ρ</a> <a id="5113" class="Symbol">(</a><a id="5114" href="/20.07/PUC/2019/Assignment4/#3535" class="InductiveConstructor">`proj₁</a> <a id="5121" href="/20.07/PUC/2019/Assignment4/#5121" class="Bound">L</a><a id="5122" class="Symbol">)</a> <a id="5128" class="Symbol">=</a> <a id="5131" href="/20.07/PUC/2019/Assignment4/#3535" class="InductiveConstructor">`proj₁</a> <a id="5138" class="Symbol">(</a><a id="5139" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5146" href="/20.07/PUC/2019/Assignment4/#5111" class="Bound">ρ</a> <a id="5148" href="/20.07/PUC/2019/Assignment4/#5121" class="Bound">L</a><a id="5149" class="Symbol">)</a>
|
||
<a id="5153" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5160" href="/20.07/PUC/2019/Assignment4/#5160" class="Bound">ρ</a> <a id="5162" class="Symbol">(</a><a id="5163" href="/20.07/PUC/2019/Assignment4/#3612" class="InductiveConstructor">`proj₂</a> <a id="5170" href="/20.07/PUC/2019/Assignment4/#5170" class="Bound">L</a><a id="5171" class="Symbol">)</a> <a id="5177" class="Symbol">=</a> <a id="5180" href="/20.07/PUC/2019/Assignment4/#3612" class="InductiveConstructor">`proj₂</a> <a id="5187" class="Symbol">(</a><a id="5188" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5195" href="/20.07/PUC/2019/Assignment4/#5160" class="Bound">ρ</a> <a id="5197" href="/20.07/PUC/2019/Assignment4/#5170" class="Bound">L</a><a id="5198" class="Symbol">)</a>
|
||
<a id="5202" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5209" href="/20.07/PUC/2019/Assignment4/#5209" class="Bound">ρ</a> <a id="5211" class="Symbol">(</a><a id="5212" href="/20.07/PUC/2019/Assignment4/#3733" class="InductiveConstructor">case×</a> <a id="5218" href="/20.07/PUC/2019/Assignment4/#5218" class="Bound">L</a> <a id="5220" href="/20.07/PUC/2019/Assignment4/#5220" class="Bound">M</a><a id="5221" class="Symbol">)</a> <a id="5226" class="Symbol">=</a> <a id="5229" href="/20.07/PUC/2019/Assignment4/#3733" class="InductiveConstructor">case×</a> <a id="5235" class="Symbol">(</a><a id="5236" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5243" href="/20.07/PUC/2019/Assignment4/#5209" class="Bound">ρ</a> <a id="5245" href="/20.07/PUC/2019/Assignment4/#5218" class="Bound">L</a><a id="5246" class="Symbol">)</a> <a id="5248" class="Symbol">(</a><a id="5249" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5256" class="Symbol">(</a><a id="5257" href="/20.07/PUC/2019/Assignment4/#4340" class="Function">ext</a> <a id="5261" class="Symbol">(</a><a id="5262" href="/20.07/PUC/2019/Assignment4/#4340" class="Function">ext</a> <a id="5266" href="/20.07/PUC/2019/Assignment4/#5209" class="Bound">ρ</a><a id="5267" class="Symbol">))</a> <a id="5270" href="/20.07/PUC/2019/Assignment4/#5220" class="Bound">M</a><a id="5271" class="Symbol">)</a>
|
||
</pre>
|
||
<h2 id="simultaneous-substitution">Simultaneous Substitution</h2>
|
||
|
||
<pre class="Agda"> <a id="More.exts"></a><a id="5314" href="/20.07/PUC/2019/Assignment4/#5314" class="Function">exts</a> <a id="5319" class="Symbol">:</a> <a id="5321" class="Symbol">∀</a> <a id="5323" class="Symbol">{</a><a id="5324" href="/20.07/PUC/2019/Assignment4/#5324" class="Bound">Γ</a> <a id="5326" href="/20.07/PUC/2019/Assignment4/#5326" class="Bound">Δ</a><a id="5327" class="Symbol">}</a> <a id="5329" class="Symbol">→</a> <a id="5331" class="Symbol">(∀</a> <a id="5334" class="Symbol">{</a><a id="5335" href="/20.07/PUC/2019/Assignment4/#5335" class="Bound">A</a><a id="5336" class="Symbol">}</a> <a id="5338" class="Symbol">→</a> <a id="5340" href="/20.07/PUC/2019/Assignment4/#5324" class="Bound">Γ</a> <a id="5342" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="5344" href="/20.07/PUC/2019/Assignment4/#5335" class="Bound">A</a> <a id="5346" class="Symbol">→</a> <a id="5348" href="/20.07/PUC/2019/Assignment4/#5326" class="Bound">Δ</a> <a id="5350" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="5352" href="/20.07/PUC/2019/Assignment4/#5335" class="Bound">A</a><a id="5353" class="Symbol">)</a> <a id="5355" class="Symbol">→</a> <a id="5357" class="Symbol">(∀</a> <a id="5360" class="Symbol">{</a><a id="5361" href="/20.07/PUC/2019/Assignment4/#5361" class="Bound">A</a> <a id="5363" href="/20.07/PUC/2019/Assignment4/#5363" class="Bound">B</a><a id="5364" class="Symbol">}</a> <a id="5366" class="Symbol">→</a> <a id="5368" href="/20.07/PUC/2019/Assignment4/#5324" class="Bound">Γ</a> <a id="5370" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="5372" href="/20.07/PUC/2019/Assignment4/#5361" class="Bound">A</a> <a id="5374" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="5376" href="/20.07/PUC/2019/Assignment4/#5363" class="Bound">B</a> <a id="5378" class="Symbol">→</a> <a id="5380" href="/20.07/PUC/2019/Assignment4/#5326" class="Bound">Δ</a> <a id="5382" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="5384" href="/20.07/PUC/2019/Assignment4/#5361" class="Bound">A</a> <a id="5386" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="5388" href="/20.07/PUC/2019/Assignment4/#5363" class="Bound">B</a><a id="5389" class="Symbol">)</a>
|
||
<a id="5393" href="/20.07/PUC/2019/Assignment4/#5314" class="Function">exts</a> <a id="5398" href="/20.07/PUC/2019/Assignment4/#5398" class="Bound">σ</a> <a id="5400" href="/20.07/PUC/2019/Assignment4/#2385" class="InductiveConstructor">Z</a> <a id="5407" class="Symbol">=</a> <a id="5410" href="/20.07/PUC/2019/Assignment4/#2610" class="InductiveConstructor Operator">`</a> <a id="5412" href="/20.07/PUC/2019/Assignment4/#2385" class="InductiveConstructor">Z</a>
|
||
<a id="5416" href="/20.07/PUC/2019/Assignment4/#5314" class="Function">exts</a> <a id="5421" href="/20.07/PUC/2019/Assignment4/#5421" class="Bound">σ</a> <a id="5423" class="Symbol">(</a><a id="5424" href="/20.07/PUC/2019/Assignment4/#2438" class="InductiveConstructor Operator">S</a> <a id="5426" href="/20.07/PUC/2019/Assignment4/#5426" class="Bound">x</a><a id="5427" class="Symbol">)</a> <a id="5430" class="Symbol">=</a> <a id="5433" href="/20.07/PUC/2019/Assignment4/#4465" class="Function">rename</a> <a id="5440" href="/20.07/PUC/2019/Assignment4/#2438" class="InductiveConstructor Operator">S_</a> <a id="5443" class="Symbol">(</a><a id="5444" href="/20.07/PUC/2019/Assignment4/#5421" class="Bound">σ</a> <a id="5446" href="/20.07/PUC/2019/Assignment4/#5426" class="Bound">x</a><a id="5447" class="Symbol">)</a>
|
||
|
||
<a id="More.subst"></a><a id="5452" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5458" class="Symbol">:</a> <a id="5460" class="Symbol">∀</a> <a id="5462" class="Symbol">{</a><a id="5463" href="/20.07/PUC/2019/Assignment4/#5463" class="Bound">Γ</a> <a id="5465" href="/20.07/PUC/2019/Assignment4/#5465" class="Bound">Δ</a><a id="5466" class="Symbol">}</a> <a id="5468" class="Symbol">→</a> <a id="5470" class="Symbol">(∀</a> <a id="5473" class="Symbol">{</a><a id="5474" href="/20.07/PUC/2019/Assignment4/#5474" class="Bound">C</a><a id="5475" class="Symbol">}</a> <a id="5477" class="Symbol">→</a> <a id="5479" href="/20.07/PUC/2019/Assignment4/#5463" class="Bound">Γ</a> <a id="5481" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="5483" href="/20.07/PUC/2019/Assignment4/#5474" class="Bound">C</a> <a id="5485" class="Symbol">→</a> <a id="5487" href="/20.07/PUC/2019/Assignment4/#5465" class="Bound">Δ</a> <a id="5489" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="5491" href="/20.07/PUC/2019/Assignment4/#5474" class="Bound">C</a><a id="5492" class="Symbol">)</a> <a id="5494" class="Symbol">→</a> <a id="5496" class="Symbol">(∀</a> <a id="5499" class="Symbol">{</a><a id="5500" href="/20.07/PUC/2019/Assignment4/#5500" class="Bound">C</a><a id="5501" class="Symbol">}</a> <a id="5503" class="Symbol">→</a> <a id="5505" href="/20.07/PUC/2019/Assignment4/#5463" class="Bound">Γ</a> <a id="5507" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="5509" href="/20.07/PUC/2019/Assignment4/#5500" class="Bound">C</a> <a id="5511" class="Symbol">→</a> <a id="5513" href="/20.07/PUC/2019/Assignment4/#5465" class="Bound">Δ</a> <a id="5515" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="5517" href="/20.07/PUC/2019/Assignment4/#5500" class="Bound">C</a><a id="5518" class="Symbol">)</a>
|
||
<a id="5522" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5528" href="/20.07/PUC/2019/Assignment4/#5528" class="Bound">σ</a> <a id="5530" class="Symbol">(</a><a id="5531" href="/20.07/PUC/2019/Assignment4/#2610" class="InductiveConstructor Operator">`</a> <a id="5533" href="/20.07/PUC/2019/Assignment4/#5533" class="Bound">k</a><a id="5534" class="Symbol">)</a> <a id="5545" class="Symbol">=</a> <a id="5548" href="/20.07/PUC/2019/Assignment4/#5528" class="Bound">σ</a> <a id="5550" href="/20.07/PUC/2019/Assignment4/#5533" class="Bound">k</a>
|
||
<a id="5554" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5560" href="/20.07/PUC/2019/Assignment4/#5560" class="Bound">σ</a> <a id="5562" class="Symbol">(</a><a id="5563" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ</a> <a id="5565" href="/20.07/PUC/2019/Assignment4/#5565" class="Bound">N</a><a id="5566" class="Symbol">)</a> <a id="5577" class="Symbol">=</a> <a id="5580" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ</a> <a id="5582" class="Symbol">(</a><a id="5583" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5589" class="Symbol">(</a><a id="5590" href="/20.07/PUC/2019/Assignment4/#5314" class="Function">exts</a> <a id="5595" href="/20.07/PUC/2019/Assignment4/#5560" class="Bound">σ</a><a id="5596" class="Symbol">)</a> <a id="5598" href="/20.07/PUC/2019/Assignment4/#5565" class="Bound">N</a><a id="5599" class="Symbol">)</a>
|
||
<a id="5603" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5609" href="/20.07/PUC/2019/Assignment4/#5609" class="Bound">σ</a> <a id="5611" class="Symbol">(</a><a id="5612" href="/20.07/PUC/2019/Assignment4/#5612" class="Bound">L</a> <a id="5614" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="5616" href="/20.07/PUC/2019/Assignment4/#5616" class="Bound">M</a><a id="5617" class="Symbol">)</a> <a id="5626" class="Symbol">=</a> <a id="5629" class="Symbol">(</a><a id="5630" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5636" href="/20.07/PUC/2019/Assignment4/#5609" class="Bound">σ</a> <a id="5638" href="/20.07/PUC/2019/Assignment4/#5612" class="Bound">L</a><a id="5639" class="Symbol">)</a> <a id="5641" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="5643" class="Symbol">(</a><a id="5644" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5650" href="/20.07/PUC/2019/Assignment4/#5609" class="Bound">σ</a> <a id="5652" href="/20.07/PUC/2019/Assignment4/#5616" class="Bound">M</a><a id="5653" class="Symbol">)</a>
|
||
<a id="5657" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5663" href="/20.07/PUC/2019/Assignment4/#5663" class="Bound">σ</a> <a id="5665" class="Symbol">(</a><a id="5666" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a><a id="5671" class="Symbol">)</a> <a id="5680" class="Symbol">=</a> <a id="5683" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a>
|
||
<a id="5691" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5697" href="/20.07/PUC/2019/Assignment4/#5697" class="Bound">σ</a> <a id="5699" class="Symbol">(</a><a id="5700" href="/20.07/PUC/2019/Assignment4/#2915" class="InductiveConstructor Operator">`suc</a> <a id="5705" href="/20.07/PUC/2019/Assignment4/#5705" class="Bound">M</a><a id="5706" class="Symbol">)</a> <a id="5714" class="Symbol">=</a> <a id="5717" href="/20.07/PUC/2019/Assignment4/#2915" class="InductiveConstructor Operator">`suc</a> <a id="5722" class="Symbol">(</a><a id="5723" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5729" href="/20.07/PUC/2019/Assignment4/#5697" class="Bound">σ</a> <a id="5731" href="/20.07/PUC/2019/Assignment4/#5705" class="Bound">M</a><a id="5732" class="Symbol">)</a>
|
||
<a id="5736" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5742" href="/20.07/PUC/2019/Assignment4/#5742" class="Bound">σ</a> <a id="5744" class="Symbol">(</a><a id="5745" href="/20.07/PUC/2019/Assignment4/#2979" class="InductiveConstructor">case</a> <a id="5750" href="/20.07/PUC/2019/Assignment4/#5750" class="Bound">L</a> <a id="5752" href="/20.07/PUC/2019/Assignment4/#5752" class="Bound">M</a> <a id="5754" href="/20.07/PUC/2019/Assignment4/#5754" class="Bound">N</a><a id="5755" class="Symbol">)</a> <a id="5759" class="Symbol">=</a> <a id="5762" href="/20.07/PUC/2019/Assignment4/#2979" class="InductiveConstructor">case</a> <a id="5767" class="Symbol">(</a><a id="5768" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5774" href="/20.07/PUC/2019/Assignment4/#5742" class="Bound">σ</a> <a id="5776" href="/20.07/PUC/2019/Assignment4/#5750" class="Bound">L</a><a id="5777" class="Symbol">)</a> <a id="5779" class="Symbol">(</a><a id="5780" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5786" href="/20.07/PUC/2019/Assignment4/#5742" class="Bound">σ</a> <a id="5788" href="/20.07/PUC/2019/Assignment4/#5752" class="Bound">M</a><a id="5789" class="Symbol">)</a> <a id="5791" class="Symbol">(</a><a id="5792" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5798" class="Symbol">(</a><a id="5799" href="/20.07/PUC/2019/Assignment4/#5314" class="Function">exts</a> <a id="5804" href="/20.07/PUC/2019/Assignment4/#5742" class="Bound">σ</a><a id="5805" class="Symbol">)</a> <a id="5807" href="/20.07/PUC/2019/Assignment4/#5754" class="Bound">N</a><a id="5808" class="Symbol">)</a>
|
||
<a id="5812" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5818" href="/20.07/PUC/2019/Assignment4/#5818" class="Bound">σ</a> <a id="5820" class="Symbol">(</a><a id="5821" href="/20.07/PUC/2019/Assignment4/#3092" class="InductiveConstructor Operator">μ</a> <a id="5823" href="/20.07/PUC/2019/Assignment4/#5823" class="Bound">N</a><a id="5824" class="Symbol">)</a> <a id="5835" class="Symbol">=</a> <a id="5838" href="/20.07/PUC/2019/Assignment4/#3092" class="InductiveConstructor Operator">μ</a> <a id="5840" class="Symbol">(</a><a id="5841" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5847" class="Symbol">(</a><a id="5848" href="/20.07/PUC/2019/Assignment4/#5314" class="Function">exts</a> <a id="5853" href="/20.07/PUC/2019/Assignment4/#5818" class="Bound">σ</a><a id="5854" class="Symbol">)</a> <a id="5856" href="/20.07/PUC/2019/Assignment4/#5823" class="Bound">N</a><a id="5857" class="Symbol">)</a>
|
||
<a id="5861" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5867" href="/20.07/PUC/2019/Assignment4/#5867" class="Bound">σ</a> <a id="5869" class="Symbol">(</a><a id="5870" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="5874" href="/20.07/PUC/2019/Assignment4/#5874" class="Bound">n</a><a id="5875" class="Symbol">)</a> <a id="5884" class="Symbol">=</a> <a id="5887" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="5891" href="/20.07/PUC/2019/Assignment4/#5874" class="Bound">n</a>
|
||
<a id="5895" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5901" href="/20.07/PUC/2019/Assignment4/#5901" class="Bound">σ</a> <a id="5903" class="Symbol">(</a><a id="5904" href="/20.07/PUC/2019/Assignment4/#5904" class="Bound">M</a> <a id="5906" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="5909" href="/20.07/PUC/2019/Assignment4/#5909" class="Bound">N</a><a id="5910" class="Symbol">)</a> <a id="5918" class="Symbol">=</a> <a id="5921" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5927" href="/20.07/PUC/2019/Assignment4/#5901" class="Bound">σ</a> <a id="5929" href="/20.07/PUC/2019/Assignment4/#5904" class="Bound">M</a> <a id="5931" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="5934" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5940" href="/20.07/PUC/2019/Assignment4/#5901" class="Bound">σ</a> <a id="5942" href="/20.07/PUC/2019/Assignment4/#5909" class="Bound">N</a>
|
||
<a id="5946" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5952" href="/20.07/PUC/2019/Assignment4/#5952" class="Bound">σ</a> <a id="5954" class="Symbol">(</a><a id="5955" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="5960" href="/20.07/PUC/2019/Assignment4/#5960" class="Bound">M</a> <a id="5962" href="/20.07/PUC/2019/Assignment4/#5962" class="Bound">N</a><a id="5963" class="Symbol">)</a> <a id="5969" class="Symbol">=</a> <a id="5972" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="5977" class="Symbol">(</a><a id="5978" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5984" href="/20.07/PUC/2019/Assignment4/#5952" class="Bound">σ</a> <a id="5986" href="/20.07/PUC/2019/Assignment4/#5960" class="Bound">M</a><a id="5987" class="Symbol">)</a> <a id="5989" class="Symbol">(</a><a id="5990" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="5996" class="Symbol">(</a><a id="5997" href="/20.07/PUC/2019/Assignment4/#5314" class="Function">exts</a> <a id="6002" href="/20.07/PUC/2019/Assignment4/#5952" class="Bound">σ</a><a id="6003" class="Symbol">)</a> <a id="6005" href="/20.07/PUC/2019/Assignment4/#5962" class="Bound">N</a><a id="6006" class="Symbol">)</a>
|
||
<a id="6010" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="6016" href="/20.07/PUC/2019/Assignment4/#6016" class="Bound">σ</a> <a id="6018" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="6021" href="/20.07/PUC/2019/Assignment4/#6021" class="Bound">M</a> <a id="6023" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="6025" href="/20.07/PUC/2019/Assignment4/#6025" class="Bound">N</a> <a id="6027" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="6033" class="Symbol">=</a> <a id="6036" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="6039" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="6045" href="/20.07/PUC/2019/Assignment4/#6016" class="Bound">σ</a> <a id="6047" href="/20.07/PUC/2019/Assignment4/#6021" class="Bound">M</a> <a id="6049" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="6051" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="6057" href="/20.07/PUC/2019/Assignment4/#6016" class="Bound">σ</a> <a id="6059" href="/20.07/PUC/2019/Assignment4/#6025" class="Bound">N</a> <a id="6061" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="6065" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="6071" href="/20.07/PUC/2019/Assignment4/#6071" class="Bound">σ</a> <a id="6073" class="Symbol">(</a><a id="6074" href="/20.07/PUC/2019/Assignment4/#3535" class="InductiveConstructor">`proj₁</a> <a id="6081" href="/20.07/PUC/2019/Assignment4/#6081" class="Bound">L</a><a id="6082" class="Symbol">)</a> <a id="6088" class="Symbol">=</a> <a id="6091" href="/20.07/PUC/2019/Assignment4/#3535" class="InductiveConstructor">`proj₁</a> <a id="6098" class="Symbol">(</a><a id="6099" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="6105" href="/20.07/PUC/2019/Assignment4/#6071" class="Bound">σ</a> <a id="6107" href="/20.07/PUC/2019/Assignment4/#6081" class="Bound">L</a><a id="6108" class="Symbol">)</a>
|
||
<a id="6112" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="6118" href="/20.07/PUC/2019/Assignment4/#6118" class="Bound">σ</a> <a id="6120" class="Symbol">(</a><a id="6121" href="/20.07/PUC/2019/Assignment4/#3612" class="InductiveConstructor">`proj₂</a> <a id="6128" href="/20.07/PUC/2019/Assignment4/#6128" class="Bound">L</a><a id="6129" class="Symbol">)</a> <a id="6135" class="Symbol">=</a> <a id="6138" href="/20.07/PUC/2019/Assignment4/#3612" class="InductiveConstructor">`proj₂</a> <a id="6145" class="Symbol">(</a><a id="6146" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="6152" href="/20.07/PUC/2019/Assignment4/#6118" class="Bound">σ</a> <a id="6154" href="/20.07/PUC/2019/Assignment4/#6128" class="Bound">L</a><a id="6155" class="Symbol">)</a>
|
||
<a id="6159" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="6165" href="/20.07/PUC/2019/Assignment4/#6165" class="Bound">σ</a> <a id="6167" class="Symbol">(</a><a id="6168" href="/20.07/PUC/2019/Assignment4/#3733" class="InductiveConstructor">case×</a> <a id="6174" href="/20.07/PUC/2019/Assignment4/#6174" class="Bound">L</a> <a id="6176" href="/20.07/PUC/2019/Assignment4/#6176" class="Bound">M</a><a id="6177" class="Symbol">)</a> <a id="6182" class="Symbol">=</a> <a id="6185" href="/20.07/PUC/2019/Assignment4/#3733" class="InductiveConstructor">case×</a> <a id="6191" class="Symbol">(</a><a id="6192" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="6198" href="/20.07/PUC/2019/Assignment4/#6165" class="Bound">σ</a> <a id="6200" href="/20.07/PUC/2019/Assignment4/#6174" class="Bound">L</a><a id="6201" class="Symbol">)</a> <a id="6203" class="Symbol">(</a><a id="6204" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="6210" class="Symbol">(</a><a id="6211" href="/20.07/PUC/2019/Assignment4/#5314" class="Function">exts</a> <a id="6216" class="Symbol">(</a><a id="6217" href="/20.07/PUC/2019/Assignment4/#5314" class="Function">exts</a> <a id="6222" href="/20.07/PUC/2019/Assignment4/#6165" class="Bound">σ</a><a id="6223" class="Symbol">))</a> <a id="6226" href="/20.07/PUC/2019/Assignment4/#6176" class="Bound">M</a><a id="6227" class="Symbol">)</a>
|
||
</pre>
|
||
<h2 id="single-and-double-substitution">Single and double substitution</h2>
|
||
|
||
<pre class="Agda"> <a id="More._[_]"></a><a id="6275" href="/20.07/PUC/2019/Assignment4/#6275" class="Function Operator">_[_]</a> <a id="6280" class="Symbol">:</a> <a id="6282" class="Symbol">∀</a> <a id="6284" class="Symbol">{</a><a id="6285" href="/20.07/PUC/2019/Assignment4/#6285" class="Bound">Γ</a> <a id="6287" href="/20.07/PUC/2019/Assignment4/#6287" class="Bound">A</a> <a id="6289" href="/20.07/PUC/2019/Assignment4/#6289" class="Bound">B</a><a id="6290" class="Symbol">}</a>
|
||
<a id="6296" class="Symbol">→</a> <a id="6298" href="/20.07/PUC/2019/Assignment4/#6285" class="Bound">Γ</a> <a id="6300" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="6302" href="/20.07/PUC/2019/Assignment4/#6287" class="Bound">A</a> <a id="6304" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="6306" href="/20.07/PUC/2019/Assignment4/#6289" class="Bound">B</a>
|
||
<a id="6312" class="Symbol">→</a> <a id="6314" href="/20.07/PUC/2019/Assignment4/#6285" class="Bound">Γ</a> <a id="6316" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="6318" href="/20.07/PUC/2019/Assignment4/#6287" class="Bound">A</a>
|
||
<a id="6324" class="Comment">------------</a>
|
||
<a id="6341" class="Symbol">→</a> <a id="6343" href="/20.07/PUC/2019/Assignment4/#6285" class="Bound">Γ</a> <a id="6345" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="6347" href="/20.07/PUC/2019/Assignment4/#6289" class="Bound">B</a>
|
||
<a id="6351" href="/20.07/PUC/2019/Assignment4/#6275" class="Function Operator">_[_]</a> <a id="6356" class="Symbol">{</a><a id="6357" href="/20.07/PUC/2019/Assignment4/#6357" class="Bound">Γ</a><a id="6358" class="Symbol">}</a> <a id="6360" class="Symbol">{</a><a id="6361" href="/20.07/PUC/2019/Assignment4/#6361" class="Bound">A</a><a id="6362" class="Symbol">}</a> <a id="6364" href="/20.07/PUC/2019/Assignment4/#6364" class="Bound">N</a> <a id="6366" href="/20.07/PUC/2019/Assignment4/#6366" class="Bound">V</a> <a id="6368" class="Symbol">=</a> <a id="6371" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="6377" class="Symbol">{</a><a id="6378" href="/20.07/PUC/2019/Assignment4/#6357" class="Bound">Γ</a> <a id="6380" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="6382" href="/20.07/PUC/2019/Assignment4/#6361" class="Bound">A</a><a id="6383" class="Symbol">}</a> <a id="6385" class="Symbol">{</a><a id="6386" href="/20.07/PUC/2019/Assignment4/#6357" class="Bound">Γ</a><a id="6387" class="Symbol">}</a> <a id="6389" href="/20.07/PUC/2019/Assignment4/#6407" class="Function">σ</a> <a id="6391" href="/20.07/PUC/2019/Assignment4/#6364" class="Bound">N</a>
|
||
<a id="6397" class="Keyword">where</a>
|
||
<a id="6407" href="/20.07/PUC/2019/Assignment4/#6407" class="Function">σ</a> <a id="6409" class="Symbol">:</a> <a id="6411" class="Symbol">∀</a> <a id="6413" class="Symbol">{</a><a id="6414" href="/20.07/PUC/2019/Assignment4/#6414" class="Bound">B</a><a id="6415" class="Symbol">}</a> <a id="6417" class="Symbol">→</a> <a id="6419" href="/20.07/PUC/2019/Assignment4/#6357" class="Bound">Γ</a> <a id="6421" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="6423" href="/20.07/PUC/2019/Assignment4/#6361" class="Bound">A</a> <a id="6425" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="6427" href="/20.07/PUC/2019/Assignment4/#6414" class="Bound">B</a> <a id="6429" class="Symbol">→</a> <a id="6431" href="/20.07/PUC/2019/Assignment4/#6357" class="Bound">Γ</a> <a id="6433" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="6435" href="/20.07/PUC/2019/Assignment4/#6414" class="Bound">B</a>
|
||
<a id="6441" href="/20.07/PUC/2019/Assignment4/#6407" class="Function">σ</a> <a id="6443" href="/20.07/PUC/2019/Assignment4/#2385" class="InductiveConstructor">Z</a> <a id="6450" class="Symbol">=</a> <a id="6453" href="/20.07/PUC/2019/Assignment4/#6366" class="Bound">V</a>
|
||
<a id="6459" href="/20.07/PUC/2019/Assignment4/#6407" class="Function">σ</a> <a id="6461" class="Symbol">(</a><a id="6462" href="/20.07/PUC/2019/Assignment4/#2438" class="InductiveConstructor Operator">S</a> <a id="6464" href="/20.07/PUC/2019/Assignment4/#6464" class="Bound">x</a><a id="6465" class="Symbol">)</a> <a id="6468" class="Symbol">=</a> <a id="6471" href="/20.07/PUC/2019/Assignment4/#2610" class="InductiveConstructor Operator">`</a> <a id="6473" href="/20.07/PUC/2019/Assignment4/#6464" class="Bound">x</a>
|
||
|
||
<a id="More._[_][_]"></a><a id="6478" href="/20.07/PUC/2019/Assignment4/#6478" class="Function Operator">_[_][_]</a> <a id="6486" class="Symbol">:</a> <a id="6488" class="Symbol">∀</a> <a id="6490" class="Symbol">{</a><a id="6491" href="/20.07/PUC/2019/Assignment4/#6491" class="Bound">Γ</a> <a id="6493" href="/20.07/PUC/2019/Assignment4/#6493" class="Bound">A</a> <a id="6495" href="/20.07/PUC/2019/Assignment4/#6495" class="Bound">B</a> <a id="6497" href="/20.07/PUC/2019/Assignment4/#6497" class="Bound">C</a><a id="6498" class="Symbol">}</a>
|
||
<a id="6504" class="Symbol">→</a> <a id="6506" href="/20.07/PUC/2019/Assignment4/#6491" class="Bound">Γ</a> <a id="6508" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="6510" href="/20.07/PUC/2019/Assignment4/#6493" class="Bound">A</a> <a id="6512" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="6514" href="/20.07/PUC/2019/Assignment4/#6495" class="Bound">B</a> <a id="6516" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="6518" href="/20.07/PUC/2019/Assignment4/#6497" class="Bound">C</a>
|
||
<a id="6524" class="Symbol">→</a> <a id="6526" href="/20.07/PUC/2019/Assignment4/#6491" class="Bound">Γ</a> <a id="6528" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="6530" href="/20.07/PUC/2019/Assignment4/#6493" class="Bound">A</a>
|
||
<a id="6536" class="Symbol">→</a> <a id="6538" href="/20.07/PUC/2019/Assignment4/#6491" class="Bound">Γ</a> <a id="6540" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="6542" href="/20.07/PUC/2019/Assignment4/#6495" class="Bound">B</a>
|
||
<a id="6550" class="Comment">---------------</a>
|
||
<a id="6570" class="Symbol">→</a> <a id="6572" href="/20.07/PUC/2019/Assignment4/#6491" class="Bound">Γ</a> <a id="6574" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="6576" href="/20.07/PUC/2019/Assignment4/#6497" class="Bound">C</a>
|
||
<a id="6580" href="/20.07/PUC/2019/Assignment4/#6478" class="Function Operator">_[_][_]</a> <a id="6588" class="Symbol">{</a><a id="6589" href="/20.07/PUC/2019/Assignment4/#6589" class="Bound">Γ</a><a id="6590" class="Symbol">}</a> <a id="6592" class="Symbol">{</a><a id="6593" href="/20.07/PUC/2019/Assignment4/#6593" class="Bound">A</a><a id="6594" class="Symbol">}</a> <a id="6596" class="Symbol">{</a><a id="6597" href="/20.07/PUC/2019/Assignment4/#6597" class="Bound">B</a><a id="6598" class="Symbol">}</a> <a id="6600" href="/20.07/PUC/2019/Assignment4/#6600" class="Bound">N</a> <a id="6602" href="/20.07/PUC/2019/Assignment4/#6602" class="Bound">V</a> <a id="6604" href="/20.07/PUC/2019/Assignment4/#6604" class="Bound">W</a> <a id="6606" class="Symbol">=</a> <a id="6609" href="/20.07/PUC/2019/Assignment4/#5452" class="Function">subst</a> <a id="6615" class="Symbol">{</a><a id="6616" href="/20.07/PUC/2019/Assignment4/#6589" class="Bound">Γ</a> <a id="6618" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="6620" href="/20.07/PUC/2019/Assignment4/#6593" class="Bound">A</a> <a id="6622" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="6624" href="/20.07/PUC/2019/Assignment4/#6597" class="Bound">B</a><a id="6625" class="Symbol">}</a> <a id="6627" class="Symbol">{</a><a id="6628" href="/20.07/PUC/2019/Assignment4/#6589" class="Bound">Γ</a><a id="6629" class="Symbol">}</a> <a id="6631" href="/20.07/PUC/2019/Assignment4/#6649" class="Function">σ</a> <a id="6633" href="/20.07/PUC/2019/Assignment4/#6600" class="Bound">N</a>
|
||
<a id="6639" class="Keyword">where</a>
|
||
<a id="6649" href="/20.07/PUC/2019/Assignment4/#6649" class="Function">σ</a> <a id="6651" class="Symbol">:</a> <a id="6653" class="Symbol">∀</a> <a id="6655" class="Symbol">{</a><a id="6656" href="/20.07/PUC/2019/Assignment4/#6656" class="Bound">C</a><a id="6657" class="Symbol">}</a> <a id="6659" class="Symbol">→</a> <a id="6661" href="/20.07/PUC/2019/Assignment4/#6589" class="Bound">Γ</a> <a id="6663" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="6665" href="/20.07/PUC/2019/Assignment4/#6593" class="Bound">A</a> <a id="6667" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="6669" href="/20.07/PUC/2019/Assignment4/#6597" class="Bound">B</a> <a id="6671" href="/20.07/PUC/2019/Assignment4/#2347" class="Datatype Operator">∋</a> <a id="6673" href="/20.07/PUC/2019/Assignment4/#6656" class="Bound">C</a> <a id="6675" class="Symbol">→</a> <a id="6677" href="/20.07/PUC/2019/Assignment4/#6589" class="Bound">Γ</a> <a id="6679" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="6681" href="/20.07/PUC/2019/Assignment4/#6656" class="Bound">C</a>
|
||
<a id="6687" href="/20.07/PUC/2019/Assignment4/#6649" class="Function">σ</a> <a id="6689" href="/20.07/PUC/2019/Assignment4/#2385" class="InductiveConstructor">Z</a> <a id="6700" class="Symbol">=</a> <a id="6703" href="/20.07/PUC/2019/Assignment4/#6604" class="Bound">W</a>
|
||
<a id="6709" href="/20.07/PUC/2019/Assignment4/#6649" class="Function">σ</a> <a id="6711" class="Symbol">(</a><a id="6712" href="/20.07/PUC/2019/Assignment4/#2438" class="InductiveConstructor Operator">S</a> <a id="6714" href="/20.07/PUC/2019/Assignment4/#2385" class="InductiveConstructor">Z</a><a id="6715" class="Symbol">)</a> <a id="6722" class="Symbol">=</a> <a id="6725" href="/20.07/PUC/2019/Assignment4/#6602" class="Bound">V</a>
|
||
<a id="6731" href="/20.07/PUC/2019/Assignment4/#6649" class="Function">σ</a> <a id="6733" class="Symbol">(</a><a id="6734" href="/20.07/PUC/2019/Assignment4/#2438" class="InductiveConstructor Operator">S</a> <a id="6736" class="Symbol">(</a><a id="6737" href="/20.07/PUC/2019/Assignment4/#2438" class="InductiveConstructor Operator">S</a> <a id="6739" href="/20.07/PUC/2019/Assignment4/#6739" class="Bound">x</a><a id="6740" class="Symbol">))</a> <a id="6744" class="Symbol">=</a> <a id="6747" href="/20.07/PUC/2019/Assignment4/#2610" class="InductiveConstructor Operator">`</a> <a id="6749" href="/20.07/PUC/2019/Assignment4/#6739" class="Bound">x</a>
|
||
</pre>
|
||
<h2 id="values">Values</h2>
|
||
|
||
<pre class="Agda"> <a id="6773" class="Keyword">data</a> <a id="More.Value"></a><a id="6778" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="6784" class="Symbol">:</a> <a id="6786" class="Symbol">∀</a> <a id="6788" class="Symbol">{</a><a id="6789" href="/20.07/PUC/2019/Assignment4/#6789" class="Bound">Γ</a> <a id="6791" href="/20.07/PUC/2019/Assignment4/#6791" class="Bound">A</a><a id="6792" class="Symbol">}</a> <a id="6794" class="Symbol">→</a> <a id="6796" href="/20.07/PUC/2019/Assignment4/#6789" class="Bound">Γ</a> <a id="6798" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="6800" href="/20.07/PUC/2019/Assignment4/#6791" class="Bound">A</a> <a id="6802" class="Symbol">→</a> <a id="6804" class="PrimitiveType">Set</a> <a id="6808" class="Keyword">where</a>
|
||
|
||
<a id="6819" class="Comment">-- functions</a>
|
||
|
||
<a id="More.Value.V-ƛ"></a><a id="6837" href="/20.07/PUC/2019/Assignment4/#6837" class="InductiveConstructor">V-ƛ</a> <a id="6841" class="Symbol">:</a> <a id="6843" class="Symbol">∀</a> <a id="6845" class="Symbol">{</a><a id="6846" href="/20.07/PUC/2019/Assignment4/#6846" class="Bound">Γ</a> <a id="6848" href="/20.07/PUC/2019/Assignment4/#6848" class="Bound">A</a> <a id="6850" href="/20.07/PUC/2019/Assignment4/#6850" class="Bound">B</a><a id="6851" class="Symbol">}</a> <a id="6853" class="Symbol">{</a><a id="6854" href="/20.07/PUC/2019/Assignment4/#6854" class="Bound">N</a> <a id="6856" class="Symbol">:</a> <a id="6858" href="/20.07/PUC/2019/Assignment4/#6846" class="Bound">Γ</a> <a id="6860" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="6862" href="/20.07/PUC/2019/Assignment4/#6848" class="Bound">A</a> <a id="6864" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="6866" href="/20.07/PUC/2019/Assignment4/#6850" class="Bound">B</a><a id="6867" class="Symbol">}</a>
|
||
<a id="6877" class="Comment">---------------------------</a>
|
||
<a id="6911" class="Symbol">→</a> <a id="6913" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="6919" class="Symbol">(</a><a id="6920" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ</a> <a id="6922" href="/20.07/PUC/2019/Assignment4/#6854" class="Bound">N</a><a id="6923" class="Symbol">)</a>
|
||
|
||
<a id="6930" class="Comment">-- naturals</a>
|
||
|
||
<a id="More.Value.V-zero"></a><a id="6947" href="/20.07/PUC/2019/Assignment4/#6947" class="InductiveConstructor">V-zero</a> <a id="6954" class="Symbol">:</a> <a id="6956" class="Symbol">∀</a> <a id="6958" class="Symbol">{</a><a id="6959" href="/20.07/PUC/2019/Assignment4/#6959" class="Bound">Γ</a><a id="6960" class="Symbol">}</a> <a id="6962" class="Symbol">→</a>
|
||
<a id="6972" class="Comment">-----------------</a>
|
||
<a id="6998" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="7004" class="Symbol">(</a><a id="7005" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="7011" class="Symbol">{</a><a id="7012" href="/20.07/PUC/2019/Assignment4/#6959" class="Bound">Γ</a><a id="7013" class="Symbol">})</a>
|
||
|
||
<a id="More.Value.V-suc_"></a><a id="7021" href="/20.07/PUC/2019/Assignment4/#7021" class="InductiveConstructor Operator">V-suc_</a> <a id="7028" class="Symbol">:</a> <a id="7030" class="Symbol">∀</a> <a id="7032" class="Symbol">{</a><a id="7033" href="/20.07/PUC/2019/Assignment4/#7033" class="Bound">Γ</a><a id="7034" class="Symbol">}</a> <a id="7036" class="Symbol">{</a><a id="7037" href="/20.07/PUC/2019/Assignment4/#7037" class="Bound">V</a> <a id="7039" class="Symbol">:</a> <a id="7041" href="/20.07/PUC/2019/Assignment4/#7033" class="Bound">Γ</a> <a id="7043" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="7045" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a><a id="7047" class="Symbol">}</a>
|
||
<a id="7055" class="Symbol">→</a> <a id="7057" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="7063" href="/20.07/PUC/2019/Assignment4/#7037" class="Bound">V</a>
|
||
<a id="7073" class="Comment">--------------</a>
|
||
<a id="7094" class="Symbol">→</a> <a id="7096" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="7102" class="Symbol">(</a><a id="7103" href="/20.07/PUC/2019/Assignment4/#2915" class="InductiveConstructor Operator">`suc</a> <a id="7108" href="/20.07/PUC/2019/Assignment4/#7037" class="Bound">V</a><a id="7109" class="Symbol">)</a>
|
||
|
||
<a id="7116" class="Comment">-- primitives</a>
|
||
|
||
<a id="More.Value.V-con"></a><a id="7135" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="7141" class="Symbol">:</a> <a id="7143" class="Symbol">∀</a> <a id="7145" class="Symbol">{</a><a id="7146" href="/20.07/PUC/2019/Assignment4/#7146" class="Bound">Γ</a> <a id="7148" href="/20.07/PUC/2019/Assignment4/#7148" class="Bound">n</a><a id="7149" class="Symbol">}</a>
|
||
<a id="7159" class="Comment">---------------------</a>
|
||
<a id="7187" class="Symbol">→</a> <a id="7189" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="7195" class="Symbol">{</a><a id="7196" class="Argument">Γ</a> <a id="7198" class="Symbol">=</a> <a id="7200" href="/20.07/PUC/2019/Assignment4/#7146" class="Bound">Γ</a><a id="7201" class="Symbol">}</a> <a id="7203" class="Symbol">(</a><a id="7204" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="7208" href="/20.07/PUC/2019/Assignment4/#7148" class="Bound">n</a><a id="7209" class="Symbol">)</a>
|
||
|
||
<a id="7216" class="Comment">-- products</a>
|
||
|
||
<a id="More.Value.V-⟨_,_⟩"></a><a id="7233" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">V-⟨_,_⟩</a> <a id="7241" class="Symbol">:</a> <a id="7243" class="Symbol">∀</a> <a id="7245" class="Symbol">{</a><a id="7246" href="/20.07/PUC/2019/Assignment4/#7246" class="Bound">Γ</a> <a id="7248" href="/20.07/PUC/2019/Assignment4/#7248" class="Bound">A</a> <a id="7250" href="/20.07/PUC/2019/Assignment4/#7250" class="Bound">B</a><a id="7251" class="Symbol">}</a> <a id="7253" class="Symbol">{</a><a id="7254" href="/20.07/PUC/2019/Assignment4/#7254" class="Bound">V</a> <a id="7256" class="Symbol">:</a> <a id="7258" href="/20.07/PUC/2019/Assignment4/#7246" class="Bound">Γ</a> <a id="7260" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="7262" href="/20.07/PUC/2019/Assignment4/#7248" class="Bound">A</a><a id="7263" class="Symbol">}</a> <a id="7265" class="Symbol">{</a><a id="7266" href="/20.07/PUC/2019/Assignment4/#7266" class="Bound">W</a> <a id="7268" class="Symbol">:</a> <a id="7270" href="/20.07/PUC/2019/Assignment4/#7246" class="Bound">Γ</a> <a id="7272" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="7274" href="/20.07/PUC/2019/Assignment4/#7250" class="Bound">B</a><a id="7275" class="Symbol">}</a>
|
||
<a id="7283" class="Symbol">→</a> <a id="7285" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="7291" href="/20.07/PUC/2019/Assignment4/#7254" class="Bound">V</a>
|
||
<a id="7299" class="Symbol">→</a> <a id="7301" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="7307" href="/20.07/PUC/2019/Assignment4/#7266" class="Bound">W</a>
|
||
<a id="7317" class="Comment">----------------</a>
|
||
<a id="7340" class="Symbol">→</a> <a id="7342" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="7348" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="7351" href="/20.07/PUC/2019/Assignment4/#7254" class="Bound">V</a> <a id="7353" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="7355" href="/20.07/PUC/2019/Assignment4/#7266" class="Bound">W</a> <a id="7357" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
</pre>
|
||
<p>Implicit arguments need to be supplied when they are
|
||
not fixed by the given arguments.</p>
|
||
|
||
<h2 id="reduction">Reduction</h2>
|
||
|
||
<pre class="Agda"> <a id="7472" class="Keyword">infix</a> <a id="7478" class="Number">2</a> <a id="7480" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">_—→_</a>
|
||
|
||
<a id="7488" class="Keyword">data</a> <a id="More._—→_"></a><a id="7493" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">_—→_</a> <a id="7498" class="Symbol">:</a> <a id="7500" class="Symbol">∀</a> <a id="7502" class="Symbol">{</a><a id="7503" href="/20.07/PUC/2019/Assignment4/#7503" class="Bound">Γ</a> <a id="7505" href="/20.07/PUC/2019/Assignment4/#7505" class="Bound">A</a><a id="7506" class="Symbol">}</a> <a id="7508" class="Symbol">→</a> <a id="7510" class="Symbol">(</a><a id="7511" href="/20.07/PUC/2019/Assignment4/#7503" class="Bound">Γ</a> <a id="7513" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="7515" href="/20.07/PUC/2019/Assignment4/#7505" class="Bound">A</a><a id="7516" class="Symbol">)</a> <a id="7518" class="Symbol">→</a> <a id="7520" class="Symbol">(</a><a id="7521" href="/20.07/PUC/2019/Assignment4/#7503" class="Bound">Γ</a> <a id="7523" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="7525" href="/20.07/PUC/2019/Assignment4/#7505" class="Bound">A</a><a id="7526" class="Symbol">)</a> <a id="7528" class="Symbol">→</a> <a id="7530" class="PrimitiveType">Set</a> <a id="7534" class="Keyword">where</a>
|
||
|
||
<a id="7545" class="Comment">-- functions</a>
|
||
|
||
<a id="More._—→_.ξ-·₁"></a><a id="7563" href="/20.07/PUC/2019/Assignment4/#7563" class="InductiveConstructor">ξ-·₁</a> <a id="7568" class="Symbol">:</a> <a id="7570" class="Symbol">∀</a> <a id="7572" class="Symbol">{</a><a id="7573" href="/20.07/PUC/2019/Assignment4/#7573" class="Bound">Γ</a> <a id="7575" href="/20.07/PUC/2019/Assignment4/#7575" class="Bound">A</a> <a id="7577" href="/20.07/PUC/2019/Assignment4/#7577" class="Bound">B</a><a id="7578" class="Symbol">}</a> <a id="7580" class="Symbol">{</a><a id="7581" href="/20.07/PUC/2019/Assignment4/#7581" class="Bound">L</a> <a id="7583" href="/20.07/PUC/2019/Assignment4/#7583" class="Bound">L′</a> <a id="7586" class="Symbol">:</a> <a id="7588" href="/20.07/PUC/2019/Assignment4/#7573" class="Bound">Γ</a> <a id="7590" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="7592" href="/20.07/PUC/2019/Assignment4/#7575" class="Bound">A</a> <a id="7594" href="/20.07/PUC/2019/Assignment4/#2025" class="InductiveConstructor Operator">⇒</a> <a id="7596" href="/20.07/PUC/2019/Assignment4/#7577" class="Bound">B</a><a id="7597" class="Symbol">}</a> <a id="7599" class="Symbol">{</a><a id="7600" href="/20.07/PUC/2019/Assignment4/#7600" class="Bound">M</a> <a id="7602" class="Symbol">:</a> <a id="7604" href="/20.07/PUC/2019/Assignment4/#7573" class="Bound">Γ</a> <a id="7606" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="7608" href="/20.07/PUC/2019/Assignment4/#7575" class="Bound">A</a><a id="7609" class="Symbol">}</a>
|
||
<a id="7617" class="Symbol">→</a> <a id="7619" href="/20.07/PUC/2019/Assignment4/#7581" class="Bound">L</a> <a id="7621" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="7624" href="/20.07/PUC/2019/Assignment4/#7583" class="Bound">L′</a>
|
||
<a id="7635" class="Comment">---------------</a>
|
||
<a id="7657" class="Symbol">→</a> <a id="7659" href="/20.07/PUC/2019/Assignment4/#7581" class="Bound">L</a> <a id="7661" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="7663" href="/20.07/PUC/2019/Assignment4/#7600" class="Bound">M</a> <a id="7665" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="7668" href="/20.07/PUC/2019/Assignment4/#7583" class="Bound">L′</a> <a id="7671" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="7673" href="/20.07/PUC/2019/Assignment4/#7600" class="Bound">M</a>
|
||
|
||
<a id="More._—→_.ξ-·₂"></a><a id="7680" href="/20.07/PUC/2019/Assignment4/#7680" class="InductiveConstructor">ξ-·₂</a> <a id="7685" class="Symbol">:</a> <a id="7687" class="Symbol">∀</a> <a id="7689" class="Symbol">{</a><a id="7690" href="/20.07/PUC/2019/Assignment4/#7690" class="Bound">Γ</a> <a id="7692" href="/20.07/PUC/2019/Assignment4/#7692" class="Bound">A</a> <a id="7694" href="/20.07/PUC/2019/Assignment4/#7694" class="Bound">B</a><a id="7695" class="Symbol">}</a> <a id="7697" class="Symbol">{</a><a id="7698" href="/20.07/PUC/2019/Assignment4/#7698" class="Bound">V</a> <a id="7700" class="Symbol">:</a> <a id="7702" href="/20.07/PUC/2019/Assignment4/#7690" class="Bound">Γ</a> <a id="7704" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="7706" href="/20.07/PUC/2019/Assignment4/#7692" class="Bound">A</a> <a id="7708" href="/20.07/PUC/2019/Assignment4/#2025" class="InductiveConstructor Operator">⇒</a> <a id="7710" href="/20.07/PUC/2019/Assignment4/#7694" class="Bound">B</a><a id="7711" class="Symbol">}</a> <a id="7713" class="Symbol">{</a><a id="7714" href="/20.07/PUC/2019/Assignment4/#7714" class="Bound">M</a> <a id="7716" href="/20.07/PUC/2019/Assignment4/#7716" class="Bound">M′</a> <a id="7719" class="Symbol">:</a> <a id="7721" href="/20.07/PUC/2019/Assignment4/#7690" class="Bound">Γ</a> <a id="7723" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="7725" href="/20.07/PUC/2019/Assignment4/#7692" class="Bound">A</a><a id="7726" class="Symbol">}</a>
|
||
<a id="7734" class="Symbol">→</a> <a id="7736" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="7742" href="/20.07/PUC/2019/Assignment4/#7698" class="Bound">V</a>
|
||
<a id="7750" class="Symbol">→</a> <a id="7752" href="/20.07/PUC/2019/Assignment4/#7714" class="Bound">M</a> <a id="7754" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="7757" href="/20.07/PUC/2019/Assignment4/#7716" class="Bound">M′</a>
|
||
<a id="7768" class="Comment">---------------</a>
|
||
<a id="7790" class="Symbol">→</a> <a id="7792" href="/20.07/PUC/2019/Assignment4/#7698" class="Bound">V</a> <a id="7794" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="7796" href="/20.07/PUC/2019/Assignment4/#7714" class="Bound">M</a> <a id="7798" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="7801" href="/20.07/PUC/2019/Assignment4/#7698" class="Bound">V</a> <a id="7803" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="7805" href="/20.07/PUC/2019/Assignment4/#7716" class="Bound">M′</a>
|
||
|
||
<a id="More._—→_.β-ƛ"></a><a id="7813" href="/20.07/PUC/2019/Assignment4/#7813" class="InductiveConstructor">β-ƛ</a> <a id="7817" class="Symbol">:</a> <a id="7819" class="Symbol">∀</a> <a id="7821" class="Symbol">{</a><a id="7822" href="/20.07/PUC/2019/Assignment4/#7822" class="Bound">Γ</a> <a id="7824" href="/20.07/PUC/2019/Assignment4/#7824" class="Bound">A</a> <a id="7826" href="/20.07/PUC/2019/Assignment4/#7826" class="Bound">B</a><a id="7827" class="Symbol">}</a> <a id="7829" class="Symbol">{</a><a id="7830" href="/20.07/PUC/2019/Assignment4/#7830" class="Bound">N</a> <a id="7832" class="Symbol">:</a> <a id="7834" href="/20.07/PUC/2019/Assignment4/#7822" class="Bound">Γ</a> <a id="7836" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="7838" href="/20.07/PUC/2019/Assignment4/#7824" class="Bound">A</a> <a id="7840" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="7842" href="/20.07/PUC/2019/Assignment4/#7826" class="Bound">B</a><a id="7843" class="Symbol">}</a> <a id="7845" class="Symbol">{</a><a id="7846" href="/20.07/PUC/2019/Assignment4/#7846" class="Bound">V</a> <a id="7848" class="Symbol">:</a> <a id="7850" href="/20.07/PUC/2019/Assignment4/#7822" class="Bound">Γ</a> <a id="7852" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="7854" href="/20.07/PUC/2019/Assignment4/#7824" class="Bound">A</a><a id="7855" class="Symbol">}</a>
|
||
<a id="7863" class="Symbol">→</a> <a id="7865" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="7871" href="/20.07/PUC/2019/Assignment4/#7846" class="Bound">V</a>
|
||
<a id="7881" class="Comment">--------------------</a>
|
||
<a id="7908" class="Symbol">→</a> <a id="7910" class="Symbol">(</a><a id="7911" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ</a> <a id="7913" href="/20.07/PUC/2019/Assignment4/#7830" class="Bound">N</a><a id="7914" class="Symbol">)</a> <a id="7916" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="7918" href="/20.07/PUC/2019/Assignment4/#7846" class="Bound">V</a> <a id="7920" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="7923" href="/20.07/PUC/2019/Assignment4/#7830" class="Bound">N</a> <a id="7925" href="/20.07/PUC/2019/Assignment4/#6275" class="Function Operator">[</a> <a id="7927" href="/20.07/PUC/2019/Assignment4/#7846" class="Bound">V</a> <a id="7929" href="/20.07/PUC/2019/Assignment4/#6275" class="Function Operator">]</a>
|
||
|
||
<a id="7936" class="Comment">-- naturals</a>
|
||
|
||
<a id="More._—→_.ξ-suc"></a><a id="7953" href="/20.07/PUC/2019/Assignment4/#7953" class="InductiveConstructor">ξ-suc</a> <a id="7959" class="Symbol">:</a> <a id="7961" class="Symbol">∀</a> <a id="7963" class="Symbol">{</a><a id="7964" href="/20.07/PUC/2019/Assignment4/#7964" class="Bound">Γ</a><a id="7965" class="Symbol">}</a> <a id="7967" class="Symbol">{</a><a id="7968" href="/20.07/PUC/2019/Assignment4/#7968" class="Bound">M</a> <a id="7970" href="/20.07/PUC/2019/Assignment4/#7970" class="Bound">M′</a> <a id="7973" class="Symbol">:</a> <a id="7975" href="/20.07/PUC/2019/Assignment4/#7964" class="Bound">Γ</a> <a id="7977" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="7979" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a><a id="7981" class="Symbol">}</a>
|
||
<a id="7989" class="Symbol">→</a> <a id="7991" href="/20.07/PUC/2019/Assignment4/#7968" class="Bound">M</a> <a id="7993" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="7996" href="/20.07/PUC/2019/Assignment4/#7970" class="Bound">M′</a>
|
||
<a id="8007" class="Comment">-----------------</a>
|
||
<a id="8031" class="Symbol">→</a> <a id="8033" href="/20.07/PUC/2019/Assignment4/#2915" class="InductiveConstructor Operator">`suc</a> <a id="8038" href="/20.07/PUC/2019/Assignment4/#7968" class="Bound">M</a> <a id="8040" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="8043" href="/20.07/PUC/2019/Assignment4/#2915" class="InductiveConstructor Operator">`suc</a> <a id="8048" href="/20.07/PUC/2019/Assignment4/#7970" class="Bound">M′</a>
|
||
|
||
<a id="More._—→_.ξ-case"></a><a id="8056" href="/20.07/PUC/2019/Assignment4/#8056" class="InductiveConstructor">ξ-case</a> <a id="8063" class="Symbol">:</a> <a id="8065" class="Symbol">∀</a> <a id="8067" class="Symbol">{</a><a id="8068" href="/20.07/PUC/2019/Assignment4/#8068" class="Bound">Γ</a> <a id="8070" href="/20.07/PUC/2019/Assignment4/#8070" class="Bound">A</a><a id="8071" class="Symbol">}</a> <a id="8073" class="Symbol">{</a><a id="8074" href="/20.07/PUC/2019/Assignment4/#8074" class="Bound">L</a> <a id="8076" href="/20.07/PUC/2019/Assignment4/#8076" class="Bound">L′</a> <a id="8079" class="Symbol">:</a> <a id="8081" href="/20.07/PUC/2019/Assignment4/#8068" class="Bound">Γ</a> <a id="8083" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8085" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a><a id="8087" class="Symbol">}</a> <a id="8089" class="Symbol">{</a><a id="8090" href="/20.07/PUC/2019/Assignment4/#8090" class="Bound">M</a> <a id="8092" class="Symbol">:</a> <a id="8094" href="/20.07/PUC/2019/Assignment4/#8068" class="Bound">Γ</a> <a id="8096" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8098" href="/20.07/PUC/2019/Assignment4/#8070" class="Bound">A</a><a id="8099" class="Symbol">}</a> <a id="8101" class="Symbol">{</a><a id="8102" href="/20.07/PUC/2019/Assignment4/#8102" class="Bound">N</a> <a id="8104" class="Symbol">:</a> <a id="8106" href="/20.07/PUC/2019/Assignment4/#8068" class="Bound">Γ</a> <a id="8108" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="8110" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a> <a id="8113" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8115" href="/20.07/PUC/2019/Assignment4/#8070" class="Bound">A</a><a id="8116" class="Symbol">}</a>
|
||
<a id="8124" class="Symbol">→</a> <a id="8126" href="/20.07/PUC/2019/Assignment4/#8074" class="Bound">L</a> <a id="8128" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="8131" href="/20.07/PUC/2019/Assignment4/#8076" class="Bound">L′</a>
|
||
<a id="8142" class="Comment">-------------------------</a>
|
||
<a id="8174" class="Symbol">→</a> <a id="8176" href="/20.07/PUC/2019/Assignment4/#2979" class="InductiveConstructor">case</a> <a id="8181" href="/20.07/PUC/2019/Assignment4/#8074" class="Bound">L</a> <a id="8183" href="/20.07/PUC/2019/Assignment4/#8090" class="Bound">M</a> <a id="8185" href="/20.07/PUC/2019/Assignment4/#8102" class="Bound">N</a> <a id="8187" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="8190" href="/20.07/PUC/2019/Assignment4/#2979" class="InductiveConstructor">case</a> <a id="8195" href="/20.07/PUC/2019/Assignment4/#8076" class="Bound">L′</a> <a id="8198" href="/20.07/PUC/2019/Assignment4/#8090" class="Bound">M</a> <a id="8200" href="/20.07/PUC/2019/Assignment4/#8102" class="Bound">N</a>
|
||
|
||
<a id="More._—→_.β-zero"></a><a id="8207" href="/20.07/PUC/2019/Assignment4/#8207" class="InductiveConstructor">β-zero</a> <a id="8214" class="Symbol">:</a> <a id="8217" class="Symbol">∀</a> <a id="8219" class="Symbol">{</a><a id="8220" href="/20.07/PUC/2019/Assignment4/#8220" class="Bound">Γ</a> <a id="8222" href="/20.07/PUC/2019/Assignment4/#8222" class="Bound">A</a><a id="8223" class="Symbol">}</a> <a id="8225" class="Symbol">{</a><a id="8226" href="/20.07/PUC/2019/Assignment4/#8226" class="Bound">M</a> <a id="8228" class="Symbol">:</a> <a id="8230" href="/20.07/PUC/2019/Assignment4/#8220" class="Bound">Γ</a> <a id="8232" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8234" href="/20.07/PUC/2019/Assignment4/#8222" class="Bound">A</a><a id="8235" class="Symbol">}</a> <a id="8237" class="Symbol">{</a><a id="8238" href="/20.07/PUC/2019/Assignment4/#8238" class="Bound">N</a> <a id="8240" class="Symbol">:</a> <a id="8242" href="/20.07/PUC/2019/Assignment4/#8220" class="Bound">Γ</a> <a id="8244" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="8246" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a> <a id="8249" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8251" href="/20.07/PUC/2019/Assignment4/#8222" class="Bound">A</a><a id="8252" class="Symbol">}</a>
|
||
<a id="8262" class="Comment">-------------------</a>
|
||
<a id="8288" class="Symbol">→</a> <a id="8290" href="/20.07/PUC/2019/Assignment4/#2979" class="InductiveConstructor">case</a> <a id="8295" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="8301" href="/20.07/PUC/2019/Assignment4/#8226" class="Bound">M</a> <a id="8303" href="/20.07/PUC/2019/Assignment4/#8238" class="Bound">N</a> <a id="8305" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="8308" href="/20.07/PUC/2019/Assignment4/#8226" class="Bound">M</a>
|
||
|
||
<a id="More._—→_.β-suc"></a><a id="8315" href="/20.07/PUC/2019/Assignment4/#8315" class="InductiveConstructor">β-suc</a> <a id="8321" class="Symbol">:</a> <a id="8323" class="Symbol">∀</a> <a id="8325" class="Symbol">{</a><a id="8326" href="/20.07/PUC/2019/Assignment4/#8326" class="Bound">Γ</a> <a id="8328" href="/20.07/PUC/2019/Assignment4/#8328" class="Bound">A</a><a id="8329" class="Symbol">}</a> <a id="8331" class="Symbol">{</a><a id="8332" href="/20.07/PUC/2019/Assignment4/#8332" class="Bound">V</a> <a id="8334" class="Symbol">:</a> <a id="8336" href="/20.07/PUC/2019/Assignment4/#8326" class="Bound">Γ</a> <a id="8338" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8340" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a><a id="8342" class="Symbol">}</a> <a id="8344" class="Symbol">{</a><a id="8345" href="/20.07/PUC/2019/Assignment4/#8345" class="Bound">M</a> <a id="8347" class="Symbol">:</a> <a id="8349" href="/20.07/PUC/2019/Assignment4/#8326" class="Bound">Γ</a> <a id="8351" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8353" href="/20.07/PUC/2019/Assignment4/#8328" class="Bound">A</a><a id="8354" class="Symbol">}</a> <a id="8356" class="Symbol">{</a><a id="8357" href="/20.07/PUC/2019/Assignment4/#8357" class="Bound">N</a> <a id="8359" class="Symbol">:</a> <a id="8361" href="/20.07/PUC/2019/Assignment4/#8326" class="Bound">Γ</a> <a id="8363" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="8365" href="/20.07/PUC/2019/Assignment4/#2008" class="InductiveConstructor">`ℕ</a> <a id="8368" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8370" href="/20.07/PUC/2019/Assignment4/#8328" class="Bound">A</a><a id="8371" class="Symbol">}</a>
|
||
<a id="8379" class="Symbol">→</a> <a id="8381" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="8387" href="/20.07/PUC/2019/Assignment4/#8332" class="Bound">V</a>
|
||
<a id="8397" class="Comment">----------------------------</a>
|
||
<a id="8432" class="Symbol">→</a> <a id="8434" href="/20.07/PUC/2019/Assignment4/#2979" class="InductiveConstructor">case</a> <a id="8439" class="Symbol">(</a><a id="8440" href="/20.07/PUC/2019/Assignment4/#2915" class="InductiveConstructor Operator">`suc</a> <a id="8445" href="/20.07/PUC/2019/Assignment4/#8332" class="Bound">V</a><a id="8446" class="Symbol">)</a> <a id="8448" href="/20.07/PUC/2019/Assignment4/#8345" class="Bound">M</a> <a id="8450" href="/20.07/PUC/2019/Assignment4/#8357" class="Bound">N</a> <a id="8452" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="8455" href="/20.07/PUC/2019/Assignment4/#8357" class="Bound">N</a> <a id="8457" href="/20.07/PUC/2019/Assignment4/#6275" class="Function Operator">[</a> <a id="8459" href="/20.07/PUC/2019/Assignment4/#8332" class="Bound">V</a> <a id="8461" href="/20.07/PUC/2019/Assignment4/#6275" class="Function Operator">]</a>
|
||
|
||
<a id="8468" class="Comment">-- fixpoint</a>
|
||
|
||
<a id="More._—→_.β-μ"></a><a id="8485" href="/20.07/PUC/2019/Assignment4/#8485" class="InductiveConstructor">β-μ</a> <a id="8489" class="Symbol">:</a> <a id="8491" class="Symbol">∀</a> <a id="8493" class="Symbol">{</a><a id="8494" href="/20.07/PUC/2019/Assignment4/#8494" class="Bound">Γ</a> <a id="8496" href="/20.07/PUC/2019/Assignment4/#8496" class="Bound">A</a><a id="8497" class="Symbol">}</a> <a id="8499" class="Symbol">{</a><a id="8500" href="/20.07/PUC/2019/Assignment4/#8500" class="Bound">N</a> <a id="8502" class="Symbol">:</a> <a id="8504" href="/20.07/PUC/2019/Assignment4/#8494" class="Bound">Γ</a> <a id="8506" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="8508" href="/20.07/PUC/2019/Assignment4/#8496" class="Bound">A</a> <a id="8510" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8512" href="/20.07/PUC/2019/Assignment4/#8496" class="Bound">A</a><a id="8513" class="Symbol">}</a>
|
||
<a id="8523" class="Comment">----------------</a>
|
||
<a id="8546" class="Symbol">→</a> <a id="8548" href="/20.07/PUC/2019/Assignment4/#3092" class="InductiveConstructor Operator">μ</a> <a id="8550" href="/20.07/PUC/2019/Assignment4/#8500" class="Bound">N</a> <a id="8552" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="8555" href="/20.07/PUC/2019/Assignment4/#8500" class="Bound">N</a> <a id="8557" href="/20.07/PUC/2019/Assignment4/#6275" class="Function Operator">[</a> <a id="8559" href="/20.07/PUC/2019/Assignment4/#3092" class="InductiveConstructor Operator">μ</a> <a id="8561" href="/20.07/PUC/2019/Assignment4/#8500" class="Bound">N</a> <a id="8563" href="/20.07/PUC/2019/Assignment4/#6275" class="Function Operator">]</a>
|
||
|
||
<a id="8570" class="Comment">-- primitive numbers</a>
|
||
|
||
<a id="More._—→_.ξ-*₁"></a><a id="8596" href="/20.07/PUC/2019/Assignment4/#8596" class="InductiveConstructor">ξ-*₁</a> <a id="8601" class="Symbol">:</a> <a id="8603" class="Symbol">∀</a> <a id="8605" class="Symbol">{</a><a id="8606" href="/20.07/PUC/2019/Assignment4/#8606" class="Bound">Γ</a><a id="8607" class="Symbol">}</a> <a id="8609" class="Symbol">{</a><a id="8610" href="/20.07/PUC/2019/Assignment4/#8610" class="Bound">L</a> <a id="8612" href="/20.07/PUC/2019/Assignment4/#8612" class="Bound">L′</a> <a id="8615" href="/20.07/PUC/2019/Assignment4/#8615" class="Bound">M</a> <a id="8617" class="Symbol">:</a> <a id="8619" href="/20.07/PUC/2019/Assignment4/#8606" class="Bound">Γ</a> <a id="8621" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8623" href="/20.07/PUC/2019/Assignment4/#2056" class="InductiveConstructor">Nat</a><a id="8626" class="Symbol">}</a>
|
||
<a id="8634" class="Symbol">→</a> <a id="8636" href="/20.07/PUC/2019/Assignment4/#8610" class="Bound">L</a> <a id="8638" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="8641" href="/20.07/PUC/2019/Assignment4/#8612" class="Bound">L′</a>
|
||
<a id="8652" class="Comment">-----------------</a>
|
||
<a id="8676" class="Symbol">→</a> <a id="8678" href="/20.07/PUC/2019/Assignment4/#8610" class="Bound">L</a> <a id="8680" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="8683" href="/20.07/PUC/2019/Assignment4/#8615" class="Bound">M</a> <a id="8685" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="8688" href="/20.07/PUC/2019/Assignment4/#8612" class="Bound">L′</a> <a id="8691" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="8694" href="/20.07/PUC/2019/Assignment4/#8615" class="Bound">M</a>
|
||
|
||
<a id="More._—→_.ξ-*₂"></a><a id="8701" href="/20.07/PUC/2019/Assignment4/#8701" class="InductiveConstructor">ξ-*₂</a> <a id="8706" class="Symbol">:</a> <a id="8708" class="Symbol">∀</a> <a id="8710" class="Symbol">{</a><a id="8711" href="/20.07/PUC/2019/Assignment4/#8711" class="Bound">Γ</a><a id="8712" class="Symbol">}</a> <a id="8714" class="Symbol">{</a><a id="8715" href="/20.07/PUC/2019/Assignment4/#8715" class="Bound">V</a> <a id="8717" href="/20.07/PUC/2019/Assignment4/#8717" class="Bound">M</a> <a id="8719" href="/20.07/PUC/2019/Assignment4/#8719" class="Bound">M′</a> <a id="8722" class="Symbol">:</a> <a id="8724" href="/20.07/PUC/2019/Assignment4/#8711" class="Bound">Γ</a> <a id="8726" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8728" href="/20.07/PUC/2019/Assignment4/#2056" class="InductiveConstructor">Nat</a><a id="8731" class="Symbol">}</a>
|
||
<a id="8739" class="Symbol">→</a> <a id="8741" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="8747" href="/20.07/PUC/2019/Assignment4/#8715" class="Bound">V</a>
|
||
<a id="8755" class="Symbol">→</a> <a id="8757" href="/20.07/PUC/2019/Assignment4/#8717" class="Bound">M</a> <a id="8759" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="8762" href="/20.07/PUC/2019/Assignment4/#8719" class="Bound">M′</a>
|
||
<a id="8773" class="Comment">-----------------</a>
|
||
<a id="8797" class="Symbol">→</a> <a id="8799" href="/20.07/PUC/2019/Assignment4/#8715" class="Bound">V</a> <a id="8801" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="8804" href="/20.07/PUC/2019/Assignment4/#8717" class="Bound">M</a> <a id="8806" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="8809" href="/20.07/PUC/2019/Assignment4/#8715" class="Bound">V</a> <a id="8811" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="8814" href="/20.07/PUC/2019/Assignment4/#8719" class="Bound">M′</a>
|
||
|
||
<a id="More._—→_.δ-*"></a><a id="8822" href="/20.07/PUC/2019/Assignment4/#8822" class="InductiveConstructor">δ-*</a> <a id="8826" class="Symbol">:</a> <a id="8828" class="Symbol">∀</a> <a id="8830" class="Symbol">{</a><a id="8831" href="/20.07/PUC/2019/Assignment4/#8831" class="Bound">Γ</a> <a id="8833" href="/20.07/PUC/2019/Assignment4/#8833" class="Bound">c</a> <a id="8835" href="/20.07/PUC/2019/Assignment4/#8835" class="Bound">d</a><a id="8836" class="Symbol">}</a>
|
||
<a id="8846" class="Comment">-------------------------------------</a>
|
||
<a id="8890" class="Symbol">→</a> <a id="8892" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="8896" class="Symbol">{</a><a id="8897" class="Argument">Γ</a> <a id="8899" class="Symbol">=</a> <a id="8901" href="/20.07/PUC/2019/Assignment4/#8831" class="Bound">Γ</a><a id="8902" class="Symbol">}</a> <a id="8904" href="/20.07/PUC/2019/Assignment4/#8833" class="Bound">c</a> <a id="8906" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="8909" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="8913" href="/20.07/PUC/2019/Assignment4/#8835" class="Bound">d</a> <a id="8915" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="8918" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="8922" class="Symbol">(</a><a id="8923" href="/20.07/PUC/2019/Assignment4/#8833" class="Bound">c</a> <a id="8925" href="Agda.Builtin.Nat.html#501" class="Primitive Operator">*</a> <a id="8927" href="/20.07/PUC/2019/Assignment4/#8835" class="Bound">d</a><a id="8928" class="Symbol">)</a>
|
||
|
||
<a id="8935" class="Comment">-- let</a>
|
||
|
||
<a id="More._—→_.ξ-let"></a><a id="8947" href="/20.07/PUC/2019/Assignment4/#8947" class="InductiveConstructor">ξ-let</a> <a id="8953" class="Symbol">:</a> <a id="8955" class="Symbol">∀</a> <a id="8957" class="Symbol">{</a><a id="8958" href="/20.07/PUC/2019/Assignment4/#8958" class="Bound">Γ</a> <a id="8960" href="/20.07/PUC/2019/Assignment4/#8960" class="Bound">A</a> <a id="8962" href="/20.07/PUC/2019/Assignment4/#8962" class="Bound">B</a><a id="8963" class="Symbol">}</a> <a id="8965" class="Symbol">{</a><a id="8966" href="/20.07/PUC/2019/Assignment4/#8966" class="Bound">M</a> <a id="8968" href="/20.07/PUC/2019/Assignment4/#8968" class="Bound">M′</a> <a id="8971" class="Symbol">:</a> <a id="8973" href="/20.07/PUC/2019/Assignment4/#8958" class="Bound">Γ</a> <a id="8975" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8977" href="/20.07/PUC/2019/Assignment4/#8960" class="Bound">A</a><a id="8978" class="Symbol">}</a> <a id="8980" class="Symbol">{</a><a id="8981" href="/20.07/PUC/2019/Assignment4/#8981" class="Bound">N</a> <a id="8983" class="Symbol">:</a> <a id="8985" href="/20.07/PUC/2019/Assignment4/#8958" class="Bound">Γ</a> <a id="8987" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="8989" href="/20.07/PUC/2019/Assignment4/#8960" class="Bound">A</a> <a id="8991" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="8993" href="/20.07/PUC/2019/Assignment4/#8962" class="Bound">B</a><a id="8994" class="Symbol">}</a>
|
||
<a id="9002" class="Symbol">→</a> <a id="9004" href="/20.07/PUC/2019/Assignment4/#8966" class="Bound">M</a> <a id="9006" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="9009" href="/20.07/PUC/2019/Assignment4/#8968" class="Bound">M′</a>
|
||
<a id="9020" class="Comment">---------------------</a>
|
||
<a id="9048" class="Symbol">→</a> <a id="9050" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="9055" href="/20.07/PUC/2019/Assignment4/#8966" class="Bound">M</a> <a id="9057" href="/20.07/PUC/2019/Assignment4/#8981" class="Bound">N</a> <a id="9059" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="9062" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="9067" href="/20.07/PUC/2019/Assignment4/#8968" class="Bound">M′</a> <a id="9070" href="/20.07/PUC/2019/Assignment4/#8981" class="Bound">N</a>
|
||
|
||
<a id="More._—→_.β-let"></a><a id="9077" href="/20.07/PUC/2019/Assignment4/#9077" class="InductiveConstructor">β-let</a> <a id="9083" class="Symbol">:</a> <a id="9085" class="Symbol">∀</a> <a id="9087" class="Symbol">{</a><a id="9088" href="/20.07/PUC/2019/Assignment4/#9088" class="Bound">Γ</a> <a id="9090" href="/20.07/PUC/2019/Assignment4/#9090" class="Bound">A</a> <a id="9092" href="/20.07/PUC/2019/Assignment4/#9092" class="Bound">B</a><a id="9093" class="Symbol">}</a> <a id="9095" class="Symbol">{</a><a id="9096" href="/20.07/PUC/2019/Assignment4/#9096" class="Bound">V</a> <a id="9098" class="Symbol">:</a> <a id="9100" href="/20.07/PUC/2019/Assignment4/#9088" class="Bound">Γ</a> <a id="9102" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="9104" href="/20.07/PUC/2019/Assignment4/#9090" class="Bound">A</a><a id="9105" class="Symbol">}</a> <a id="9107" class="Symbol">{</a><a id="9108" href="/20.07/PUC/2019/Assignment4/#9108" class="Bound">N</a> <a id="9110" class="Symbol">:</a> <a id="9112" href="/20.07/PUC/2019/Assignment4/#9088" class="Bound">Γ</a> <a id="9114" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="9116" href="/20.07/PUC/2019/Assignment4/#9090" class="Bound">A</a> <a id="9118" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="9120" href="/20.07/PUC/2019/Assignment4/#9092" class="Bound">B</a><a id="9121" class="Symbol">}</a>
|
||
<a id="9129" class="Symbol">→</a> <a id="9131" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="9137" href="/20.07/PUC/2019/Assignment4/#9096" class="Bound">V</a>
|
||
<a id="9147" class="Comment">-------------------</a>
|
||
<a id="9173" class="Symbol">→</a> <a id="9175" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="9180" href="/20.07/PUC/2019/Assignment4/#9096" class="Bound">V</a> <a id="9182" href="/20.07/PUC/2019/Assignment4/#9108" class="Bound">N</a> <a id="9184" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="9187" href="/20.07/PUC/2019/Assignment4/#9108" class="Bound">N</a> <a id="9189" href="/20.07/PUC/2019/Assignment4/#6275" class="Function Operator">[</a> <a id="9191" href="/20.07/PUC/2019/Assignment4/#9096" class="Bound">V</a> <a id="9193" href="/20.07/PUC/2019/Assignment4/#6275" class="Function Operator">]</a>
|
||
|
||
<a id="9200" class="Comment">-- products</a>
|
||
|
||
<a id="More._—→_.ξ-⟨,⟩₁"></a><a id="9217" href="/20.07/PUC/2019/Assignment4/#9217" class="InductiveConstructor">ξ-⟨,⟩₁</a> <a id="9224" class="Symbol">:</a> <a id="9226" class="Symbol">∀</a> <a id="9228" class="Symbol">{</a><a id="9229" href="/20.07/PUC/2019/Assignment4/#9229" class="Bound">Γ</a> <a id="9231" href="/20.07/PUC/2019/Assignment4/#9231" class="Bound">A</a> <a id="9233" href="/20.07/PUC/2019/Assignment4/#9233" class="Bound">B</a><a id="9234" class="Symbol">}</a> <a id="9236" class="Symbol">{</a><a id="9237" href="/20.07/PUC/2019/Assignment4/#9237" class="Bound">M</a> <a id="9239" href="/20.07/PUC/2019/Assignment4/#9239" class="Bound">M′</a> <a id="9242" class="Symbol">:</a> <a id="9244" href="/20.07/PUC/2019/Assignment4/#9229" class="Bound">Γ</a> <a id="9246" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="9248" href="/20.07/PUC/2019/Assignment4/#9231" class="Bound">A</a><a id="9249" class="Symbol">}</a> <a id="9251" class="Symbol">{</a><a id="9252" href="/20.07/PUC/2019/Assignment4/#9252" class="Bound">N</a> <a id="9254" class="Symbol">:</a> <a id="9256" href="/20.07/PUC/2019/Assignment4/#9229" class="Bound">Γ</a> <a id="9258" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="9260" href="/20.07/PUC/2019/Assignment4/#9233" class="Bound">B</a><a id="9261" class="Symbol">}</a>
|
||
<a id="9269" class="Symbol">→</a> <a id="9271" href="/20.07/PUC/2019/Assignment4/#9237" class="Bound">M</a> <a id="9273" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="9276" href="/20.07/PUC/2019/Assignment4/#9239" class="Bound">M′</a>
|
||
<a id="9287" class="Comment">-------------------------</a>
|
||
<a id="9319" class="Symbol">→</a> <a id="9321" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="9324" href="/20.07/PUC/2019/Assignment4/#9237" class="Bound">M</a> <a id="9326" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="9328" href="/20.07/PUC/2019/Assignment4/#9252" class="Bound">N</a> <a id="9330" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="9332" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="9335" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="9338" href="/20.07/PUC/2019/Assignment4/#9239" class="Bound">M′</a> <a id="9341" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="9343" href="/20.07/PUC/2019/Assignment4/#9252" class="Bound">N</a> <a id="9345" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
|
||
<a id="More._—→_.ξ-⟨,⟩₂"></a><a id="9352" href="/20.07/PUC/2019/Assignment4/#9352" class="InductiveConstructor">ξ-⟨,⟩₂</a> <a id="9359" class="Symbol">:</a> <a id="9361" class="Symbol">∀</a> <a id="9363" class="Symbol">{</a><a id="9364" href="/20.07/PUC/2019/Assignment4/#9364" class="Bound">Γ</a> <a id="9366" href="/20.07/PUC/2019/Assignment4/#9366" class="Bound">A</a> <a id="9368" href="/20.07/PUC/2019/Assignment4/#9368" class="Bound">B</a><a id="9369" class="Symbol">}</a> <a id="9371" class="Symbol">{</a><a id="9372" href="/20.07/PUC/2019/Assignment4/#9372" class="Bound">V</a> <a id="9374" class="Symbol">:</a> <a id="9376" href="/20.07/PUC/2019/Assignment4/#9364" class="Bound">Γ</a> <a id="9378" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="9380" href="/20.07/PUC/2019/Assignment4/#9366" class="Bound">A</a><a id="9381" class="Symbol">}</a> <a id="9383" class="Symbol">{</a><a id="9384" href="/20.07/PUC/2019/Assignment4/#9384" class="Bound">N</a> <a id="9386" href="/20.07/PUC/2019/Assignment4/#9386" class="Bound">N′</a> <a id="9389" class="Symbol">:</a> <a id="9391" href="/20.07/PUC/2019/Assignment4/#9364" class="Bound">Γ</a> <a id="9393" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="9395" href="/20.07/PUC/2019/Assignment4/#9368" class="Bound">B</a><a id="9396" class="Symbol">}</a>
|
||
<a id="9404" class="Symbol">→</a> <a id="9406" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="9412" href="/20.07/PUC/2019/Assignment4/#9372" class="Bound">V</a>
|
||
<a id="9420" class="Symbol">→</a> <a id="9422" href="/20.07/PUC/2019/Assignment4/#9384" class="Bound">N</a> <a id="9424" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="9427" href="/20.07/PUC/2019/Assignment4/#9386" class="Bound">N′</a>
|
||
<a id="9438" class="Comment">-------------------------</a>
|
||
<a id="9470" class="Symbol">→</a> <a id="9472" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="9475" href="/20.07/PUC/2019/Assignment4/#9372" class="Bound">V</a> <a id="9477" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="9479" href="/20.07/PUC/2019/Assignment4/#9384" class="Bound">N</a> <a id="9481" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="9483" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="9486" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="9489" href="/20.07/PUC/2019/Assignment4/#9372" class="Bound">V</a> <a id="9491" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="9493" href="/20.07/PUC/2019/Assignment4/#9386" class="Bound">N′</a> <a id="9496" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
|
||
<a id="More._—→_.ξ-proj₁"></a><a id="9503" href="/20.07/PUC/2019/Assignment4/#9503" class="InductiveConstructor">ξ-proj₁</a> <a id="9511" class="Symbol">:</a> <a id="9513" class="Symbol">∀</a> <a id="9515" class="Symbol">{</a><a id="9516" href="/20.07/PUC/2019/Assignment4/#9516" class="Bound">Γ</a> <a id="9518" href="/20.07/PUC/2019/Assignment4/#9518" class="Bound">A</a> <a id="9520" href="/20.07/PUC/2019/Assignment4/#9520" class="Bound">B</a><a id="9521" class="Symbol">}</a> <a id="9523" class="Symbol">{</a><a id="9524" href="/20.07/PUC/2019/Assignment4/#9524" class="Bound">L</a> <a id="9526" href="/20.07/PUC/2019/Assignment4/#9526" class="Bound">L′</a> <a id="9529" class="Symbol">:</a> <a id="9531" href="/20.07/PUC/2019/Assignment4/#9516" class="Bound">Γ</a> <a id="9533" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="9535" href="/20.07/PUC/2019/Assignment4/#9518" class="Bound">A</a> <a id="9537" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">`×</a> <a id="9540" href="/20.07/PUC/2019/Assignment4/#9520" class="Bound">B</a><a id="9541" class="Symbol">}</a>
|
||
<a id="9549" class="Symbol">→</a> <a id="9551" href="/20.07/PUC/2019/Assignment4/#9524" class="Bound">L</a> <a id="9553" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="9556" href="/20.07/PUC/2019/Assignment4/#9526" class="Bound">L′</a>
|
||
<a id="9567" class="Comment">---------------------</a>
|
||
<a id="9595" class="Symbol">→</a> <a id="9597" href="/20.07/PUC/2019/Assignment4/#3535" class="InductiveConstructor">`proj₁</a> <a id="9604" href="/20.07/PUC/2019/Assignment4/#9524" class="Bound">L</a> <a id="9606" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="9609" href="/20.07/PUC/2019/Assignment4/#3535" class="InductiveConstructor">`proj₁</a> <a id="9616" href="/20.07/PUC/2019/Assignment4/#9526" class="Bound">L′</a>
|
||
|
||
<a id="More._—→_.ξ-proj₂"></a><a id="9624" href="/20.07/PUC/2019/Assignment4/#9624" class="InductiveConstructor">ξ-proj₂</a> <a id="9632" class="Symbol">:</a> <a id="9634" class="Symbol">∀</a> <a id="9636" class="Symbol">{</a><a id="9637" href="/20.07/PUC/2019/Assignment4/#9637" class="Bound">Γ</a> <a id="9639" href="/20.07/PUC/2019/Assignment4/#9639" class="Bound">A</a> <a id="9641" href="/20.07/PUC/2019/Assignment4/#9641" class="Bound">B</a><a id="9642" class="Symbol">}</a> <a id="9644" class="Symbol">{</a><a id="9645" href="/20.07/PUC/2019/Assignment4/#9645" class="Bound">L</a> <a id="9647" href="/20.07/PUC/2019/Assignment4/#9647" class="Bound">L′</a> <a id="9650" class="Symbol">:</a> <a id="9652" href="/20.07/PUC/2019/Assignment4/#9637" class="Bound">Γ</a> <a id="9654" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="9656" href="/20.07/PUC/2019/Assignment4/#9639" class="Bound">A</a> <a id="9658" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">`×</a> <a id="9661" href="/20.07/PUC/2019/Assignment4/#9641" class="Bound">B</a><a id="9662" class="Symbol">}</a>
|
||
<a id="9670" class="Symbol">→</a> <a id="9672" href="/20.07/PUC/2019/Assignment4/#9645" class="Bound">L</a> <a id="9674" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="9677" href="/20.07/PUC/2019/Assignment4/#9647" class="Bound">L′</a>
|
||
<a id="9688" class="Comment">---------------------</a>
|
||
<a id="9716" class="Symbol">→</a> <a id="9718" href="/20.07/PUC/2019/Assignment4/#3612" class="InductiveConstructor">`proj₂</a> <a id="9725" href="/20.07/PUC/2019/Assignment4/#9645" class="Bound">L</a> <a id="9727" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="9730" href="/20.07/PUC/2019/Assignment4/#3612" class="InductiveConstructor">`proj₂</a> <a id="9737" href="/20.07/PUC/2019/Assignment4/#9647" class="Bound">L′</a>
|
||
|
||
<a id="More._—→_.β-proj₁"></a><a id="9745" href="/20.07/PUC/2019/Assignment4/#9745" class="InductiveConstructor">β-proj₁</a> <a id="9753" class="Symbol">:</a> <a id="9755" class="Symbol">∀</a> <a id="9757" class="Symbol">{</a><a id="9758" href="/20.07/PUC/2019/Assignment4/#9758" class="Bound">Γ</a> <a id="9760" href="/20.07/PUC/2019/Assignment4/#9760" class="Bound">A</a> <a id="9762" href="/20.07/PUC/2019/Assignment4/#9762" class="Bound">B</a><a id="9763" class="Symbol">}</a> <a id="9765" class="Symbol">{</a><a id="9766" href="/20.07/PUC/2019/Assignment4/#9766" class="Bound">V</a> <a id="9768" class="Symbol">:</a> <a id="9770" href="/20.07/PUC/2019/Assignment4/#9758" class="Bound">Γ</a> <a id="9772" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="9774" href="/20.07/PUC/2019/Assignment4/#9760" class="Bound">A</a><a id="9775" class="Symbol">}</a> <a id="9777" class="Symbol">{</a><a id="9778" href="/20.07/PUC/2019/Assignment4/#9778" class="Bound">W</a> <a id="9780" class="Symbol">:</a> <a id="9782" href="/20.07/PUC/2019/Assignment4/#9758" class="Bound">Γ</a> <a id="9784" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="9786" href="/20.07/PUC/2019/Assignment4/#9762" class="Bound">B</a><a id="9787" class="Symbol">}</a>
|
||
<a id="9795" class="Symbol">→</a> <a id="9797" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="9803" href="/20.07/PUC/2019/Assignment4/#9766" class="Bound">V</a>
|
||
<a id="9811" class="Symbol">→</a> <a id="9813" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="9819" href="/20.07/PUC/2019/Assignment4/#9778" class="Bound">W</a>
|
||
<a id="9829" class="Comment">----------------------</a>
|
||
<a id="9858" class="Symbol">→</a> <a id="9860" href="/20.07/PUC/2019/Assignment4/#3535" class="InductiveConstructor">`proj₁</a> <a id="9867" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="9870" href="/20.07/PUC/2019/Assignment4/#9766" class="Bound">V</a> <a id="9872" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="9874" href="/20.07/PUC/2019/Assignment4/#9778" class="Bound">W</a> <a id="9876" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="9878" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="9881" href="/20.07/PUC/2019/Assignment4/#9766" class="Bound">V</a>
|
||
|
||
<a id="More._—→_.β-proj₂"></a><a id="9888" href="/20.07/PUC/2019/Assignment4/#9888" class="InductiveConstructor">β-proj₂</a> <a id="9896" class="Symbol">:</a> <a id="9898" class="Symbol">∀</a> <a id="9900" class="Symbol">{</a><a id="9901" href="/20.07/PUC/2019/Assignment4/#9901" class="Bound">Γ</a> <a id="9903" href="/20.07/PUC/2019/Assignment4/#9903" class="Bound">A</a> <a id="9905" href="/20.07/PUC/2019/Assignment4/#9905" class="Bound">B</a><a id="9906" class="Symbol">}</a> <a id="9908" class="Symbol">{</a><a id="9909" href="/20.07/PUC/2019/Assignment4/#9909" class="Bound">V</a> <a id="9911" class="Symbol">:</a> <a id="9913" href="/20.07/PUC/2019/Assignment4/#9901" class="Bound">Γ</a> <a id="9915" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="9917" href="/20.07/PUC/2019/Assignment4/#9903" class="Bound">A</a><a id="9918" class="Symbol">}</a> <a id="9920" class="Symbol">{</a><a id="9921" href="/20.07/PUC/2019/Assignment4/#9921" class="Bound">W</a> <a id="9923" class="Symbol">:</a> <a id="9925" href="/20.07/PUC/2019/Assignment4/#9901" class="Bound">Γ</a> <a id="9927" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="9929" href="/20.07/PUC/2019/Assignment4/#9905" class="Bound">B</a><a id="9930" class="Symbol">}</a>
|
||
<a id="9938" class="Symbol">→</a> <a id="9940" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="9946" href="/20.07/PUC/2019/Assignment4/#9909" class="Bound">V</a>
|
||
<a id="9954" class="Symbol">→</a> <a id="9956" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="9962" href="/20.07/PUC/2019/Assignment4/#9921" class="Bound">W</a>
|
||
<a id="9972" class="Comment">----------------------</a>
|
||
<a id="10001" class="Symbol">→</a> <a id="10003" href="/20.07/PUC/2019/Assignment4/#3612" class="InductiveConstructor">`proj₂</a> <a id="10010" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="10013" href="/20.07/PUC/2019/Assignment4/#9909" class="Bound">V</a> <a id="10015" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="10017" href="/20.07/PUC/2019/Assignment4/#9921" class="Bound">W</a> <a id="10019" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="10021" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="10024" href="/20.07/PUC/2019/Assignment4/#9921" class="Bound">W</a>
|
||
|
||
<a id="10031" class="Comment">-- alternative formulation of products</a>
|
||
|
||
<a id="More._—→_.ξ-case×"></a><a id="10075" href="/20.07/PUC/2019/Assignment4/#10075" class="InductiveConstructor">ξ-case×</a> <a id="10083" class="Symbol">:</a> <a id="10085" class="Symbol">∀</a> <a id="10087" class="Symbol">{</a><a id="10088" href="/20.07/PUC/2019/Assignment4/#10088" class="Bound">Γ</a> <a id="10090" href="/20.07/PUC/2019/Assignment4/#10090" class="Bound">A</a> <a id="10092" href="/20.07/PUC/2019/Assignment4/#10092" class="Bound">B</a> <a id="10094" href="/20.07/PUC/2019/Assignment4/#10094" class="Bound">C</a><a id="10095" class="Symbol">}</a> <a id="10097" class="Symbol">{</a><a id="10098" href="/20.07/PUC/2019/Assignment4/#10098" class="Bound">L</a> <a id="10100" href="/20.07/PUC/2019/Assignment4/#10100" class="Bound">L′</a> <a id="10103" class="Symbol">:</a> <a id="10105" href="/20.07/PUC/2019/Assignment4/#10088" class="Bound">Γ</a> <a id="10107" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="10109" href="/20.07/PUC/2019/Assignment4/#10090" class="Bound">A</a> <a id="10111" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">`×</a> <a id="10114" href="/20.07/PUC/2019/Assignment4/#10092" class="Bound">B</a><a id="10115" class="Symbol">}</a> <a id="10117" class="Symbol">{</a><a id="10118" href="/20.07/PUC/2019/Assignment4/#10118" class="Bound">M</a> <a id="10120" class="Symbol">:</a> <a id="10122" href="/20.07/PUC/2019/Assignment4/#10088" class="Bound">Γ</a> <a id="10124" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="10126" href="/20.07/PUC/2019/Assignment4/#10090" class="Bound">A</a> <a id="10128" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="10130" href="/20.07/PUC/2019/Assignment4/#10092" class="Bound">B</a> <a id="10132" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="10134" href="/20.07/PUC/2019/Assignment4/#10094" class="Bound">C</a><a id="10135" class="Symbol">}</a>
|
||
<a id="10143" class="Symbol">→</a> <a id="10145" href="/20.07/PUC/2019/Assignment4/#10098" class="Bound">L</a> <a id="10147" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="10150" href="/20.07/PUC/2019/Assignment4/#10100" class="Bound">L′</a>
|
||
<a id="10161" class="Comment">-----------------------</a>
|
||
<a id="10191" class="Symbol">→</a> <a id="10193" href="/20.07/PUC/2019/Assignment4/#3733" class="InductiveConstructor">case×</a> <a id="10199" href="/20.07/PUC/2019/Assignment4/#10098" class="Bound">L</a> <a id="10201" href="/20.07/PUC/2019/Assignment4/#10118" class="Bound">M</a> <a id="10203" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="10206" href="/20.07/PUC/2019/Assignment4/#3733" class="InductiveConstructor">case×</a> <a id="10212" href="/20.07/PUC/2019/Assignment4/#10100" class="Bound">L′</a> <a id="10215" href="/20.07/PUC/2019/Assignment4/#10118" class="Bound">M</a>
|
||
|
||
<a id="More._—→_.β-case×"></a><a id="10222" href="/20.07/PUC/2019/Assignment4/#10222" class="InductiveConstructor">β-case×</a> <a id="10230" class="Symbol">:</a> <a id="10232" class="Symbol">∀</a> <a id="10234" class="Symbol">{</a><a id="10235" href="/20.07/PUC/2019/Assignment4/#10235" class="Bound">Γ</a> <a id="10237" href="/20.07/PUC/2019/Assignment4/#10237" class="Bound">A</a> <a id="10239" href="/20.07/PUC/2019/Assignment4/#10239" class="Bound">B</a> <a id="10241" href="/20.07/PUC/2019/Assignment4/#10241" class="Bound">C</a><a id="10242" class="Symbol">}</a> <a id="10244" class="Symbol">{</a><a id="10245" href="/20.07/PUC/2019/Assignment4/#10245" class="Bound">V</a> <a id="10247" class="Symbol">:</a> <a id="10249" href="/20.07/PUC/2019/Assignment4/#10235" class="Bound">Γ</a> <a id="10251" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="10253" href="/20.07/PUC/2019/Assignment4/#10237" class="Bound">A</a><a id="10254" class="Symbol">}</a> <a id="10256" class="Symbol">{</a><a id="10257" href="/20.07/PUC/2019/Assignment4/#10257" class="Bound">W</a> <a id="10259" class="Symbol">:</a> <a id="10261" href="/20.07/PUC/2019/Assignment4/#10235" class="Bound">Γ</a> <a id="10263" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="10265" href="/20.07/PUC/2019/Assignment4/#10239" class="Bound">B</a><a id="10266" class="Symbol">}</a> <a id="10268" class="Symbol">{</a><a id="10269" href="/20.07/PUC/2019/Assignment4/#10269" class="Bound">M</a> <a id="10271" class="Symbol">:</a> <a id="10273" href="/20.07/PUC/2019/Assignment4/#10235" class="Bound">Γ</a> <a id="10275" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="10277" href="/20.07/PUC/2019/Assignment4/#10237" class="Bound">A</a> <a id="10279" href="/20.07/PUC/2019/Assignment4/#2261" class="InductiveConstructor Operator">,</a> <a id="10281" href="/20.07/PUC/2019/Assignment4/#10239" class="Bound">B</a> <a id="10283" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="10285" href="/20.07/PUC/2019/Assignment4/#10241" class="Bound">C</a><a id="10286" class="Symbol">}</a>
|
||
<a id="10294" class="Symbol">→</a> <a id="10296" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="10302" href="/20.07/PUC/2019/Assignment4/#10245" class="Bound">V</a>
|
||
<a id="10310" class="Symbol">→</a> <a id="10312" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="10318" href="/20.07/PUC/2019/Assignment4/#10257" class="Bound">W</a>
|
||
<a id="10328" class="Comment">----------------------------------</a>
|
||
<a id="10369" class="Symbol">→</a> <a id="10371" href="/20.07/PUC/2019/Assignment4/#3733" class="InductiveConstructor">case×</a> <a id="10377" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="10380" href="/20.07/PUC/2019/Assignment4/#10245" class="Bound">V</a> <a id="10382" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="10384" href="/20.07/PUC/2019/Assignment4/#10257" class="Bound">W</a> <a id="10386" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="10388" href="/20.07/PUC/2019/Assignment4/#10269" class="Bound">M</a> <a id="10390" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="10393" href="/20.07/PUC/2019/Assignment4/#10269" class="Bound">M</a> <a id="10395" href="/20.07/PUC/2019/Assignment4/#6478" class="Function Operator">[</a> <a id="10397" href="/20.07/PUC/2019/Assignment4/#10245" class="Bound">V</a> <a id="10399" href="/20.07/PUC/2019/Assignment4/#6478" class="Function Operator">][</a> <a id="10402" href="/20.07/PUC/2019/Assignment4/#10257" class="Bound">W</a> <a id="10404" href="/20.07/PUC/2019/Assignment4/#6478" class="Function Operator">]</a>
|
||
</pre>
|
||
<h2 id="reflexive-and-transitive-closure">Reflexive and transitive closure</h2>
|
||
|
||
<pre class="Agda"> <a id="10454" class="Keyword">infix</a> <a id="10461" class="Number">2</a> <a id="10463" href="/20.07/PUC/2019/Assignment4/#10527" class="Datatype Operator">_—↠_</a>
|
||
<a id="10470" class="Keyword">infix</a> <a id="10477" class="Number">1</a> <a id="10479" href="/20.07/PUC/2019/Assignment4/#10748" class="Function Operator">begin_</a>
|
||
<a id="10488" class="Keyword">infixr</a> <a id="10495" class="Number">2</a> <a id="10497" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">_—→⟨_⟩_</a>
|
||
<a id="10507" class="Keyword">infix</a> <a id="10514" class="Number">3</a> <a id="10516" href="/20.07/PUC/2019/Assignment4/#10579" class="InductiveConstructor Operator">_∎</a>
|
||
|
||
<a id="10522" class="Keyword">data</a> <a id="More._—↠_"></a><a id="10527" href="/20.07/PUC/2019/Assignment4/#10527" class="Datatype Operator">_—↠_</a> <a id="10532" class="Symbol">:</a> <a id="10534" class="Symbol">∀</a> <a id="10536" class="Symbol">{</a><a id="10537" href="/20.07/PUC/2019/Assignment4/#10537" class="Bound">Γ</a> <a id="10539" href="/20.07/PUC/2019/Assignment4/#10539" class="Bound">A</a><a id="10540" class="Symbol">}</a> <a id="10542" class="Symbol">→</a> <a id="10544" class="Symbol">(</a><a id="10545" href="/20.07/PUC/2019/Assignment4/#10537" class="Bound">Γ</a> <a id="10547" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="10549" href="/20.07/PUC/2019/Assignment4/#10539" class="Bound">A</a><a id="10550" class="Symbol">)</a> <a id="10552" class="Symbol">→</a> <a id="10554" class="Symbol">(</a><a id="10555" href="/20.07/PUC/2019/Assignment4/#10537" class="Bound">Γ</a> <a id="10557" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="10559" href="/20.07/PUC/2019/Assignment4/#10539" class="Bound">A</a><a id="10560" class="Symbol">)</a> <a id="10562" class="Symbol">→</a> <a id="10564" class="PrimitiveType">Set</a> <a id="10568" class="Keyword">where</a>
|
||
|
||
<a id="More._—↠_._∎"></a><a id="10579" href="/20.07/PUC/2019/Assignment4/#10579" class="InductiveConstructor Operator">_∎</a> <a id="10582" class="Symbol">:</a> <a id="10584" class="Symbol">∀</a> <a id="10586" class="Symbol">{</a><a id="10587" href="/20.07/PUC/2019/Assignment4/#10587" class="Bound">Γ</a> <a id="10589" href="/20.07/PUC/2019/Assignment4/#10589" class="Bound">A</a><a id="10590" class="Symbol">}</a> <a id="10592" class="Symbol">(</a><a id="10593" href="/20.07/PUC/2019/Assignment4/#10593" class="Bound">M</a> <a id="10595" class="Symbol">:</a> <a id="10597" href="/20.07/PUC/2019/Assignment4/#10587" class="Bound">Γ</a> <a id="10599" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="10601" href="/20.07/PUC/2019/Assignment4/#10589" class="Bound">A</a><a id="10602" class="Symbol">)</a>
|
||
<a id="10612" class="Comment">--------</a>
|
||
<a id="10627" class="Symbol">→</a> <a id="10629" href="/20.07/PUC/2019/Assignment4/#10593" class="Bound">M</a> <a id="10631" href="/20.07/PUC/2019/Assignment4/#10527" class="Datatype Operator">—↠</a> <a id="10634" href="/20.07/PUC/2019/Assignment4/#10593" class="Bound">M</a>
|
||
|
||
<a id="More._—↠_._—→⟨_⟩_"></a><a id="10641" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">_—→⟨_⟩_</a> <a id="10649" class="Symbol">:</a> <a id="10651" class="Symbol">∀</a> <a id="10653" class="Symbol">{</a><a id="10654" href="/20.07/PUC/2019/Assignment4/#10654" class="Bound">Γ</a> <a id="10656" href="/20.07/PUC/2019/Assignment4/#10656" class="Bound">A</a><a id="10657" class="Symbol">}</a> <a id="10659" class="Symbol">(</a><a id="10660" href="/20.07/PUC/2019/Assignment4/#10660" class="Bound">L</a> <a id="10662" class="Symbol">:</a> <a id="10664" href="/20.07/PUC/2019/Assignment4/#10654" class="Bound">Γ</a> <a id="10666" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="10668" href="/20.07/PUC/2019/Assignment4/#10656" class="Bound">A</a><a id="10669" class="Symbol">)</a> <a id="10671" class="Symbol">{</a><a id="10672" href="/20.07/PUC/2019/Assignment4/#10672" class="Bound">M</a> <a id="10674" href="/20.07/PUC/2019/Assignment4/#10674" class="Bound">N</a> <a id="10676" class="Symbol">:</a> <a id="10678" href="/20.07/PUC/2019/Assignment4/#10654" class="Bound">Γ</a> <a id="10680" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="10682" href="/20.07/PUC/2019/Assignment4/#10656" class="Bound">A</a><a id="10683" class="Symbol">}</a>
|
||
<a id="10691" class="Symbol">→</a> <a id="10693" href="/20.07/PUC/2019/Assignment4/#10660" class="Bound">L</a> <a id="10695" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="10698" href="/20.07/PUC/2019/Assignment4/#10672" class="Bound">M</a>
|
||
<a id="10706" class="Symbol">→</a> <a id="10708" href="/20.07/PUC/2019/Assignment4/#10672" class="Bound">M</a> <a id="10710" href="/20.07/PUC/2019/Assignment4/#10527" class="Datatype Operator">—↠</a> <a id="10713" href="/20.07/PUC/2019/Assignment4/#10674" class="Bound">N</a>
|
||
<a id="10723" class="Comment">------</a>
|
||
<a id="10736" class="Symbol">→</a> <a id="10738" href="/20.07/PUC/2019/Assignment4/#10660" class="Bound">L</a> <a id="10740" href="/20.07/PUC/2019/Assignment4/#10527" class="Datatype Operator">—↠</a> <a id="10743" href="/20.07/PUC/2019/Assignment4/#10674" class="Bound">N</a>
|
||
|
||
<a id="More.begin_"></a><a id="10748" href="/20.07/PUC/2019/Assignment4/#10748" class="Function Operator">begin_</a> <a id="10755" class="Symbol">:</a> <a id="10757" class="Symbol">∀</a> <a id="10759" class="Symbol">{</a><a id="10760" href="/20.07/PUC/2019/Assignment4/#10760" class="Bound">Γ</a><a id="10761" class="Symbol">}</a> <a id="10763" class="Symbol">{</a><a id="10764" href="/20.07/PUC/2019/Assignment4/#10764" class="Bound">A</a><a id="10765" class="Symbol">}</a> <a id="10767" class="Symbol">{</a><a id="10768" href="/20.07/PUC/2019/Assignment4/#10768" class="Bound">M</a> <a id="10770" href="/20.07/PUC/2019/Assignment4/#10770" class="Bound">N</a> <a id="10772" class="Symbol">:</a> <a id="10774" href="/20.07/PUC/2019/Assignment4/#10760" class="Bound">Γ</a> <a id="10776" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="10778" href="/20.07/PUC/2019/Assignment4/#10764" class="Bound">A</a><a id="10779" class="Symbol">}</a>
|
||
<a id="10785" class="Symbol">→</a> <a id="10787" href="/20.07/PUC/2019/Assignment4/#10768" class="Bound">M</a> <a id="10789" href="/20.07/PUC/2019/Assignment4/#10527" class="Datatype Operator">—↠</a> <a id="10792" href="/20.07/PUC/2019/Assignment4/#10770" class="Bound">N</a>
|
||
<a id="10800" class="Comment">------</a>
|
||
<a id="10811" class="Symbol">→</a> <a id="10813" href="/20.07/PUC/2019/Assignment4/#10768" class="Bound">M</a> <a id="10815" href="/20.07/PUC/2019/Assignment4/#10527" class="Datatype Operator">—↠</a> <a id="10818" href="/20.07/PUC/2019/Assignment4/#10770" class="Bound">N</a>
|
||
<a id="10822" href="/20.07/PUC/2019/Assignment4/#10748" class="Function Operator">begin</a> <a id="10828" href="/20.07/PUC/2019/Assignment4/#10828" class="Bound">M—↠N</a> <a id="10833" class="Symbol">=</a> <a id="10835" href="/20.07/PUC/2019/Assignment4/#10828" class="Bound">M—↠N</a>
|
||
</pre>
|
||
|
||
<h2 id="values-do-not-reduce">Values do not reduce</h2>
|
||
|
||
<pre class="Agda"> <a id="More.V¬—→"></a><a id="10877" href="/20.07/PUC/2019/Assignment4/#10877" class="Function">V¬—→</a> <a id="10882" class="Symbol">:</a> <a id="10884" class="Symbol">∀</a> <a id="10886" class="Symbol">{</a><a id="10887" href="/20.07/PUC/2019/Assignment4/#10887" class="Bound">Γ</a> <a id="10889" href="/20.07/PUC/2019/Assignment4/#10889" class="Bound">A</a><a id="10890" class="Symbol">}</a> <a id="10892" class="Symbol">{</a><a id="10893" href="/20.07/PUC/2019/Assignment4/#10893" class="Bound">M</a> <a id="10895" href="/20.07/PUC/2019/Assignment4/#10895" class="Bound">N</a> <a id="10897" class="Symbol">:</a> <a id="10899" href="/20.07/PUC/2019/Assignment4/#10887" class="Bound">Γ</a> <a id="10901" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="10903" href="/20.07/PUC/2019/Assignment4/#10889" class="Bound">A</a><a id="10904" class="Symbol">}</a>
|
||
<a id="10910" class="Symbol">→</a> <a id="10912" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="10918" href="/20.07/PUC/2019/Assignment4/#10893" class="Bound">M</a>
|
||
<a id="10926" class="Comment">----------</a>
|
||
<a id="10941" class="Symbol">→</a> <a id="10943" href="https://agda.github.io/agda-stdlib/v1.1/Relation.Nullary.html#535" class="Function Operator">¬</a> <a id="10945" class="Symbol">(</a><a id="10946" href="/20.07/PUC/2019/Assignment4/#10893" class="Bound">M</a> <a id="10948" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="10951" href="/20.07/PUC/2019/Assignment4/#10895" class="Bound">N</a><a id="10952" class="Symbol">)</a>
|
||
<a id="10956" href="/20.07/PUC/2019/Assignment4/#10877" class="Function">V¬—→</a> <a id="10961" href="/20.07/PUC/2019/Assignment4/#6837" class="InductiveConstructor">V-ƛ</a> <a id="10974" class="Symbol">()</a>
|
||
<a id="10979" href="/20.07/PUC/2019/Assignment4/#10877" class="Function">V¬—→</a> <a id="10984" href="/20.07/PUC/2019/Assignment4/#6947" class="InductiveConstructor">V-zero</a> <a id="10997" class="Symbol">()</a>
|
||
<a id="11002" href="/20.07/PUC/2019/Assignment4/#10877" class="Function">V¬—→</a> <a id="11007" class="Symbol">(</a><a id="11008" href="/20.07/PUC/2019/Assignment4/#7021" class="InductiveConstructor Operator">V-suc</a> <a id="11014" href="/20.07/PUC/2019/Assignment4/#11014" class="Bound">VM</a><a id="11016" class="Symbol">)</a> <a id="11020" class="Symbol">(</a><a id="11021" href="/20.07/PUC/2019/Assignment4/#7953" class="InductiveConstructor">ξ-suc</a> <a id="11027" href="/20.07/PUC/2019/Assignment4/#11027" class="Bound">M—→M′</a><a id="11032" class="Symbol">)</a> <a id="11038" class="Symbol">=</a> <a id="11041" href="/20.07/PUC/2019/Assignment4/#10877" class="Function">V¬—→</a> <a id="11046" href="/20.07/PUC/2019/Assignment4/#11014" class="Bound">VM</a> <a id="11049" href="/20.07/PUC/2019/Assignment4/#11027" class="Bound">M—→M′</a>
|
||
<a id="11057" href="/20.07/PUC/2019/Assignment4/#10877" class="Function">V¬—→</a> <a id="11062" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="11075" class="Symbol">()</a>
|
||
<a id="11080" href="/20.07/PUC/2019/Assignment4/#10877" class="Function">V¬—→</a> <a id="11085" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">V-⟨</a> <a id="11089" href="/20.07/PUC/2019/Assignment4/#11089" class="Bound">VM</a> <a id="11092" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">,</a> <a id="11094" class="Symbol">_</a> <a id="11096" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">⟩</a> <a id="11098" class="Symbol">(</a><a id="11099" href="/20.07/PUC/2019/Assignment4/#9217" class="InductiveConstructor">ξ-⟨,⟩₁</a> <a id="11106" href="/20.07/PUC/2019/Assignment4/#11106" class="Bound">M—→M′</a><a id="11111" class="Symbol">)</a> <a id="11116" class="Symbol">=</a> <a id="11119" href="/20.07/PUC/2019/Assignment4/#10877" class="Function">V¬—→</a> <a id="11124" href="/20.07/PUC/2019/Assignment4/#11089" class="Bound">VM</a> <a id="11127" href="/20.07/PUC/2019/Assignment4/#11106" class="Bound">M—→M′</a>
|
||
<a id="11135" href="/20.07/PUC/2019/Assignment4/#10877" class="Function">V¬—→</a> <a id="11140" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">V-⟨</a> <a id="11144" class="Symbol">_</a> <a id="11146" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">,</a> <a id="11148" href="/20.07/PUC/2019/Assignment4/#11148" class="Bound">VN</a> <a id="11151" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">⟩</a> <a id="11153" class="Symbol">(</a><a id="11154" href="/20.07/PUC/2019/Assignment4/#9352" class="InductiveConstructor">ξ-⟨,⟩₂</a> <a id="11161" class="Symbol">_</a> <a id="11163" href="/20.07/PUC/2019/Assignment4/#11163" class="Bound">N—→N′</a><a id="11168" class="Symbol">)</a> <a id="11171" class="Symbol">=</a> <a id="11174" href="/20.07/PUC/2019/Assignment4/#10877" class="Function">V¬—→</a> <a id="11179" href="/20.07/PUC/2019/Assignment4/#11148" class="Bound">VN</a> <a id="11182" href="/20.07/PUC/2019/Assignment4/#11163" class="Bound">N—→N′</a>
|
||
</pre>
|
||
|
||
<h2 id="progress">Progress</h2>
|
||
|
||
<pre class="Agda"> <a id="11213" class="Keyword">data</a> <a id="More.Progress"></a><a id="11218" href="/20.07/PUC/2019/Assignment4/#11218" class="Datatype">Progress</a> <a id="11227" class="Symbol">{</a><a id="11228" href="/20.07/PUC/2019/Assignment4/#11228" class="Bound">A</a><a id="11229" class="Symbol">}</a> <a id="11231" class="Symbol">(</a><a id="11232" href="/20.07/PUC/2019/Assignment4/#11232" class="Bound">M</a> <a id="11234" class="Symbol">:</a> <a id="11236" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a> <a id="11238" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="11240" href="/20.07/PUC/2019/Assignment4/#11228" class="Bound">A</a><a id="11241" class="Symbol">)</a> <a id="11243" class="Symbol">:</a> <a id="11245" class="PrimitiveType">Set</a> <a id="11249" class="Keyword">where</a>
|
||
|
||
<a id="More.Progress.step"></a><a id="11260" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="11265" class="Symbol">:</a> <a id="11267" class="Symbol">∀</a> <a id="11269" class="Symbol">{</a><a id="11270" href="/20.07/PUC/2019/Assignment4/#11270" class="Bound">N</a> <a id="11272" class="Symbol">:</a> <a id="11274" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a> <a id="11276" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="11278" href="/20.07/PUC/2019/Assignment4/#11228" class="Bound">A</a><a id="11279" class="Symbol">}</a>
|
||
<a id="11287" class="Symbol">→</a> <a id="11289" href="/20.07/PUC/2019/Assignment4/#11232" class="Bound">M</a> <a id="11291" href="/20.07/PUC/2019/Assignment4/#7493" class="Datatype Operator">—→</a> <a id="11294" href="/20.07/PUC/2019/Assignment4/#11270" class="Bound">N</a>
|
||
<a id="11304" class="Comment">----------</a>
|
||
<a id="11321" class="Symbol">→</a> <a id="11323" href="/20.07/PUC/2019/Assignment4/#11218" class="Datatype">Progress</a> <a id="11332" href="/20.07/PUC/2019/Assignment4/#11232" class="Bound">M</a>
|
||
|
||
<a id="More.Progress.done"></a><a id="11339" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="11344" class="Symbol">:</a>
|
||
<a id="11354" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="11360" href="/20.07/PUC/2019/Assignment4/#11232" class="Bound">M</a>
|
||
<a id="11370" class="Comment">----------</a>
|
||
<a id="11387" class="Symbol">→</a> <a id="11389" href="/20.07/PUC/2019/Assignment4/#11218" class="Datatype">Progress</a> <a id="11398" href="/20.07/PUC/2019/Assignment4/#11232" class="Bound">M</a>
|
||
|
||
<a id="More.progress"></a><a id="11403" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="11412" class="Symbol">:</a> <a id="11414" class="Symbol">∀</a> <a id="11416" class="Symbol">{</a><a id="11417" href="/20.07/PUC/2019/Assignment4/#11417" class="Bound">A</a><a id="11418" class="Symbol">}</a>
|
||
<a id="11424" class="Symbol">→</a> <a id="11426" class="Symbol">(</a><a id="11427" href="/20.07/PUC/2019/Assignment4/#11427" class="Bound">M</a> <a id="11429" class="Symbol">:</a> <a id="11431" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a> <a id="11433" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="11435" href="/20.07/PUC/2019/Assignment4/#11417" class="Bound">A</a><a id="11436" class="Symbol">)</a>
|
||
<a id="11444" class="Comment">-----------</a>
|
||
<a id="11460" class="Symbol">→</a> <a id="11462" href="/20.07/PUC/2019/Assignment4/#11218" class="Datatype">Progress</a> <a id="11471" href="/20.07/PUC/2019/Assignment4/#11427" class="Bound">M</a>
|
||
<a id="11475" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="11484" class="Symbol">(</a><a id="11485" href="/20.07/PUC/2019/Assignment4/#2610" class="InductiveConstructor Operator">`</a> <a id="11487" class="Symbol">())</a>
|
||
<a id="11493" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="11502" class="Symbol">(</a><a id="11503" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ</a> <a id="11505" href="/20.07/PUC/2019/Assignment4/#11505" class="Bound">N</a><a id="11506" class="Symbol">)</a> <a id="11537" class="Symbol">=</a> <a id="11540" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="11545" href="/20.07/PUC/2019/Assignment4/#6837" class="InductiveConstructor">V-ƛ</a>
|
||
<a id="11551" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="11560" class="Symbol">(</a><a id="11561" href="/20.07/PUC/2019/Assignment4/#11561" class="Bound">L</a> <a id="11563" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="11565" href="/20.07/PUC/2019/Assignment4/#11565" class="Bound">M</a><a id="11566" class="Symbol">)</a> <a id="11568" class="Keyword">with</a> <a id="11573" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="11582" href="/20.07/PUC/2019/Assignment4/#11561" class="Bound">L</a>
|
||
<a id="11586" class="Symbol">...</a> <a id="11593" class="Symbol">|</a> <a id="11595" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="11600" href="/20.07/PUC/2019/Assignment4/#11600" class="Bound">L—→L′</a> <a id="11630" class="Symbol">=</a> <a id="11633" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="11638" class="Symbol">(</a><a id="11639" href="/20.07/PUC/2019/Assignment4/#7563" class="InductiveConstructor">ξ-·₁</a> <a id="11644" href="/20.07/PUC/2019/Assignment4/#11600" class="Bound">L—→L′</a><a id="11649" class="Symbol">)</a>
|
||
<a id="11653" class="Symbol">...</a> <a id="11660" class="Symbol">|</a> <a id="11662" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="11667" href="/20.07/PUC/2019/Assignment4/#6837" class="InductiveConstructor">V-ƛ</a> <a id="11671" class="Keyword">with</a> <a id="11676" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="11685" class="Bound">M</a>
|
||
<a id="11689" class="Symbol">...</a> <a id="11700" class="Symbol">|</a> <a id="11702" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="11707" href="/20.07/PUC/2019/Assignment4/#11707" class="Bound">M—→M′</a> <a id="11733" class="Symbol">=</a> <a id="11736" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="11741" class="Symbol">(</a><a id="11742" href="/20.07/PUC/2019/Assignment4/#7680" class="InductiveConstructor">ξ-·₂</a> <a id="11747" href="/20.07/PUC/2019/Assignment4/#6837" class="InductiveConstructor">V-ƛ</a> <a id="11751" href="/20.07/PUC/2019/Assignment4/#11707" class="Bound">M—→M′</a><a id="11756" class="Symbol">)</a>
|
||
<a id="11760" class="Symbol">...</a> <a id="11771" class="Symbol">|</a> <a id="11773" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="11778" href="/20.07/PUC/2019/Assignment4/#11778" class="Bound">VM</a> <a id="11804" class="Symbol">=</a> <a id="11807" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="11812" class="Symbol">(</a><a id="11813" href="/20.07/PUC/2019/Assignment4/#7813" class="InductiveConstructor">β-ƛ</a> <a id="11817" href="/20.07/PUC/2019/Assignment4/#11778" class="Bound">VM</a><a id="11819" class="Symbol">)</a>
|
||
<a id="11823" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="11832" class="Symbol">(</a><a id="11833" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a><a id="11838" class="Symbol">)</a> <a id="11867" class="Symbol">=</a> <a id="11870" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="11875" href="/20.07/PUC/2019/Assignment4/#6947" class="InductiveConstructor">V-zero</a>
|
||
<a id="11884" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="11893" class="Symbol">(</a><a id="11894" href="/20.07/PUC/2019/Assignment4/#2915" class="InductiveConstructor Operator">`suc</a> <a id="11899" href="/20.07/PUC/2019/Assignment4/#11899" class="Bound">M</a><a id="11900" class="Symbol">)</a> <a id="11902" class="Keyword">with</a> <a id="11907" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="11916" href="/20.07/PUC/2019/Assignment4/#11899" class="Bound">M</a>
|
||
<a id="11920" class="Symbol">...</a> <a id="11927" class="Symbol">|</a> <a id="11929" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="11934" href="/20.07/PUC/2019/Assignment4/#11934" class="Bound">M—→M′</a> <a id="11964" class="Symbol">=</a> <a id="11967" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="11972" class="Symbol">(</a><a id="11973" href="/20.07/PUC/2019/Assignment4/#7953" class="InductiveConstructor">ξ-suc</a> <a id="11979" href="/20.07/PUC/2019/Assignment4/#11934" class="Bound">M—→M′</a><a id="11984" class="Symbol">)</a>
|
||
<a id="11988" class="Symbol">...</a> <a id="11995" class="Symbol">|</a> <a id="11997" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="12002" href="/20.07/PUC/2019/Assignment4/#12002" class="Bound">VM</a> <a id="12032" class="Symbol">=</a> <a id="12035" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="12040" class="Symbol">(</a><a id="12041" href="/20.07/PUC/2019/Assignment4/#7021" class="InductiveConstructor Operator">V-suc</a> <a id="12047" href="/20.07/PUC/2019/Assignment4/#12002" class="Bound">VM</a><a id="12049" class="Symbol">)</a>
|
||
<a id="12053" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="12062" class="Symbol">(</a><a id="12063" href="/20.07/PUC/2019/Assignment4/#2979" class="InductiveConstructor">case</a> <a id="12068" href="/20.07/PUC/2019/Assignment4/#12068" class="Bound">L</a> <a id="12070" href="/20.07/PUC/2019/Assignment4/#12070" class="Bound">M</a> <a id="12072" href="/20.07/PUC/2019/Assignment4/#12072" class="Bound">N</a><a id="12073" class="Symbol">)</a> <a id="12075" class="Keyword">with</a> <a id="12080" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="12089" href="/20.07/PUC/2019/Assignment4/#12068" class="Bound">L</a>
|
||
<a id="12093" class="Symbol">...</a> <a id="12100" class="Symbol">|</a> <a id="12102" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12107" href="/20.07/PUC/2019/Assignment4/#12107" class="Bound">L—→L′</a> <a id="12137" class="Symbol">=</a> <a id="12140" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12145" class="Symbol">(</a><a id="12146" href="/20.07/PUC/2019/Assignment4/#8056" class="InductiveConstructor">ξ-case</a> <a id="12153" href="/20.07/PUC/2019/Assignment4/#12107" class="Bound">L—→L′</a><a id="12158" class="Symbol">)</a>
|
||
<a id="12162" class="Symbol">...</a> <a id="12169" class="Symbol">|</a> <a id="12171" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="12176" href="/20.07/PUC/2019/Assignment4/#6947" class="InductiveConstructor">V-zero</a> <a id="12206" class="Symbol">=</a> <a id="12209" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12214" href="/20.07/PUC/2019/Assignment4/#8207" class="InductiveConstructor">β-zero</a>
|
||
<a id="12223" class="Symbol">...</a> <a id="12230" class="Symbol">|</a> <a id="12232" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="12237" class="Symbol">(</a><a id="12238" href="/20.07/PUC/2019/Assignment4/#7021" class="InductiveConstructor Operator">V-suc</a> <a id="12244" href="/20.07/PUC/2019/Assignment4/#12244" class="Bound">VL</a><a id="12246" class="Symbol">)</a> <a id="12267" class="Symbol">=</a> <a id="12270" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12275" class="Symbol">(</a><a id="12276" href="/20.07/PUC/2019/Assignment4/#8315" class="InductiveConstructor">β-suc</a> <a id="12282" href="/20.07/PUC/2019/Assignment4/#12244" class="Bound">VL</a><a id="12284" class="Symbol">)</a>
|
||
<a id="12288" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="12297" class="Symbol">(</a><a id="12298" href="/20.07/PUC/2019/Assignment4/#3092" class="InductiveConstructor Operator">μ</a> <a id="12300" href="/20.07/PUC/2019/Assignment4/#12300" class="Bound">N</a><a id="12301" class="Symbol">)</a> <a id="12332" class="Symbol">=</a> <a id="12335" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12340" href="/20.07/PUC/2019/Assignment4/#8485" class="InductiveConstructor">β-μ</a>
|
||
<a id="12346" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="12355" class="Symbol">(</a><a id="12356" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="12360" href="/20.07/PUC/2019/Assignment4/#12360" class="Bound">n</a><a id="12361" class="Symbol">)</a> <a id="12390" class="Symbol">=</a> <a id="12393" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="12398" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a>
|
||
<a id="12406" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="12415" class="Symbol">(</a><a id="12416" href="/20.07/PUC/2019/Assignment4/#12416" class="Bound">L</a> <a id="12418" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="12421" href="/20.07/PUC/2019/Assignment4/#12421" class="Bound">M</a><a id="12422" class="Symbol">)</a> <a id="12424" class="Keyword">with</a> <a id="12429" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="12438" href="/20.07/PUC/2019/Assignment4/#12416" class="Bound">L</a>
|
||
<a id="12442" class="Symbol">...</a> <a id="12449" class="Symbol">|</a> <a id="12451" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12456" href="/20.07/PUC/2019/Assignment4/#12456" class="Bound">L—→L′</a> <a id="12486" class="Symbol">=</a> <a id="12489" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12494" class="Symbol">(</a><a id="12495" href="/20.07/PUC/2019/Assignment4/#8596" class="InductiveConstructor">ξ-*₁</a> <a id="12500" href="/20.07/PUC/2019/Assignment4/#12456" class="Bound">L—→L′</a><a id="12505" class="Symbol">)</a>
|
||
<a id="12509" class="Symbol">...</a> <a id="12516" class="Symbol">|</a> <a id="12518" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="12523" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="12529" class="Keyword">with</a> <a id="12534" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="12543" class="Bound">M</a>
|
||
<a id="12547" class="Symbol">...</a> <a id="12558" class="Symbol">|</a> <a id="12560" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12565" href="/20.07/PUC/2019/Assignment4/#12565" class="Bound">M—→M′</a> <a id="12591" class="Symbol">=</a> <a id="12594" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12599" class="Symbol">(</a><a id="12600" href="/20.07/PUC/2019/Assignment4/#8701" class="InductiveConstructor">ξ-*₂</a> <a id="12605" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="12611" href="/20.07/PUC/2019/Assignment4/#12565" class="Bound">M—→M′</a><a id="12616" class="Symbol">)</a>
|
||
<a id="12620" class="Symbol">...</a> <a id="12631" class="Symbol">|</a> <a id="12633" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="12638" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="12664" class="Symbol">=</a> <a id="12667" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12672" href="/20.07/PUC/2019/Assignment4/#8822" class="InductiveConstructor">δ-*</a>
|
||
<a id="12678" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="12687" class="Symbol">(</a><a id="12688" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="12693" href="/20.07/PUC/2019/Assignment4/#12693" class="Bound">M</a> <a id="12695" href="/20.07/PUC/2019/Assignment4/#12695" class="Bound">N</a><a id="12696" class="Symbol">)</a> <a id="12698" class="Keyword">with</a> <a id="12703" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="12712" href="/20.07/PUC/2019/Assignment4/#12693" class="Bound">M</a>
|
||
<a id="12716" class="Symbol">...</a> <a id="12723" class="Symbol">|</a> <a id="12725" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12730" href="/20.07/PUC/2019/Assignment4/#12730" class="Bound">M—→M′</a> <a id="12760" class="Symbol">=</a> <a id="12763" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12768" class="Symbol">(</a><a id="12769" href="/20.07/PUC/2019/Assignment4/#8947" class="InductiveConstructor">ξ-let</a> <a id="12775" href="/20.07/PUC/2019/Assignment4/#12730" class="Bound">M—→M′</a><a id="12780" class="Symbol">)</a>
|
||
<a id="12784" class="Symbol">...</a> <a id="12791" class="Symbol">|</a> <a id="12793" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="12798" href="/20.07/PUC/2019/Assignment4/#12798" class="Bound">VM</a> <a id="12828" class="Symbol">=</a> <a id="12831" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12836" class="Symbol">(</a><a id="12837" href="/20.07/PUC/2019/Assignment4/#9077" class="InductiveConstructor">β-let</a> <a id="12843" href="/20.07/PUC/2019/Assignment4/#12798" class="Bound">VM</a><a id="12845" class="Symbol">)</a>
|
||
<a id="12849" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="12858" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="12861" href="/20.07/PUC/2019/Assignment4/#12861" class="Bound">M</a> <a id="12863" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="12865" href="/20.07/PUC/2019/Assignment4/#12865" class="Bound">N</a> <a id="12867" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="12869" class="Keyword">with</a> <a id="12874" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="12883" href="/20.07/PUC/2019/Assignment4/#12861" class="Bound">M</a>
|
||
<a id="12887" class="Symbol">...</a> <a id="12894" class="Symbol">|</a> <a id="12896" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12901" href="/20.07/PUC/2019/Assignment4/#12901" class="Bound">M—→M′</a> <a id="12931" class="Symbol">=</a> <a id="12934" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="12939" class="Symbol">(</a><a id="12940" href="/20.07/PUC/2019/Assignment4/#9217" class="InductiveConstructor">ξ-⟨,⟩₁</a> <a id="12947" href="/20.07/PUC/2019/Assignment4/#12901" class="Bound">M—→M′</a><a id="12952" class="Symbol">)</a>
|
||
<a id="12956" class="Symbol">...</a> <a id="12963" class="Symbol">|</a> <a id="12965" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="12970" href="/20.07/PUC/2019/Assignment4/#12970" class="Bound">VM</a> <a id="12973" class="Keyword">with</a> <a id="12978" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="12987" class="Bound">N</a>
|
||
<a id="12991" class="Symbol">...</a> <a id="13002" class="Symbol">|</a> <a id="13004" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="13009" href="/20.07/PUC/2019/Assignment4/#13009" class="Bound">N—→N′</a> <a id="13035" class="Symbol">=</a> <a id="13038" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="13043" class="Symbol">(</a><a id="13044" href="/20.07/PUC/2019/Assignment4/#9352" class="InductiveConstructor">ξ-⟨,⟩₂</a> <a id="13051" class="Bound">VM</a> <a id="13054" href="/20.07/PUC/2019/Assignment4/#13009" class="Bound">N—→N′</a><a id="13059" class="Symbol">)</a>
|
||
<a id="13063" class="Symbol">...</a> <a id="13074" class="Symbol">|</a> <a id="13076" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="13081" href="/20.07/PUC/2019/Assignment4/#13081" class="Bound">VN</a> <a id="13107" class="Symbol">=</a> <a id="13110" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="13115" class="Symbol">(</a><a id="13116" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">V-⟨</a> <a id="13120" class="Bound">VM</a> <a id="13123" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">,</a> <a id="13125" href="/20.07/PUC/2019/Assignment4/#13081" class="Bound">VN</a> <a id="13128" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">⟩</a><a id="13129" class="Symbol">)</a>
|
||
<a id="13133" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="13142" class="Symbol">(</a><a id="13143" href="/20.07/PUC/2019/Assignment4/#3535" class="InductiveConstructor">`proj₁</a> <a id="13150" href="/20.07/PUC/2019/Assignment4/#13150" class="Bound">L</a><a id="13151" class="Symbol">)</a> <a id="13153" class="Keyword">with</a> <a id="13158" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="13167" href="/20.07/PUC/2019/Assignment4/#13150" class="Bound">L</a>
|
||
<a id="13171" class="Symbol">...</a> <a id="13178" class="Symbol">|</a> <a id="13180" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="13185" href="/20.07/PUC/2019/Assignment4/#13185" class="Bound">L—→L′</a> <a id="13215" class="Symbol">=</a> <a id="13218" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="13223" class="Symbol">(</a><a id="13224" href="/20.07/PUC/2019/Assignment4/#9503" class="InductiveConstructor">ξ-proj₁</a> <a id="13232" href="/20.07/PUC/2019/Assignment4/#13185" class="Bound">L—→L′</a><a id="13237" class="Symbol">)</a>
|
||
<a id="13241" class="Symbol">...</a> <a id="13248" class="Symbol">|</a> <a id="13250" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="13255" class="Symbol">(</a><a id="13256" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">V-⟨</a> <a id="13260" href="/20.07/PUC/2019/Assignment4/#13260" class="Bound">VM</a> <a id="13263" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">,</a> <a id="13265" href="/20.07/PUC/2019/Assignment4/#13265" class="Bound">VN</a> <a id="13268" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">⟩</a><a id="13269" class="Symbol">)</a> <a id="13285" class="Symbol">=</a> <a id="13288" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="13293" class="Symbol">(</a><a id="13294" href="/20.07/PUC/2019/Assignment4/#9745" class="InductiveConstructor">β-proj₁</a> <a id="13302" href="/20.07/PUC/2019/Assignment4/#13260" class="Bound">VM</a> <a id="13305" href="/20.07/PUC/2019/Assignment4/#13265" class="Bound">VN</a><a id="13307" class="Symbol">)</a>
|
||
<a id="13311" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="13320" class="Symbol">(</a><a id="13321" href="/20.07/PUC/2019/Assignment4/#3612" class="InductiveConstructor">`proj₂</a> <a id="13328" href="/20.07/PUC/2019/Assignment4/#13328" class="Bound">L</a><a id="13329" class="Symbol">)</a> <a id="13331" class="Keyword">with</a> <a id="13336" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="13345" href="/20.07/PUC/2019/Assignment4/#13328" class="Bound">L</a>
|
||
<a id="13349" class="Symbol">...</a> <a id="13356" class="Symbol">|</a> <a id="13358" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="13363" href="/20.07/PUC/2019/Assignment4/#13363" class="Bound">L—→L′</a> <a id="13393" class="Symbol">=</a> <a id="13396" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="13401" class="Symbol">(</a><a id="13402" href="/20.07/PUC/2019/Assignment4/#9624" class="InductiveConstructor">ξ-proj₂</a> <a id="13410" href="/20.07/PUC/2019/Assignment4/#13363" class="Bound">L—→L′</a><a id="13415" class="Symbol">)</a>
|
||
<a id="13419" class="Symbol">...</a> <a id="13426" class="Symbol">|</a> <a id="13428" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="13433" class="Symbol">(</a><a id="13434" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">V-⟨</a> <a id="13438" href="/20.07/PUC/2019/Assignment4/#13438" class="Bound">VM</a> <a id="13441" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">,</a> <a id="13443" href="/20.07/PUC/2019/Assignment4/#13443" class="Bound">VN</a> <a id="13446" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">⟩</a><a id="13447" class="Symbol">)</a> <a id="13463" class="Symbol">=</a> <a id="13466" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="13471" class="Symbol">(</a><a id="13472" href="/20.07/PUC/2019/Assignment4/#9888" class="InductiveConstructor">β-proj₂</a> <a id="13480" href="/20.07/PUC/2019/Assignment4/#13438" class="Bound">VM</a> <a id="13483" href="/20.07/PUC/2019/Assignment4/#13443" class="Bound">VN</a><a id="13485" class="Symbol">)</a>
|
||
<a id="13489" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="13498" class="Symbol">(</a><a id="13499" href="/20.07/PUC/2019/Assignment4/#3733" class="InductiveConstructor">case×</a> <a id="13505" href="/20.07/PUC/2019/Assignment4/#13505" class="Bound">L</a> <a id="13507" href="/20.07/PUC/2019/Assignment4/#13507" class="Bound">M</a><a id="13508" class="Symbol">)</a> <a id="13510" class="Keyword">with</a> <a id="13515" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="13524" href="/20.07/PUC/2019/Assignment4/#13505" class="Bound">L</a>
|
||
<a id="13528" class="Symbol">...</a> <a id="13535" class="Symbol">|</a> <a id="13537" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="13542" href="/20.07/PUC/2019/Assignment4/#13542" class="Bound">L—→L′</a> <a id="13572" class="Symbol">=</a> <a id="13575" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="13580" class="Symbol">(</a><a id="13581" href="/20.07/PUC/2019/Assignment4/#10075" class="InductiveConstructor">ξ-case×</a> <a id="13589" href="/20.07/PUC/2019/Assignment4/#13542" class="Bound">L—→L′</a><a id="13594" class="Symbol">)</a>
|
||
<a id="13598" class="Symbol">...</a> <a id="13605" class="Symbol">|</a> <a id="13607" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="13612" class="Symbol">(</a><a id="13613" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">V-⟨</a> <a id="13617" href="/20.07/PUC/2019/Assignment4/#13617" class="Bound">VM</a> <a id="13620" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">,</a> <a id="13622" href="/20.07/PUC/2019/Assignment4/#13622" class="Bound">VN</a> <a id="13625" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">⟩</a><a id="13626" class="Symbol">)</a> <a id="13642" class="Symbol">=</a> <a id="13645" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="13650" class="Symbol">(</a><a id="13651" href="/20.07/PUC/2019/Assignment4/#10222" class="InductiveConstructor">β-case×</a> <a id="13659" href="/20.07/PUC/2019/Assignment4/#13617" class="Bound">VM</a> <a id="13662" href="/20.07/PUC/2019/Assignment4/#13622" class="Bound">VN</a><a id="13664" class="Symbol">)</a>
|
||
</pre>
|
||
|
||
<h2 id="evaluation">Evaluation</h2>
|
||
|
||
<pre class="Agda"> <a id="13693" class="Keyword">data</a> <a id="More.Gas"></a><a id="13698" href="/20.07/PUC/2019/Assignment4/#13698" class="Datatype">Gas</a> <a id="13702" class="Symbol">:</a> <a id="13704" class="PrimitiveType">Set</a> <a id="13708" class="Keyword">where</a>
|
||
<a id="More.Gas.gas"></a><a id="13718" href="/20.07/PUC/2019/Assignment4/#13718" class="InductiveConstructor">gas</a> <a id="13722" class="Symbol">:</a> <a id="13724" href="Agda.Builtin.Nat.html#165" class="Datatype">ℕ</a> <a id="13726" class="Symbol">→</a> <a id="13728" href="/20.07/PUC/2019/Assignment4/#13698" class="Datatype">Gas</a>
|
||
|
||
<a id="13735" class="Keyword">data</a> <a id="More.Finished"></a><a id="13740" href="/20.07/PUC/2019/Assignment4/#13740" class="Datatype">Finished</a> <a id="13749" class="Symbol">{</a><a id="13750" href="/20.07/PUC/2019/Assignment4/#13750" class="Bound">Γ</a> <a id="13752" href="/20.07/PUC/2019/Assignment4/#13752" class="Bound">A</a><a id="13753" class="Symbol">}</a> <a id="13755" class="Symbol">(</a><a id="13756" href="/20.07/PUC/2019/Assignment4/#13756" class="Bound">N</a> <a id="13758" class="Symbol">:</a> <a id="13760" href="/20.07/PUC/2019/Assignment4/#13750" class="Bound">Γ</a> <a id="13762" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="13764" href="/20.07/PUC/2019/Assignment4/#13752" class="Bound">A</a><a id="13765" class="Symbol">)</a> <a id="13767" class="Symbol">:</a> <a id="13769" class="PrimitiveType">Set</a> <a id="13773" class="Keyword">where</a>
|
||
|
||
<a id="More.Finished.done"></a><a id="13785" href="/20.07/PUC/2019/Assignment4/#13785" class="InductiveConstructor">done</a> <a id="13790" class="Symbol">:</a>
|
||
<a id="13801" href="/20.07/PUC/2019/Assignment4/#6778" class="Datatype">Value</a> <a id="13807" href="/20.07/PUC/2019/Assignment4/#13756" class="Bound">N</a>
|
||
<a id="13818" class="Comment">----------</a>
|
||
<a id="13836" class="Symbol">→</a> <a id="13838" href="/20.07/PUC/2019/Assignment4/#13740" class="Datatype">Finished</a> <a id="13847" href="/20.07/PUC/2019/Assignment4/#13756" class="Bound">N</a>
|
||
|
||
<a id="More.Finished.out-of-gas"></a><a id="13855" href="/20.07/PUC/2019/Assignment4/#13855" class="InductiveConstructor">out-of-gas</a> <a id="13866" class="Symbol">:</a>
|
||
<a id="13877" class="Comment">----------</a>
|
||
<a id="13897" href="/20.07/PUC/2019/Assignment4/#13740" class="Datatype">Finished</a> <a id="13906" href="/20.07/PUC/2019/Assignment4/#13756" class="Bound">N</a>
|
||
|
||
<a id="13911" class="Keyword">data</a> <a id="More.Steps"></a><a id="13916" href="/20.07/PUC/2019/Assignment4/#13916" class="Datatype">Steps</a> <a id="13922" class="Symbol">:</a> <a id="13924" class="Symbol">∀</a> <a id="13926" class="Symbol">{</a><a id="13927" href="/20.07/PUC/2019/Assignment4/#13927" class="Bound">A</a><a id="13928" class="Symbol">}</a> <a id="13930" class="Symbol">→</a> <a id="13932" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a> <a id="13934" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="13936" href="/20.07/PUC/2019/Assignment4/#13927" class="Bound">A</a> <a id="13938" class="Symbol">→</a> <a id="13940" class="PrimitiveType">Set</a> <a id="13944" class="Keyword">where</a>
|
||
|
||
<a id="More.Steps.steps"></a><a id="13955" href="/20.07/PUC/2019/Assignment4/#13955" class="InductiveConstructor">steps</a> <a id="13961" class="Symbol">:</a> <a id="13963" class="Symbol">∀</a> <a id="13965" class="Symbol">{</a><a id="13966" href="/20.07/PUC/2019/Assignment4/#13966" class="Bound">A</a><a id="13967" class="Symbol">}</a> <a id="13969" class="Symbol">{</a><a id="13970" href="/20.07/PUC/2019/Assignment4/#13970" class="Bound">L</a> <a id="13972" href="/20.07/PUC/2019/Assignment4/#13972" class="Bound">N</a> <a id="13974" class="Symbol">:</a> <a id="13976" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a> <a id="13978" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="13980" href="/20.07/PUC/2019/Assignment4/#13966" class="Bound">A</a><a id="13981" class="Symbol">}</a>
|
||
<a id="13989" class="Symbol">→</a> <a id="13991" href="/20.07/PUC/2019/Assignment4/#13970" class="Bound">L</a> <a id="13993" href="/20.07/PUC/2019/Assignment4/#10527" class="Datatype Operator">—↠</a> <a id="13996" href="/20.07/PUC/2019/Assignment4/#13972" class="Bound">N</a>
|
||
<a id="14004" class="Symbol">→</a> <a id="14006" href="/20.07/PUC/2019/Assignment4/#13740" class="Datatype">Finished</a> <a id="14015" href="/20.07/PUC/2019/Assignment4/#13972" class="Bound">N</a>
|
||
<a id="14025" class="Comment">----------</a>
|
||
<a id="14042" class="Symbol">→</a> <a id="14044" href="/20.07/PUC/2019/Assignment4/#13916" class="Datatype">Steps</a> <a id="14050" href="/20.07/PUC/2019/Assignment4/#13970" class="Bound">L</a>
|
||
|
||
<a id="More.eval"></a><a id="14055" href="/20.07/PUC/2019/Assignment4/#14055" class="Function">eval</a> <a id="14060" class="Symbol">:</a> <a id="14062" class="Symbol">∀</a> <a id="14064" class="Symbol">{</a><a id="14065" href="/20.07/PUC/2019/Assignment4/#14065" class="Bound">A</a><a id="14066" class="Symbol">}</a>
|
||
<a id="14072" class="Symbol">→</a> <a id="14074" href="/20.07/PUC/2019/Assignment4/#13698" class="Datatype">Gas</a>
|
||
<a id="14082" class="Symbol">→</a> <a id="14084" class="Symbol">(</a><a id="14085" href="/20.07/PUC/2019/Assignment4/#14085" class="Bound">L</a> <a id="14087" class="Symbol">:</a> <a id="14089" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a> <a id="14091" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="14093" href="/20.07/PUC/2019/Assignment4/#14065" class="Bound">A</a><a id="14094" class="Symbol">)</a>
|
||
<a id="14102" class="Comment">-----------</a>
|
||
<a id="14118" class="Symbol">→</a> <a id="14120" href="/20.07/PUC/2019/Assignment4/#13916" class="Datatype">Steps</a> <a id="14126" href="/20.07/PUC/2019/Assignment4/#14085" class="Bound">L</a>
|
||
<a id="14130" href="/20.07/PUC/2019/Assignment4/#14055" class="Function">eval</a> <a id="14135" class="Symbol">(</a><a id="14136" href="/20.07/PUC/2019/Assignment4/#13718" class="InductiveConstructor">gas</a> <a id="14140" href="Agda.Builtin.Nat.html#183" class="InductiveConstructor">zero</a><a id="14144" class="Symbol">)</a> <a id="14149" href="/20.07/PUC/2019/Assignment4/#14149" class="Bound">L</a> <a id="14171" class="Symbol">=</a> <a id="14174" href="/20.07/PUC/2019/Assignment4/#13955" class="InductiveConstructor">steps</a> <a id="14180" class="Symbol">(</a><a id="14181" href="/20.07/PUC/2019/Assignment4/#14149" class="Bound">L</a> <a id="14183" href="/20.07/PUC/2019/Assignment4/#10579" class="InductiveConstructor Operator">∎</a><a id="14184" class="Symbol">)</a> <a id="14186" href="/20.07/PUC/2019/Assignment4/#13855" class="InductiveConstructor">out-of-gas</a>
|
||
<a id="14199" href="/20.07/PUC/2019/Assignment4/#14055" class="Function">eval</a> <a id="14204" class="Symbol">(</a><a id="14205" href="/20.07/PUC/2019/Assignment4/#13718" class="InductiveConstructor">gas</a> <a id="14209" class="Symbol">(</a><a id="14210" href="Agda.Builtin.Nat.html#196" class="InductiveConstructor">suc</a> <a id="14214" href="/20.07/PUC/2019/Assignment4/#14214" class="Bound">m</a><a id="14215" class="Symbol">))</a> <a id="14218" href="/20.07/PUC/2019/Assignment4/#14218" class="Bound">L</a> <a id="14220" class="Keyword">with</a> <a id="14225" href="/20.07/PUC/2019/Assignment4/#11403" class="Function">progress</a> <a id="14234" href="/20.07/PUC/2019/Assignment4/#14218" class="Bound">L</a>
|
||
<a id="14238" class="Symbol">...</a> <a id="14242" class="Symbol">|</a> <a id="14244" href="/20.07/PUC/2019/Assignment4/#11339" class="InductiveConstructor">done</a> <a id="14249" href="/20.07/PUC/2019/Assignment4/#14249" class="Bound">VL</a> <a id="14279" class="Symbol">=</a> <a id="14282" href="/20.07/PUC/2019/Assignment4/#13955" class="InductiveConstructor">steps</a> <a id="14288" class="Symbol">(</a><a id="14289" class="Bound">L</a> <a id="14291" href="/20.07/PUC/2019/Assignment4/#10579" class="InductiveConstructor Operator">∎</a><a id="14292" class="Symbol">)</a> <a id="14294" class="Symbol">(</a><a id="14295" href="/20.07/PUC/2019/Assignment4/#13785" class="InductiveConstructor">done</a> <a id="14300" href="/20.07/PUC/2019/Assignment4/#14249" class="Bound">VL</a><a id="14302" class="Symbol">)</a>
|
||
<a id="14306" class="Symbol">...</a> <a id="14310" class="Symbol">|</a> <a id="14312" href="/20.07/PUC/2019/Assignment4/#11260" class="InductiveConstructor">step</a> <a id="14317" class="Symbol">{</a><a id="14318" href="/20.07/PUC/2019/Assignment4/#14318" class="Bound">M</a><a id="14319" class="Symbol">}</a> <a id="14321" href="/20.07/PUC/2019/Assignment4/#14321" class="Bound">L—→M</a> <a id="14326" class="Keyword">with</a> <a id="14331" href="/20.07/PUC/2019/Assignment4/#14055" class="Function">eval</a> <a id="14336" class="Symbol">(</a><a id="14337" href="/20.07/PUC/2019/Assignment4/#13718" class="InductiveConstructor">gas</a> <a id="14341" class="Bound">m</a><a id="14342" class="Symbol">)</a> <a id="14344" href="/20.07/PUC/2019/Assignment4/#14318" class="Bound">M</a>
|
||
<a id="14348" class="Symbol">...</a> <a id="14355" class="Symbol">|</a> <a id="14357" href="/20.07/PUC/2019/Assignment4/#13955" class="InductiveConstructor">steps</a> <a id="14363" href="/20.07/PUC/2019/Assignment4/#14363" class="Bound">M—↠N</a> <a id="14368" href="/20.07/PUC/2019/Assignment4/#14368" class="Bound">fin</a> <a id="14389" class="Symbol">=</a> <a id="14392" href="/20.07/PUC/2019/Assignment4/#13955" class="InductiveConstructor">steps</a> <a id="14398" class="Symbol">(</a><a id="14399" class="Bound">L</a> <a id="14401" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="14405" class="Bound">L—→M</a> <a id="14410" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a> <a id="14412" href="/20.07/PUC/2019/Assignment4/#14363" class="Bound">M—↠N</a><a id="14416" class="Symbol">)</a> <a id="14418" href="/20.07/PUC/2019/Assignment4/#14368" class="Bound">fin</a>
|
||
</pre>
|
||
<h2 id="examples">Examples</h2>
|
||
|
||
<pre class="Agda"> <a id="More.cube"></a><a id="14446" href="/20.07/PUC/2019/Assignment4/#14446" class="Function">cube</a> <a id="14451" class="Symbol">:</a> <a id="14453" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a> <a id="14455" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="14457" href="/20.07/PUC/2019/Assignment4/#2056" class="InductiveConstructor">Nat</a> <a id="14461" href="/20.07/PUC/2019/Assignment4/#2025" class="InductiveConstructor Operator">⇒</a> <a id="14463" href="/20.07/PUC/2019/Assignment4/#2056" class="InductiveConstructor">Nat</a>
|
||
<a id="14469" href="/20.07/PUC/2019/Assignment4/#14446" class="Function">cube</a> <a id="14474" class="Symbol">=</a> <a id="14476" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ</a> <a id="14478" class="Symbol">(</a><a id="14479" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14481" class="Number">0</a> <a id="14483" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="14486" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14488" class="Number">0</a> <a id="14490" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="14493" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14495" class="Number">0</a><a id="14496" class="Symbol">)</a>
|
||
|
||
<a id="14501" href="/20.07/PUC/2019/Assignment4/#14501" class="Function">_</a> <a id="14503" class="Symbol">:</a> <a id="14505" href="/20.07/PUC/2019/Assignment4/#14446" class="Function">cube</a> <a id="14510" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="14512" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14516" class="Number">2</a> <a id="14518" href="/20.07/PUC/2019/Assignment4/#10527" class="Datatype Operator">—↠</a> <a id="14521" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14525" class="Number">8</a>
|
||
<a id="14529" class="Symbol">_</a> <a id="14531" class="Symbol">=</a>
|
||
<a id="14537" href="/20.07/PUC/2019/Assignment4/#10748" class="Function Operator">begin</a>
|
||
<a id="14549" href="/20.07/PUC/2019/Assignment4/#14446" class="Function">cube</a> <a id="14554" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="14556" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14560" class="Number">2</a>
|
||
<a id="14566" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="14570" href="/20.07/PUC/2019/Assignment4/#7813" class="InductiveConstructor">β-ƛ</a> <a id="14574" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="14580" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="14588" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14592" class="Number">2</a> <a id="14594" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="14597" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14601" class="Number">2</a> <a id="14603" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="14606" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14610" class="Number">2</a>
|
||
<a id="14616" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="14620" href="/20.07/PUC/2019/Assignment4/#8596" class="InductiveConstructor">ξ-*₁</a> <a id="14625" href="/20.07/PUC/2019/Assignment4/#8822" class="InductiveConstructor">δ-*</a> <a id="14629" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="14637" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14641" class="Number">4</a> <a id="14643" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="14646" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14650" class="Number">2</a>
|
||
<a id="14656" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="14660" href="/20.07/PUC/2019/Assignment4/#8822" class="InductiveConstructor">δ-*</a> <a id="14664" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="14672" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14676" class="Number">8</a>
|
||
<a id="14682" href="/20.07/PUC/2019/Assignment4/#10579" class="InductiveConstructor Operator">∎</a>
|
||
|
||
<a id="More.exp10"></a><a id="14687" href="/20.07/PUC/2019/Assignment4/#14687" class="Function">exp10</a> <a id="14693" class="Symbol">:</a> <a id="14695" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a> <a id="14697" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="14699" href="/20.07/PUC/2019/Assignment4/#2056" class="InductiveConstructor">Nat</a> <a id="14703" href="/20.07/PUC/2019/Assignment4/#2025" class="InductiveConstructor Operator">⇒</a> <a id="14705" href="/20.07/PUC/2019/Assignment4/#2056" class="InductiveConstructor">Nat</a>
|
||
<a id="14711" href="/20.07/PUC/2019/Assignment4/#14687" class="Function">exp10</a> <a id="14717" class="Symbol">=</a> <a id="14719" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ</a> <a id="14721" class="Symbol">(</a><a id="14722" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="14727" class="Symbol">(</a><a id="14728" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14730" class="Number">0</a> <a id="14732" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="14735" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14737" class="Number">0</a><a id="14738" class="Symbol">)</a>
|
||
<a id="14754" class="Symbol">(</a><a id="14755" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="14760" class="Symbol">(</a><a id="14761" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14763" class="Number">0</a> <a id="14765" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="14768" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14770" class="Number">0</a><a id="14771" class="Symbol">)</a>
|
||
<a id="14789" class="Symbol">(</a><a id="14790" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="14795" class="Symbol">(</a><a id="14796" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14798" class="Number">0</a> <a id="14800" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="14803" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14805" class="Number">2</a><a id="14806" class="Symbol">)</a>
|
||
<a id="14826" class="Symbol">(</a><a id="14827" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14829" class="Number">0</a> <a id="14831" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="14834" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14836" class="Number">0</a><a id="14837" class="Symbol">))))</a>
|
||
|
||
<a id="14845" href="/20.07/PUC/2019/Assignment4/#14845" class="Function">_</a> <a id="14847" class="Symbol">:</a> <a id="14849" href="/20.07/PUC/2019/Assignment4/#14687" class="Function">exp10</a> <a id="14855" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="14857" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14861" class="Number">2</a> <a id="14863" href="/20.07/PUC/2019/Assignment4/#10527" class="Datatype Operator">—↠</a> <a id="14866" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14870" class="Number">1024</a>
|
||
<a id="14877" class="Symbol">_</a> <a id="14879" class="Symbol">=</a>
|
||
<a id="14885" href="/20.07/PUC/2019/Assignment4/#10748" class="Function Operator">begin</a>
|
||
<a id="14897" href="/20.07/PUC/2019/Assignment4/#14687" class="Function">exp10</a> <a id="14903" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="14905" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14909" class="Number">2</a>
|
||
<a id="14915" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="14919" href="/20.07/PUC/2019/Assignment4/#7813" class="InductiveConstructor">β-ƛ</a> <a id="14923" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="14929" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="14937" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="14942" class="Symbol">(</a><a id="14943" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14947" class="Number">2</a> <a id="14949" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="14952" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14956" class="Number">2</a><a id="14957" class="Symbol">)</a> <a id="14959" class="Symbol">(</a><a id="14960" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="14965" class="Symbol">(</a><a id="14966" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14968" class="Number">0</a> <a id="14970" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="14973" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14975" class="Number">0</a><a id="14976" class="Symbol">)</a> <a id="14978" class="Symbol">(</a><a id="14979" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="14984" class="Symbol">(</a><a id="14985" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="14987" class="Number">0</a> <a id="14989" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="14992" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="14996" class="Number">2</a><a id="14997" class="Symbol">)</a> <a id="14999" class="Symbol">(</a><a id="15000" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15002" class="Number">0</a> <a id="15004" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15007" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15009" class="Number">0</a><a id="15010" class="Symbol">)))</a>
|
||
<a id="15018" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="15022" href="/20.07/PUC/2019/Assignment4/#8947" class="InductiveConstructor">ξ-let</a> <a id="15028" href="/20.07/PUC/2019/Assignment4/#8822" class="InductiveConstructor">δ-*</a> <a id="15032" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15040" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="15045" class="Symbol">(</a><a id="15046" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15050" class="Number">4</a><a id="15051" class="Symbol">)</a> <a id="15053" class="Symbol">(</a><a id="15054" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="15059" class="Symbol">(</a><a id="15060" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15062" class="Number">0</a> <a id="15064" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15067" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15069" class="Number">0</a><a id="15070" class="Symbol">)</a> <a id="15072" class="Symbol">(</a><a id="15073" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="15078" class="Symbol">(</a><a id="15079" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15081" class="Number">0</a> <a id="15083" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15086" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15090" class="Number">2</a><a id="15091" class="Symbol">)</a> <a id="15093" class="Symbol">(</a><a id="15094" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15096" class="Number">0</a> <a id="15098" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15101" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15103" class="Number">0</a><a id="15104" class="Symbol">)))</a>
|
||
<a id="15112" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="15116" href="/20.07/PUC/2019/Assignment4/#9077" class="InductiveConstructor">β-let</a> <a id="15122" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="15128" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15136" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="15141" class="Symbol">(</a><a id="15142" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15146" class="Number">4</a> <a id="15148" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15151" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15155" class="Number">4</a><a id="15156" class="Symbol">)</a> <a id="15158" class="Symbol">(</a><a id="15159" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="15164" class="Symbol">(</a><a id="15165" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15167" class="Number">0</a> <a id="15169" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15172" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15176" class="Number">2</a><a id="15177" class="Symbol">)</a> <a id="15179" class="Symbol">(</a><a id="15180" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15182" class="Number">0</a> <a id="15184" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15187" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15189" class="Number">0</a><a id="15190" class="Symbol">))</a>
|
||
<a id="15197" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="15201" href="/20.07/PUC/2019/Assignment4/#8947" class="InductiveConstructor">ξ-let</a> <a id="15207" href="/20.07/PUC/2019/Assignment4/#8822" class="InductiveConstructor">δ-*</a> <a id="15211" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15219" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="15224" class="Symbol">(</a><a id="15225" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15229" class="Number">16</a><a id="15231" class="Symbol">)</a> <a id="15233" class="Symbol">(</a><a id="15234" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="15239" class="Symbol">(</a><a id="15240" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15242" class="Number">0</a> <a id="15244" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15247" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15251" class="Number">2</a><a id="15252" class="Symbol">)</a> <a id="15254" class="Symbol">(</a><a id="15255" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15257" class="Number">0</a> <a id="15259" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15262" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15264" class="Number">0</a><a id="15265" class="Symbol">))</a>
|
||
<a id="15272" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="15276" href="/20.07/PUC/2019/Assignment4/#9077" class="InductiveConstructor">β-let</a> <a id="15282" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="15288" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15296" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="15301" class="Symbol">(</a><a id="15302" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15306" class="Number">16</a> <a id="15309" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15312" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15316" class="Number">2</a><a id="15317" class="Symbol">)</a> <a id="15319" class="Symbol">(</a><a id="15320" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15322" class="Number">0</a> <a id="15324" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15327" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15329" class="Number">0</a><a id="15330" class="Symbol">)</a>
|
||
<a id="15336" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="15340" href="/20.07/PUC/2019/Assignment4/#8947" class="InductiveConstructor">ξ-let</a> <a id="15346" href="/20.07/PUC/2019/Assignment4/#8822" class="InductiveConstructor">δ-*</a> <a id="15350" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15358" href="/20.07/PUC/2019/Assignment4/#3340" class="InductiveConstructor">`let</a> <a id="15363" class="Symbol">(</a><a id="15364" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15368" class="Number">32</a><a id="15370" class="Symbol">)</a> <a id="15372" class="Symbol">(</a><a id="15373" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15375" class="Number">0</a> <a id="15377" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15380" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15382" class="Number">0</a><a id="15383" class="Symbol">)</a>
|
||
<a id="15389" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="15393" href="/20.07/PUC/2019/Assignment4/#9077" class="InductiveConstructor">β-let</a> <a id="15399" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="15405" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15413" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15417" class="Number">32</a> <a id="15420" href="/20.07/PUC/2019/Assignment4/#3246" class="InductiveConstructor Operator">`*</a> <a id="15423" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15427" class="Number">32</a>
|
||
<a id="15434" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="15438" href="/20.07/PUC/2019/Assignment4/#8822" class="InductiveConstructor">δ-*</a> <a id="15442" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15450" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15454" class="Number">1024</a>
|
||
<a id="15463" href="/20.07/PUC/2019/Assignment4/#10579" class="InductiveConstructor Operator">∎</a>
|
||
|
||
<a id="More.swap×"></a><a id="15468" href="/20.07/PUC/2019/Assignment4/#15468" class="Function">swap×</a> <a id="15474" class="Symbol">:</a> <a id="15476" class="Symbol">∀</a> <a id="15478" class="Symbol">{</a><a id="15479" href="/20.07/PUC/2019/Assignment4/#15479" class="Bound">A</a> <a id="15481" href="/20.07/PUC/2019/Assignment4/#15481" class="Bound">B</a><a id="15482" class="Symbol">}</a> <a id="15484" class="Symbol">→</a> <a id="15486" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a> <a id="15488" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="15490" href="/20.07/PUC/2019/Assignment4/#15479" class="Bound">A</a> <a id="15492" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">`×</a> <a id="15495" href="/20.07/PUC/2019/Assignment4/#15481" class="Bound">B</a> <a id="15497" href="/20.07/PUC/2019/Assignment4/#2025" class="InductiveConstructor Operator">⇒</a> <a id="15499" href="/20.07/PUC/2019/Assignment4/#15481" class="Bound">B</a> <a id="15501" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">`×</a> <a id="15504" href="/20.07/PUC/2019/Assignment4/#15479" class="Bound">A</a>
|
||
<a id="15508" href="/20.07/PUC/2019/Assignment4/#15468" class="Function">swap×</a> <a id="15514" class="Symbol">=</a> <a id="15516" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ</a> <a id="15518" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="15521" href="/20.07/PUC/2019/Assignment4/#3612" class="InductiveConstructor">`proj₂</a> <a id="15528" class="Symbol">(</a><a id="15529" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15531" class="Number">0</a><a id="15532" class="Symbol">)</a> <a id="15534" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="15536" href="/20.07/PUC/2019/Assignment4/#3535" class="InductiveConstructor">`proj₁</a> <a id="15543" class="Symbol">(</a><a id="15544" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15546" class="Number">0</a><a id="15547" class="Symbol">)</a> <a id="15549" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
|
||
<a id="15554" href="/20.07/PUC/2019/Assignment4/#15554" class="Function">_</a> <a id="15556" class="Symbol">:</a> <a id="15558" href="/20.07/PUC/2019/Assignment4/#15468" class="Function">swap×</a> <a id="15564" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="15566" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="15569" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15573" class="Number">42</a> <a id="15576" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="15578" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="15584" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="15586" href="/20.07/PUC/2019/Assignment4/#10527" class="Datatype Operator">—↠</a> <a id="15589" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="15592" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="15598" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="15600" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15604" class="Number">42</a> <a id="15607" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15611" class="Symbol">_</a> <a id="15613" class="Symbol">=</a>
|
||
<a id="15619" href="/20.07/PUC/2019/Assignment4/#10748" class="Function Operator">begin</a>
|
||
<a id="15631" href="/20.07/PUC/2019/Assignment4/#15468" class="Function">swap×</a> <a id="15637" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="15639" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="15642" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15646" class="Number">42</a> <a id="15649" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="15651" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="15657" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15663" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="15667" href="/20.07/PUC/2019/Assignment4/#7813" class="InductiveConstructor">β-ƛ</a> <a id="15671" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">V-⟨</a> <a id="15675" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="15681" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">,</a> <a id="15683" href="/20.07/PUC/2019/Assignment4/#6947" class="InductiveConstructor">V-zero</a> <a id="15690" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">⟩</a> <a id="15692" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15700" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="15703" href="/20.07/PUC/2019/Assignment4/#3612" class="InductiveConstructor">`proj₂</a> <a id="15710" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="15713" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15717" class="Number">42</a> <a id="15720" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="15722" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="15728" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="15730" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="15732" href="/20.07/PUC/2019/Assignment4/#3535" class="InductiveConstructor">`proj₁</a> <a id="15739" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="15742" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15746" class="Number">42</a> <a id="15749" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="15751" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="15757" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="15759" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15765" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="15769" href="/20.07/PUC/2019/Assignment4/#9217" class="InductiveConstructor">ξ-⟨,⟩₁</a> <a id="15776" class="Symbol">(</a><a id="15777" href="/20.07/PUC/2019/Assignment4/#9888" class="InductiveConstructor">β-proj₂</a> <a id="15785" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="15791" href="/20.07/PUC/2019/Assignment4/#6947" class="InductiveConstructor">V-zero</a><a id="15797" class="Symbol">)</a> <a id="15799" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15807" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="15810" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="15816" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="15818" href="/20.07/PUC/2019/Assignment4/#3535" class="InductiveConstructor">`proj₁</a> <a id="15825" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="15828" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15832" class="Number">42</a> <a id="15835" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="15837" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="15843" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="15845" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15851" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="15855" href="/20.07/PUC/2019/Assignment4/#9352" class="InductiveConstructor">ξ-⟨,⟩₂</a> <a id="15862" href="/20.07/PUC/2019/Assignment4/#6947" class="InductiveConstructor">V-zero</a> <a id="15869" class="Symbol">(</a><a id="15870" href="/20.07/PUC/2019/Assignment4/#9745" class="InductiveConstructor">β-proj₁</a> <a id="15878" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="15884" href="/20.07/PUC/2019/Assignment4/#6947" class="InductiveConstructor">V-zero</a><a id="15890" class="Symbol">)</a> <a id="15892" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15900" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="15903" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="15909" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="15911" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="15915" class="Number">42</a> <a id="15918" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="15924" href="/20.07/PUC/2019/Assignment4/#10579" class="InductiveConstructor Operator">∎</a>
|
||
|
||
<a id="More.swap×-case"></a><a id="15929" href="/20.07/PUC/2019/Assignment4/#15929" class="Function">swap×-case</a> <a id="15940" class="Symbol">:</a> <a id="15942" class="Symbol">∀</a> <a id="15944" class="Symbol">{</a><a id="15945" href="/20.07/PUC/2019/Assignment4/#15945" class="Bound">A</a> <a id="15947" href="/20.07/PUC/2019/Assignment4/#15947" class="Bound">B</a><a id="15948" class="Symbol">}</a> <a id="15950" class="Symbol">→</a> <a id="15952" href="/20.07/PUC/2019/Assignment4/#2243" class="InductiveConstructor">∅</a> <a id="15954" href="/20.07/PUC/2019/Assignment4/#2554" class="Datatype Operator">⊢</a> <a id="15956" href="/20.07/PUC/2019/Assignment4/#15945" class="Bound">A</a> <a id="15958" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">`×</a> <a id="15961" href="/20.07/PUC/2019/Assignment4/#15947" class="Bound">B</a> <a id="15963" href="/20.07/PUC/2019/Assignment4/#2025" class="InductiveConstructor Operator">⇒</a> <a id="15965" href="/20.07/PUC/2019/Assignment4/#15947" class="Bound">B</a> <a id="15967" href="/20.07/PUC/2019/Assignment4/#2073" class="InductiveConstructor Operator">`×</a> <a id="15970" href="/20.07/PUC/2019/Assignment4/#15945" class="Bound">A</a>
|
||
<a id="15974" href="/20.07/PUC/2019/Assignment4/#15929" class="Function">swap×-case</a> <a id="15985" class="Symbol">=</a> <a id="15987" href="/20.07/PUC/2019/Assignment4/#2688" class="InductiveConstructor Operator">ƛ</a> <a id="15989" href="/20.07/PUC/2019/Assignment4/#3733" class="InductiveConstructor">case×</a> <a id="15995" class="Symbol">(</a><a id="15996" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="15998" class="Number">0</a><a id="15999" class="Symbol">)</a> <a id="16001" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="16004" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="16006" class="Number">0</a> <a id="16008" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="16010" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="16012" class="Number">1</a> <a id="16014" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
|
||
<a id="16019" href="/20.07/PUC/2019/Assignment4/#16019" class="Function">_</a> <a id="16021" class="Symbol">:</a> <a id="16023" href="/20.07/PUC/2019/Assignment4/#15929" class="Function">swap×-case</a> <a id="16034" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="16036" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="16039" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="16043" class="Number">42</a> <a id="16046" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="16048" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="16054" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="16056" href="/20.07/PUC/2019/Assignment4/#10527" class="Datatype Operator">—↠</a> <a id="16059" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="16062" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="16068" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="16070" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="16074" class="Number">42</a> <a id="16077" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="16081" class="Symbol">_</a> <a id="16083" class="Symbol">=</a>
|
||
<a id="16089" href="/20.07/PUC/2019/Assignment4/#10748" class="Function Operator">begin</a>
|
||
<a id="16102" href="/20.07/PUC/2019/Assignment4/#15929" class="Function">swap×-case</a> <a id="16113" href="/20.07/PUC/2019/Assignment4/#2764" class="InductiveConstructor Operator">·</a> <a id="16115" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="16118" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="16122" class="Number">42</a> <a id="16125" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="16127" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="16133" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="16140" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="16144" href="/20.07/PUC/2019/Assignment4/#7813" class="InductiveConstructor">β-ƛ</a> <a id="16148" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">V-⟨</a> <a id="16152" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="16158" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">,</a> <a id="16160" href="/20.07/PUC/2019/Assignment4/#6947" class="InductiveConstructor">V-zero</a> <a id="16167" href="/20.07/PUC/2019/Assignment4/#7233" class="InductiveConstructor Operator">⟩</a> <a id="16169" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="16178" href="/20.07/PUC/2019/Assignment4/#3733" class="InductiveConstructor">case×</a> <a id="16184" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="16187" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="16191" class="Number">42</a> <a id="16194" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="16196" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="16202" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a> <a id="16204" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="16207" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="16209" class="Number">0</a> <a id="16211" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="16213" href="/20.07/PUC/2019/Assignment4/#4258" class="Function Operator">#</a> <a id="16215" class="Number">1</a> <a id="16217" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="16224" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">—→⟨</a> <a id="16228" href="/20.07/PUC/2019/Assignment4/#10222" class="InductiveConstructor">β-case×</a> <a id="16236" href="/20.07/PUC/2019/Assignment4/#7135" class="InductiveConstructor">V-con</a> <a id="16242" href="/20.07/PUC/2019/Assignment4/#6947" class="InductiveConstructor">V-zero</a> <a id="16249" href="/20.07/PUC/2019/Assignment4/#10641" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="16258" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">`⟨</a> <a id="16261" href="/20.07/PUC/2019/Assignment4/#2866" class="InductiveConstructor">`zero</a> <a id="16267" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">,</a> <a id="16269" href="/20.07/PUC/2019/Assignment4/#3187" class="InductiveConstructor">con</a> <a id="16273" class="Number">42</a> <a id="16276" href="/20.07/PUC/2019/Assignment4/#3444" class="InductiveConstructor Operator">⟩</a>
|
||
<a id="16283" href="/20.07/PUC/2019/Assignment4/#10579" class="InductiveConstructor Operator">∎</a>
|
||
</pre>
|
||
|
||
<h4 id="exercise-more-recommended-in-part">Exercise <code class="language-plaintext highlighter-rouge">More</code> (recommended in part)</h4>
|
||
|
||
<p>Formalise the remaining constructs defined in this chapter.
|
||
Evaluate each example, applied to data as needed,
|
||
to confirm it returns the expected answer.</p>
|
||
|
||
<ul>
|
||
<li>sums (recommended)</li>
|
||
<li>unit type</li>
|
||
<li>an alternative formulation of unit type</li>
|
||
<li>empty type (recommended)</li>
|
||
<li>lists</li>
|
||
</ul>
|
||
|
||
</div>
|
||
|
||
<p style="text-align:center;">
|
||
|
||
|
||
|
||
<a alt="Source code" href="https://github.com/plfa/plfa.github.io/blob/dev-20.07/courses/puc/2019/Assignment4.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>
|