<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Church&#8217;s Law</title>
	<atom:link href="http://existentialtype.wordpress.com/2012/08/09/churchs-law/feed/" rel="self" type="application/rss+xml" />
	<link>http://existentialtype.wordpress.com/2012/08/09/churchs-law/</link>
	<description>Abstract types are existential types.</description>
	<lastBuildDate>Tue, 29 Jan 2013 15:10:50 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Mike Shulman</title>
		<link>http://existentialtype.wordpress.com/2012/08/09/churchs-law/#comment-1009</link>
		<dc:creator><![CDATA[Mike Shulman]]></dc:creator>
		<pubDate>Tue, 14 Aug 2012 23:31:36 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/?p=584#comment-1009</guid>
		<description><![CDATA[Okay, thanks!  I don&#039;t like it, but at least now I understand it.  (-:]]></description>
		<content:encoded><![CDATA[<p>Okay, thanks!  I don&#8217;t like it, but at least now I understand it.  (-:</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Harper</title>
		<link>http://existentialtype.wordpress.com/2012/08/09/churchs-law/#comment-1006</link>
		<dc:creator><![CDATA[Robert Harper]]></dc:creator>
		<pubDate>Tue, 14 Aug 2012 21:43:20 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/?p=584#comment-1006</guid>
		<description><![CDATA[What Carlo says.]]></description>
		<content:encoded><![CDATA[<p>What Carlo says.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Carlo Angiuli</title>
		<link>http://existentialtype.wordpress.com/2012/08/09/churchs-law/#comment-1005</link>
		<dc:creator><![CDATA[Carlo Angiuli]]></dc:creator>
		<pubDate>Tue, 14 Aug 2012 21:39:18 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/?p=584#comment-1005</guid>
		<description><![CDATA[My two cents: It&#039;s the intent. If we had to specify which types are &quot;propositions&quot; in a formal sense, it would make most sense to reserve this term for subsingleton ((-1)-truncated) types. But as we know, to truncate types is to throw out a lot of useful homotopical -- and even 0-dimensional -- information.

I think Bob is drawing an informal distinction between types which can be regarded meaningfully as theorems in a logic, and types which only express constructions (whatever that means). When people first learn about props-as-types, they are told that every program proves a theorem; they often respond with a question like, &quot;What theorem does fib :: Int -&gt; Int prove?&quot; The answer is of course that it&#039;s a useless theorem (\x. 0 or \x. x are suitable proofs) but a perfectly sensible construction, about which we might perhaps wish to prove interesting theorems.]]></description>
		<content:encoded><![CDATA[<p>My two cents: It&#8217;s the intent. If we had to specify which types are &#8220;propositions&#8221; in a formal sense, it would make most sense to reserve this term for subsingleton ((-1)-truncated) types. But as we know, to truncate types is to throw out a lot of useful homotopical &#8212; and even 0-dimensional &#8212; information.</p>
<p>I think Bob is drawing an informal distinction between types which can be regarded meaningfully as theorems in a logic, and types which only express constructions (whatever that means). When people first learn about props-as-types, they are told that every program proves a theorem; they often respond with a question like, &#8220;What theorem does fib :: Int -&gt; Int prove?&#8221; The answer is of course that it&#8217;s a useless theorem (\x. 0 or \x. x are suitable proofs) but a perfectly sensible construction, about which we might perhaps wish to prove interesting theorems.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Shulman</title>
		<link>http://existentialtype.wordpress.com/2012/08/09/churchs-law/#comment-1001</link>
		<dc:creator><![CDATA[Mike Shulman]]></dc:creator>
		<pubDate>Tue, 14 Aug 2012 18:44:32 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/?p=584#comment-1001</guid>
		<description><![CDATA[Reading this together with your &lt;a href=&quot;http://existentialtype.wordpress.com/2012/08/11/extensionality-intensionality-and-brouwers-dictum/&quot; rel=&quot;nofollow&quot;&gt;next post&lt;/a&gt; has confused me about what you mean by the word &quot;proposition&quot;.  In the next post, you made the point that not every construction is a proof, i.e. not every type is a proposition; but you didn&#039;t say how you want to decide whether a given type is a proposition.

In my limited experience, it seems that the most common answer is to regard as propositions those types that are subsingletons, a.k.a. proof-irrelevant, a.k.a. (-1)-truncated or h-level 1 (in the language of homotopy type theory).  But in that case, the quantifier &quot;there exists&quot; has to be interpreted not by a $latex \Sigma$-type but by a squashed version of it.  Then the axiom of choice is no longer a theorem and can be false, while Church&#039;s Law would be $latex \Pi f : N\to N. [\Sigma n:N . n \Vdash f]$ (where $latex [-]$ denotes a squash type) and can be true (as it is in the effective topos).  (Please correct me if my understanding of any of this is wrong.)

Since in this post you say that AC is a theorem and CL is false, using the non-squashed versions of both, I gather that this is not the meaning of &quot;proposition&quot; you prefer.  So what, for you, makes a type into a proposition?  Is it just the intent to regard it as such?]]></description>
		<content:encoded><![CDATA[<p>Reading this together with your <a href="http://existentialtype.wordpress.com/2012/08/11/extensionality-intensionality-and-brouwers-dictum/" rel="nofollow">next post</a> has confused me about what you mean by the word &#8220;proposition&#8221;.  In the next post, you made the point that not every construction is a proof, i.e. not every type is a proposition; but you didn&#8217;t say how you want to decide whether a given type is a proposition.</p>
<p>In my limited experience, it seems that the most common answer is to regard as propositions those types that are subsingletons, a.k.a. proof-irrelevant, a.k.a. (-1)-truncated or h-level 1 (in the language of homotopy type theory).  But in that case, the quantifier &#8220;there exists&#8221; has to be interpreted not by a <img src='http://s0.wp.com/latex.php?latex=%5CSigma&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;Sigma' title='&#92;Sigma' class='latex' />-type but by a squashed version of it.  Then the axiom of choice is no longer a theorem and can be false, while Church&#8217;s Law would be <img src='http://s0.wp.com/latex.php?latex=%5CPi+f+%3A+N%5Cto+N.+%5B%5CSigma+n%3AN+.+n+%5CVdash+f%5D&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='&#92;Pi f : N&#92;to N. [&#92;Sigma n:N . n &#92;Vdash f]' title='&#92;Pi f : N&#92;to N. [&#92;Sigma n:N . n &#92;Vdash f]' class='latex' /> (where <img src='http://s0.wp.com/latex.php?latex=%5B-%5D&amp;bg=ffffff&amp;fg=333333&amp;s=0' alt='[-]' title='[-]' class='latex' /> denotes a squash type) and can be true (as it is in the effective topos).  (Please correct me if my understanding of any of this is wrong.)</p>
<p>Since in this post you say that AC is a theorem and CL is false, using the non-squashed versions of both, I gather that this is not the meaning of &#8220;proposition&#8221; you prefer.  So what, for you, makes a type into a proposition?  Is it just the intent to regard it as such?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Harper</title>
		<link>http://existentialtype.wordpress.com/2012/08/09/churchs-law/#comment-969</link>
		<dc:creator><![CDATA[Robert Harper]]></dc:creator>
		<pubDate>Sat, 11 Aug 2012 22:29:10 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/?p=584#comment-969</guid>
		<description><![CDATA[Corrected, thanks.]]></description>
		<content:encoded><![CDATA[<p>Corrected, thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Derek Dreyer</title>
		<link>http://existentialtype.wordpress.com/2012/08/09/churchs-law/#comment-968</link>
		<dc:creator><![CDATA[Derek Dreyer]]></dc:creator>
		<pubDate>Sat, 11 Aug 2012 11:38:18 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/?p=584#comment-968</guid>
		<description><![CDATA[Cool post, Bob.  Two typos in the paragraph where you complete the proof: H(x,x) should be h(x,x), and h(d,d) should be h(n,n).]]></description>
		<content:encoded><![CDATA[<p>Cool post, Bob.  Two typos in the paragraph where you complete the proof: H(x,x) should be h(x,x), and h(d,d) should be h(n,n).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Frederic Koehler (@FredericKoehler)</title>
		<link>http://existentialtype.wordpress.com/2012/08/09/churchs-law/#comment-966</link>
		<dc:creator><![CDATA[Frederic Koehler (@FredericKoehler)]]></dc:creator>
		<pubDate>Fri, 10 Aug 2012 17:01:28 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/?p=584#comment-966</guid>
		<description><![CDATA[@andrej: It is exactly this (perhaps somewhat boring) interpretation of Church&#039;s Law as &quot;quote&quot; that I am curious about. Perhaps I have drunk too much intensional-equality kool-aid, but one of the promised benefits of intensional equality is that we are not forced to identify operations of different complexity as equal (e.g. bogosort and quicksort). As far as extensional type theory is concerned, whether we define our sorting function as quicksort or bogosort does not matter: there is only one true sorting function, and all sorting functions are equal to it.

On the other hand, if we can safely add a &quot;quote&quot; function to intensional type theory, then we can distinguish between the two sorts, and then we can (hopefully) prove that quicksort is efficient under a chosen evaluation scheme. We could still perhaps keep a notion of extensional equality for functions as equality-of-function-application --- not as convenient, maybe, but not necessarily impossible.

Why does abandoning this idea in favor of e.g. extensional type theory trouble me? Because then, if we have a proof the correctness of our tree implementation in (dependent type theory based) TheoremProver, and we want to prove that it also has the right complexity guarantees, then it seems we have two choices: 1. analyze the complexity outside of TheoremProver or 2. build a new theory of computation within TheoremProver and rewrite our tree in that embedded language. Certainly (2) works, but then is there a strong reason to prefer TheoremProver to e.g. HOL? (perhaps an affirmative answer to that question would be comforting.)]]></description>
		<content:encoded><![CDATA[<p>@andrej: It is exactly this (perhaps somewhat boring) interpretation of Church&#8217;s Law as &#8220;quote&#8221; that I am curious about. Perhaps I have drunk too much intensional-equality kool-aid, but one of the promised benefits of intensional equality is that we are not forced to identify operations of different complexity as equal (e.g. bogosort and quicksort). As far as extensional type theory is concerned, whether we define our sorting function as quicksort or bogosort does not matter: there is only one true sorting function, and all sorting functions are equal to it.</p>
<p>On the other hand, if we can safely add a &#8220;quote&#8221; function to intensional type theory, then we can distinguish between the two sorts, and then we can (hopefully) prove that quicksort is efficient under a chosen evaluation scheme. We could still perhaps keep a notion of extensional equality for functions as equality-of-function-application &#8212; not as convenient, maybe, but not necessarily impossible.</p>
<p>Why does abandoning this idea in favor of e.g. extensional type theory trouble me? Because then, if we have a proof the correctness of our tree implementation in (dependent type theory based) TheoremProver, and we want to prove that it also has the right complexity guarantees, then it seems we have two choices: 1. analyze the complexity outside of TheoremProver or 2. build a new theory of computation within TheoremProver and rewrite our tree in that embedded language. Certainly (2) works, but then is there a strong reason to prefer TheoremProver to e.g. HOL? (perhaps an affirmative answer to that question would be comforting.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: andrejbauer</title>
		<link>http://existentialtype.wordpress.com/2012/08/09/churchs-law/#comment-963</link>
		<dc:creator><![CDATA[andrejbauer]]></dc:creator>
		<pubDate>Fri, 10 Aug 2012 14:30:52 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/?p=584#comment-963</guid>
		<description><![CDATA[@Frederic: typically Church&#039;s Law does not compute anything. For example, in the effective topos it is realized by the (code of) identity function. The reason is simple: since everything is represented by Gödel codes anyhow, it is trivially the case that every function has a code. I do not know of a model in which Church&#039;s Law has an interesting computational meaning. In a programming language it corresponds to &quot;unquote&quot; or &quot;disassemble&quot;: given a value of functional type, it returns its source code (given as an abstract syntax tree, or just as a pointer to a block of machine code).]]></description>
		<content:encoded><![CDATA[<p>@Frederic: typically Church&#8217;s Law does not compute anything. For example, in the effective topos it is realized by the (code of) identity function. The reason is simple: since everything is represented by Gödel codes anyhow, it is trivially the case that every function has a code. I do not know of a model in which Church&#8217;s Law has an interesting computational meaning. In a programming language it corresponds to &#8220;unquote&#8221; or &#8220;disassemble&#8221;: given a value of functional type, it returns its source code (given as an abstract syntax tree, or just as a pointer to a block of machine code).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: andrejbauer</title>
		<link>http://existentialtype.wordpress.com/2012/08/09/churchs-law/#comment-961</link>
		<dc:creator><![CDATA[andrejbauer]]></dc:creator>
		<pubDate>Fri, 10 Aug 2012 07:14:11 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/?p=584#comment-961</guid>
		<description><![CDATA[The internal Church&#039;s Law (I love calling it a &quot;law&quot;!) is a very extreme axiom which fails in most realizability models. It says something like &quot;everything we see is not only made of Gödel codes, these codes are visible to us&quot;. Church&#039;s Law in our universe would say not only that we&#039;re being simulated by a computer, but also that we have access to God&#039;s source code. An extreme position indeed.]]></description>
		<content:encoded><![CDATA[<p>The internal Church&#8217;s Law (I love calling it a &#8220;law&#8221;!) is a very extreme axiom which fails in most realizability models. It says something like &#8220;everything we see is not only made of Gödel codes, these codes are visible to us&#8221;. Church&#8217;s Law in our universe would say not only that we&#8217;re being simulated by a computer, but also that we have access to God&#8217;s source code. An extreme position indeed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Frederic Koehler (@FredericKoehler)</title>
		<link>http://existentialtype.wordpress.com/2012/08/09/churchs-law/#comment-960</link>
		<dc:creator><![CDATA[Frederic Koehler (@FredericKoehler)]]></dc:creator>
		<pubDate>Fri, 10 Aug 2012 05:24:02 +0000</pubDate>
		<guid isPermaLink="false">http://existentialtype.wordpress.com/?p=584#comment-960</guid>
		<description><![CDATA[Very thought provoking! I wonder, though, if we aren&#039;t potentially losing something by making functions so extensional. If we stick with intensional type theory and add a version of Church&#039;s Law that computes, we might be able to prove interesting things: e.g. that our definition of mergesort is polynomial time computable. With function extensionality, even though we only have computable functions we are completely forbidden to mention how they are computed, as your example shows --- and so if we want to prove anything about their intension (like that they terminate within a reasonable amount of time) within our extensional theorem prover, we have to build a whole internal theory and rewrite all of our functions within it. It just seems a bit unsavory that within type theory, we are already going to a lot of effort to show that our functions compute in bounded time and yet cannot use this information directly.]]></description>
		<content:encoded><![CDATA[<p>Very thought provoking! I wonder, though, if we aren&#8217;t potentially losing something by making functions so extensional. If we stick with intensional type theory and add a version of Church&#8217;s Law that computes, we might be able to prove interesting things: e.g. that our definition of mergesort is polynomial time computable. With function extensionality, even though we only have computable functions we are completely forbidden to mention how they are computed, as your example shows &#8212; and so if we want to prove anything about their intension (like that they terminate within a reasonable amount of time) within our extensional theorem prover, we have to build a whole internal theory and rewrite all of our functions within it. It just seems a bit unsavory that within type theory, we are already going to a lot of effort to show that our functions compute in bounded time and yet cannot use this information directly.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
