<?xml version="1.0" encoding="utf-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: EPIG, a journey in Quotation</title>
	<atom:link href="http://www.e-pig.org/epilogue/?feed=rss2&#038;p=504" rel="self" type="application/rss+xml" />
	<link>http://www.e-pig.org/epilogue/?p=504</link>
	<description>for Epigram</description>
	<lastBuildDate>Sun,  6 Nov 2011 09:25:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Dan Doel</title>
		<link>http://www.e-pig.org/epilogue/?p=504&#038;cpage=1#comment-71001</link>
		<dc:creator>Dan Doel</dc:creator>
		<pubDate>Tue, 18 May 2010 11:06:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.e-pig.org/epilogue/?p=504#comment-71001</guid>
		<description>It occurred to me somewhat later that one can write two different identities with the usual eliminator for naturals:

elim_Nat Z (\n r -&gt; S n)
elim_Nat Z (\n r -&gt; S r)

So doing either expansion is going to leave something out, and can&#039;t work, I suppose. Perhaps there is hope for reduction, though. As I recall, the issue with eta reduction is that it breaks confluence and uniqueness of normal forms. However, if you&#039;re already at beta-normal forms before doing any quotation, it presumably doesn&#039;t matter whether some non-normal term has both beta and eta redices that lead to irreconcilable terms; only beta can happen at that point.

