<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:www.nabble.com,2006:forum-2321</id>
	<title>Nabble - Mathematical Logics</title>
	<updated>2008-12-02T14:49:37Z</updated>
	<link rel="self" type="application/atom+xml" href="http://www.nabble.com/Mathematical-Logics-f2321.xml" />
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Mathematical-Logics-f2321.html" />
	<subtitle type="html"></subtitle>
	
<entry>
	<id>tag:www.nabble.com,2006:post-20802870</id>
	<title>Hint management in Modules and Module types.</title>
	<published>2008-12-02T14:49:37Z</published>
	<updated>2008-12-02T14:49:37Z</updated>
	<author>
		<name>M. Scott Doerrie</name>
	</author>
	<content type="html">It appears that hints in module types are only used on modules declared 
&lt;br&gt;to have that module type, but not on modules satisfying that module 
&lt;br&gt;type. &amp;nbsp;Is there a means of creating a module that satisfies a module 
&lt;br&gt;type and has all of its hints without needing to redeclare them?
&lt;br&gt;&lt;br&gt;For example, suppose I have the module type &amp;quot;foo&amp;quot; which contains some 
&lt;br&gt;hints. 
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Module Type foo.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Parameter def1 : &amp;lt;type_spec1&amp;gt;.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Hint Resolve def1.
&lt;br&gt;&amp;nbsp; &amp;nbsp; End foo.
&lt;br&gt;&lt;br&gt;If &amp;quot;bar&amp;quot; is a module that satisfies &amp;quot;foo&amp;quot;, I would like it to have these 
&lt;br&gt;hints as well, as they are more general the implementation. &amp;nbsp;I do not 
&lt;br&gt;know how to do this without loosing access to the implementation of &amp;quot;def1&amp;quot;.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Module bar &amp;lt;: foo.
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Definition def1 := &amp;lt;def1_impl&amp;gt;.
&lt;br&gt;&amp;nbsp; &amp;nbsp; End bar.
&lt;br&gt;&lt;br&gt;The following declaration hides the definition of &amp;quot;def1&amp;quot; but utilizes 
&lt;br&gt;the hints. &amp;nbsp;Because &amp;quot;bar&amp;quot; is a specialization, the hints will be useful 
&lt;br&gt;when proving properties about a &amp;quot;bar&amp;quot; as a &amp;quot;foo&amp;quot;, but the implementation 
&lt;br&gt;is important for proving additional properties about &amp;quot;bar&amp;quot;.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Module baz : foo := bar.
&lt;br&gt;&lt;br&gt;How can I utilize the hints of the Module Type of &amp;quot;foo&amp;quot; with the module 
&lt;br&gt;&amp;quot;bar&amp;quot; without redeclaring them?
&lt;br&gt;&lt;br&gt;Scott Doerrie
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Hint-management-in-Modules-and-Module-types.-tp20802870p20802870.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20795594</id>
	<title>TSI numéro spécial ANALYSE STATIQUE et COMPILATION: extension des envois au 15 février</title>
	<published>2008-12-02T05:42:29Z</published>
	<updated>2008-12-02T05:42:29Z</updated>
	<author>
		<name>Sandrine Blazy-2</name>
	</author>
	<content type="html">&lt;html&gt;&lt;body style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;[Veuillez nous excuser pour les réceptions multiples éventuelles.&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;N'hésitez pas à diffuser largement cet appel.]&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Extension de la date limite de soumission au&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;************** 15 février 2009   ****************&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;----------------------------------------------------------------------------------------&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;            Technique et Science Informatiques (TSI)&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;          Appel à propositions d'articles sur le thème&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;       APPLICATION DES MÉTHODES FORMELLES À &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;         L'ANALYSE STATIQUE ET LA COMPILATION&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;    Coordonateur: Sandrine Blazy (ENSIIE, laboratoire CEDRIC, Évry)&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;               Date limite de soumission: 15 février 2009&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Ce numéro spécial vise à faire le point sur les travaux de recherche et les&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;techniques fondés sur les méthodes formelles améliorant la conception sûre&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;d'analyses statiques et de compilateurs.&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Les méthodes formelles permettent de spécifier des systèmes de plus en plus&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;complexes. Il est désormais envisageable de vérifier formellement un &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;compilateur optimisant et réaliste, ou encore de concevoir des analyses &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;statiques entièrement automatiques. Ceci est rendu possible grâce à des &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;progrès récents accomplis dans différents domaines utilisés par l'analyse &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;statique et la compilation. Citons par exemple la sémantique formelle des &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;langages de programmation, les modèles de mémoire pour la concurrence, &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;l'interprétation abstraite, les formalismes logiques pour la preuve de &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;programmes, la mécanisation du raisonnement dans les assistants à la &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;preuve.&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;L'objectif de ce numéro thématique est de faire le point des travaux  dans le &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;domaine de la conception formelle d'analyses statiques et de compilateurs, en&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;abordant notamment les thèmes suivants:&lt;/font&gt;&lt;/div&gt; &lt;ul&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;interprétation abstraite,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;domaines abstraits,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;analyses de pointeurs,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;détection de bogues,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;analyses fondées sur les types,&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;application des techniques de programmation par contraintes,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;analyse de flot d'information,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;compilateurs pour langages spécialisés,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;compilateurs pour langages synchrones,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;compilateurs pour systèmes hétérogènes distribués,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;compilation à la volée,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;interaction entre compilateur et architecture,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;validation de traducteurs,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;code auto-certifié,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;gestion de la mémoire, &lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;optimisations de programmes,&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt; &lt;ul&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;vérification logique de programmes,&lt;/font&gt;&lt;/li&gt; &lt;li style=&quot;margin: 0.0px 0.0px 0.0px 0.0px&quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;... .&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Soumission.&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;TSI est une revue francophone; les articles doivent être rédigés en&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;français sauf si _aucun_ des auteurs n'est francophone.&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Les articles seront lus par deux lecteurs de la rédaction de TSI et&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;deux membres du comité de lecture.&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Les décisions seront prises sur la base de leurs avis et des discussions&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;qui en découleront.&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Les propositions d'articles devront respecter les règles de présentation et de &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;soumission usuelles de la revue TSI (voir &lt;a href=&quot;http://tsi.e-revues.com/appel.jsp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://tsi.e-revues.com/appel.jsp&lt;/a&gt;). &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Les articles peuvent apparaître dans 3 rubriques : article de recherche &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;(entre 22 et 26 pages), de synthèse (jusqu'à 30 pages) ou d'application &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;(jusqu'à 20 pages). &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;La soumission se fait par envoi de l'article, au format PDF, par courrier&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;électronique à Laurence Sourdillon  - &lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20795594&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;sourdillon@...&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Si vous ne recevez pas de message confirmant sa bonne réception moins d'une&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;semaine après envoi, nous vous demandons de nous contacter directement.&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;Comité de lecture:&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;- Yves Bertot, INRIA Sophia-Antipolis Méditerranée &lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;- Sandrine Blazy, ENSIIE, Évry&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;- Arnaud Gotlieb, INRIA, Rennes - Bretagne Atlantique&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;- Bertrand Jeannet, INRIA Rhône-Alpes, Grenoble&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;- Benjamin Monate, CEA LIST, Saclay&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;- Pierre-Etienne Moreau, INRIA Nancy - Grand Est&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;- Dillon Pariente, Dassault Aviation, Saint-Cloud&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;- Marc Pouzet, Université Paris-Sud, Orsay&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;- Xavier Rival, ENS, Paris&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; &quot;&gt;&lt;font face=&quot;Helvetica&quot; size=&quot;3&quot; style=&quot;font: 12.0px Helvetica&quot;&gt;- Nadia Tawbi, Université Laval, Canada&lt;/font&gt;&lt;/div&gt;&lt;div style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; &quot;&gt;&lt;br&gt;&lt;/div&gt;
&lt;/body&gt;&lt;/html&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/TSI-num%C3%A9ro-sp%C3%A9cial-ANALYSE-STATIQUE-et-COMPILATION%3A-extension-des-envois-au-15-f%C3%A9vrier-tp20795594p20795594.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20776282</id>
	<title>Re: General outer product</title>
	<published>2008-12-01T09:11:39Z</published>
	<updated>2008-12-01T09:11:39Z</updated>
	<author>
		<name>Luke Palmer-2</name>
	</author>
	<content type="html">Thank you, Wendy and Bruno. &amp;nbsp;This discussion has been illuminating.
&lt;br&gt;&lt;br&gt;On Mon, Dec 1, 2008 at 8:58 AM, Bruno Barras &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20776282&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;bruno.barras@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; You probably want the elements of Tuple to be in the max of the types in
&lt;br&gt;&amp;gt; the list (i.e. you want Type_b &amp;gt;= Type_a). So the types must not be
&lt;br&gt;&amp;gt; arguments of the constructors. This is possible since version 8.1 thanks
&lt;br&gt;&amp;gt; to non-uniform parameters:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Definition hd l := match l with Nil =&amp;gt; Empty_set | Cons x _ =&amp;gt; x end.
&lt;br&gt;&amp;gt; Definition tl l := match l with Nil =&amp;gt; TNil | Cons _ l' =&amp;gt; l' end.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Inductive Tuple (L:List Type) :=
&lt;br&gt;&amp;gt; | TNil : L=Nil -&amp;gt; Tuple L
&lt;br&gt;&amp;gt; | TCons : forall (x:hd L) (xs:Tuple (tl L)), Tuple L.
&lt;br&gt;&amp;gt; (* note the trick with Empty_set to rule out L=Nil in TCons *)
&lt;/div&gt;&lt;br&gt;Hmm, yes, I seem to recall running into similar troubles when I have
&lt;br&gt;quantified over types in constructors on other occasions.
&lt;br&gt;&lt;br&gt;&amp;gt; PS: another way to proceed is to define Tuple as a recursive function
&lt;br&gt;&amp;gt; instead of an inductive type:
&lt;br&gt;&amp;gt; Fixpoint Tuple (L:List Type) :=
&lt;br&gt;&amp;gt; match L with
&lt;br&gt;&amp;gt; | Nil =&amp;gt; Empty_set
&lt;br&gt;&amp;gt; | Cons t Nil =&amp;gt; t
&lt;br&gt;&amp;gt; | Cons t L' =&amp;gt; t * Tuple L'
&lt;br&gt;&amp;gt; end.
&lt;br&gt;&lt;br&gt;Heh. &amp;nbsp;My programmer-shaped mind still doesn't think of writing a
&lt;br&gt;function to work on types. &amp;nbsp;Thanks for the suggestion :-)
&lt;br&gt;&lt;br&gt;Luke
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/General-outer-product-tp20761457p20776282.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20775414</id>
	<title>Re: General outer product</title>
	<published>2008-12-01T07:58:31Z</published>
	<updated>2008-12-01T07:58:31Z</updated>
	<author>
		<name>Bruno Barras</name>
	</author>
	<content type="html">&lt;br&gt;Hi Wendy and Luke,
