
<?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 for niche computing science</title>
	<atom:link href="http://www.iis.sinica.edu.tw/~scm/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.iis.sinica.edu.tw/~scm</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>Comment on Proving the Church-Rosser Theorem Using a Locally Nameless Representation by wren ng thornton</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2011/proving-the-church-rosser-theorem/comment-page-1/#comment-7853</link>
		<dc:creator>wren ng thornton</dc:creator>
		<pubDate>Tue, 22 Nov 2011 02:09:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/?p=557#comment-7853</guid>
		<description>I&#039;d never been able to figure out quite what &quot;locally nameless&quot; was all about before.  (In part because everyone says they&#039;re using it, but I could never find any papers introducing it.) That we&#039;re doing a bottom-up traversal instead of a top-down, and that the reason this is good is because it matches the natural induction, makes complete sense.

Though now I&#039;m wondering whether the top-down traversal is intractable for any &lt;i&gt;interesting&lt;/i&gt; reasons. In particular, because certain operations like unification only make sense as top-down traversals. And the traversal order also gets at the differences in formal power between deterministic and nondeterministic CFGs.</description>
		<content:encoded><![CDATA[<p>I&#8217;d never been able to figure out quite what &#8220;locally nameless&#8221; was all about before.  (In part because everyone says they&#8217;re using it, but I could never find any papers introducing it.) That we&#8217;re doing a bottom-up traversal instead of a top-down, and that the reason this is good is because it matches the natural induction, makes complete sense.</p>
<p>Though now I&#8217;m wondering whether the top-down traversal is intractable for any <i>interesting</i> reasons. In particular, because certain operations like unification only make sense as top-down traversals. And the traversal order also gets at the differences in formal power between deterministic and nondeterministic CFGs.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Maximum Segment Sum Problem: Its Origin, and a Derivation by Smit Patel</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2010/maximum-segment-sum-origin-and-derivation/comment-page-1/#comment-7817</link>
		<dc:creator>Smit Patel</dc:creator>
		<pubDate>Thu, 08 Sep 2011 20:16:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/?p=301#comment-7817</guid>
		<description>This algorithm is not working for the input : { 12,-1,-2,-1,-1,13 }
Can you please check it?</description>
		<content:encoded><![CDATA[<p>This algorithm is not working for the input : { 12,-1,-2,-1,-1,13 }<br />
Can you please check it?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Maximum Segment Sum Problem: Its Origin, and a Derivation by Jeremy Gibbons</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2010/maximum-segment-sum-origin-and-derivation/comment-page-1/#comment-7681</link>
		<dc:creator>Jeremy Gibbons</dc:creator>
		<pubDate>Tue, 03 May 2011 10:34:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/?p=301#comment-7681</guid>
		<description>I&#039;ve just reacquainted myself with the relational (and datatype-generic!) derivation of the solution in the paper &lt;a href=&quot;http://dx.doi.org/10.1017/S0956796800001556&quot; rel=&quot;nofollow&quot;&gt;Generic functional programming with types and relations&lt;/a&gt; by Richard, Oege, and Paul Hoogendijk (JFP 1996).</description>
		<content:encoded><![CDATA[<p>I&#8217;ve just reacquainted myself with the relational (and datatype-generic!) derivation of the solution in the paper <a href="http://dx.doi.org/10.1017/S0956796800001556" rel="nofollow">Generic functional programming with types and relations</a> by Richard, Oege, and Paul Hoogendijk (JFP 1996).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Calculating Programs from Galois Connections by Hao Deng</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2010/calculating-programs-from-galois-connections/comment-page-1/#comment-7680</link>
		<dc:creator>Hao Deng</dc:creator>
		<pubDate>Fri, 29 Apr 2011 03:32:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/?p=523#comment-7680</guid>
		<description>isn&#039;t the ↾ operator just the right adjoint of relation composition? 

f  z &lt;  x 
============
   z               f~               
x -----&gt;  f z ------&gt;  z
x ------&gt; gx ------&gt; z 
      g            &gt;=

f~  : converse of f 
readed as x  &gt; fz and fz apply by f~ got z 

; is the reverse relation composition , that is R ; S = S . R 

so               &gt; ; f~  == g ; &gt;= 
                   (&gt; ; f~  ) / &gt;=    == g 

/  is the adjoin of right composition . 

Hope this is clear. 

Regards.</description>
		<content:encoded><![CDATA[<p>isn&#8217;t the ↾ operator just the right adjoint of relation composition? </p>
<p>f  z &lt;  x<br />
============<br />
   z               f~<br />
x &#8212;&#8211;&gt;  f z &#8212;&#8212;&gt;  z<br />
x &#8212;&#8212;&gt; gx &#8212;&#8212;&gt; z<br />
      g            &gt;=</p>
<p>f~  : converse of f<br />
readed as x  &gt; fz and fz apply by f~ got z </p>
<p>; is the reverse relation composition , that is R ; S = S . R </p>
<p>so               &gt; ; f~  == g ; &gt;=<br />
                   (&gt; ; f~  ) / &gt;=    == g </p>
<p>/  is the adjoin of right composition . </p>
<p>Hope this is clear. </p>
<p>Regards.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Calculating Programs from Galois Connections by José Oliveira</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2010/calculating-programs-from-galois-connections/comment-page-1/#comment-7678</link>
		<dc:creator>José Oliveira</dc:creator>
		<pubDate>Wed, 16 Mar 2011 16:58:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/?p=523#comment-7678</guid>
		<description>Categorial adjunctions generalize Galois connections. A very nice account of this generalization can be found in the following technical report by M. Fokkinga and L. Meertens: &quot;Adjunctions&quot;, TR 94-31, Memoranda Informatica, University of Twente, 1994.</description>
		<content:encoded><![CDATA[<p>Categorial adjunctions generalize Galois connections. A very nice account of this generalization can be found in the following technical report by M. Fokkinga and L. Meertens: &#8220;Adjunctions&#8221;, TR 94-31, Memoranda Informatica, University of Twente, 1994.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on The Maximum Segment Sum Problem: Its Origin, and a Derivation by Edon Kelmendi</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2010/maximum-segment-sum-origin-and-derivation/comment-page-1/#comment-7677</link>
		<dc:creator>Edon Kelmendi</dc:creator>
		<pubDate>Mon, 21 Feb 2011 08:22:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/?p=301#comment-7677</guid>
		<description>Very nice derivation. 
Minor detail: you&#039;re not handling the case where all elements are negative. I would suggest something like this: 

&lt;code&gt;
mss xs = snd . foldr step (0, max xs) xs
  where step x (p,s) = (0 ↑ (x+p), ((x+p) ↑ s)
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Very nice derivation.<br />
Minor detail: you&#8217;re not handling the case where all elements are negative. I would suggest something like this: </p>
<p><code><br />
mss xs = snd . foldr step (0, max xs) xs<br />
  where step x (p,s) = (0 ↑ (x+p), ((x+p) ↑ s)<br />
</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Calculating Programs from Galois Connections by Shin</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2010/calculating-programs-from-galois-connections/comment-page-1/#comment-7121</link>
		<dc:creator>Shin</dc:creator>
		<pubDate>Sun, 12 Dec 2010 17:53:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/?p=523#comment-7121</guid>
		<description>This is perhaps the source of confusion: in the equivalence:
&lt;code&gt;&lt;pre&gt;    z * 3 ≤ 9  ≡  z ≤ 9 / 3&lt;/pre&gt;&lt;/code&gt;the variable &lt;code&gt;z&lt;/code&gt; is &lt;em&gt;not&lt;/em&gt; &lt;code&gt;9&lt;/code&gt; divided by &lt;code&gt;3&lt;/code&gt;, the value we aim to compute -- &lt;code&gt;9 / 3&lt;/code&gt; is. Variable &lt;code&gt;z&lt;/code&gt; is merely a universally quantified dummy variable. 

Pretend that we do not know what the value of &lt;code&gt;9 / 3&lt;/code&gt; is. We must pick a value for it such that &lt;code&gt;z * 3 ≤ 9 ≡ z ≤ 9 / 3&lt;/code&gt; always evaluates to either &lt;code&gt;true ≡ true&lt;/code&gt; or &lt;code&gt;false ≡ false&lt;/code&gt;. Let&#039;s try:
&lt;strong&gt;z = 0&lt;/strong&gt;:  &lt;code&gt;0 * 3 ≤ 9&lt;/code&gt;, thus we shall have &lt;code&gt;0 ≤ 9 / 3&lt;/code&gt;;
&lt;strong&gt;z = 1,2&lt;/strong&gt;: (omitted);
&lt;strong&gt;z = 3&lt;/strong&gt;: &lt;code&gt;3 * 3 ≤ 9&lt;/code&gt;, thus we shall have &lt;code&gt;3 ≤ 9 / 3&lt;/code&gt;
&lt;strong&gt;z = 4&lt;/strong&gt;: &lt;code&gt;4 * 3 ≰ 9&lt;/code&gt;, thus we shall have &lt;code&gt;4 ≰ 9 / 3&lt;/code&gt;
Thus we conclude that &lt;code&gt;3 / 9&lt;/code&gt; could only be &lt;code&gt;3&lt;/code&gt;.

This way it is still hard to see where maximality comes in (if &lt;code&gt;9/3&lt;/code&gt; were not the largest, the cases above for z = 2 or 3, for example, would not be true. But such an explanation still feels like an accident). To see how maximality is captured, I&#039;d still prefer the explanation in the post: look at this direction:
&lt;code&gt;&lt;pre&gt;    z * 3 ≤ 9  ⇒  z ≤ 9 / 3&lt;/pre&gt;&lt;/code&gt;if any &lt;code&gt;z&lt;/code&gt; satisfies &lt;code&gt;z * 3 ≤ 9&lt;/code&gt;, it must be the case that &lt;code&gt;z ≤ 9 / 3&lt;/code&gt;. For any &lt;code&gt;z&lt;/code&gt; such that &lt;code&gt;z ≰ 9 / 3&lt;/code&gt;, it cannot be the case that &lt;code&gt;z * 3 ≤ 9&lt;/code&gt;. So &lt;code&gt;9 / 3&lt;/code&gt; itself is the largest value &lt;code&gt;z&lt;/code&gt; could be while still making &lt;code&gt;z * 3 ≤ 9&lt;/code&gt; true.

I&#039;ve altered the text a bit to mention that &lt;code&gt;z&lt;/code&gt; is a dummy variable. It might avoid some confusion had I explicitly quantify &lt;code&gt;z&lt;code&gt;.
&lt;code&gt;&lt;pre&gt;    (∀ z :: z * 3 ≤ 9  ≡  z ≤ 9 / 3)&lt;/pre&gt;&lt;/code&gt;Functions &lt;code&gt;f&lt;/code&gt; and &lt;code&gt;g&lt;/code&gt; form a Galois connection iff:
&lt;code&gt;&lt;pre&gt;    (∀ x z :: f z ⊑ x   ≡   z ≤ g x) &lt;/pre&gt;&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>This is perhaps the source of confusion: in the equivalence:<br />
<code>
<pre>    z * 3 ≤ 9  ≡  z ≤ 9 / 3</pre>
<p></code>the variable <code>z</code> is <em>not</em> <code>9</code> divided by <code>3</code>, the value we aim to compute &#8212; <code>9 / 3</code> is. Variable <code>z</code> is merely a universally quantified dummy variable. </p>
<p>Pretend that we do not know what the value of <code>9 / 3</code> is. We must pick a value for it such that <code>z * 3 ≤ 9 ≡ z ≤ 9 / 3</code> always evaluates to either <code>true ≡ true</code> or <code>false ≡ false</code>. Let&#8217;s try:<br />
<strong>z = 0</strong>:  <code>0 * 3 ≤ 9</code>, thus we shall have <code>0 ≤ 9 / 3</code>;<br />
<strong>z = 1,2</strong>: (omitted);<br />
<strong>z = 3</strong>: <code>3 * 3 ≤ 9</code>, thus we shall have <code>3 ≤ 9 / 3</code><br />
<strong>z = 4</strong>: <code>4 * 3 ≰ 9</code>, thus we shall have <code>4 ≰ 9 / 3</code><br />
Thus we conclude that <code>3 / 9</code> could only be <code>3</code>.</p>
<p>This way it is still hard to see where maximality comes in (if <code>9/3</code> were not the largest, the cases above for z = 2 or 3, for example, would not be true. But such an explanation still feels like an accident). To see how maximality is captured, I&#8217;d still prefer the explanation in the post: look at this direction:<br />
<code>
<pre>    z * 3 ≤ 9  ⇒  z ≤ 9 / 3</pre>
<p></code>if any <code>z</code> satisfies <code>z * 3 ≤ 9</code>, it must be the case that <code>z ≤ 9 / 3</code>. For any <code>z</code> such that <code>z ≰ 9 / 3</code>, it cannot be the case that <code>z * 3 ≤ 9</code>. So <code>9 / 3</code> itself is the largest value <code>z</code> could be while still making <code>z * 3 ≤ 9</code> true.</p>
<p>I&#8217;ve altered the text a bit to mention that <code>z</code> is a dummy variable. It might avoid some confusion had I explicitly quantify <code>z</code><code>.<br />
</code><code>
<pre>    (∀ z :: z * 3 ≤ 9  ≡  z ≤ 9 / 3)</pre>
<p></code>Functions <code>f</code> and <code>g</code> form a Galois connection iff:<br />
<code>
<pre>    (∀ x z :: f z ⊑ x   ≡   z ≤ g x) </pre>
<p></code></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Calculating Programs from Galois Connections by Claudio</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2010/calculating-programs-from-galois-connections/comment-page-1/#comment-7116</link>
		<dc:creator>Claudio</dc:creator>
		<pubDate>Sun, 12 Dec 2010 14:45:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/?p=523#comment-7116</guid>
		<description>I don&#039;t see how it captures maximality. In the example
&lt;code&gt;z * y ≤ x  ≡  z ≤ x / y&lt;/code&gt;
If &lt;code&gt;y = 3&lt;/code&gt; and &lt;code&gt;x = 9&lt;/code&gt;,
&lt;code&gt;z * 3 ≤ 9  ≡  z ≤ 9 / 3&lt;/code&gt;
if you put &lt;code&gt;2&lt;/code&gt; as candidate:
&lt;code&gt;2 * 3 ≤ 9  ≡  2 ≤ 9 / 3
6 ≤ 9  ≡  2 ≤ 3
True  ≡ True&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>I don&#8217;t see how it captures maximality. In the example<br />
<code>z * y ≤ x  ≡  z ≤ x / y</code><br />
If <code>y = 3</code> and <code>x = 9</code>,<br />
<code>z * 3 ≤ 9  ≡  z ≤ 9 / 3</code><br />
if you put <code>2</code> as candidate:<br />
<code>2 * 3 ≤ 9  ≡  2 ≤ 9 / 3<br />
6 ≤ 9  ≡  2 ≤ 3<br />
True  ≡ True</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Calculating Programs from Galois Connections by Shin</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2010/calculating-programs-from-galois-connections/comment-page-1/#comment-7111</link>
		<dc:creator>Shin</dc:creator>
		<pubDate>Sun, 12 Dec 2010 07:50:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/?p=523#comment-7111</guid>
		<description>I hope Joao will soon put a publicly available version of his thesis online. I recommend it to anyone interested in Galois connections and (imperative) program construction.</description>
		<content:encoded><![CDATA[<p>I hope Joao will soon put a publicly available version of his thesis online. I recommend it to anyone interested in Galois connections and (imperative) program construction.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Calculating Programs from Galois Connections by Shin</title>
		<link>http://www.iis.sinica.edu.tw/~scm/2010/calculating-programs-from-galois-connections/comment-page-1/#comment-7109</link>
		<dc:creator>Shin</dc:creator>
		<pubDate>Sun, 12 Dec 2010 07:45:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.iis.sinica.edu.tw/~scm/?p=523#comment-7109</guid>
		<description>I am not that familiar with categorical adjunctions. José appears to know about them better? Hinze&#039;s paper is on my list of papers to read. Should have read it earlier...</description>
		<content:encoded><![CDATA[<p>I am not that familiar with categorical adjunctions. José appears to know about them better? Hinze&#8217;s paper is on my list of papers to read. Should have read it earlier&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

