<?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 Mathematics and Computation</title>
	<atom:link href="http://math.andrej.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://math.andrej.com</link>
	<description>Mathematics for computers</description>
	<lastBuildDate>Mon, 30 Jan 2012 07:14:48 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2-beta2-18055</generator>
	<item>
		<title>Comment on How to make the &#8220;impossible&#8221; functionals run even faster by Andrej Bauer</title>
		<link>http://math.andrej.com/2011/12/06/how-to-make-the-impossible-functionals-run-even-faster/comment-page-1/#comment-18885</link>
		<dc:creator>Andrej Bauer</dc:creator>
		<pubDate>Mon, 30 Jan 2012 07:14:48 +0000</pubDate>
		<guid isPermaLink="false">http://math.andrej.com/?p=1086#comment-18885</guid>
		<description>You&#039;re not toally off the mark, though. It is relevant to ask whether $\epsilon$ is extensional. Of course, if $\epsilon$ always finds the first witness in the lexicographic (or some other) order, then it is extensional. And, as you observe, given any $\epsilon$ we can always construct an extensioonal one. But still Martin&#039;s $\epsilon$ is extensional (because it is total and written in PCF), while mine is not (try applying it to XOR written in different orders).</description>
		<content:encoded><![CDATA[<p>You&#8217;re not toally off the mark, though. It is relevant to ask whether $\epsilon$ is extensional. Of course, if $\epsilon$ always finds the first witness in the lexicographic (or some other) order, then it is extensional. And, as you observe, given any $\epsilon$ we can always construct an extensioonal one. But still Martin&#8217;s $\epsilon$ is extensional (because it is total and written in PCF), while mine is not (try applying it to XOR written in different orders).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How to make the &#8220;impossible&#8221; functionals run even faster by Ralph Loader</title>
		<link>http://math.andrej.com/2011/12/06/how-to-make-the-impossible-functionals-run-even-faster/comment-page-1/#comment-18869</link>
		<dc:creator>Ralph Loader</dc:creator>
		<pubDate>Sun, 29 Jan 2012 07:27:17 +0000</pubDate>
		<guid isPermaLink="false">http://math.andrej.com/?p=1086#comment-18869</guid>
		<description>Too much coffee this morning!

Once you have a search functional you can define the uniform modulus of continuity and then compute finite graphs of members of Cantor-&gt;Bool &amp; do any sort of minimisation you like.

So I was talking bollocks.</description>
		<content:encoded><![CDATA[<p>Too much coffee this morning!</p>
<p>Once you have a search functional you can define the uniform modulus of continuity and then compute finite graphs of members of Cantor-&gt;Bool &amp; do any sort of minimisation you like.</p>
<p>So I was talking bollocks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on How to make the &#8220;impossible&#8221; functionals run even faster by Ralph Loader</title>
		<link>http://math.andrej.com/2011/12/06/how-to-make-the-impossible-functionals-run-even-faster/comment-page-1/#comment-18859</link>
		<dc:creator>Ralph Loader</dc:creator>
		<pubDate>Sun, 29 Jan 2012 01:14:03 +0000</pubDate>
		<guid isPermaLink="false">http://math.andrej.com/?p=1086#comment-18859</guid>
		<description>In the pure functional case, the epsilon one gets is not just any epsilon - it is a minimization function.

To be precise, for the examples I&#039;ve seen, there is a &quot;search order&quot; on Int (not necessarily the usual order, not necessarily well-founded).  The order on Int then induces a lexicographical partial-order on (Int-&gt;Bool) (which is only a total order if the search-order is well-founded).

The search functionals (Cantor-&gt;Bool)-&gt;Cantor then I believe return the minimum (not just a minimal!) element for which the predicate holds (or the max. element if the predicate is empty).  [That is true if all the examples I&#039;ve seen written down, one can twist them so they do not, e.g., remapping Cantor-&gt;Cantor by flipping odd-numbered bits.]

And one can make the search functional parametrised by the search-order Int-&gt;Int-&gt;Bool, giving a parametrised minimisation operator (Int-&gt;Int-&gt;Bool) -&gt; ((Int-&gt;Bool) -&gt; Bool) -&gt; Int-&gt;Bool.

Question: do all PCF-definable search functionals (Cantor-&gt;Bool)-&gt;Cantor minimise w.r.t. some [not PCF-definable] partial-order on Cantor? (I guess one should ask for the order to be on the extensional quotient of the total objects.)

It is not obvious to me whether or not one can do minimisation using the kind of &quot;memoisation&quot; techniques that speed up search in the non-functional case.

Question: in your favourite non-fully-abstract model of PCF, do there exist parametrised minimisation operators of the type above? [Conjecture - none will not exist in the stable model, but will exist in the continuous model.]</description>
		<content:encoded><![CDATA[<p>In the pure functional case, the epsilon one gets is not just any epsilon &#8211; it is a minimization function.</p>
<p>To be precise, for the examples I&#8217;ve seen, there is a &#8220;search order&#8221; on Int (not necessarily the usual order, not necessarily well-founded).  The order on Int then induces a lexicographical partial-order on (Int-&gt;Bool) (which is only a total order if the search-order is well-founded).</p>
<p>The search functionals (Cantor-&gt;Bool)-&gt;Cantor then I believe return the minimum (not just a minimal!) element for which the predicate holds (or the max. element if the predicate is empty).  [That is true if all the examples I've seen written down, one can twist them so they do not, e.g., remapping Cantor-&gt;Cantor by flipping odd-numbered bits.]</p>
<p>And one can make the search functional parametrised by the search-order Int-&gt;Int-&gt;Bool, giving a parametrised minimisation operator (Int-&gt;Int-&gt;Bool) -&gt; ((Int-&gt;Bool) -&gt; Bool) -&gt; Int-&gt;Bool.</p>
<p>Question: do all PCF-definable search functionals (Cantor-&gt;Bool)-&gt;Cantor minimise w.r.t. some [not PCF-definable] partial-order on Cantor? (I guess one should ask for the order to be on the extensional quotient of the total objects.)</p>
<p>It is not obvious to me whether or not one can do minimisation using the kind of &#8220;memoisation&#8221; techniques that speed up search in the non-functional case.</p>
<p>Question: in your favourite non-fully-abstract model of PCF, do there exist parametrised minimisation operators of the type above? [Conjecture - none will not exist in the stable model, but will exist in the continuous model.]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Seemingly impossible functional programs by Andrej Bauer</title>
		<link>http://math.andrej.com/2007/09/28/seemingly-impossible-functional-programs/comment-page-1/#comment-18856</link>
		<dc:creator>Andrej Bauer</dc:creator>
		<pubDate>Sat, 28 Jan 2012 07:14:55 +0000</pubDate>
		<guid isPermaLink="false">http://math.andrej.com/2007/09/28/seemingly-impossible-functional-programs/#comment-18856</guid>
		<description>@Martin: my talk about faster functionals using effects is &lt;a href=&quot;http://math.andrej.com/2011/12/06/how-to-make-the-impossible-functionals-run-even-faster/&quot; rel=&quot;nofollow&quot;&gt;on line&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>@Martin: my talk about faster functionals using effects is <a href="http://math.andrej.com/2011/12/06/how-to-make-the-impossible-functionals-run-even-faster/" rel="nofollow">on line</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Seemingly impossible functional programs by Ralph Loader</title>
		<link>http://math.andrej.com/2007/09/28/seemingly-impossible-functional-programs/comment-page-1/#comment-18852</link>
		<dc:creator>Ralph Loader</dc:creator>
		<pubDate>Sat, 28 Jan 2012 01:28:47 +0000</pubDate>
		<guid isPermaLink="false">http://math.andrej.com/2007/09/28/seemingly-impossible-functional-programs/#comment-18852</guid>
		<description>It turns out that you can give a sensible, negative, answer to my question.  find can be parametrized with a monad pretty easily e.g., [conflating Bit and Bool to save typing].
[sourcecode gutter=&quot;false&quot;]
module MFind where
import Control.Monad.State

findM :: Ord i =&gt; Monad m =&gt; ((i -&gt; m Bool) -&gt; m Bool) -&gt; (i -&gt; m Bool)
findM p n = do { x &lt;- q (findM q) ; return (not x) }  where
   q a = p (\i -&gt; if i == n then return False else
                 if i &lt; n then findM p i else a i)

-- Make a dummy call to (c x), where x increments by 1 each time we&#039;re called.
-- Then return (c 5).
fifthWithDummy :: (Integer -&gt; State Integer Bool) -&gt; State Integer Bool
fifthWithDummy c = do
  x &lt;- get
  put (x + 1)
  b &lt;- c x
  if b then c 5 else c 5

-- Now compare
--   findM ($ 5) 0
-- with
--   runState (findM (fifthWithDummy) 0) 0
[/sourcecode]
never returns.</description>
		<content:encoded><![CDATA[<p>It turns out that you can give a sensible, negative, answer to my question.  find can be parametrized with a monad pretty easily e.g., [conflating Bit and Bool to save typing].</p>
<pre class="brush: plain; gutter: false; title: ;">
module MFind where
import Control.Monad.State

findM :: Ord i =&gt; Monad m =&gt; ((i -&gt; m Bool) -&gt; m Bool) -&gt; (i -&gt; m Bool)
findM p n = do { x &lt;- q (findM q) ; return (not x) }  where
   q a = p (\i -&gt; if i == n then return False else
                 if i &lt; n then findM p i else a i)

-- Make a dummy call to (c x), where x increments by 1 each time we're called.
-- Then return (c 5).
fifthWithDummy :: (Integer -&gt; State Integer Bool) -&gt; State Integer Bool
fifthWithDummy c = do
  x &lt;- get
  put (x + 1)
  b &lt;- c x
  if b then c 5 else c 5

-- Now compare
--   findM ($ 5) 0
-- with
--   runState (findM (fifthWithDummy) 0) 0
</pre>
<p>never returns.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