&lt;br&gt;&lt;br&gt;Wendy Verbruggen wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; In your case I think the problem is in the way you've used your
&lt;br&gt;&amp;gt; definition of &amp;quot;map&amp;quot;. Below I have given a minimal definition that causes
&lt;br&gt;&amp;gt; the same problem, marked each occurrence of &amp;quot;Type&amp;quot; with a number to
&lt;br&gt;&amp;gt; distinguish them and noted the constraints introduced at various points
&lt;br&gt;&amp;gt; (these are mostly to give you a feel for how these constraints work, the
&lt;br&gt;&amp;gt; only constraint involved in the inconsistency is at the very end).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ---------------------------------------------
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Inductive List (A : Type(*1*)) : Type(*2*) :=
&lt;br&gt;&amp;gt; &amp;nbsp;| Nil : A -&amp;gt; List A
&lt;br&gt;&amp;gt; &amp;nbsp;| Cons : A -&amp;gt; List A -&amp;gt; List A.
&lt;br&gt;&amp;gt; (* This introduces the constraint Type1 &amp;lt;= Type2 *)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Variable map : forall (A : Type(*3*)) (B : Type(*4*)), (A -&amp;gt; B) -&amp;gt; List
&lt;br&gt;&amp;gt; A -&amp;gt; List B.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Variable ts : List Type(*5*).
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Check map List ts.
&lt;br&gt;&amp;gt; (* Universe inconsistency! *)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ---------------------------------------------
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In your definition of cross you use the statement &amp;quot;map List ts&amp;quot;, which
&lt;br&gt;&amp;gt; instantiates the arguments of map as follows:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; f : a -&amp;gt; b is instantiated with List : Type1 -&amp;gt; Type2, so a = Type1 and
&lt;br&gt;&amp;gt; b = Type2. This means that
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Type1 : Type3 -- constraint Type1 &amp;lt; Type3
&lt;br&gt;&amp;gt; Type2 : Type4 -- constraint Type2 &amp;lt; Type4
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Your problem lies in the instantiation of the next argument to map: &amp;quot;l :
&lt;br&gt;&amp;gt; List a&amp;quot;; we have just established that a = Type1, so l : List Type1..
&lt;br&gt;&amp;gt; *but* the first argument to List must have Type1 and we get Type1 :
&lt;br&gt;&amp;gt; Type1 which introduces the constraint Type1 &amp;lt; Type1... obviously an
&lt;br&gt;&amp;gt; inconsistency.
&lt;/div&gt;&lt;br&gt;This explanation is correct, but (1) there is a turnaround and (2)
&lt;br&gt;Luke's definition raises more problems.
&lt;br&gt;&lt;br&gt;Regarding (1):
&lt;br&gt;Check map (fun X:Type =&amp;gt; List X) ts.
&lt;br&gt;does typecheck, because fully applied inductive types are
&lt;br&gt;sort-polymorphic (so in this example, map is instanciated for a level of
&lt;br&gt;List higher than the (fresh) level of X), while partially applied
&lt;br&gt;inductive types are monomorphic (then Wendy's explanation apply).
&lt;br&gt;&lt;br&gt;&amp;gt; I always find universe inconsistencies slightly mind-boggling.. so if my
&lt;br&gt;&amp;gt; explanations doesn't make a lot of sense I apologize! If you have any
&lt;br&gt;&amp;gt; questions let me know..
&lt;br&gt;&lt;br&gt;Agreed. We still look for a way to display reasonable error messages in
&lt;br&gt;case of universe inconsistency.
&lt;br&gt;&lt;br&gt;One more tip: avoid the multiplication of Type levels by using
&lt;br&gt;definitions to fix the levels you need (Definition Type_a := Type.
&lt;br&gt;Definition Type_b := Type. Definition Type_x : Type_a (*x&amp;lt;a*) := Type.),
&lt;br&gt;and then do not use Type anymore (this implies not to rely on type
&lt;br&gt;inference, but to explicitely give the type of binders and implicit
&lt;br&gt;arguments of Nil and Cons).
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On 30 Nov 2008, at 19:51, Luke Palmer wrote:
&lt;br&gt;&amp;gt;&amp;gt; Set Implicit Arguments.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; (* Nothing special here, just a list type *)
&lt;br&gt;&amp;gt;&amp;gt; Inductive List a : Type :=
&lt;br&gt;&amp;gt;&amp;gt; | Nil : List a
&lt;br&gt;&amp;gt;&amp;gt; | Cons : a -&amp;gt; List a -&amp;gt; List a.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Fixpoint map a b (f : a-&amp;gt;b) (list : List a) : List b :=
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;match list with
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;| Nil =&amp;gt; Nil _
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;| Cons x xs =&amp;gt; Cons (f x) (map f xs)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;end.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Fixpoint append a (list ys : List a) : List a :=
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;match list with
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;| Nil =&amp;gt; ys
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;| Cons x xs =&amp;gt; Cons x (append xs ys)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;end.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Fixpoint concat a (list : List (List a)) : List a :=
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;match list with
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;| Nil =&amp;gt; Nil _
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;| Cons xs xss =&amp;gt; append xs (concat xss)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;end.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Definition uncurry : forall a b c, (a -&amp;gt; b -&amp;gt; c) -&amp;gt; (a*b -&amp;gt; c)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp;:= fun _ _ _ f t =&amp;gt; let (x,y) := t in f x y.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; (* A heterogeneous list *)
&lt;br&gt;&amp;gt;&amp;gt; Inductive Tuple : List Type -&amp;gt; Type :=
&lt;br&gt;&amp;gt;&amp;gt; | TNil : Tuple (Nil _)
&lt;br&gt;&amp;gt;&amp;gt; | TCons : forall t ts (x:t) (xs:Tuple ts), Tuple (Cons t ts).
&lt;/div&gt;&lt;br&gt;I think there is a problem here. Note that the first two arguments of
&lt;br&gt;TCons are t:Type and ts:List Type.
&lt;br&gt;For consistency reasons, inductive types (in Type) have to be
&lt;br&gt;predicative, hence its level must be above the level of each argument of
&lt;br&gt;constructor. So the level of Tuple is strictly greater than the level of
&lt;br&gt;the types appearing in the list of types. Quite counter-intuitive if you
&lt;br&gt;think your tuples live in a sort below the sort of List.
&lt;br&gt;&lt;br&gt;I mean:
&lt;br&gt;Inductive Tuple : List Type_a -&amp;gt; Type_b :=
&lt;br&gt;| TNil : Tuple (Nil _)
&lt;br&gt;| TCons : forall (t:Type_c) ts (x:t) (xs:Tuple ts), Tuple (Cons t ts).
&lt;br&gt;implies (among others)
&lt;br&gt;Type_a = Type_c &amp;lt; Type_b
&lt;br&gt;&lt;br&gt;You probably want the elements of Tuple to be in the max of the types in
&lt;br&gt;the list (i.e. you want Type_b &amp;gt;= Type_a). So the types must not be
&lt;br&gt;arguments of the constructors. This is possible since version 8.1 thanks
&lt;br&gt;to non-uniform parameters:
&lt;br&gt;&lt;br&gt;Definition hd l := match l with Nil =&amp;gt; Empty_set | Cons x _ =&amp;gt; x end.
&lt;br&gt;Definition tl l := match l with Nil =&amp;gt; TNil | Cons _ l' =&amp;gt; l' end.
&lt;br&gt;&lt;br&gt;Inductive Tuple (L:List Type) :=
&lt;br&gt;| TNil : L=Nil -&amp;gt; Tuple L
&lt;br&gt;| TCons : forall (x:hd L) (xs:Tuple (tl L)), Tuple L.
&lt;br&gt;(* note the trick with Empty_set to rule out L=Nil in TCons *)
&lt;br&gt;&lt;br&gt;Here TCons has no type arguments, and we have the expected constraint:
&lt;br&gt;Type_a &amp;lt;= Type_b. Now you're in better shape to go through your proof.
&lt;br&gt;It might be useful to define auxiliary constructors and eliminators
&lt;br&gt;(TNil', TCons' and Tuple_rect') to match the type of the original Tuple
&lt;br&gt;definition.
&lt;br&gt;&lt;br&gt;I did not check if the definitions below go through, but you probably
&lt;br&gt;need to eta-expand some functions (map, as shown by Wendy, and maybe
&lt;br&gt;uncurry) in order to recover sort-polymorphism and avoid non-desired
&lt;br&gt;constraints.
&lt;br&gt;&lt;br&gt;Hope this helps.
&lt;br&gt;Bruno Barras.
&lt;br&gt;&lt;br&gt;PS: another way to proceed is to define Tuple as a recursive function
&lt;br&gt;instead of an inductive type:
&lt;br&gt;Fixpoint Tuple (L:List Type) :=
&lt;br&gt;match L with
&lt;br&gt;| Nil =&amp;gt; Empty_set
&lt;br&gt;| Cons t Nil =&amp;gt; t
&lt;br&gt;| Cons t L' =&amp;gt; t * Tuple L'
&lt;br&gt;end.
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/General-outer-product-tp20761457p20775414.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20769682</id>
	<title>Re: General outer product</title>
	<published>2008-12-01T02:49:31Z</published>
	<updated>2008-12-01T02:49:31Z</updated>
	<author>
		<name>Wendy Verbruggen</name>
	</author>
	<content type="html">Hi Luke,
&lt;br&gt;&lt;br&gt;I had a similar problem a while back, and these universe &amp;nbsp;
&lt;br&gt;inconsistencies are indeed tricky to solve!
&lt;br&gt;&lt;br&gt;The best way to go about it is to use the command &amp;quot;Set Printing &amp;nbsp;
&lt;br&gt;Universes&amp;quot; at the start of your file, and then put &amp;quot;Print Universes.&amp;quot; &amp;nbsp;
&lt;br&gt;anywhere in the file to show you the universe constraints at that &amp;nbsp;
&lt;br&gt;point. That should give you a feel for when certain constraints are &amp;nbsp;
&lt;br&gt;introduced and what might cause the problem. (Obviously you can't put &amp;nbsp;
&lt;br&gt;a Print Universes *after* the inconsistency, so it's not that straight- 
&lt;br&gt;forward unfortunately..). Something else that might help is to try and &amp;nbsp;
&lt;br&gt;find a minimal example that still introduces the inconsistency and &amp;nbsp;
&lt;br&gt;work with that - starting coqide with the option &amp;quot;-nois&amp;quot; will get rid &amp;nbsp;
&lt;br&gt;of a lot &amp;quot;outside&amp;quot; constraints and will let you focus on the ones your &amp;nbsp;
&lt;br&gt;interested in.
&lt;br&gt;&lt;br&gt;In your case I think the problem is in the way you've used your &amp;nbsp;
&lt;br&gt;definition of &amp;quot;map&amp;quot;. Below I have given a minimal definition that &amp;nbsp;
&lt;br&gt;causes the same problem, marked each occurrence of &amp;quot;Type&amp;quot; with a &amp;nbsp;
&lt;br&gt;number to distinguish them and noted the constraints introduced at &amp;nbsp;
&lt;br&gt;various points (these are mostly to give you a feel for how these &amp;nbsp;
&lt;br&gt;constraints work, the only constraint involved in the inconsistency is &amp;nbsp;
&lt;br&gt;at the very end).
&lt;br&gt;&lt;br&gt;---------------------------------------------
&lt;br&gt;&lt;br&gt;Inductive List (A : Type(*1*)) : Type(*2*) :=
&lt;br&gt;&amp;nbsp; | Nil : A -&amp;gt; List A
&lt;br&gt;&amp;nbsp; | Cons : A -&amp;gt; List A -&amp;gt; List A.
&lt;br&gt;(* This introduces the constraint Type1 &amp;lt;= Type2 *)
&lt;br&gt;&lt;br&gt;Variable map : forall (A : Type(*3*)) (B : Type(*4*)), (A -&amp;gt; B) -&amp;gt; &amp;nbsp;
&lt;br&gt;List A -&amp;gt; List B.
&lt;br&gt;&lt;br&gt;Variable ts : List Type(*5*).
&lt;br&gt;&lt;br&gt;Check map List ts.
&lt;br&gt;(* Universe inconsistency! *)
&lt;br&gt;&lt;br&gt;---------------------------------------------
&lt;br&gt;&lt;br&gt;In your definition of cross you use the statement &amp;quot;map List ts&amp;quot;, which &amp;nbsp;
&lt;br&gt;instantiates the arguments of map as follows:
&lt;br&gt;&lt;br&gt;f : a -&amp;gt; b is instantiated with List : Type1 -&amp;gt; Type2, so a = Type1 &amp;nbsp;
&lt;br&gt;and b = Type2. This means that
&lt;br&gt;&lt;br&gt;Type1 : Type3 -- constraint Type1 &amp;lt; Type3
&lt;br&gt;Type2 : Type4 -- constraint Type2 &amp;lt; Type4
&lt;br&gt;&lt;br&gt;Your problem lies in the instantiation of the next argument to map: &amp;nbsp;
&lt;br&gt;&amp;quot;l : List a&amp;quot;; we have just established that a = Type1, so l : List &amp;nbsp;
&lt;br&gt;Type1.. *but* the first argument to List must have Type1 and we get &amp;nbsp;
&lt;br&gt;Type1 : Type1 which introduces the constraint Type1 &amp;lt; Type1... &amp;nbsp;
&lt;br&gt;obviously an inconsistency.
&lt;br&gt;&lt;br&gt;I always find universe inconsistencies slightly mind-boggling.. so if &amp;nbsp;
&lt;br&gt;my explanations doesn't make a lot of sense I apologize! If you have &amp;nbsp;
&lt;br&gt;any questions let me know..
&lt;br&gt;&lt;br&gt;Good luck!
&lt;br&gt;&lt;br&gt;Wendy
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;On 30 Nov 2008, at 19:51, Luke Palmer wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Following a discussion on haskell-cafe, I decided I would try to write
&lt;br&gt;&amp;gt; a function which could take the outer product of a heterogeneous list
&lt;br&gt;&amp;gt; of lists. &amp;nbsp;When I finally wrote it, I got a &amp;quot;universe inconsistency&amp;quot;
&lt;br&gt;&amp;gt; error. &amp;nbsp;I understand that maybe this is not possible as I have phrased
&lt;br&gt;&amp;gt; it due to predicativity constraints or something, but I have no idea
&lt;br&gt;&amp;gt; why. &amp;nbsp;Could someone explain what is going on here?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks!
&lt;br&gt;&amp;gt; Luke
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Set Implicit Arguments.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; (* Nothing special here, just a list type *)
&lt;br&gt;&amp;gt; Inductive List a : Type :=
&lt;br&gt;&amp;gt; | Nil : List a
&lt;br&gt;&amp;gt; | Cons : a -&amp;gt; List a -&amp;gt; List a.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Fixpoint map a b (f : a-&amp;gt;b) (list : List a) : List b :=
&lt;br&gt;&amp;gt; &amp;nbsp;match list with
&lt;br&gt;&amp;gt; &amp;nbsp;| Nil =&amp;gt; Nil _
&lt;br&gt;&amp;gt; &amp;nbsp;| Cons x xs =&amp;gt; Cons (f x) (map f xs)
&lt;br&gt;&amp;gt; &amp;nbsp;end.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Fixpoint append a (list ys : List a) : List a :=
&lt;br&gt;&amp;gt; &amp;nbsp;match list with
&lt;br&gt;&amp;gt; &amp;nbsp;| Nil =&amp;gt; ys
&lt;br&gt;&amp;gt; &amp;nbsp;| Cons x xs =&amp;gt; Cons x (append xs ys)
&lt;br&gt;&amp;gt; &amp;nbsp;end.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Fixpoint concat a (list : List (List a)) : List a :=
&lt;br&gt;&amp;gt; &amp;nbsp;match list with
&lt;br&gt;&amp;gt; &amp;nbsp;| Nil =&amp;gt; Nil _
&lt;br&gt;&amp;gt; &amp;nbsp;| Cons xs xss =&amp;gt; append xs (concat xss)
&lt;br&gt;&amp;gt; &amp;nbsp;end.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Definition uncurry : forall a b c, (a -&amp;gt; b -&amp;gt; c) -&amp;gt; (a*b -&amp;gt; c)
&lt;br&gt;&amp;gt; &amp;nbsp;:= fun _ _ _ f t =&amp;gt; let (x,y) := t in f x y.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; (* A heterogeneous list *)
&lt;br&gt;&amp;gt; Inductive Tuple : List Type -&amp;gt; Type :=
&lt;br&gt;&amp;gt; | TNil : Tuple (Nil _)
&lt;br&gt;&amp;gt; | TCons : forall t ts (x:t) (xs:Tuple ts), Tuple (Cons t ts).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Definition cross2 : forall a b, List a -&amp;gt; List b -&amp;gt; List (a * b) :=
&lt;br&gt;&amp;gt; &amp;nbsp;fun _ _ xs ys =&amp;gt; concat (map (fun x =&amp;gt; map (fun y =&amp;gt; (x,y)) ys) xs).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Definition cross : forall ts, Tuple (map List ts) -&amp;gt; List (Tuple ts).
&lt;br&gt;&amp;gt; intros.
&lt;br&gt;&amp;gt; induction ts.
&lt;br&gt;&amp;gt; &amp;nbsp;exact (Cons TNil (Nil _)).
&lt;br&gt;&amp;gt; &amp;nbsp;simpl in X.
&lt;br&gt;&amp;gt; &amp;nbsp; inversion X.
&lt;br&gt;&amp;gt; &amp;nbsp; apply IHts in xs.
&lt;br&gt;&amp;gt; &amp;nbsp; exact (map (uncurry (TCons (t:=_) (ts:=_))) (cross2 x xs)).
&lt;br&gt;&amp;gt; Defined.
&lt;br&gt;&amp;gt; (* Oh no, universe inconsistency! *)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --------------------------------------------------------
&lt;br&gt;&amp;gt; Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;&amp;gt; Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;&amp;gt; Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;/div&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/General-outer-product-tp20761457p20769682.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20761457</id>
	<title>General outer product</title>
	<published>2008-11-30T11:51:59Z</published>
	<updated>2008-11-30T11:51:59Z</updated>
	<author>
		<name>Luke Palmer-2</name>
	</author>
	<content type="html">Following a discussion on haskell-cafe, I decided I would try to write
&lt;br&gt;a function which could take the outer product of a heterogeneous list
&lt;br&gt;of lists. &amp;nbsp;When I finally wrote it, I got a &amp;quot;universe inconsistency&amp;quot;
&lt;br&gt;error. &amp;nbsp;I understand that maybe this is not possible as I have phrased
&lt;br&gt;it due to predicativity constraints or something, but I have no idea
&lt;br&gt;why. &amp;nbsp;Could someone explain what is going on here?
&lt;br&gt;&lt;br&gt;Thanks!
&lt;br&gt;Luke
&lt;br&gt;&lt;br&gt;Set Implicit Arguments.
&lt;br&gt;&lt;br&gt;(* Nothing special here, just a list type *)
&lt;br&gt;Inductive List a : Type :=
&lt;br&gt;| Nil : List a
&lt;br&gt;| Cons : a -&amp;gt; List a -&amp;gt; List a.
&lt;br&gt;&lt;br&gt;Fixpoint map a b (f : a-&amp;gt;b) (list : List a) : List b :=
&lt;br&gt;&amp;nbsp; match list with
&lt;br&gt;&amp;nbsp; | Nil =&amp;gt; Nil _
&lt;br&gt;&amp;nbsp; | Cons x xs =&amp;gt; Cons (f x) (map f xs)
&lt;br&gt;&amp;nbsp; end.
&lt;br&gt;&lt;br&gt;Fixpoint append a (list ys : List a) : List a :=
&lt;br&gt;&amp;nbsp; match list with
&lt;br&gt;&amp;nbsp; | Nil =&amp;gt; ys
&lt;br&gt;&amp;nbsp; | Cons x xs =&amp;gt; Cons x (append xs ys)
&lt;br&gt;&amp;nbsp; end.
&lt;br&gt;&lt;br&gt;Fixpoint concat a (list : List (List a)) : List a :=
&lt;br&gt;&amp;nbsp; match list with
&lt;br&gt;&amp;nbsp; | Nil =&amp;gt; Nil _
&lt;br&gt;&amp;nbsp; | Cons xs xss =&amp;gt; append xs (concat xss)
&lt;br&gt;&amp;nbsp; end.
&lt;br&gt;&lt;br&gt;Definition uncurry : forall a b c, (a -&amp;gt; b -&amp;gt; c) -&amp;gt; (a*b -&amp;gt; c)
&lt;br&gt;&amp;nbsp; := fun _ _ _ f t =&amp;gt; let (x,y) := t in f x y.
&lt;br&gt;&lt;br&gt;&lt;br&gt;(* A heterogeneous list *)
&lt;br&gt;Inductive Tuple : List Type -&amp;gt; Type :=
&lt;br&gt;| TNil : Tuple (Nil _)
&lt;br&gt;| TCons : forall t ts (x:t) (xs:Tuple ts), Tuple (Cons t ts).
&lt;br&gt;&lt;br&gt;Definition cross2 : forall a b, List a -&amp;gt; List b -&amp;gt; List (a * b) :=
&lt;br&gt;&amp;nbsp; fun _ _ xs ys =&amp;gt; concat (map (fun x =&amp;gt; map (fun y =&amp;gt; (x,y)) ys) xs).
&lt;br&gt;&lt;br&gt;Definition cross : forall ts, Tuple (map List ts) -&amp;gt; List (Tuple ts).
&lt;br&gt;&amp;nbsp;intros.
&lt;br&gt;&amp;nbsp;induction ts.
&lt;br&gt;&amp;nbsp; exact (Cons TNil (Nil _)).
&lt;br&gt;&amp;nbsp; simpl in X.
&lt;br&gt;&amp;nbsp; &amp;nbsp;inversion X.
&lt;br&gt;&amp;nbsp; &amp;nbsp;apply IHts in xs.
&lt;br&gt;&amp;nbsp; &amp;nbsp;exact (map (uncurry (TCons (t:=_) (ts:=_))) (cross2 x xs)).
&lt;br&gt;Defined.
&lt;br&gt;(* Oh no, universe inconsistency! *)
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/General-outer-product-tp20761457p20761457.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20751700</id>
	<title>Re: Russell's paradox</title>
	<published>2008-11-29T13:27:39Z</published>
	<updated>2008-11-29T13:27:39Z</updated>
	<author>
		<name>Thorsten Altenkirch</name>
	</author>
	<content type="html">Hi Benjamin,
&lt;br&gt;&lt;br&gt;&amp;gt; - One does not need K nore dependent inversion for the matter.
&lt;br&gt;&amp;gt; Just do &amp;quot;case eq&amp;quot; where eq is your equality proof.
&lt;br&gt;&lt;br&gt;Thank you. I tried &amp;quot;case eq&amp;quot; earlier when I had an &amp;quot;unsolvable 2nd &amp;nbsp;
&lt;br&gt;order unification problem&amp;quot; but then I forgot to try it again when I &amp;nbsp;
&lt;br&gt;avoided this by generalizing the problem.
&lt;br&gt;&lt;br&gt;&amp;gt; - You can simplify your development by noticing right away
&lt;br&gt;&amp;gt; that all trees are &amp;quot;good&amp;quot;.
&lt;br&gt;&lt;br&gt;Good point, but I think this is a different proof. 	
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Thorsten
&lt;br&gt;&lt;br&gt;P.S. See you next Friday, I hope.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Benjamin
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; (** Mathematics for Computer Scientists 2 (G52MC2)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;Thorsten Altenkirch
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;L16 (Russell's paradox)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;The material in this file contains coq proofs
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;which can be read and animated with coqide or xemacs+proofgeneral.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; **)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Section russell.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Set Implicit Arguments.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Variable set : Set.
&lt;br&gt;&amp;gt; Variable name : Set -&amp;gt; set.
&lt;br&gt;&amp;gt; Variable El : set -&amp;gt; Set.
&lt;br&gt;&amp;gt; Axiom reflect : forall A:Set,A = El (name A).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Inductive Tree : Set :=
&lt;br&gt;&amp;gt; &amp;nbsp;span : forall a : set, (El a -&amp;gt; Tree) -&amp;gt; Tree.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Definition elem (t : Tree) (u : Tree) : Prop
&lt;br&gt;&amp;gt; &amp;nbsp;:= match u with
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; | span A us =&amp;gt; exists a : El A , t = us a
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; end.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Definition Bad (t : Tree) : Prop
&lt;br&gt;&amp;gt; &amp;nbsp;:= elem t t.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Lemma is_good : &amp;nbsp;forall t, ~Bad t.
&lt;br&gt;&amp;gt; induction t; intros [x ex].
&lt;br&gt;&amp;gt; unfold not in H; apply (H x).
&lt;br&gt;&amp;gt; rewrite &amp;lt;- ex.
&lt;br&gt;&amp;gt; exists x; trivial.
&lt;br&gt;&amp;gt; Qed.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Definition tree := name Tree.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Definition getTreeAux : forall A : Set, Tree = A -&amp;gt; A -&amp;gt; Tree.
&lt;br&gt;&amp;gt; intros A e a; rewrite e; exact a.
&lt;br&gt;&amp;gt; Defined.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Definition getAuxTree &amp;nbsp;: forall A : Set, Tree = A -&amp;gt; Tree -&amp;gt; A.
&lt;br&gt;&amp;gt; intros A e a; rewrite &amp;lt;- e; exact a.
&lt;br&gt;&amp;gt; Defined.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Definition getTree : El tree -&amp;gt; Tree :=
&lt;br&gt;&amp;gt; fun e =&amp;gt; (getTreeAux (reflect _ ) e).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Definition Russell := (span getTree).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Lemma is_bad : &amp;nbsp;(Bad Russell).
&lt;br&gt;&amp;gt; exists (getAuxTree &amp;nbsp;(reflect _) Russell).
&lt;br&gt;&amp;gt; unfold getTree.
&lt;br&gt;&amp;gt; case (reflect Tree).
&lt;br&gt;&amp;gt; trivial.
&lt;br&gt;&amp;gt; Qed.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Definition paradox : False := (is_good _ is_bad).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Le 29 nov. 08 &amp;nbsp;15:03, Thorsten Altenkirch a crit :
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I suspect I need K (or I am just too stupid). Can anybody conform &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; either? I.e. can I prove this using Coq.Logic.Eqdep or without?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I am just too stupid. But so is Coq. I just need to use dependent &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; inversion.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Actually I realized that I can prove it with the standard &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; eliminator for equality:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; eq_elim : forall (A:Set)(x:A)(P:forall y:A, (x=y)-&amp;gt;Set)
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (m:P x (refl_equal x))
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (y:A)(p:x=y),P y p.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; This is not automatically derived by Coq (why not?) but it can be &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; proven using dependent inversion. It seems that you always get in &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; trouble if you try to use dependent types in Coq.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I attach my completed Russell derivation.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt;&amp;gt; Thorsten
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; This message has been checked for viruses but the contents of an &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; attachment
&lt;br&gt;&amp;gt;&amp;gt; may still contain software viruses, which could damage your &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; computer system:
&lt;br&gt;&amp;gt;&amp;gt; you are advised to perform your own checks. Email communications &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; with the
&lt;br&gt;&amp;gt;&amp;gt; University of Nottingham may be monitored as permitted by UK &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; legislation.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;lt;l16-crib.v&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --------------------------------------------------------
&lt;br&gt;&amp;gt; Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;&amp;gt; Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;&amp;gt; Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;This message has been checked for viruses but the contents of an attachment
&lt;br&gt;may still contain software viruses, which could damage your computer system:
&lt;br&gt;you are advised to perform your own checks. Email communications with the
&lt;br&gt;University of Nottingham may be monitored as permitted by UK legislation.
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Russell%27s-paradox-tp20737105p20751700.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20751149</id>
	<title>Re: Russell's paradox</title>
	<published>2008-11-29T12:36:16Z</published>
	<updated>2008-11-29T12:36:16Z</updated>
	<author>
		<name>Benjamin Werner</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;Nice version of Russell's paradox.
&lt;br&gt;&lt;br&gt;Two remarks :
&lt;br&gt;&lt;br&gt;- One does not need K nore dependent inversion for the matter.
&lt;br&gt;Just do &amp;quot;case eq&amp;quot; where eq is your equality proof.
&lt;br&gt;&lt;br&gt;- You can simplify your development by noticing right away
&lt;br&gt;that all trees are &amp;quot;good&amp;quot;.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;&lt;br&gt;&lt;br&gt;Benjamin
&lt;br&gt;&lt;br&gt;&lt;br&gt;(** Mathematics for Computer Scientists 2 (G52MC2)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Thorsten Altenkirch
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;L16 (Russell's paradox)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;The material in this file contains coq proofs
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;which can be read and animated with coqide or xemacs+proofgeneral.
&lt;br&gt;&lt;br&gt;**)
&lt;br&gt;&lt;br&gt;Section russell.
&lt;br&gt;&lt;br&gt;Set Implicit Arguments.
&lt;br&gt;&lt;br&gt;Variable set : Set.
&lt;br&gt;Variable name : Set -&amp;gt; set.
&lt;br&gt;Variable El : set -&amp;gt; Set.
&lt;br&gt;Axiom reflect : forall A:Set,A = El (name A).
&lt;br&gt;&lt;br&gt;Inductive Tree : Set :=
&lt;br&gt;&amp;nbsp; &amp;nbsp;span : forall a : set, (El a -&amp;gt; Tree) -&amp;gt; Tree.
&lt;br&gt;&lt;br&gt;Definition elem (t : Tree) (u : Tree) : Prop
&lt;br&gt;&amp;nbsp; &amp;nbsp;:= match u with
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; | span A us =&amp;gt; exists a : El A , t = us a
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; end.
&lt;br&gt;&lt;br&gt;Definition Bad (t : Tree) : Prop
&lt;br&gt;&amp;nbsp; &amp;nbsp;:= elem t t.
&lt;br&gt;&lt;br&gt;Lemma is_good : &amp;nbsp;forall t, ~Bad t.
&lt;br&gt;induction t; intros [x ex].
&lt;br&gt;unfold not in H; apply (H x).
&lt;br&gt;rewrite &amp;lt;- ex.
&lt;br&gt;exists x; trivial.
&lt;br&gt;Qed.
&lt;br&gt;&lt;br&gt;Definition tree := name Tree.
&lt;br&gt;&lt;br&gt;Definition getTreeAux : forall A : Set, Tree = A -&amp;gt; A -&amp;gt; Tree.
&lt;br&gt;intros A e a; rewrite e; exact a.
&lt;br&gt;Defined.
&lt;br&gt;&lt;br&gt;Definition getAuxTree &amp;nbsp;: forall A : Set, Tree = A -&amp;gt; Tree -&amp;gt; A.
&lt;br&gt;intros A e a; rewrite &amp;lt;- e; exact a.
&lt;br&gt;Defined.
&lt;br&gt;&lt;br&gt;Definition getTree : El tree -&amp;gt; Tree :=
&lt;br&gt;&amp;nbsp; fun e =&amp;gt; (getTreeAux (reflect _ ) e).
&lt;br&gt;&lt;br&gt;Definition Russell := (span getTree).
&lt;br&gt;&lt;br&gt;Lemma is_bad : &amp;nbsp;(Bad Russell).
&lt;br&gt;exists (getAuxTree &amp;nbsp;(reflect _) Russell).
&lt;br&gt;unfold getTree.
&lt;br&gt;case (reflect Tree).
&lt;br&gt;trivial.
&lt;br&gt;Qed.
&lt;br&gt;&lt;br&gt;Definition paradox : False := (is_good _ is_bad).
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Le 29 nov. 08 à 15:03, Thorsten Altenkirch a écrit :
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; I suspect I need K (or I am just too stupid). Can anybody conform &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; either? I.e. can I prove this using Coq.Logic.Eqdep or without?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I am just too stupid. But so is Coq. I just need to use dependent &amp;nbsp;
&lt;br&gt;&amp;gt; inversion.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Actually I realized that I can prove it with the standard eliminator &amp;nbsp;
&lt;br&gt;&amp;gt; for equality:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; eq_elim : forall (A:Set)(x:A)(P:forall y:A, (x=y)-&amp;gt;Set)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(m:P x (refl_equal x))
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(y:A)(p:x=y),P y p.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This is not automatically derived by Coq (why not?) but it can be &amp;nbsp;
&lt;br&gt;&amp;gt; proven using dependent inversion. It seems that you always get in &amp;nbsp;
&lt;br&gt;&amp;gt; trouble if you try to use dependent types in Coq.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I attach my completed Russell derivation.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cheers,
&lt;br&gt;&amp;gt; Thorsten
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; This message has been checked for viruses but the contents of an &amp;nbsp;
&lt;br&gt;&amp;gt; attachment
&lt;br&gt;&amp;gt; may still contain software viruses, which could damage your computer &amp;nbsp;
&lt;br&gt;&amp;gt; system:
&lt;br&gt;&amp;gt; you are advised to perform your own checks. Email communications &amp;nbsp;
&lt;br&gt;&amp;gt; with the
&lt;br&gt;&amp;gt; University of Nottingham may be monitored as permitted by UK &amp;nbsp;
&lt;br&gt;&amp;gt; legislation.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;l16-crib.v&amp;gt;
&lt;/div&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Russell%27s-paradox-tp20737105p20751149.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20748051</id>
	<title>Re: Russell's paradox</title>
	<published>2008-11-29T07:18:46Z</published>
	<updated>2008-11-29T07:18:46Z</updated>
	<author>
		<name>Pierre Letouzey-3</name>
	</author>
	<content type="html">On Sat, Nov 29, 2008 at 02:36:05PM +0000, Robin Green wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Sat, 29 Nov 2008 14:03:06 +0000
&lt;br&gt;&amp;gt; Thorsten Altenkirch &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20748051&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;txa@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; I suspect I need K (or I am just too stupid). Can anybody conform &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; &amp;gt; either? I.e. can I prove this using Coq.Logic.Eqdep or without?
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; I am just too stupid. But so is Coq. I just need to use dependent &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; inversion.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Actually I realized that I can prove it with the standard eliminator &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; for equality:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; eq_elim : forall (A:Set)(x:A)(P:forall y:A, (x=y)-&amp;gt;Set)
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(m:P x (refl_equal x))
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(y:A)(p:x=y),P y p.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; This is not automatically derived by Coq (why not?) but it can be &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; proven using dependent inversion.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Doesn't the generated proof rely on K or an equivalent, though?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; On that note, I think the coq documentation should be updated to warn
&lt;br&gt;&amp;gt; when using certain tactics can introduce axioms.
&lt;/div&gt;&lt;br&gt;&lt;br&gt;Concerning the dependent version of the elimination principle for eq
&lt;br&gt;(or more generally for inductive types in Prop), it's true that Coq
&lt;br&gt;doesn't provide it by default. Probably because it has been considered
&lt;br&gt;that the non-dependent version is enough for most usages and quite
&lt;br&gt;simplier. But you can nonetheless obtain the full version
&lt;br&gt;automatically:
&lt;br&gt;&lt;br&gt;Scheme eq_elim := Induction for eq Sort Type.
&lt;br&gt;&lt;br&gt;Check eq_elim.
&lt;br&gt;eq_elim
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;: forall (A : Type) (x : A) (P : forall a : A, x = a -&amp;gt; Type),
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;P x (refl_equal x) -&amp;gt; forall (y : A) (e : x = y), P y e
&lt;br&gt;&lt;br&gt;Reciprocally, the &amp;quot;Scheme ... := Minimality for ...&amp;quot; command allows
&lt;br&gt;one to obtain the non-dependent version of the elimination principle.
&lt;br&gt;This might be interesting when Coq has decided that the full version
&lt;br&gt;is best (that is, for inductive types in Set or Type).
&lt;br&gt;&lt;br&gt;On the topic of axioms, a &amp;quot;Print eq_elim&amp;quot; after the above command
&lt;br&gt;shows clearly that no axiom is used in the proof. This can also be
&lt;br&gt;confirmed by the new command &amp;quot;Print Assumption eq_elim&amp;quot; whose aim is
&lt;br&gt;to recursively retreive the axiom(s) a particular object is using.
&lt;br&gt;Concerning standard tactics, apart obviously from &amp;quot;admit&amp;quot;, I can see
&lt;br&gt;none that might introduce axioms. And anyway, in case of doubt, 
&lt;br&gt;you can do a &amp;quot;Print Assumption&amp;quot; of your lemma. 
&lt;br&gt;&lt;br&gt;Best regards, 
&lt;br&gt;&lt;br&gt;Pierre Letouzey
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Russell%27s-paradox-tp20737105p20748051.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20747671</id>
	<title>Re: Russell's paradox</title>
	<published>2008-11-29T06:36:05Z</published>
	<updated>2008-11-29T06:36:05Z</updated>
	<author>
		<name>greenrd</name>
	</author>
	<content type="html">On Sat, 29 Nov 2008 14:03:06 +0000
&lt;br&gt;Thorsten Altenkirch &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20747671&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;txa@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; I suspect I need K (or I am just too stupid). Can anybody conform &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; either? I.e. can I prove this using Coq.Logic.Eqdep or without?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I am just too stupid. But so is Coq. I just need to use dependent &amp;nbsp;
&lt;br&gt;&amp;gt; inversion.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Actually I realized that I can prove it with the standard eliminator &amp;nbsp;
&lt;br&gt;&amp;gt; for equality:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; eq_elim : forall (A:Set)(x:A)(P:forall y:A, (x=y)-&amp;gt;Set)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(m:P x (refl_equal x))
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(y:A)(p:x=y),P y p.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; This is not automatically derived by Coq (why not?) but it can be &amp;nbsp;
&lt;br&gt;&amp;gt; proven using dependent inversion.
&lt;/div&gt;&lt;br&gt;Doesn't the generated proof rely on K or an equivalent, though?
&lt;br&gt;&lt;br&gt;On that note, I think the coq documentation should be updated to warn
&lt;br&gt;when using certain tactics can introduce axioms.
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Robin
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Russell%27s-paradox-tp20737105p20747671.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20747328</id>
	<title>Re: Russell's paradox</title>
	<published>2008-11-29T06:03:06Z</published>
	<updated>2008-11-29T06:03:06Z</updated>
	<author>
		<name>Thorsten Altenkirch</name>
	</author>
	<content type="html">&amp;gt; I suspect I need K (or I am just too stupid). Can anybody conform &amp;nbsp;
&lt;br&gt;&amp;gt; either? I.e. can I prove this using Coq.Logic.Eqdep or without?
&lt;br&gt;&lt;br&gt;I am just too stupid. But so is Coq. I just need to use dependent &amp;nbsp;
&lt;br&gt;inversion.
&lt;br&gt;&lt;br&gt;Actually I realized that I can prove it with the standard eliminator &amp;nbsp;
&lt;br&gt;for equality:
&lt;br&gt;&lt;br&gt;eq_elim : forall (A:Set)(x:A)(P:forall y:A, (x=y)-&amp;gt;Set)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(m:P x (refl_equal x))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(y:A)(p:x=y),P y p.
&lt;br&gt;&lt;br&gt;This is not automatically derived by Coq (why not?) but it can be &amp;nbsp;
&lt;br&gt;proven using dependent inversion. It seems that you always get in &amp;nbsp;
&lt;br&gt;trouble if you try to use dependent types in Coq.
&lt;br&gt;&lt;br&gt;I attach my completed Russell derivation.
&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Thorsten
&lt;br&gt;&lt;br&gt;&lt;br&gt;This message has been checked for viruses but the contents of an attachment
&lt;br&gt;may still contain software viruses, which could damage your computer system:
&lt;br&gt;you are advised to perform your own checks. Email communications with the
&lt;br&gt;University of Nottingham may be monitored as permitted by UK legislation.
&lt;br&gt;&lt;br&gt;&lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://www.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;l16-crib.v&lt;/strong&gt; (2K) &lt;a href=&quot;http://www.nabble.com/attachment/20747328/0/l16-crib.v&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Russell%27s-paradox-tp20737105p20747328.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20737243</id>
	<title>Re: Russell's paradox</title>
	<published>2008-11-28T08:27:26Z</published>
	<updated>2008-11-28T08:27:26Z</updated>
	<author>
		<name>Adam Chlipala-3</name>
	</author>
	<content type="html">Thorsten Altenkirch wrote:
&lt;br&gt;&amp;gt; I would like to encode Russell's paradox in Coq for my class, or more 
&lt;br&gt;&amp;gt; precisely Thierry's version of it (the paradox of trees). But how do I 
&lt;br&gt;&amp;gt; assume tat there is a set of all sets, or Set : Set?
&lt;br&gt;&lt;br&gt;You could always do a deep embedding of just the features of ZF needed 
&lt;br&gt;for your example.
&lt;br&gt;&lt;br&gt;It seems kind of ironic that it ends up being inconvenient not to be 
&lt;br&gt;able to apply inconsistent reasoning in Coq. ;)
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Russell%27s-paradox-tp20737105p20737243.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20737105</id>
	<title>Russell's paradox</title>
	<published>2008-11-28T08:12:58Z</published>
	<updated>2008-11-28T08:12:58Z</updated>
	<author>
		<name>Thorsten Altenkirch</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I would like to encode Russell's paradox in Coq for my class, or more &amp;nbsp;
&lt;br&gt;precisely Thierry's version of it (the paradox of trees). But how do I &amp;nbsp;
&lt;br&gt;assume tat there is a set of all sets, or Set : Set?
&lt;br&gt;&lt;br&gt;The easiest would be if there were a switch to switch off size &amp;nbsp;
&lt;br&gt;checking. Is there?
&lt;br&gt;&lt;br&gt;Ok, I could just assume that there is a set of all sets:
&lt;br&gt;&lt;br&gt;Variable set : Set.
&lt;br&gt;Variable name : Set -&amp;gt; set.
&lt;br&gt;Variable El : set -&amp;gt; Set.
&lt;br&gt;Axiom reflect : forall A:Set,El (name A) = A.
&lt;br&gt;&lt;br&gt;but I got into trouble with this. While I can construct a function
&lt;br&gt;&lt;br&gt;fst : El (name { a:A | P a}) -&amp;gt; A.
&lt;br&gt;&lt;br&gt;I am having trouble with
&lt;br&gt;&lt;br&gt;snd : forall ap : El (name { a:A | P a}) ,P (fst ap)
&lt;br&gt;&lt;br&gt;Dually, there is no problem with
&lt;br&gt;&lt;br&gt;mk : forall a:A, (P a) -&amp;gt; El (name { a:A | P a})
&lt;br&gt;&lt;br&gt;but I also need
&lt;br&gt;&lt;br&gt;mkOk : forall (a:A) (p:P a) , fst (mk a p) = a
&lt;br&gt;&lt;br&gt;I suspect I need K (or I am just too stupid). Can anybody conform &amp;nbsp;
&lt;br&gt;either? I.e. can I prove this using Coq.Logic.Eqdep or without?
&lt;br&gt;&lt;br&gt;I attach my Russell file with the two additional assumptions I'd like &amp;nbsp;
&lt;br&gt;to eliminate.
&lt;br&gt;&lt;br&gt;&lt;br&gt;This message has been checked for viruses but the contents of an attachment
&lt;br&gt;may still contain software viruses, which could damage your computer system:
&lt;br&gt;you are advised to perform your own checks. Email communications with the
&lt;br&gt;University of Nottingham may be monitored as permitted by UK legislation.
&lt;br&gt;&lt;br&gt;&lt;br /&gt; &lt;br /&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Cheers,
&lt;br&gt;Thorsten
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://www.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;l16-crib.v&lt;/strong&gt; (1K) &lt;a href=&quot;http://www.nabble.com/attachment/20737105/0/l16-crib.v&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Russell%27s-paradox-tp20737105p20737105.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20718862</id>
	<title>Re: List OrderedType as OrderedType?</title>
	<published>2008-11-27T04:56:16Z</published>
	<updated>2008-11-27T04:56:16Z</updated>
	<author>
		<name>Stéphane Lescuyer</name>
	</author>
	<content type="html">As far as I know, subst only deals with Leibniz equalities (Logic.eq),
&lt;br&gt;Im using it to remove the equalities introduced by the inversion
&lt;br&gt;tactic. I've never encountered the issue you describe before (I'm
&lt;br&gt;using the trunk version, but I dont know if it makes any difference).
&lt;br&gt;In particular, the reason I use an alternate name &amp;quot;eq_&amp;quot; instead of
&lt;br&gt;&amp;quot;eq&amp;quot; directly is not to avoid any name clash with the standard &amp;quot;eq&amp;quot;,
&lt;br&gt;but because of a (harmless, yet annoying) limitation that prevents one
&lt;br&gt;from instantiating a Parameter in a module by an Inductive (hence the
&lt;br&gt;use of &amp;quot;eq_&amp;quot; and the redefinition of &amp;quot;eq&amp;quot; afterwards).
&lt;br&gt;&lt;br&gt;SL
&lt;br&gt;&lt;br&gt;On Wed, Nov 26, 2008 at 9:07 PM, M. Scott Doerrie &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20718862&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;mdoerri@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Thanks. &amp;nbsp;I'd started with a similar approach, but have stopped as I can use
&lt;br&gt;&amp;gt; FSets for now. &amp;nbsp;However, I noticed that you used a tactic that works for you
&lt;br&gt;&amp;gt; but not me. &amp;nbsp;I can't use the &amp;quot;subst&amp;quot; tactic, as it claims unification is
&lt;br&gt;&amp;gt; impossible. &amp;nbsp;However, I am reusing the &amp;quot;eq&amp;quot; name from the module instead of
&lt;br&gt;&amp;gt; using &amp;quot;_eq&amp;quot; as you do. &amp;nbsp;I changed the name to something other than &amp;quot;eq&amp;quot; and
&lt;br&gt;&amp;gt; the tactic works. &amp;nbsp;Why will &amp;quot;subst&amp;quot; fail to unify with a local &amp;quot;eq&amp;quot; but will
&lt;br&gt;&amp;gt; unify with &amp;quot;_eq&amp;quot;? &amp;nbsp;Is this a naming bug between local and FQ names in the
&lt;br&gt;&amp;gt; tactic, or is it more fundamental?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Scott Doerrie
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Stéphane Lescuyer wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; On Wed, Nov 26, 2008 at 5:38 PM, Pierre Letouzey
&lt;br&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20718862&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Pierre.Letouzey@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; On Tue, Nov 25, 2008 at 02:56:21PM -0500, M. Scott Doerrie wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I've been searching the Coq standard library and have been unable to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; find a functor that creates an OrderedType given an FSet or even a List
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of OrderedTypes. &amp;nbsp;This seems relatively straightforward given the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; implementation of PairOrderedType, so I've probably missed it. &amp;nbsp;I'd
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; rather not duplicate effort, so I thought I'd ask first.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Scott Doerrie
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Concerning lists of OrderedType.t, FSetList.Make is building a
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; FSetInterface.S whose base type is a sorted list attached with its
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; sortedness proof. As before, this FSetInterface.S can be seen as an
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; OrderedType. If you want to deal with arbitrary lists and not only the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; sorted ones, nothing exists yet in the standard library, but it should
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; not be too difficult to build something (indeed, PairOrderedType can
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; be a good source of inspiration). If you write this kind of functor,
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; let me know, it might be interesting to include it in the standard
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; library.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; I had actually written such a functor (see attached file) some time
&lt;br&gt;&amp;gt;&amp;gt; ago, it builds an ordered type for lists with pointwise equality and
&lt;br&gt;&amp;gt;&amp;gt; lexicographic order. [eq] and [lt] are defined as inductives rather
&lt;br&gt;&amp;gt;&amp;gt; than functions because I find inversion really convenient.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Hope this helps,
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Stéphane L.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --------------------------------------------------------
&lt;br&gt;&amp;gt; Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;&amp;gt; Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;&amp;gt; Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&amp;gt;
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;I'm the kind of guy that until it happens, I won't worry about it. -
&lt;br&gt;R.H. RoY05, MVP06
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/List-OrderedType-as-OrderedType--tp20688523p20718862.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20708140</id>
	<title>Re: List OrderedType as OrderedType?</title>
	<published>2008-11-26T12:07:35Z</published>
	<updated>2008-11-26T12:07:35Z</updated>
	<author>
		<name>M. Scott Doerrie</name>
	</author>
	<content type="html">Thanks. &amp;nbsp;I'd started with a similar approach, but have stopped as I can 
&lt;br&gt;use FSets for now. &amp;nbsp;However, I noticed that you used a tactic that works 
&lt;br&gt;for you but not me. &amp;nbsp;I can't use the &amp;quot;subst&amp;quot; tactic, as it claims 
&lt;br&gt;unification is impossible. &amp;nbsp;However, I am reusing the &amp;quot;eq&amp;quot; name from the 
&lt;br&gt;module instead of using &amp;quot;_eq&amp;quot; as you do. &amp;nbsp;I changed the name to 
&lt;br&gt;something other than &amp;quot;eq&amp;quot; and the tactic works. &amp;nbsp;Why will &amp;quot;subst&amp;quot; fail 
&lt;br&gt;to unify with a local &amp;quot;eq&amp;quot; but will unify with &amp;quot;_eq&amp;quot;? &amp;nbsp;Is this a naming 
&lt;br&gt;bug between local and FQ names in the tactic, or is it more fundamental?
&lt;br&gt;&lt;br&gt;Scott Doerrie
&lt;br&gt;&lt;br&gt;Stéphane Lescuyer wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Wed, Nov 26, 2008 at 5:38 PM, Pierre Letouzey
&lt;br&gt;&amp;gt; &amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20708140&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Pierre.Letouzey@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; On Tue, Nov 25, 2008 at 02:56:21PM -0500, M. Scott Doerrie wrote:
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; I've been searching the Coq standard library and have been unable to
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; find a functor that creates an OrderedType given an FSet or even a List
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; of OrderedTypes. &amp;nbsp;This seems relatively straightforward given the
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; implementation of PairOrderedType, so I've probably missed it. &amp;nbsp;I'd
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; rather not duplicate effort, so I thought I'd ask first.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Scott Doerrie
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; Concerning lists of OrderedType.t, FSetList.Make is building a
&lt;br&gt;&amp;gt;&amp;gt; FSetInterface.S whose base type is a sorted list attached with its
&lt;br&gt;&amp;gt;&amp;gt; sortedness proof. As before, this FSetInterface.S can be seen as an
&lt;br&gt;&amp;gt;&amp;gt; OrderedType. If you want to deal with arbitrary lists and not only the
&lt;br&gt;&amp;gt;&amp;gt; sorted ones, nothing exists yet in the standard library, but it should
&lt;br&gt;&amp;gt;&amp;gt; not be too difficult to build something (indeed, PairOrderedType can
&lt;br&gt;&amp;gt;&amp;gt; be a good source of inspiration). If you write this kind of functor,
&lt;br&gt;&amp;gt;&amp;gt; let me know, it might be interesting to include it in the standard
&lt;br&gt;&amp;gt;&amp;gt; library.
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I had actually written such a functor (see attached file) some time
&lt;br&gt;&amp;gt; ago, it builds an ordered type for lists with pointwise equality and
&lt;br&gt;&amp;gt; lexicographic order. [eq] and [lt] are defined as inductives rather
&lt;br&gt;&amp;gt; than functions because I find inversion really convenient.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Hope this helps,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Stéphane L.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/List-OrderedType-as-OrderedType--tp20688523p20708140.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20708053</id>
	<title>Re: List OrderedType as OrderedType?</title>
	<published>2008-11-26T12:00:38Z</published>
	<updated>2008-11-26T12:00:38Z</updated>
	<author>
		<name>M. Scott Doerrie</name>
	</author>
	<content type="html">Thank you. That's what I was looking for.
&lt;br&gt;&lt;br&gt;Scott Doerrie
&lt;br&gt;&lt;br&gt;Pierre Letouzey wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Tue, Nov 25, 2008 at 02:56:21PM -0500, M. Scott Doerrie wrote:
&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; I've been searching the Coq standard library and have been unable to 
&lt;br&gt;&amp;gt;&amp;gt; find a functor that creates an OrderedType given an FSet or even a List 
&lt;br&gt;&amp;gt;&amp;gt; of OrderedTypes. &amp;nbsp;This seems relatively straightforward given the 
&lt;br&gt;&amp;gt;&amp;gt; implementation of PairOrderedType, so I've probably missed it. &amp;nbsp;I'd 
&lt;br&gt;&amp;gt;&amp;gt; rather not duplicate effort, so I thought I'd ask first.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Scott Doerrie
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Well, if I remember correctly, the signature FSetInterface.S contains
&lt;br&gt;&amp;gt; a compare function in particular, and others things required in a
&lt;br&gt;&amp;gt; OrderedType, so any instance of this signature can be seen as an
&lt;br&gt;&amp;gt; OrderedType by mere subtyping. This allows in particular to freely
&lt;br&gt;&amp;gt; create sets of sets, or sets of sets of sets, and so on :
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Require Import FSets.
&lt;br&gt;&amp;gt; Module NatSet := FSetAVL.Make Nat_as_OT.
&lt;br&gt;&amp;gt; Module NatSetSet := FSetAVL.Make NatSet. (* here NatSet is seen as an OrderedType *)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Concerning lists of OrderedType.t, FSetList.Make is building a
&lt;br&gt;&amp;gt; FSetInterface.S whose base type is a sorted list attached with its
&lt;br&gt;&amp;gt; sortedness proof. As before, this FSetInterface.S can be seen as an
&lt;br&gt;&amp;gt; OrderedType. If you want to deal with arbitrary lists and not only the
&lt;br&gt;&amp;gt; sorted ones, nothing exists yet in the standard library, but it should
&lt;br&gt;&amp;gt; not be too difficult to build something (indeed, PairOrderedType can
&lt;br&gt;&amp;gt; be a good source of inspiration). If you write this kind of functor,
&lt;br&gt;&amp;gt; let me know, it might be interesting to include it in the standard
&lt;br&gt;&amp;gt; library.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Best regards,
&lt;br&gt;&amp;gt; Pierre Letouzey
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; --------------------------------------------------------
&lt;br&gt;&amp;gt; Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;&amp;gt; Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;&amp;gt; Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&amp;gt; &amp;nbsp; 
&lt;/div&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/List-OrderedType-as-OrderedType--tp20688523p20708053.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20705846</id>
	<title>Re: List OrderedType as OrderedType?</title>
	<published>2008-11-26T09:45:48Z</published>
	<updated>2008-11-26T09:45:48Z</updated>
	<author>
		<name>Stéphane Lescuyer</name>
	</author>
	<content type="html">On Wed, Nov 26, 2008 at 5:38 PM, Pierre Letouzey
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20705846&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Pierre.Letouzey@...&lt;/a&gt;&amp;gt; wrote:
&lt;div class='shrinkable-quote'&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Tue, Nov 25, 2008 at 02:56:21PM -0500, M. Scott Doerrie wrote:
&lt;br&gt;&amp;gt;&amp;gt; I've been searching the Coq standard library and have been unable to
&lt;br&gt;&amp;gt;&amp;gt; find a functor that creates an OrderedType given an FSet or even a List
&lt;br&gt;&amp;gt;&amp;gt; of OrderedTypes. &amp;nbsp;This seems relatively straightforward given the
&lt;br&gt;&amp;gt;&amp;gt; implementation of PairOrderedType, so I've probably missed it. &amp;nbsp;I'd
&lt;br&gt;&amp;gt;&amp;gt; rather not duplicate effort, so I thought I'd ask first.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Scott Doerrie
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; Concerning lists of OrderedType.t, FSetList.Make is building a
&lt;br&gt;&amp;gt; FSetInterface.S whose base type is a sorted list attached with its
&lt;br&gt;&amp;gt; sortedness proof. As before, this FSetInterface.S can be seen as an
&lt;br&gt;&amp;gt; OrderedType. If you want to deal with arbitrary lists and not only the
&lt;br&gt;&amp;gt; sorted ones, nothing exists yet in the standard library, but it should
&lt;br&gt;&amp;gt; not be too difficult to build something (indeed, PairOrderedType can
&lt;br&gt;&amp;gt; be a good source of inspiration). If you write this kind of functor,
&lt;br&gt;&amp;gt; let me know, it might be interesting to include it in the standard
&lt;br&gt;&amp;gt; library.
&lt;/div&gt;&lt;/div&gt;I had actually written such a functor (see attached file) some time
&lt;br&gt;ago, it builds an ordered type for lists with pointwise equality and
&lt;br&gt;lexicographic order. [eq] and [lt] are defined as inductives rather
&lt;br&gt;than functions because I find inversion really convenient.
&lt;br&gt;&lt;br&gt;Hope this helps,
&lt;br&gt;&lt;br&gt;Stéphane L.
&lt;br&gt;&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;I'm the kind of guy that until it happens, I won't worry about it. -
&lt;br&gt;R.H. RoY05, MVP06
&lt;br&gt;&lt;br /&gt; &lt;div class=&quot;small&quot;&gt;&lt;br/&gt;&lt;img src=&quot;http://www.nabble.com/images/icon_attachment.gif&quot; &gt; &lt;strong&gt;ListOrderedType.v&lt;/strong&gt; (4K) &lt;a href=&quot;http://www.nabble.com/attachment/20705846/0/ListOrderedType.v&quot; target=&quot;_top&quot;&gt;Download Attachment&lt;/a&gt;&lt;/div&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/List-OrderedType-as-OrderedType--tp20688523p20705846.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20704500</id>
	<title>Re: List OrderedType as OrderedType?</title>
	<published>2008-11-26T08:38:00Z</published>
	<updated>2008-11-26T08:38:00Z</updated>
	<author>
		<name>Pierre Letouzey-3</name>
	</author>
	<content type="html">On Tue, Nov 25, 2008 at 02:56:21PM -0500, M. Scott Doerrie wrote:
&lt;br&gt;&amp;gt; I've been searching the Coq standard library and have been unable to 
&lt;br&gt;&amp;gt; find a functor that creates an OrderedType given an FSet or even a List 
&lt;br&gt;&amp;gt; of OrderedTypes. &amp;nbsp;This seems relatively straightforward given the 
&lt;br&gt;&amp;gt; implementation of PairOrderedType, so I've probably missed it. &amp;nbsp;I'd 
&lt;br&gt;&amp;gt; rather not duplicate effort, so I thought I'd ask first.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Scott Doerrie
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;Well, if I remember correctly, the signature FSetInterface.S contains
&lt;br&gt;a compare function in particular, and others things required in a
&lt;br&gt;OrderedType, so any instance of this signature can be seen as an
&lt;br&gt;OrderedType by mere subtyping. This allows in particular to freely
&lt;br&gt;create sets of sets, or sets of sets of sets, and so on :
&lt;br&gt;&lt;br&gt;Require Import FSets.
&lt;br&gt;Module NatSet := FSetAVL.Make Nat_as_OT.
&lt;br&gt;Module NatSetSet := FSetAVL.Make NatSet. (* here NatSet is seen as an OrderedType *)
&lt;br&gt;&lt;br&gt;Concerning lists of OrderedType.t, FSetList.Make is building a
&lt;br&gt;FSetInterface.S whose base type is a sorted list attached with its
&lt;br&gt;sortedness proof. As before, this FSetInterface.S can be seen as an
&lt;br&gt;OrderedType. If you want to deal with arbitrary lists and not only the
&lt;br&gt;sorted ones, nothing exists yet in the standard library, but it should
&lt;br&gt;not be too difficult to build something (indeed, PairOrderedType can
&lt;br&gt;be a good source of inspiration). If you write this kind of functor,
&lt;br&gt;let me know, it might be interesting to include it in the standard
&lt;br&gt;library.
&lt;br&gt;&lt;br&gt;Best regards,
&lt;br&gt;Pierre Letouzey
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/List-OrderedType-as-OrderedType--tp20688523p20704500.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20775897</id>
	<title>CADE-22 final call for workshop and tutorial proposals</title>
	<published>2008-11-26T08:15:15Z</published>
	<updated>2008-11-26T08:15:15Z</updated>
	<author>
		<name>Claude Marché</name>
	</author>
	<content type="html">&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CADE 2009
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;The 22nd International Conference on Automated Deduction
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Montreal, Canada, August 2 - 7, 2009
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://complogic.cs.mcgill.ca/cade22/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://complogic.cs.mcgill.ca/cade22/&lt;/a&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Call for Workshop and Tutorial Proposals
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;----------------------------------------------------
&lt;br&gt;&lt;br&gt;CADE 2009 is the 22nd International Conference on Automated Deduction,
&lt;br&gt;the premier conference on all aspects of automated deduction. &amp;nbsp;Topics
&lt;br&gt;covered range from theoretical foundations to high-performance
&lt;br&gt;implementations in a wide variety of logics and logical theories, with
&lt;br&gt;applications in areas like verification and artificial intelligence.
&lt;br&gt;&lt;br&gt;Workshop and tutorial proposals for CADE 2009 are solicited. &amp;nbsp;Both
&lt;br&gt;well-established workshops and newer or brand new ones are encouraged.
&lt;br&gt;Similarly, proposals for workshops with a tight focus on a core
&lt;br&gt;automated reasoning specialization, as well as those with a broader,
&lt;br&gt;more applied focus, are very welcome.
&lt;br&gt;&lt;br&gt;1. Workshop Proposals
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Please provide the following information:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;+ Workshop title.
&lt;br&gt;&amp;nbsp; &amp;nbsp;+ Names and affiliations of organizers.
&lt;br&gt;&amp;nbsp; &amp;nbsp;+ Brief description of workshop goals and/or topics.
&lt;br&gt;&amp;nbsp; &amp;nbsp;+ Proposed workshop duration
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (from half a day to two days is possible).
&lt;br&gt;&amp;nbsp; &amp;nbsp;+ If the workshop has met previously, please include the conference
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;affiliation for the previous meeting. If the workshop is new,
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;please indicate so.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;The CADE organizers plan to make available a small amount towards
&lt;br&gt;&amp;nbsp; &amp;nbsp;partial reimbursement for travel expenses of invited speakers.
&lt;br&gt;&amp;nbsp; &amp;nbsp;Also, CADE will take care of printing and distributing informal
&lt;br&gt;&amp;nbsp; &amp;nbsp;proceedings for workshops that would like this service.
&lt;br&gt;&lt;br&gt;2. Tutorial Proposals
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;Tutorials are expected to be half-day events. &amp;nbsp;Tutorial proposals
&lt;br&gt;&amp;nbsp; &amp;nbsp;should provide the following information:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;+ Tutorial title.
&lt;br&gt;&amp;nbsp; &amp;nbsp;+ Names and affiliations of organizers.
&lt;br&gt;&amp;nbsp; &amp;nbsp;+ Brief description of the tutorial's goals and topics to be
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;covered.
&lt;br&gt;&amp;nbsp; &amp;nbsp;+ Whether or not a version of the tutorial has been given
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;previously.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;CADE will take care of printing and distributing notes for
&lt;br&gt;&amp;nbsp; &amp;nbsp;tutorials that would like this service.
&lt;br&gt;&lt;br&gt;All proposals should be sent via email in plain text to the Workshop
&lt;br&gt;and Tutorial Chair (&lt;a href=&quot;http://www.nabble.com/user/SendEmail.jtp?type=post&amp;post=20775897&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;astump@...&lt;/a&gt;), for consideration by the
&lt;br&gt;CADE 2009 organizers:
&lt;br&gt;&lt;br&gt;&amp;nbsp; Brigitte Pientka (McGill University), General Chair
&lt;br&gt;&amp;nbsp; Renate Schmidt (University of Manchester), Program Chair
&lt;br&gt;&amp;nbsp; Carsten Schuermann (IT University of Copenhagen), Publicity Chair
&lt;br&gt;&amp;nbsp; Aaron Stump (The University of Iowa), Workshop and Tutorial Chair
&lt;br&gt;&lt;br&gt;Important dates:
&lt;br&gt;&amp;nbsp; Deadline for proposal submissions: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;December 7, 2008
&lt;br&gt;&amp;nbsp; Acceptance/rejection notification: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;January 7, 2009
&lt;br&gt;&amp;nbsp; Workshop dates: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; August 2-3, 2009
&lt;br&gt;-------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/CADE-22-final-call-for-workshop-and-tutorial-proposals-tp20775897p20775897.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20693549</id>
	<title>Internship proposals</title>
	<published>2008-11-25T18:11:49Z</published>
	<updated>2008-11-25T18:11:49Z</updated>
	<author>
		<name>frederic.blanqui</name>
	</author>
	<content type="html">Dear all, I propose to master students various subjects for extending
&lt;br&gt;CoLoR and Rainbow that are described in
&lt;br&gt;&lt;a href=&quot;http://www.loria.fr/~blanqui/subject-color.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.loria.fr/~blanqui/subject-color.html&lt;/a&gt;. Please, feel free to
&lt;br&gt;forward these proposals to your students. Best regards, Frederic Blanqui.
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Internship-proposals-tp20693549p20693549.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20688523</id>
	<title>List OrderedType as OrderedType?</title>
	<published>2008-11-25T11:56:21Z</published>
	<updated>2008-11-25T11:56:21Z</updated>
	<author>
		<name>M. Scott Doerrie</name>
	</author>
	<content type="html">I've been searching the Coq standard library and have been unable to 
&lt;br&gt;find a functor that creates an OrderedType given an FSet or even a List 
&lt;br&gt;of OrderedTypes. &amp;nbsp;This seems relatively straightforward given the 
&lt;br&gt;implementation of PairOrderedType, so I've probably missed it. &amp;nbsp;I'd 
&lt;br&gt;rather not duplicate effort, so I thought I'd ask first.
&lt;br&gt;&lt;br&gt;Scott Doerrie
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/List-OrderedType-as-OrderedType--tp20688523p20688523.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20677850</id>
	<title>Coq &amp; Java applet</title>
	<published>2008-11-25T01:34:37Z</published>
	<updated>2008-11-25T01:34:37Z</updated>
	<author>
		<name>Thery Laurent</name>
	</author>
	<content type="html">&lt;br&gt;Hi,
&lt;br&gt;&lt;br&gt;&lt;br&gt;For those who may be interested on building java applets on top
&lt;br&gt;of extracted Coq code, I've just discovered the ocamljava project:
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://ocamljava.x9c.fr/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://ocamljava.x9c.fr/&lt;/a&gt;&lt;br&gt;&lt;br&gt;This works pretty well (performance is not outstanding though).
&lt;br&gt;Here is an example with my Sudoku solver
&lt;br&gt;&lt;br&gt;&lt;a href=&quot;http://www-sop.inria.fr/marelle/Laurent.Thery/Sudoku/Sudoku.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www-sop.inria.fr/marelle/Laurent.Thery/Sudoku/Sudoku.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Laurent
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Definitions-inside-type-class-definitions-%28Coq-8.2beta%29-tp20670550p20677850.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20672827</id>
	<title>Re: Re: Agda beats Coq</title>
	<published>2008-11-24T16:13:01Z</published>
	<updated>2008-11-24T16:13:01Z</updated>
	<author>
		<name>Arnaud Spiwack-3</name>
	</author>
	<content type="html">&lt;br&gt;&amp;gt; You can't actually achieve this for infinite values like the above, so to 
&lt;br&gt;&amp;gt; usefully prove their equality, you'd have to add an extensionality axiom like 
&lt;br&gt;&amp;gt; you suggest. But in principle, bisimilarity means that you could prove two 
&lt;br&gt;&amp;gt; values intensionally equal through evaluation (the equality just isn't 
&lt;br&gt;&amp;gt; decidable).
&lt;br&gt;&lt;br&gt;You are right indeed, mea culpa for that. Bisimilarity allows 
&lt;br&gt;coinductive reasoning which are more powerful than reasoning with 
&lt;br&gt;intentional equality (which only allows to look at a finite prefix, 
&lt;br&gt;although of arbitrary length).
&lt;br&gt;&lt;br&gt;Therefore you will only have properties such as the following (still 
&lt;br&gt;contestable, in my opinion):
&lt;br&gt;&lt;br&gt;CoInductive stream (A:Type) : Type :=
&lt;br&gt;&amp;nbsp; | cons : A -&amp;gt; stream A -&amp;gt; stream A
&lt;br&gt;.
&lt;br&gt;&lt;br&gt;Definition hd (A:Type) (s:stream A) :=
&lt;br&gt;&amp;nbsp; match s with
&lt;br&gt;&amp;nbsp; | cons a _ =&amp;gt; a
&lt;br&gt;&amp;nbsp; end
&lt;br&gt;.
&lt;br&gt;Implicit Arguments hd [ A ].
&lt;br&gt;&lt;br&gt;Definition tl (A:Type) (s:stream A) :=
&lt;br&gt;&amp;nbsp; match s with
&lt;br&gt;&amp;nbsp; | cons _ t =&amp;gt; t
&lt;br&gt;&amp;nbsp; end
&lt;br&gt;.
&lt;br&gt;Implicit Arguments tl [ A ].
&lt;br&gt;&lt;br&gt;CoInductive bisim (A:Type) (s1 s2:stream A) :Prop :=
&lt;br&gt;&amp;nbsp; | mk_bisim : hd s1 = hd s2 -&amp;gt; bisim _ (tl s1) (tl s2) -&amp;gt; bisim _ s1 s2
&lt;br&gt;.
&lt;br&gt;&lt;br&gt;Fixpoint tln (A:Type) (s:stream A) (n:nat) {struct n} : stream A :=
&lt;br&gt;&amp;nbsp; match n with
&lt;br&gt;&amp;nbsp; | 0 =&amp;gt; s
&lt;br&gt;&amp;nbsp; | S n' =&amp;gt; tln _ (tl s) n'
&lt;br&gt;&amp;nbsp; end
&lt;br&gt;.
&lt;br&gt;&lt;br&gt;Goal forall A n (s1 s2:stream A), tln _ s1 n = tln _ s2 n -&amp;gt; bisim _ s1 s2 -&amp;gt; s1 = s2.
&lt;br&gt;&amp;nbsp; intro A. induction n.
&lt;br&gt;&amp;nbsp; &amp;nbsp; trivial.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; intros [ h1 s1 ] [ h2 s2 ] t [ h b ].
&lt;br&gt;&amp;nbsp; &amp;nbsp; simpl in *. rewrite h. 
&lt;br&gt;&amp;nbsp; &amp;nbsp; rewrite (IHn s1 s2); trivial.
&lt;br&gt;Qed.
&lt;br&gt;&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Termination-proof-in-partiality-monad-tp20539727p20672827.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20671510</id>
	<title>Re: Re: Agda beats Coq</title>
	<published>2008-11-24T14:37:53Z</published>
	<updated>2008-11-24T14:37:53Z</updated>
	<author>
		<name>Dan Doel</name>
	</author>
	<content type="html">On Monday 24 November 2008 5:19:37 pm Aaron Bohannon wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I reviewed the previous coq-list thread on coinduction and I
&lt;br&gt;&amp;gt; understand why people are not completely happy with the current
&lt;br&gt;&amp;gt; situation. &amp;nbsp;Among the proposals for remedying the situation was the
&lt;br&gt;&amp;gt; suggestion that we add an axiom asserting that bisimilarity implies
&lt;br&gt;&amp;gt; intentional equality for each datatype. &amp;nbsp;I take this to mean that some
&lt;br&gt;&amp;gt; people believe this to be sound, although I am apparently not the only
&lt;br&gt;&amp;gt; to stop and question it. &amp;nbsp;Of course, this is a moot point for
&lt;br&gt;&amp;gt; datatypes where you could actually build a proof in Coq of such a
&lt;br&gt;&amp;gt; proposition. &amp;nbsp;Does the proof rely on some other axioms? &amp;nbsp;Do you mind
&lt;br&gt;&amp;gt; sharing your proof or a reference to one?
&lt;/div&gt;&lt;br&gt;I believe, though I am not sure, that he is referring to a fact that if you 
&lt;br&gt;can prove bisimilarity of two values, like:
&lt;br&gt;&lt;br&gt;&amp;nbsp; i ~ cosuc i
&lt;br&gt;&lt;br&gt;&amp;nbsp; j = anaConat inr 5
&lt;br&gt;&lt;br&gt;Then you can also imagine performing a(n infinite) series of reductions of said 
&lt;br&gt;values to demonstrate that they are, in fact, intensionally equal as Coq/Agda 
&lt;br&gt;defines it. Namely, both have a 'normal form' of:
&lt;br&gt;&lt;br&gt;&amp;nbsp; cosuc (cosuc (cosuc (cosuc ...)))
&lt;br&gt;&lt;br&gt;You can't actually achieve this for infinite values like the above, so to 
&lt;br&gt;usefully prove their equality, you'd have to add an extensionality axiom like 
&lt;br&gt;you suggest. But in principle, bisimilarity means that you could prove two 
&lt;br&gt;values intensionally equal through evaluation (the equality just isn't 
&lt;br&gt;decidable).
&lt;br&gt;&lt;br&gt;-- Dan
&lt;br&gt;&lt;br&gt;--------------------------------------------------------
&lt;br&gt;Bug reports: &lt;a href=&quot;http://logical.futurs.inria.fr/coq-bugs&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://logical.futurs.inria.fr/coq-bugs&lt;/a&gt;&lt;br&gt;Archives: &lt;a href=&quot;http://pauillac.inria.fr/pipermail/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/pipermail/coq-club&lt;/a&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://pauillac.inria.fr/bin/wilma/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/bin/wilma/coq-club&lt;/a&gt;&lt;br&gt;Info: &lt;a href=&quot;http://pauillac.inria.fr/mailman/listinfo/coq-club&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pauillac.inria.fr/mailman/listinfo/coq-club&lt;/a&gt;&lt;br&gt;&lt;p&gt;From forum: &lt;a href=&quot;http://www.nabble.com/Coq-f2323.html&quot; embed=&quot;fixTarget[2323]&quot; target=&quot;_top&quot; &gt;Coq&lt;/a&gt;&lt;/p&gt;</content>
	<link rel="alternate" type="text/html" href="http://www.nabble.com/Termination-proof-in-partiality-monad-tp20539727p20671510.html" />
</entry>

<entry>
	<id>tag:www.nabble.com,2006:post-20671501</id>
	<title>Re: Re: Agda beats Coq (was: Termination proof in partiality monad)</title>
	<published>2008-11-24T14:27:57Z</published>
	<updated>2008-11-24T14:27:57Z</updated>
	<author>
		<name>Thorsten Altenkirch</name>
	</author>
	<content type="html">In extensional Type Theory Streams over A are isomorphic to Nat -&amp;gt; A. &amp;nbsp;
&lt;br&gt;Hence there is no need (at least from a foundational point of view) to &amp;nbsp;
&lt;br&gt;add streams once you have functional extensionality.
&lt;br&gt;&lt;br&gt;Actually all coinductive types can be encoded as omega-limits once you &amp;nbsp;
&lt;br&gt;have functional extensionality. The encoding of Nat -&amp;gt; A is just an &amp;nbsp;
&lt;br&gt;instance of this general construction.
&lt;br&gt;&lt;br&gt;The problem is that adding axioms destroys canonicity. Overcoming this &amp;nbsp;
&lt;br&gt;problem is the main point of OTT (Observational Type Theory).
&lt;br&gt;&lt;br&gt;Thorsten
&lt;br&gt;&lt;br&gt;On 24 Nov 2008, at 17:09, Aaron Bohannon wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&