
<?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: S Combinator is Injective, with Proofs</title>
	<atom:link href="http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/</link>
	<description>Research Blog of 穆信成 Shin-Cheng Mu</description>
	<lastBuildDate>Tue, 22 Nov 2011 02:09:41 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: -= Linkage 2007.12.13 =-</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/comment-page-1/#comment-5873</link>
		<dc:creator>-= Linkage 2007.12.13 =-</dc:creator>
		<pubDate>Mon, 26 Jan 2009 15:40:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/#comment-5873</guid>
		<description>[...] S Combinator is injective&lt;br/&gt; Mathematics, Mathematica and Certainty&lt;br/&gt; Pure functional data structures&lt;br/&gt; Minty-boost iPod charger&lt;br/&gt; Adruino&lt;br/&gt; [...]</description>
		<content:encoded><![CDATA[<p>[...] S Combinator is injective&lt;br/&gt; Mathematics, Mathematica and Certainty&lt;br/&gt; Pure functional data structures&lt;br/&gt; Minty-boost iPod charger&lt;br/&gt; Adruino&lt;br/&gt; [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shin</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/comment-page-1/#comment-4062</link>
		<dc:creator>Shin</dc:creator>
		<pubDate>Sun, 28 Sep 2008 16:10:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/#comment-4062</guid>
		<description>Loren S, thanks for pointing that out!</description>
		<content:encoded><![CDATA[<p>Loren S, thanks for pointing that out!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Loren S</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/comment-page-1/#comment-3037</link>
		<dc:creator>Loren S</dc:creator>
		<pubDate>Mon, 25 Aug 2008 14:04:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/#comment-3037</guid>
		<description>As a general matter, a left inverse of a (necessarily injective) function is always also a right inverse on the range of the function.  That is, if &lt;code&gt;g f = Id&lt;/code&gt;, then &lt;code&gt;f g(t) = f g f(s) = f(s) = t&lt;/code&gt; for &lt;code&gt;t = f(s)&lt;/code&gt; in the range of &lt;code&gt;f&lt;/code&gt;.  This makes your demonstration just before &#8220;Inverting higher order functions&#8221; unnecessary.</description>
		<content:encoded><![CDATA[<p>As a general matter, a left inverse of a (necessarily injective) function is always also a right inverse on the range of the function.  That is, if <code>g f = Id</code>, then <code>f g(t) = f g f(s) = f(s) = t</code> for <code>t = f(s)</code> in the range of <code>f</code>.  This makes your demonstration just before &ldquo;Inverting higher order functions&rdquo; unnecessary.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Charles Stewart</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/comment-page-1/#comment-366</link>
		<dc:creator>Charles Stewart</dc:creator>
		<pubDate>Tue, 11 Dec 2007 12:17:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/#comment-366</guid>
		<description>I&#039;ve posted this observation as &lt;a href=&quot;http://lambda-the-ultimate.org/node/2570#comment-38741&quot; rel=&quot;nofollow&quot;&gt;a story on LtU&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve posted this observation as <a href="http://lambda-the-ultimate.org/node/2570#comment-38741" rel="nofollow">a story on LtU</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shin</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/comment-page-1/#comment-339</link>
		<dc:creator>Shin</dc:creator>
		<pubDate>Thu, 06 Dec 2007 01:50:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/#comment-339</guid>
		<description>lf,

Yes, I know about Djinn! In fact when I thought I found a general way to invert functions, I was merely constructing a term having the right type. After my talk, one of the audience fired up Djinn and showed me how it can be done. It must be one of my worst talks..


Frank Atanassow,

Oh, I&#039;ve probably omitted too many steps. The reasoning goes like this:
&lt;pre&gt;&lt;code&gt;
   (∀ y ∈ A -&gt; B : P)
≡  (∀ y : y ∈ A -&gt; B ⇒ P)
⇒   { since (∃ b : y = K b) ⇒ (y ∈ A -&gt; B) }
   (∀ y : (∃ b : y = K b) ⇒ P)
≡    { since (∃ b : Q) ⇒ P ≡ (∀ b : Q ⇒ P) }
   (∀ y : (∀ b : y = K b ⇒ P))
≡  (∀ b : P[(K b)/y])
&lt;/code&gt;&lt;/pre&gt;


Chris Rathman,

Thanks! I will have a read. The team I used to work with was also working on bidirectionality and I have to read that paper anyway...</description>
		<content:encoded><![CDATA[<p>lf,</p>
<p>Yes, I know about Djinn! In fact when I thought I found a general way to invert functions, I was merely constructing a term having the right type. After my talk, one of the audience fired up Djinn and showed me how it can be done. It must be one of my worst talks..</p>
<p>Frank Atanassow,</p>
<p>Oh, I&#8217;ve probably omitted too many steps. The reasoning goes like this:</p>
<pre><code>
   (∀ y ∈ A -> B : P)
≡  (∀ y : y ∈ A -> B ⇒ P)
⇒   { since (∃ b : y = K b) ⇒ (y ∈ A -> B) }
   (∀ y : (∃ b : y = K b) ⇒ P)
≡    { since (∃ b : Q) ⇒ P ≡ (∀ b : Q ⇒ P) }
   (∀ y : (∀ b : y = K b ⇒ P))
≡  (∀ b : P[(K b)/y])
</code></pre>
<p>Chris Rathman,</p>
<p>Thanks! I will have a read. The team I used to work with was also working on bidirectionality and I have to read that paper anyway&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Rathman</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/comment-page-1/#comment-332</link>
		<dc:creator>Chris Rathman</dc:creator>
		<pubDate>Wed, 05 Dec 2007 15:10:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/#comment-332</guid>
		<description>Off hand, Benjamin Pierce&#039;s work on Bijection and Bidirectional programming come to mind.   See: http://lambda-the-ultimate.org/node/1526</description>
		<content:encoded><![CDATA[<p>Off hand, Benjamin Pierce&#8217;s work on Bijection and Bidirectional programming come to mind.   See: <a href="http://lambda-the-ultimate.org/node/1526" rel="nofollow">http://lambda-the-ultimate.org/node/1526</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Frank Atanassow</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/comment-page-1/#comment-331</link>
		<dc:creator>Frank Atanassow</dc:creator>
		<pubDate>Wed, 05 Dec 2007 13:49:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/#comment-331</guid>
		<description>In your first proof, it looks to me like b should be existentially quantified. Why do you say it is universally quantified?</description>
		<content:encoded><![CDATA[<p>In your first proof, it looks to me like b should be existentially quantified. Why do you say it is universally quantified?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lf</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/comment-page-1/#comment-330</link>
		<dc:creator>lf</dc:creator>
		<pubDate>Wed, 05 Dec 2007 11:43:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/2007/s-combinator-is-injective-with-proofs/#comment-330</guid>
		<description>Try Djinn! Passing it the type of S^-1:

f ? ((a-&gt;b) -&gt; (a-&gt;c)) -&gt; (a -&gt; b -&gt; c)

it gives you

f a b c = a (\ _ -&gt; c) b

right away :-)</description>
		<content:encoded><![CDATA[<p>Try Djinn! Passing it the type of S^-1:</p>
<p>f ? ((a-&gt;b) -&gt; (a-&gt;c)) -&gt; (a -&gt; b -&gt; c)</p>
<p>it gives you</p>
<p>f a b c = a (\ _ -&gt; c) b</p>
<p>right away :-)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