That of course says nothing about whether detecting identity eliminations is feasible.</description>
		<content:encoded><![CDATA[<p>It occurred to me somewhat later that one can write two different identities with the usual eliminator for naturals:</p>
<p>elim_Nat Z (\n r -&gt; S n)<br />
elim_Nat Z (\n r -&gt; S r)</p>
<p>So doing either expansion is going to leave something out, and can&#8217;t work, I suppose. Perhaps there is hope for reduction, though. As I recall, the issue with eta reduction is that it breaks confluence and uniqueness of normal forms. However, if you&#8217;re already at beta-normal forms before doing any quotation, it presumably doesn&#8217;t matter whether some non-normal term has both beta and eta redices that lead to irreconcilable terms; only beta can happen at that point.</p>
<p>That of course says nothing about whether detecting identity eliminations is feasible.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Conor</title>
		<link>http://www.e-pig.org/epilogue/?p=504&#038;cpage=1#comment-71000</link>
		<dc:creator>Conor</dc:creator>
		<pubDate>Tue, 18 May 2010 09:38:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.e-pig.org/epilogue/?p=504#comment-71000</guid>
		<description>We do eta-expansion only for Pi and Sigma, and (the as yet underexposed) proof-squashing. We currently make no attempt to rearrange stuck inductive eliminators: commuting conversions are a tricky business even for sums, let alone recursive types. I&#039;m too scared to get in with those alligators.

So, yes, (inevitably, of course), some identity functions are more equal than others. The quotation rules for map (and one or two other things) exploit structure which is present by construction. We aren&#039;t really used to this technology yet: it certainly has many more possibilities, but we haven&#039;t yet got a feel for what we can/should do. Interesting times. (There&#039;s a free indexed monad just around the corner.)</description>
		<content:encoded><![CDATA[<p>We do eta-expansion only for Pi and Sigma, and (the as yet underexposed) proof-squashing. We currently make no attempt to rearrange stuck inductive eliminators: commuting conversions are a tricky business even for sums, let alone recursive types. I&#8217;m too scared to get in with those alligators.</p>
<p>So, yes, (inevitably, of course), some identity functions are more equal than others. The quotation rules for map (and one or two other things) exploit structure which is present by construction. We aren&#8217;t really used to this technology yet: it certainly has many more possibilities, but we haven&#8217;t yet got a feel for what we can/should do. Interesting times. (There&#8217;s a free indexed monad just around the corner.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan Doel</title>
		<link>http://www.e-pig.org/epilogue/?p=504&#038;cpage=1#comment-70997</link>
		<dc:creator>Dan Doel</dc:creator>
		<pubDate>Mon, 17 May 2010 02:31:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.e-pig.org/epilogue/?p=504#comment-70997</guid>
		<description>What kind of simplification is possible with regard to eliminators? For instance, if you don&#039;t do any, then despite having:

f == \x -&gt; x ==&gt; map f x == x

Some identities are more equal than others. For instance, what if:

f = \n -&gt; elim_Nat Z (\_ -&gt; S) n

I guess this is more eta, so does \x -&gt; x get expanded into the version with the eliminator (sums are part of why eta expansion is preferred, as I recall). Or does one try to recognize eliminators that just rebuild the thing they&#039;re eliminating?</description>
		<content:encoded><![CDATA[<p>What kind of simplification is possible with regard to eliminators? For instance, if you don&#8217;t do any, then despite having:</p>
<p>f == \x -&gt; x ==&gt; map f x == x</p>
<p>Some identities are more equal than others. For instance, what if:</p>
<p>f = \n -&gt; elim_Nat Z (\_ -&gt; S) n</p>
<p>I guess this is more eta, so does \x -&gt; x get expanded into the version with the eliminator (sums are part of why eta expansion is preferred, as I recall). Or does one try to recognize eliminators that just rebuild the thing they&#8217;re eliminating?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrea Vezzosi</title>
		<link>http://www.e-pig.org/epilogue/?p=504&#038;cpage=1#comment-70988</link>
		<dc:creator>Andrea Vezzosi</dc:creator>
		<pubDate>Wed, 12 May 2010 14:08:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.e-pig.org/epilogue/?p=504#comment-70988</guid>
		<description>Thanks, it&#039;s clear now, the implicitness of the precondition tripped me up.</description>
		<content:encoded><![CDATA[<p>Thanks, it&#8217;s clear now, the implicitness of the precondition tripped me up.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Conor</title>
		<link>http://www.e-pig.org/epilogue/?p=504&#038;cpage=1#comment-70985</link>
		<dc:creator>Conor</dc:creator>
		<pubDate>Tue, 11 May 2010 20:30:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.e-pig.org/epilogue/?p=504#comment-70985</guid>
		<description>I see Pierre-Évariste has beaten me to it. Let me fill in a bit of the background.

We try to write presentations of rules which give rise directly to the appropriate algorithms. Each judgment form has input positions and output positions, preconditions explaining our requirements of inputs, and postconditions giving guarantees about outputs.

In the case of &#915; &#124;- T &#8715; u == v, all four positions are inputs. The preconditions are &#915; &#124;- T &#8715; t and &#915; &#124;- T &#8715; v. That is, to ask if two values are equal at type T, you must first know that they both have that type.

How do we use rules? We work from conclusions to premises. We may presume that the conclusion preconditions hold (or we would not be interested in the problem); we may reduce the conclusion to a collection of premises only if we can establish their preconditions, left-to-right.

Hence, indeed, we have to check that X is Y before we may ask if f is id.</description>
		<content:encoded><![CDATA[<p>I see Pierre-Évariste has beaten me to it. Let me fill in a bit of the background.</p>
<p>We try to write presentations of rules which give rise directly to the appropriate algorithms. Each judgment form has input positions and output positions, preconditions explaining our requirements of inputs, and postconditions giving guarantees about outputs.</p>
<p>In the case of &Gamma; |- T &ni; u == v, all four positions are inputs. The preconditions are &Gamma; |- T &ni; t and &Gamma; |- T &ni; v. That is, to ask if two values are equal at type T, you must first know that they both have that type.</p>
<p>How do we use rules? We work from conclusions to premises. We may presume that the conclusion preconditions hold (or we would not be interested in the problem); we may reduce the conclusion to a collection of premises only if we can establish their preconditions, left-to-right.</p>
<p>Hence, indeed, we have to check that X is Y before we may ask if f is id.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pedagand</title>
		<link>http://www.e-pig.org/epilogue/?p=504&#038;cpage=1#comment-70984</link>
		<dc:creator>pedagand</dc:creator>
		<pubDate>Tue, 11 May 2010 20:18:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.e-pig.org/epilogue/?p=504#comment-70984</guid>
		<description>The problem is that what is on the left of the \ni is the thing we trust. When you are checking f for equality with &#955; x . x, you really need to type-check it in X &#8594; X. So, you need to ensure that X == Y, so that (s : X) &#8594; Y is X &#8594; X. You don&#039;t want to put lies on the left of the \ni. Does that make sense?

Thanks for the App, that&#039;s indeed a typo.</description>
		<content:encoded><![CDATA[<p>The problem is that what is on the left of the \ni is the thing we trust. When you are checking f for equality with &lambda; x . x, you really need to type-check it in X &rarr; X. So, you need to ensure that X == Y, so that (s : X) &rarr; Y is X &rarr; X. You don&#8217;t want to put lies on the left of the \ni. Does that make sense?</p>
<p>Thanks for the App, that&#8217;s indeed a typo.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrea Vezzosi</title>
		<link>http://www.e-pig.org/epilogue/?p=504&#038;cpage=1#comment-70983</link>
		<dc:creator>Andrea Vezzosi</dc:creator>
		<pubDate>Tue, 11 May 2010 19:18:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.e-pig.org/epilogue/?p=504#comment-70983</guid>
		<description>/me raises his hand for a question

Looking at map-id, is there a case where
\Gamma &#124;- (s:X) -&gt; Y \ni f == \x -&gt; x
would hold
\Gamma &#124;- Set \ni X == Y 
wouldn&#039;t ?

(btw, it seems you forgot to adjust the type of the result in App)</description>
		<content:encoded><![CDATA[<p>/me raises his hand for a question</p>
<p>Looking at map-id, is there a case where<br />
\Gamma |- (s:X) -&gt; Y \ni f == \x -&gt; x<br />
would hold<br />
\Gamma |- Set \ni X == Y<br />
wouldn&#8217;t ?</p>
<p>(btw, it seems you forgot to adjust the type of the result in App)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
