coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- To: coq AT margaux.inria.fr
- Subject: Problems and suggestions for Coq
- Date: Thu, 04 Aug 94 12:52:26 +0200
Hi,
This letter is about three problems and suggestions I have
for Coq.
1) I have formalized a type theory in Coq. The type theory
is similar to CoC, but I have changed a few inference rules
in order to make it easier to work with. The type theory is
formalized as an inductive definition in Coq where the
definition has been designed so that it can exactly
represent the possible deductions of the type theory. I have
also written a program that generates deductions of this
type theory. The deductions are printed as Coq definitions,
one definition per application of an inference rule. There
is also one definition per term. The naive implementation of
a type theory would generate the full deduction, but the
size of a deduction grows exponentially with the size of the
problem, and my program generates only one deduction if two
sequents that are (greek letter) alpha convertible must be
proved. The deductions become huge anyway. My first "real"
problem has 65808 definitions and 33123 applications of
inference rules. Each definition consists of the defined
symbol, the type and the proof term proving the existence of
the type, i.e. all definitions have the form:
Definition symbol : type = proof .
The type theory is based on de Bruijn indices and I have
formalized the (Greek letter) xi function, (Greek letter)
beta convertion as Coq definitions. In order to check that
the definitions are correctly typed, Coq must interpret
these functions. It may take hours to check just one
definition on my 100 specint workstation. I have a feeling
that the symbol table of Coq has not been designed to handle
so many definitions efficiently. I have not send you the
sources of the problem because they take 7MB, but I would be
happy to make them available for FTP.
2) Chet Murthy as asked for suggestions for Coq. I would
like to get rewriting on dependent types. Assume that B is
of type (A b) and C is of type (A c) then B and C should be
equal if b and c are equal and B and C are equal. Formally
equality on types dependent of one parameter can be defined
as:
[A:Set][B:A->Set][lp:A][l:(B lp)][rp:A][r:(B rp)]
(P:(a:A)(B a)->Prop)(P lp l)->(P rp r)
where lp and rp are the parameters of the types of l and r,
and where the intuition is that this predicate is l=r. Thus
informally l=r if (P:(a:A)(B a)->Prop)(P lp l)->(P rp r).
In Coq you can already use this method for rewriting by
hand. You instantiate P with the proper term. It is
however tedious and not for beginners.
3) When you define a type X you can not eliminate a
construct of type X, e.g. this example is illegal:
Inductive Definition test : nat->Set
= Zero : (test O)
| Succ : (n:nat)(t:(test n))
(test (<[x:nat]nat>Match t with
(* Zero *) (S O)
(* Succ *) [n:nat][t:(test n)][res:nat](S res))).
This is an unnecessary restriction. The Match construct
will always result in a function that is continous, where
continous is used in the sense known from domain theory. I
guess your answer is that you need an elimination principle.
It can be defined through fixed point theory.
Karsten Nyblad
karsten AT tdr.dk
Tele Danmark Research
[ Hello, I will send a second copy of your message with a few
responses. It seems easier to include them in the text.
Benjamin]
From werner Fri Dec 12 13:07:11 1997
8:03 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id LAA20532 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 5 Sep 1995 11:58:03 +0200
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id LAA13799 for
coq-club-redistribution@pauillac;
Tue, 5 Sep 1995 11:58:02 +0200
From: Benjamin Werner
<werner AT cadillac.inria.fr>
Message-Id:
<199509050958.LAA13799 AT cadillac.inria.fr>
Subject: patches
To:
coq-club-redistribution AT pauillac.inria.fr
Date: Tue, 5 Sep 1995 11:58:01 +0100 (MET DST)
X-Mailer: ELM [version 2.4 PL21]
Content-Type: text
Content-Length: 360
Lines: 19
Status: RO
Hello,
Since the release, various bugs have been discovered or reported to us
by users. Some have been corrected and a patch is now available at the
usual ftp site:
ftp://ftp.inria.fr/INRIA/coq/V5.10/patch.V5.10.14-V5.10.14.a
Look at the README file for details.
Thank you for all the comments and reports we have received.
For the team,
Benjamin
From werner Fri Dec 12 13:07:11 1997
01:39 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id PAA10091 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 29 Sep 1995 15:01:38 +0100
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA28961 for
coq-club-redistribution@pauillac;
Fri, 29 Sep 1995 15:01:38 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA28039 for
<werner AT cadillac.inria.fr>;
Tue, 26 Sep 1995 13:32:36 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id NAA17776; Tue, 26 Sep 1995
13:32:34 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA26432; Tue, 26 Sep 1995
13:32:31 +0100
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id NAA17771; Tue, 26 Sep 1995
13:32:30 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id NAA05694 for
<coq-club AT margaux.inria.fr>;
Tue, 26 Sep 1995 13:32:29 +0100
Received: from ten.dimi.uniud.it (ten.dimi.uniud.it [158.110.1.132]) by
concorde.inria.fr (8.6.10/8.6.9) with SMTP id NAA17754 for
<coq-club AT margaux.inria.fr>;
Tue, 26 Sep 1995 13:32:26 +0100
Received: from udmiai1 by ten.dimi.uniud.it with SMTP id AA21606
(5.67a/IDA-1.5 for
<coq-club AT margaux.inria.fr>);
Tue, 26 Sep 1995 13:30:04 +0100
Received: by udmiai1 (4.1/SMI-4.1)
id AA00584; Tue, 26 Sep 95 13:30:04 +0100
Date: Tue, 26 Sep 95 13:30:04 +0100
From:
cabroni AT dimi.uniud.it
(Alessandro Cabroni)
Message-Id:
<9509261230.AA00584@udmiai1>
To:
coq-club AT margaux.inria.fr
Sender:
werner AT cadillac.inria.fr
Content-Length: 458
Lines: 6
Status: RO
I've begun to use Coq and in particular I need a lot of results about
arithmetic. I have seen the library Arith e the ones in Contrib, ma I would
like to know if there are actually others libraries available, in particular
about le,lt,gt,plus,minus,pred,S. Another consideration : it seems difficult
to verify that ~(lt n m)->(le m n) while the vice versa is very simple. Am I
wrong?
Answer as soon as possible at
cabroni AT dimi.uniud.it
With Regards,
Marco
From werner Fri Dec 12 13:07:11 1997
03:04 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id PAA10117 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 29 Sep 1995 15:03:03 +0100
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA28967 for
coq-club-redistribution@pauillac;
Fri, 29 Sep 1995 15:03:03 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA28115 for
<werner AT cadillac.inria.fr>;
Tue, 26 Sep 1995 15:07:46 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id PAA20248; Tue, 26 Sep 1995
15:07:44 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA28577; Tue, 26 Sep 1995
15:07:42 +0100
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id PAA20241; Tue, 26 Sep 1995
15:07:41 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id PAA06483 for
<coq-club AT margaux.inria.fr>;
Tue, 26 Sep 1995 15:07:36 +0100
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.6.10/8.6.9) with SMTP id PAA20227 for
<coq-club AT margaux.inria.fr>;
Tue, 26 Sep 1995 15:07:36 +0100
Received: from lip.ens-lyon.fr (lip-gw) by cri.ens-lyon.fr (5.x/SMI-SVR4)
id AA22658; Tue, 26 Sep 1995 15:07:14 +0100
Received: from cania.ens-lyon.fr by lip.ens-lyon.fr (5.x/SMI-SVR4)
id AA29803; Tue, 26 Sep 1995 15:06:52 +0100
Received: by cania.ens-lyon.fr (5.x/SMI-SVR4)
id AA13030; Tue, 26 Sep 1995 15:07:10 +0100
Date: Tue, 26 Sep 1995 15:07:10 +0100
From:
Jean-Christophe.Filliatre AT lip.ens-lyon.fr
(Jean-Christophe Filliatre)
Message-Id:
<9509261407.AA13030 AT cania.ens-lyon.fr>
To:
cabroni AT dimi.uniud.it
Cc:
coq-club AT margaux.inria.fr
In-Reply-To:
<9509261230.AA00584@udmiai1>
(cabroni AT dimi.uniud.it)
Sender:
werner AT cadillac.inria.fr
Content-Length: 1333
Lines: 43
Status: RO
> I've begun to use Coq and in particular I need a lot of results
> about arithmetic. I have seen the library Arith e the ones in Contrib,
> ma I would like to know if there are actually others libraries
> available, in particular about le,lt,gt,plus,minus,pred,S.
All the known libraries are included in the distribution. Results
about arithmetic lie in the directory theories/ARITH, but you can find
some additional results in the contribs Rocq/SUBST/comparith.v and
Marseille/CIRCUITS/Comp_Circ.v.
You can send us new libraries about arithmetic. We will add them to
the present ones.
[ You may have a look at contrib/Rocq/ARITH/Chinese. It's a proof of the
chinese remainders theorem on top of an axiomatization of Z. But it is
another axiomatization... ]
> Another consideration : it seems difficult to verify that ~(lt n
> m)->(le m n) while the vice versa is very simple. Am I wrong?
Yes, it is. One way is to do a double induction over n and m.
Another way to do the proof is to use the decidability of the order
relation. Here we use
le_lt_dec : (n:nat)(m:nat){(le n m)}+{(lt m n)}
which is proved in ARITH/Compare_dec.v. The proof is
Lemma not_lt_le : (n,m:nat) ~(lt n m)->(le m n).
Intros n m H.
Elim (le_lt_dec m n) ; [ Auto | Idtac ].
Intro H'; Elim (H H').
Save.
Best regards,
--Jean-Christophe.
From werner Fri Dec 12 13:07:11 1997
06:16 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id PAA10209 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 29 Sep 1995 15:06:15 +0100
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA28984 for
coq-club-redistribution@pauillac;
Fri, 29 Sep 1995 15:06:15 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id IAA28542 for
<werner AT cadillac.inria.fr>;
Thu, 28 Sep 1995 08:40:57 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id IAA16837; Thu, 28 Sep 1995
08:40:55 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id IAA27891; Thu, 28 Sep 1995
08:40:52 +0100
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id IAA16828; Thu, 28 Sep 1995
08:40:51 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id IAA16044 for
<coq-club AT margaux.inria.fr>;
Thu, 28 Sep 1995 08:40:50 +0100
Received: from ten.dimi.uniud.it (ten.dimi.uniud.it [158.110.1.132]) by
concorde.inria.fr (8.6.10/8.6.9) with SMTP id IAA16824 for
<coq-club AT margaux.inria.fr>;
Thu, 28 Sep 1995 08:40:49 +0100
Received: from copernico by ten.dimi.uniud.it with SMTP id AA14372
(5.67a/IDA-1.5 for
<coq-club AT margaux.inria.fr>);
Thu, 28 Sep 1995 08:38:33 +0100
Received: by copernico (5.x/SMI-SVR4)
id AA00651; Thu, 28 Sep 1995 08:38:25 +0100
Date: Thu, 28 Sep 1995 08:38:25 +0100
From:
cabroni AT dimi.uniud.it
(Alessandro Cabroni)
Message-Id:
<9509280738.AA00651@copernico>
To:
coq-club AT margaux.inria.fr
Subject: Tactics
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 1414
Lines: 51
Status: RO
Sorry, I would like to do a question about Tactics.
Suppose to have the following simple context:
Axiom der:(nat -> Prop) -> Prop.
Axiom ax:(A:nat -> Prop)
(der ([x:nat] (A x)))->(der ([x:nat] (A x))).
Now consider the following lemma:
Lemma lem1:(der ([x:nat] (([x:nat] (eq nat x x)) x))).
Now, using Apply ax, the goal obtained is the following:
(der [x:nat] (eq nat x x))
while I prefer (for particular reasons) to obtain this form for the goal:
(der ([x:nat] (([x:nat] (eq nat x x)) x))).
So I would like to obtain directly (or possible very fastly) the antecedent
of the axiom without its beta-reduction, which is automatically made by Apply.
I can obtain this thank Replace for example, but for much more complex cases
then the one explained before, it's very inefficient. Are there other
possibilities actually, without writing another tactic?
Thank you very much.
With regards,
Alessandro.
From:
Jean-Christophe.Filliatre AT lip.ens-lyon.fr
(Jean-Christophe Filliatre)
Message-Id:
<9509280815.AA10875 AT aquavit.ens-lyon.fr>
To:
cabroni AT dimi.uniud.it
Cc:
coq-club AT margaux.inria.fr
Subject: Re: Tactics
I see no other way to do than to change the goal "by hand". But
"Change" is a better solution than "Replace" when the terms are
convertible, since you do not have to prove the equality.
In your example :
Apply ax.
Change (der [x:nat]([x:nat]x=x x)).
Best regards,
--Jean-Christophe.
From werner Fri Dec 12 13:07:11 1997
59:37 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id OAA24269 for
<coq-club-redistribution AT pauillac.inria.fr>;
Wed, 11 Oct 1995 14:59:37 +0100
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id OAA04301 for
coq-club-redistribution@pauillac;
Wed, 11 Oct 1995 14:59:36 +0100
From: Benjamin Werner
<werner AT cadillac.inria.fr>
Message-Id:
<199510111359.OAA04301 AT cadillac.inria.fr>
Subject: bug corrections
To:
coq-club-redistribution AT pauillac.inria.fr
Date: Wed, 11 Oct 1995 14:59:36 +0100 (MET)
X-Mailer: ELM [version 2.4 PL24 ME8]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Length: 503
Lines: 20
Status: RO
Dear colleagues,
Some more bugs have been corrected in Coq V5.10. The organization of
the ftp distribution has been slightly changed. Look at
ftp://ftp.inria.fr/INRIA/coq/V5.10/README for details.
The distribution includes the latest version, as well as patches to
update from the first release and from the previous patch.
Note that, if you use the patches, the reference manual will not be
updated. You might however get the latest version separately.
Best wishes,
Benjamin Werner
From werner Fri Dec 12 13:07:11 1997
23:42 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id UAA27470 for
<coq-club-redistribution AT pauillac.inria.fr>;
Mon, 23 Oct 1995 20:23:42 +0100
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id UAA10562 for
coq-club-redistribution@pauillac;
Mon, 23 Oct 1995 20:23:41 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id MAA10357 for
<werner AT cadillac.inria.fr>;
Mon, 23 Oct 1995 12:35:26 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id MAA16171; Mon, 23 Oct 1995
12:32:19 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id MAA05531; Mon, 23 Oct 1995
12:32:17 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id MAA16168; Mon, 23 Oct 1995
12:32:13 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id MAA05523 for
<coq-club AT pauillac.inria.fr>;
Mon, 23 Oct 1995 12:32:12 +0100
Received: from tamdhu.dcs.st-andrews.ac.uk (tamdhu.dcs.st-and.ac.uk
[138.251.192.40]) by concorde.inria.fr (8.6.10/8.6.9) with SMTP id MAA16090
for
<coq-club AT pauillac.inria.fr>;
Mon, 23 Oct 1995 12:26:55 +0100
Received: from keith.dcs.st-and.ac.uk by tamdhu.dcs.st-andrews.ac.uk
(4.1/SMI-4.1)
id AA10563; Mon, 23 Oct 95 12:29:10 BST
Received: by keith.dcs.st-and.ac.uk (4.1/SMI-4.1)
id AA15356; Mon, 23 Oct 95 11:29:09 GMT
Date: Mon, 23 Oct 95 11:29:09 GMT
From:
aaa AT dcs.st-and.ac.uk
(A^3)
Message-Id:
<9510231129.AA15356 AT keith.dcs.st-and.ac.uk>
To:
coq-club AT pauillac.inria.fr
Subject: Mutual Inductive Sets and Simultaneous Inductions.
Sender:
werner AT cadillac.inria.fr
Content-Length: 803
Lines: 20
Status: RO
Hello all,
I've recently started looking at Coq as part of my PhD project. I am
having some difficulty with the recently introduced features of
Mutual Inductive definitions and Scheme definitions of Mutual Induction
Schemas. I also need to perform a simultaneous induction on
two propositions (inducting over one of the mutually defined Sets
in each of the propositions). I think I can manually show that the
simultaneous induction is valid, but I still will not know how to
tell Coq to use this induction scheme.
Thanks for any help you can give.
*E-mail*aaa AT dcs.st-and.ac.uk*******
Andrew A Adams
**snail*45 Fife Park, St Andrews*** Division of Computer Science
***mail*Fife KY16 9UE, UK********** School of Maths and Comp Sci
****Tel*+44-1334-463268/589-464141* University of St Andrews
From werner Fri Dec 12 13:07:11 1997
49:59 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id IAA01936 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 24 Oct 1995 08:49:59 +0100
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id IAA10659 for
coq-club-redistribution@pauillac;
Tue, 24 Oct 1995 08:49:58 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA10407 for
<werner AT cadillac.inria.fr>;
Mon, 23 Oct 1995 13:32:58 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id NAA17018; Mon, 23 Oct 1995
13:29:57 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA06283; Mon, 23 Oct 1995
13:29:56 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id NAA17015; Mon, 23 Oct 1995
13:29:53 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA06275 for
<coq-club AT pauillac.inria.fr>;
Mon, 23 Oct 1995 13:29:52 +0100
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.6.10/8.6.9) with SMTP id NAA17011 for
<coq-club AT pauillac.inria.fr>;
Mon, 23 Oct 1995 13:29:51 +0100
Received: from lip.ens-lyon.fr (lip-gw) by cri.ens-lyon.fr (5.x/SMI-SVR4)
id AA08223; Mon, 23 Oct 1995 13:29:23 +0100
Received: from aquavit.ens-lyon.fr by lip.ens-lyon.fr (5.x/SMI-SVR4)
id AA11158; Mon, 23 Oct 1995 13:28:51 +0100
Received: by aquavit.ens-lyon.fr (5.x/SMI-SVR4)
id AA03600; Mon, 23 Oct 1995 13:29:16 +0100
Date: Mon, 23 Oct 1995 13:29:16 +0100
From:
Christine.Paulin AT lip.ens-lyon.fr
(Christine Paulin)
Message-Id:
<9510231229.AA03600 AT aquavit.ens-lyon.fr>
To:
aaa AT dcs.st-and.ac.uk
Subject: Re: Mutual Inductive Sets and Simultaneous Inductions.
Cc:
coq-club AT pauillac.inria.fr
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 1707
Lines: 55
Status: RO
Here are some indications to formalize in Coq proofs by mutual induction :
Assume you have two sets M and N mutually defined.
You want to prove (m:M)(P m) by a double induction using the
fact that you also have (n:N)(Q n).
For that you first generate the adequate mutual induction principles
using
Scheme M_N_r := Induction for M sort s
with N_M_r := Induction for N sort s'
with s, s' sucht that (P m):s and (Q n):s'
The term M_N_r has type something like
(P:M->s)(P0:N->s') H1->..Hn->(m:M)(P m)
as N_M_r is (P:M->s)(P0:N->s') H1->..Hn->(n:N)(P0 n)
Then assume you have the following goal to prove :
(m:M)(P m)
you solve it by the tactic
Elim m using M_N_r with P0:=[n:N](Q n).
or equivalently
Apply M_N_r with P0:=[n:N](Q n) m:=m
It should generate the right subgoals.
If you want to keep proofs both P and Q
you should first generate a proof N_M of
(P:M->s)(P0:N->s')H1->..->Hn->((m:M)(P m)/\(n:N)(P0 n))
using Intros P P0 h1 .. hn; Split;Intro.
Exact (M_N_r P P0 h1 .. hn m).
Exact (N_M_r P P0 h1 .. hn n).
Then the subgoal ((m:M)(P m)/\(n:N)(Q n))
is solved with (Apply N_M P Q) and generates the various inductive steps.
If you are using the vernacular command
Fixpoint to define mutual inductive functions you will soon remark that the
tactic Simpl does not simplify nicely the expressions and generates
awful Fix expressions.
Let me recommand you to avoid the use of this tactic and instead to
generate by hand the expected equality properties which are provable using
the Trivial tactic and can be used using Rewrite in subsequent goals.
I hope it helps. Please let us know if you cannot solve your problem with
these indications.
Best regards,
Christine Paulin.
From werner Fri Dec 12 13:07:11 1997
04:12 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id JAA16231 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 26 Oct 1995 09:04:12 +0100
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id JAA11850 for
coq-club-redistribution@pauillac;
Thu, 26 Oct 1995 09:04:11 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA11150 for
<werner AT cadillac.inria.fr>;
Wed, 25 Oct 1995 16:53:25 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id QAA08470; Wed, 25 Oct 1995
16:52:08 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA20267; Wed, 25 Oct 1995
16:52:06 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id QAA08467; Wed, 25 Oct 1995
16:51:58 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA20254 for
<coq-club AT pauillac.inria.fr>;
Wed, 25 Oct 1995 16:51:56 +0100
Received: from columbo.inria.fr (columbo.inria.fr [138.96.24.16]) by
concorde.inria.fr (8.6.10/8.6.9) with ESMTP id QAA08463 for
<coq-club AT pauillac.inria.fr>;
Wed, 25 Oct 1995 16:51:56 +0100
Received: by columbo.inria.fr (8.6.12/8.6.12) id QAA07018; Wed, 25 Oct 1995
16:51:55 +0100
Message-Id:
<199510251551.QAA07018 AT columbo.inria.fr>
To:
coq-club AT pauillac.inria.fr
cc:
ctcoq-request AT sophia.inria.fr
Subject: CtCoq (running with Coq v5.10.14a)
Date: Wed, 25 Oct 1995 16:51:55 +0100
From: Janet Bertot
<Janet.Bertot AT sophia.inria.fr>
Sender:
werner AT cadillac.inria.fr
Content-Length: 1280
Lines: 40
Status: RO
CtCoq provides a working environment for the Coq theorem prover,
via a graphical user interface. The X interface and Coq run as
separate processes and the interface has multiple fonts and colors
for displaying commands, it provides support for constructing commands
and formulae, has an experimental textual presentation of proofs, and,
using a technique called "Proof by Pointing", allows the user to direct
the proof by clicking with the mouse on various parts of the subgoals.
To find out more, visit our www page listed below.
A beta test version of the CtCoq user interface, which runs with
Coq version 5.10.14.a, is now available for both sun4OS4 and Dec
Alpha workstations.
---------------
The www page is:
http://www.inria.fr/croap/ctcoq/ctcoq-eng.html
The direct ftp route is:
The machine: babar.inria.fr (138.96.24.21)
The directory: pub/centaur/ctcoq
Following the README instructions to obtain all that you need.
NB: if you recuperate the system directly by ftp you must send
mail to
ctcoq-request AT sophia.inria.fr
indicating for which
architecture(s) you wish to run the CtCoq system.
For all and any questions/problems please send mail to:
ctcoq-request AT sophia.inria.fr
---------------
regards
janet bertot
From werner Fri Dec 12 13:07:11 1997
39:48 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id PAA01140 for
<coq-club-redistribution AT pauillac.inria.fr>;
Mon, 30 Oct 1995 15:39:48 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA16445 for
coq-club-redistribution@pauillac;
Mon, 30 Oct 1995 15:39:47 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA16434 for
<werner AT cadillac.inria.fr>;
Mon, 30 Oct 1995 15:38:17 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id PAA01094; Mon, 30 Oct 1995
15:38:09 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA09305; Mon, 30 Oct 1995
15:38:08 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id PAA01091; Mon, 30 Oct 1995
15:38:04 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA09296 for
<coq-club AT pauillac.inria.fr>;
Mon, 30 Oct 1995 15:38:03 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id PAA01087 for
<coq-club AT pauillac.inria.fr>;
Mon, 30 Oct 1995 15:38:03 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA16430 for
coq-club@pauillac;
Mon, 30 Oct 1995 15:38:02 +0100
From: Benjamin Werner
<werner AT cadillac.inria.fr>
Message-Id:
<199510301438.PAA16430 AT cadillac.inria.fr>
Subject: Coq V5.10 for MS-DOS
To:
coq-club AT pauillac.inria.fr
Date: Mon, 30 Oct 1995 15:38:02 +0100 (MET)
X-Mailer: ELM [version 2.4 PL24 ME8]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 786
Lines: 23
Status: RO
A version of Coq V5.10 for machines running MS-Dos has just been
implemented by Henri Laulhere. This application is windows compatible and
is reasonably compatible with the unix version.
It comes allready compiled and is available on
ftp://ftp.inria.fr/INRIA/coq/V5.10/DOS
see the README.DOS file for details.
Consider this to be an alpha-version, with all the usual warnings and
disclaimers. It has not been tested on many machines.
You will a high-end PC to run Coq with good performance.
Processor: 486DX or higher
Memory: You can try it with 8Mo
for medium-sized proofs: 16Mo
Comfortable with 32Mo
If you are a PC-user running linux, you will be much better off using
the usual unix distribution.
Benjamin Werner
From werner Fri Dec 12 13:07:12 1997
4:11 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id KAA16843 for
<coq-club-redistribution AT pauillac.inria.fr>;
Mon, 6 Nov 1995 10:54:10 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id KAA00485 for
coq-club-redistribution@pauillac;
Mon, 6 Nov 1995 10:54:10 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id JAA20300 for
<werner AT cadillac.inria.fr>;
Fri, 3 Nov 1995 09:29:58 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id JAA25726; Fri, 3 Nov 1995
09:29:53 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id JAA20299; Fri, 3 Nov 1995
09:29:51 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id JAA25723; Fri, 3 Nov 1995
09:29:47 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id JAA20292 for
<coq-club AT pauillac.inria.fr>;
Fri, 3 Nov 1995 09:29:45 +0100
Received: from victor.labri.u-bordeaux.fr
(root AT victor.labri.u-bordeaux.fr
[147.210.8.168]) by concorde.inria.fr (8.7.1/8.6.9) with SMTP id JAA25719
for
<coq-club AT pauillac.inria.fr>;
Fri, 3 Nov 1995 09:29:44 +0100 (MET)
Received: from alize (alize.labri.u-bordeaux.fr) by
victor.labri.u-bordeaux.fr (4.1/SM-mailhost-BORDEAUX-1.0)
id AA13544; Fri, 3 Nov 95 09:36:44 +0100
Received: by alize (4.1/SM-BORDEAUX0.1)
id AA01979; Fri, 3 Nov 95 09:36:40 +0100
Date: Fri, 3 Nov 95 09:36:40 +0100
From:
Pierre.Casteran AT labri.u-bordeaux.fr
(Pierre CASTERAN)
Message-Id:
<9511030836.AA01979@alize>
To:
coq-club AT pauillac.inria.fr
Subject: addition chains
Sender:
werner AT cadillac.inria.fr
Content-Length: 923
Lines: 32
Status: RO
Hello,
This message to announce i have put in the ftp server of Bordeaux
(ftp.u-bordeaux.fr in /pub/People/casteran/addchains.tar.gz) a
medium size development in Coq (~ 2900 lines).
It is the proof of an algorithm for computing powers in a monoid.
We use many times the "Program" tactic, sometimes with some difficulties
(reported in the comments).
There are 20 modules; each module foo.v comes with its foo.html
documentation. Please begin with "README.html" on Mosaic or netscape,
and follow the links.
If not possible, there is a subdirectory PS/ with the postcript images
of all the .html files.
This development and its documentation have to be improved, so there will
be new versions at the same place.
Thanks in advance to all people who will take some time to look at it,
and will post me some critics or suggestions.
Regards,
Pierre Casteran
email:
Pierre.Casteran AT labri.u-bordeaux.fr
From werner Fri Dec 12 13:07:12 1997
06:25 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id MAA10017 for
<coq-club-redistribution AT pauillac.inria.fr>;
Mon, 20 Nov 1995 12:06:25 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id MAA13461 for
coq-club-redistribution@pauillac;
Mon, 20 Nov 1995 12:06:24 +0100
Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA03429 for
<werner AT cadillac.inria.fr>;
Wed, 8 Nov 1995 13:12:03 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
nez-perce.inria.fr (8.7.1/8.6.9) with ESMTP id NAA16582; Wed, 8 Nov 1995
13:12:02 +0100 (MET)
Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA10970; Wed, 8 Nov 1995
13:11:58 +0100
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
nez-perce.inria.fr (8.7.1/8.6.9) with ESMTP id NAA16575; Wed, 8 Nov 1995
13:11:54 +0100 (MET)
Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id NAA21213 for
<coq-club AT margaux.inria.fr>;
Wed, 8 Nov 1995 13:11:53 +0100
Received: from animal.cs.chalmers.se
(root AT animal.cs.chalmers.se
[129.16.225.30]) by nez-perce.inria.fr (8.7.1/8.6.9) with ESMTP id NAA16571
for
<coq-club AT margaux.inria.fr>;
Wed, 8 Nov 1995 13:11:51 +0100 (MET)
Received: from lips.cs.chalmers.se
(henrikp AT lips-be0.cs.chalmers.se
[129.16.233.25]) by animal.cs.chalmers.se (8.7.1/8.7.1) with ESMTP id
NAA26128; Wed, 8 Nov 1995 13:11:39 +0100 (MET)
Received: (from
henrikp@localhost)
by lips.cs.chalmers.se (8.7.1/8.7.1) id NAA10310; Wed, 8 Nov 1995 13:11:53
+0100 (MET)
Date: Wed, 8 Nov 1995 13:11:53 +0100 (MET)
Message-Id:
<199511081211.NAA10310 AT lips.cs.chalmers.se>
From: Henrik Persson
<henrikp AT cs.chalmers.se>
To:
jaume AT styx.enpc.fr
Subject: formalizations of FOL
CC:
coq-club AT margaux.inria.fr
Sender:
werner AT cadillac.inria.fr
Content-Length: 467
Lines: 16
Status: RO
Dear Sirs,
About formalizations of semantics of first-order languages: I have formalised
a semantics together with the sound and completeness proof for intutionistic
first order predicate logic.
The formalization is not in COQ, but in ALF, and the proof is due to Giovanni
Sambin.
A nice thing (for us) about the proof is that everything is predicative.
I have a draft of the paper, which is submitted to the proceedings of BRA
TYPES'95.
Best regards,
Henrik
From werner Fri Dec 12 13:07:12 1997
45:45 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id LAA09491 for
<coq-club-redistribution AT pauillac.inria.fr>;
Mon, 20 Nov 1995 11:45:45 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id LAA13405 for
coq-club-redistribution@pauillac;
Mon, 20 Nov 1995 11:45:43 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA13328 for
<werner AT cadillac.inria.fr>;
Mon, 20 Nov 1995 11:20:36 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id LAA08806; Mon, 20 Nov 1995
11:20:29 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA07990; Mon, 20 Nov 1995
11:20:25 +0100
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id LAA08795; Mon, 20 Nov 1995
11:20:20 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id LAA05802 for
<coq-club AT margaux.inria.fr>;
Mon, 20 Nov 1995 11:20:19 +0100
Received: from enpc.enpc.fr (enpc.enpc.fr [192.54.211.31]) by
concorde.inria.fr (8.7.1/8.6.9) with SMTP id LAA08791 for
<coq-club AT margaux.inria.fr>;
Mon, 20 Nov 1995 11:20:19 +0100 (MET)
Received: from styx.enpc.fr (styx.enpc.fr [192.54.211.129]) by enpc.enpc.fr
(8.6.10/8.6.10) with SMTP id LAA29532 for
<coq-club AT margaux.inria.fr>;
Mon, 20 Nov 1995 11:22:53 +0100
Received: from elan.enpc.fr by styx.enpc.fr (4.1/SMI-4.1)
id AA25329; Mon, 20 Nov 95 11:22:53 +0100
Date: Mon, 20 Nov 95 11:22:53 +0100
From:
jaume AT styx.enpc.fr
(Mathieu JAUME (Stage DEA))
Message-Id:
<9511201022.AA25329 AT styx.enpc.fr>
To:
coq-club AT margaux.inria.fr
Subject: dependent types
Sender:
werner AT cadillac.inria.fr
Content-Length: 2055
Lines: 85
Status: RO
Hello,
I found some problems for dealing with dependent types. I give below
a sript of the session :
Definition fun : Set := nat.
Definition var : Set := nat.
Definition arity := fun -> nat.
Variable ar:arity.
Mutual Inductive terme : Set :=
tv : var -> terme |
tf : (f:fun)(liste_terme (ar f)) -> terme
with liste_terme : nat -> Set :=
nil : (liste_terme O) |
cons :(n:nat)terme -> (liste_terme n) -> (liste_terme (S n)).
Scheme termeP := Induction for terme Sort Prop
with liste_termeP := Induction for liste_terme Sort Prop.
Definition P : terme -> Prop := [t:terme]
<Prop>Case t of [_:var]False
[f:fun][l:(liste_terme (ar f))]True
end.
1) I would like to prove :
Lemma pb : (n:nat)(l:(liste_terme n))(f:fun)(n=(ar f))->
(Ex [l0:(liste_terme (ar f))](P (tf f l0))).
n : nat
l : (liste_terme n)
f : fun
H : n=(ar f)
============================
(Ex [l0:(liste_terme (ar f))](P (tf f l0)))
But I can't use H :
---> Exists l.
Error: Refine rule passed bogus term.
Goal: []n:nat l:(liste_terme n) f:fun H:n=(ar f)
|- (Ex [l0:(liste_terme (ar f))](P (tf f l0)))
Term: (ex_intro (liste_terme (ar f))
[l0:(liste_terme (ar f))](P (tf f l0)) l ?2181)
---> Rewrite <- H. // Replace (ar f) with n.
Error: Cannot solve a second-order unification problem
---> Change (Ex [l0:(liste_terme n)](P (tf f l0))).
Error: Illegal application (Type Error) :
In environment:
n : nat
l : (liste_terme n)
f : fun
H : n=(ar f)
l0 : (liste_terme n)
The term tf : (f:fun)(liste_terme (ar f))->terme
cannot be applied to the terms
f : fun
l0 : (liste_terme n)
2) Now, I would like write :
Lemma pb : (f:fun)(l:(liste_terme (ar f)))
(ar f)=O -> l=nil.
But :
Error: Illegal application (Type Error) :
In environment:
f : fun
l : (liste_terme (ar f))
<> : (ar f)=O
The term eq : (A:Set)A->A->PropWarning: bdize was fed an incomplete
environment
cannot be applied to the terms
?5 : Set
l : (liste_terme (ar f))
nil : (liste_terme O)
Is there a solution ?
mathieu jaume
From werner Fri Dec 12 13:07:12 1997
00:11 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id MAA09854 for
<coq-club-redistribution AT pauillac.inria.fr>;
Mon, 20 Nov 1995 12:00:10 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id MAA13437 for
coq-club-redistribution@pauillac;
Mon, 20 Nov 1995 12:00:09 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA13424 for
<werner AT cadillac.inria.fr>;
Mon, 20 Nov 1995 11:56:26 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id LAA09774; Mon, 20 Nov 1995
11:56:24 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA08671; Mon, 20 Nov 1995
11:56:21 +0100
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id LAA09766; Mon, 20 Nov 1995
11:56:15 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id LAA06233 for
<coq-club AT margaux.inria.fr>;
Mon, 20 Nov 1995 11:56:14 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.6.9) with ESMTP id LAA09760; Mon, 20 Nov 1995
11:56:13 +0100 (MET)
Received: (from
cornes@localhost)
by pauillac.inria.fr (8.6.10/8.6.6) id LAA08665; Mon, 20 Nov 1995 11:56:12
+0100
Date: Mon, 20 Nov 1995 11:56:12 +0100
From: Cristina Cornes
<Cristina.Cornes AT inria.fr>
Message-Id:
<199511201056.LAA08665 AT pauillac.inria.fr>
To:
coq-club AT margaux.inria.fr,
jaume AT styx.enpc.fr
Subject: Re: dependent types
Sender:
werner AT cadillac.inria.fr
Content-Length: 1668
Lines: 92
Status: RO
Hello,
<< 1) I would like to prove :
Lemma pb : (n:nat)(l:(liste_terme n))(f:fun)(n=(ar f))->
(Ex [l0:(liste_terme (ar f))](P (tf f l0))).
n : nat
l : (liste_terme n)
f : fun
H : n=(ar f)
============================
(Ex [l0:(liste_terme (ar f))](P (tf f l0)))
But I can't use H.
---> Exists l.
>>
You can use Exists l provided you generalize l and you use H to rewrite
n by (ar f) in l's type.
n : nat
l : (liste_terme n)
f : fun
H : n=(ar f)
l0 : (liste_terme (ar f))
============================
(Ex [l0:(liste_terme (ar f))](P (tf f l0)))
pb < Exists l0.
Exists l0.
1 subgoal
n : nat
l : (liste_terme n)
f : fun
H : n=(ar f)
l0 : (liste_terme (ar f))
============================
(P (tf f l0))
Here is the proof script:
Intros.
Generalize l .
Rewrite -> H.
Intro.
Exists l0 .
Simpl.
Try Trivial.
Qed.
<< 2) Now, I would like write :
Lemma pb : (f:fun)(l:(liste_terme (ar f)))
(ar f)=O -> l=nil.
But :
Error: Illegal application (Type Error) : >>
The problem here is that the expression l=nil is not because
l:(liste_terme (ar f)) and nil: (list_terme O) well typed. There
are two possible solutions:
Either you use the usual equality eq and you state the lemma in this form:
Lemma pb : (f:fun)(l:(liste_terme O)) l=nil.
Either you use a dependent equality that is defined in the file
theories/STREAMS/eqdep:
Inductive eq_dep [p:U;x:(P p)] : (q:U)(P q)->Prop :=
eq_dep_intro : (eq_dep p x p x).
and you state your lemma in this way:
Lemma pb : (f:fun)(l:(liste_terme (ar f)))
(eq_dep nat liste_terme (ar f) l O nil).
Cheers
cristina
From werner Fri Dec 12 13:07:12 1997
13:14 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA26999 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 29 Dec 1995 17:13:13 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA28884 for
coq-club-redistribution@pauillac;
Fri, 29 Dec 1995 17:13:12 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id SAA19191 for
<werner AT cadillac.inria.fr>;
Wed, 20 Dec 1995 18:20:05 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id SAA04201; Wed, 20 Dec 1995
18:20:05 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id SAA27108; Wed, 20 Dec 1995
18:20:00 +0100
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id SAA04192; Wed, 20 Dec 1995
18:19:58 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id SAA16017 for
<coq-club AT margaux.inria.fr>;
Wed, 20 Dec 1995 18:19:47 +0100
Received: from tamdhu.dcs.st-andrews.ac.uk (tamdhu.dcs.st-and.ac.uk
[138.251.192.40]) by concorde.inria.fr (8.7.1/8.7.1) with SMTP id SAA04171
for
<coq-club AT margaux.inria.fr>;
Wed, 20 Dec 1995 18:19:42 +0100 (MET)
Received: from keith.dcs.st-and.ac.uk by tamdhu.dcs.st-andrews.ac.uk
(4.1/SMI-4.1)
id AA28202; Wed, 20 Dec 95 17:19:30 GMT
Received: by keith.dcs.st-and.ac.uk (4.1/SMI-4.1)
id AA22680; Wed, 20 Dec 95 17:19:30 GMT
Date: Wed, 20 Dec 95 17:19:30 GMT
From:
aaa AT dcs.st-and.ac.uk
(A^3)
Message-Id:
<9512201719.AA22680 AT keith.dcs.st-and.ac.uk>
To:
coq-club AT margaux.inria.fr
Subject: Report of tactics after Save command.
Sender:
werner AT cadillac.inria.fr
Content-Length: 971
Lines: 24
Status: RO
I use Coq v5.10 within an Emacs session, so that I can easily copy and paste
commands etc between text files and the interactive session. When performing
proofs I will usually do the proof then copy the output from the "Save."
command given at the end into a script file (I assume this is why the
list of commands appears in this way), and have noticed a minor bug
in the output from "Save.". If a "Case" command has been given such as:
Case (eqb b1 b2).
then the output from the "Save." command gives the following:
Case (eqb b1 b2)().
which gives a syntax error if read in from a file or pasted into the
interactive session. It's only a very minor bug, but it should be easy
enough to prevent in future releases.
*E-mail*aaa AT dcs.st-and.ac.uk*******
Andrew A Adams
**snail*45 Fife Park, St Andrews*** Division of Computer Science
***mail*Fife KY16 9UE, UK********** School of Maths and Comp Sci
****Tel*+44-1334-463268/589-464141* University of St Andrews
From werner Fri Dec 12 13:07:12 1997
14:03 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA27006 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 29 Dec 1995 17:14:03 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA28889 for
coq-club-redistribution@pauillac;
Fri, 29 Dec 1995 17:14:02 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id KAA20931 for
<werner AT cadillac.inria.fr>;
Fri, 22 Dec 1995 10:47:30 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id KAA28501; Fri, 22 Dec 1995
10:47:28 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id KAA26877; Fri, 22 Dec 1995
10:47:25 +0100
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id KAA28496; Fri, 22 Dec 1995
10:47:06 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id KAA24536 for
<coq-club AT margaux.inria.fr>;
Fri, 22 Dec 1995 10:47:03 +0100
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id KAA28492 for
<coq-club AT margaux.inria.fr>;
Fri, 22 Dec 1995 10:46:59 +0100 (MET)
Received: from lip.ens-lyon.fr (lip-gw) by cri.ens-lyon.fr (5.x/SMI-SVR4)
id AA18513; Fri, 22 Dec 1995 10:46:45 +0100
Received: from aquavit.ens-lyon.fr by lip.ens-lyon.fr (5.x/SMI-SVR4)
id AA26781; Fri, 22 Dec 1995 10:46:34 +0100
Received: by aquavit.ens-lyon.fr (5.x/SMI-SVR4)
id AA00703; Fri, 22 Dec 1995 10:46:37 +0100
Date: Fri, 22 Dec 1995 10:46:37 +0100
From:
Christine.Paulin AT lip.ens-lyon.fr
(Christine Paulin)
Message-Id:
<9512220946.AA00703 AT aquavit.ens-lyon.fr>
To:
coq-club AT margaux.inria.fr,
aaa AT dcs.st-and.ac.uk
Subject: Re: Report of tactics after Save command.
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 168
Lines: 9
Status: RO
Dear Andrew,
Thanks for reporting this bug, the problem is now fixed.
A new distribution of Coq is scheduled at the end of january.
Best regards,
Christine Paulin.
From werner Fri Dec 12 13:07:12 1997
33:19 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA06706 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 16 Jan 1996 11:33:19 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id LAA27791 for
coq-club-redistribution@pauillac;
Tue, 16 Jan 1996 11:33:18 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA19647 for
<werner AT cadillac.inria.fr>;
Thu, 11 Jan 1996 13:22:47 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA29235; Thu, 11 Jan 1996
13:22:46 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA13497; Thu, 11 Jan 1996
13:22:45 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA29232; Thu, 11 Jan 1996
13:22:41 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA13486 for
<coq-club AT pauillac.inria.fr>;
Thu, 11 Jan 1996 13:22:39 +0100
Received: from und.ida.liu.se (styrenix.ida.liu.se [130.236.186.13]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id NAA29228 for
<coq-club AT pauillac.inria.fr>;
Thu, 11 Jan 1996 13:22:33 +0100 (MET)
Received: from su1-2.ida.liu.se by und.ida.liu.se
(5.65b/ida.minimaster-V1.0b6d5)
id AA13677; Thu, 11 Jan 96 12:23:07 +0100
Message-Id:
<9601111123.AA13677 AT und.ida.liu.se>
Date: Thu, 11 Jan 96 12:23:08 0100
Sender:
werner AT cadillac.inria.fr
From: Lars Lindqvist
<d89larli AT und.ida.liu.se>
X-Mailer: Mozilla 1.1N (X11; I; SunOS 5.4 sun4m)
Mime-Version: 1.0
To:
coq-club AT pauillac.inria.fr
Subject: Mac-version of Coq
X-Url: http://pauillac.inria.fr/coq/systeme_coq-eng.html
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=us-ascii
Content-Length: 190
Lines: 8
Status: RO
What is the status of the Mac version of Coq? I read that such a
version should be available in the fall of 1995. If it is available
where can I get it (via ftp)?
Regards Lars Lindqvist
From werner Fri Dec 12 13:07:12 1997
26:05 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA06488 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 16 Jan 1996 11:25:59 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id LAA27734 for
coq-club-redistribution@pauillac;
Tue, 16 Jan 1996 11:25:58 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA25728 for
<werner AT cadillac.inria.fr>;
Mon, 15 Jan 1996 15:10:09 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA19893; Mon, 15 Jan 1996
15:10:07 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA06029; Mon, 15 Jan 1996
15:10:05 +0100
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA19819; Mon, 15 Jan 1996
15:07:31 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id PAA04459 for
<coq-club AT margaux.inria.fr>;
Mon, 15 Jan 1996 15:07:30 +0100
Received: from flits.cs.vu.nl
(root AT flits.cs.vu.nl
[130.37.16.12]) by concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA19815
for
<coq-club AT margaux.inria.fr>;
Mon, 15 Jan 1996 15:07:27 +0100 (MET)
Received: by flits.cs.vu.nl (Smail3.1.28.1 #22)
id m0tbpZK-0005rwC; Mon, 15 Jan 96 15:07 +0100
Message-Id:
<m0tbpZK-0005rwC AT flits.cs.vu.nl>
Date: Mon, 15 Jan 96 15:07:30 MET
From: Laurette
<laurette AT cs.vu.nl>
To:
coq-club AT margaux.inria.fr
cc:
laurette AT cs.vu.nl
Subject: Formalising Numerical Analysis?
Sender:
werner AT cadillac.inria.fr
Content-Length: 342
Lines: 8
Status: RO
Hi,
I am a numerical analyst and a newcomer to proof checking. Is it at
all possible, sensible, desirable to try to formalise (some part of )
numerical analysis using Coq. If so, could you perhaps suggest some
references to this application of Coq or any related application?
Thanking you in advance.
Laurette Pretorius
(laurette AT cs.vu.nl)
From werner Fri Dec 12 13:07:12 1997
16:31 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA09693 for
<coq-club-redistribution AT pauillac.inria.fr>;
Mon, 22 Jan 1996 16:16:30 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA08551 for
coq-club-redistribution@pauillac;
Mon, 22 Jan 1996 16:16:29 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA08356 for
<werner AT cadillac.inria.fr>;
Mon, 22 Jan 1996 13:35:55 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA06141; Mon, 22 Jan 1996
13:35:54 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA29667; Mon, 22 Jan 1996
13:35:52 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA06138; Mon, 22 Jan 1996
13:35:49 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA29637 for
<coq-club AT pauillac.inria.fr>;
Mon, 22 Jan 1996 13:35:47 +0100
Received: from chenas.inria.fr (chenas.inria.fr [192.134.192.136]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id NAA06134 for
<coq-club AT pauillac.inria.fr>;
Mon, 22 Jan 1996 13:35:42 +0100 (MET)
Received: from dassav (dassav.dassault-avion.fr) by chenas.inria.fr
(5.65c8d/92.02.29)
via EUnet-France id AA19785; Mon, 22 Jan 1996 13:35:33 +0100 (MET)
Received: from fnet-ia1.dassault-avion.fr by dassav (5.x/SMI-SVR4)
id AA21366; Mon, 22 Jan 1996 13:34:23 +0100
Received: by fnet-ia1.dassault-avion.fr (5.x/SMI-SVR4)
id AA01100; Mon, 22 Jan 1996 13:35:24 +0100
Date: Mon, 22 Jan 1996 13:35:24 +0100
From:
ledinot AT dassault-avion.fr
(Utilisateur FNET)
Message-Id:
<9601221235.AA01100 AT fnet-ia1.dassault-avion.fr>
Content-Type: text
Apparently-To:
coq-club AT pauillac.inria.fr
Sender:
werner AT cadillac.inria.fr
Content-Length: 2095
Lines: 55
Status: RO
>Hi,
>I am a numerical analyst and a newcomer to proof checking. Is it at
>all possible, sensible, desirable to try to formalise (some part of )
>numerical analysis using Coq. If so, could you perhaps suggest some
>references to this application of Coq or any related application?
possible: For mathematical results (upper bounds of approximation errors, etc)
I think so (infinite ojects are now definable in Coq) but
provided proof-checking is done only LOCALLY. All mathematical
analysis classical theorems have to be defined as Axioms instead
of Lemmas or Theorems, because of the lack of Preludes in this
application area.
If the goal is to proof-check FORTRAN programs of Numerical
Analysis,
I' m affraid the answer is no, for the time being.
sensible, desirable:
It depends on what you aim at. Surely the price to pay
is a great amount of work. The award will be a very deep
understanding
on the reason why such doubtful mathematical result is true indeed,
or why it is surely false. An other sensible motivation may be the
development of constructive versions of classical proofs, to design
safely new algorithms in Numerical Analysis. These algorithms will
be designed in a functional recursive formulation, that can be then
manually translated into FORTRAN.
any related application:
We intended to use Coq in Control. Because of the
lack of tractable mathematical results on the behavior of solutions
of
non-linear ordinary differential equation systems, we gave up.
I' m not aware of any paper related to Coq in this field.
E.L
-----------------------------
Emmanuel Ledinot
DASSAULT-AVIATION
DGT/DTN/EL
78 Quai Marcel Dassault
92215 Saint Cloud Cedex
France
email:
ledinot AT dassault-avion.fr
Tel: (1) 47.11.53.05
------------------------------
From werner Fri Dec 12 13:07:12 1997
52:46 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA11467 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 30 Jan 1996 14:52:45 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id OAA19419 for
coq-club-redistribution@pauillac;
Tue, 30 Jan 1996 14:52:44 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id KAA16896 for
<werner AT cadillac.inria.fr>;
Mon, 29 Jan 1996 10:55:59 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id KAA16974; Mon, 29 Jan 1996
10:55:58 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id KAA11398; Mon, 29 Jan 1996
10:55:56 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id KAA16971; Mon, 29 Jan 1996
10:55:52 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id KAA11384 for
<coq-club AT pauillac.inria.fr>;
Mon, 29 Jan 1996 10:55:50 +0100
Received: from arthur.inria.fr (arthur.inria.fr [138.96.24.74]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id KAA16965 for
<coq-club AT pauillac.inria.fr>;
Mon, 29 Jan 1996 10:55:50 +0100 (MET)
Received: by arthur.inria.fr (8.6.12/8.6.12) id KAA05586; Mon, 29 Jan 1996
10:55:48 +0100
Message-Id:
<199601290955.KAA05586 AT arthur.inria.fr>
To:
coq-club AT pauillac.inria.fr
Subject: Prolog
Date: Mon, 29 Jan 1996 10:55:47 +0100
From: Gilles Kahn
<Gilles.Kahn AT sophia.inria.fr>
Sender:
werner AT cadillac.inria.fr
Content-Length: 435
Lines: 16
Status: RO
It is frequently the case that I cannot finish a proof with
Auto because a theorem that I would need deserves to be given
a parameter, and hence is not allowed in the hint database.
I want to use the Prolog tactic, which seems to be just what I need.
I am not too clear with the manual explanation:
what is the role of the terms [term1 term2 term3] ?
Is Prolog [t] n the same as Generalize t; Intro foo; Prolog [] n'.
?
Gilles
From werner Fri Dec 12 13:07:12 1997
04:59 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA11790 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 30 Jan 1996 15:04:58 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA19454 for
coq-club-redistribution@pauillac;
Tue, 30 Jan 1996 15:04:58 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA18073 for
<werner AT cadillac.inria.fr>;
Mon, 29 Jan 1996 17:54:36 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA27262; Mon, 29 Jan 1996
17:54:36 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA27033; Mon, 29 Jan 1996
17:54:34 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA27259; Mon, 29 Jan 1996
17:54:32 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA27023 for
<coq-club AT pauillac.inria.fr>;
Mon, 29 Jan 1996 17:54:30 +0100
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id RAA27255 for
<coq-club AT pauillac.inria.fr>;
Mon, 29 Jan 1996 17:54:30 +0100 (MET)
Received: from lip.ens-lyon.fr (lip-gw) by cri.ens-lyon.fr (5.x/SMI-SVR4)
id AA19981; Mon, 29 Jan 1996 17:54:29 +0100
Received: from aquavit.ens-lyon.fr by lip.ens-lyon.fr (5.x/SMI-SVR4)
id AA05570; Mon, 29 Jan 1996 17:54:28 +0100
Received: by aquavit.ens-lyon.fr (5.x/SMI-SVR4)
id AA17163; Mon, 29 Jan 1996 17:54:27 +0100
Date: Mon, 29 Jan 1996 17:54:27 +0100
From:
Christine.Paulin AT lip.ens-lyon.fr
(Christine Paulin)
Message-Id:
<9601291654.AA17163 AT aquavit.ens-lyon.fr>
To:
coq-club AT pauillac.inria.fr,
Gilles.Kahn AT sophia.inria.fr
Subject: Re: Prolog
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 1312
Lines: 41
Status: RO
Prolog [term1 .. termn] p on a goal with hypothesis H1 .. Hp will
apply the first succesful tactic in
Intro, EApply H1, .. ,EApply Hp, EApply term1, ... EApply termn,
Assumption H1,..,Assumption Hp.
then applies Prolog [term1 .. termn] p-1 to the remaining subgoals
and fails when p<0
(Assumption id, try Exact id after unifying the type of id with the current
goal)
So it should be (more or less) equivalent to making first Generalize on
the lemmas then Intro then Prolog [] p.
Warning : the tactic Prolog is not at all robust.
Here are the known bugs :
It does not implement a powerful backtracking :
If you have to prove
(le x0 x3) with hypothesis
(le x0 x1) (le x0 x2) (le x2 x3)
may fail to be solved because EApply le_trans generates the two subgoals
(le x0 ?) (le ? x3) the first one is solved by (le x0 x1) and the second one
becomes (le x1 x3) which cannot be solved. There is no proper backtracking on
the first solved subgoal (we shall need for that a more sophisticated THEN
tactical).
The second problem is that EApply in general (and consequentely Prolog)
may left unsolved existential
variables which are not properly detected. When you save your proof,
the proof term will be rejected.
Exemple :
Goal (Ex [x:nat]True).
EApply ex_intro.
Trivial.
Save.
Christine Paulin.
From werner Fri Dec 12 13:07:12 1997
6:06 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA03003 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 2 Feb 1996 11:56:05 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id LAA26923 for
coq-club-redistribution@pauillac;
Fri, 2 Feb 1996 11:56:05 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA26842 for
<werner AT cadillac.inria.fr>;
Fri, 2 Feb 1996 11:18:23 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA01834; Fri, 2 Feb 1996
11:18:16 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA17870; Fri, 2 Feb 1996
11:18:15 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA01827; Fri, 2 Feb 1996
11:18:11 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA17854 for
<coq-club AT pauillac.inria.fr>;
Fri, 2 Feb 1996 11:18:10 +0100
Received: from victor.labri.u-bordeaux.fr
(root AT victor.labri.u-bordeaux.fr
[147.210.8.168]) by concorde.inria.fr (8.7.1/8.7.1) with SMTP id LAA01823
for
<coq-club AT pauillac.inria.fr>;
Fri, 2 Feb 1996 11:18:09 +0100 (MET)
Received: from dearth.labri (dearth.labri.u-bordeaux.fr) by
victor.labri.u-bordeaux.fr (4.1/SM-mailhost-BORDEAUX-1.0)
id AA19566; Fri, 2 Feb 96 11:19:20 +0100
Received: by dearth.labri (5.0/SMI-SVR4)
id AA01567; Fri, 2 Feb 1996 11:22:56 --100
Date: Fri, 2 Feb 1996 11:22:56 --100
From:
dedietri AT labri.u-bordeaux.fr
(Gabriel de Dietrich (DEA 95-96))
Message-Id:
<9602021022.AA01567 AT dearth.labri>
To:
coq-club AT pauillac.inria.fr
Subject: Fix and Cofix *tactics*
Sender:
werner AT cadillac.inria.fr
Content-Length: 581
Lines: 21
Status: RO
Hi all,
I would like to have some more information about the Fix and Cofix
tactics since they're not documented in the Reference Manual. Of
course, in Chapter 6 there are some explanations about the Fix
operator but nothing about how to use it as a tactic. Only Cofix is
(lightly) explained in the "Co-Inductive Types" document.
Thanks.
--
Gabriel de Dietrich No www page yet.
dedietri AT labri.u-bordeaux.fr
<< Moi, se dit le petit prince, si j'avais cinquante-trois minutes
a depenser, je marcherais tout doucement vers une fontaine... >>
A. de St.-Ex.
From werner Fri Dec 12 13:07:12 1997
4:11 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id SAA14538 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 2 Feb 1996 18:44:10 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id SAA27878 for
coq-club-redistribution@pauillac;
Fri, 2 Feb 1996 18:44:09 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id SAA27861 for
<werner AT cadillac.inria.fr>;
Fri, 2 Feb 1996 18:42:36 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id SAA14494; Fri, 2 Feb 1996
18:42:34 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id SAA07275; Fri, 2 Feb 1996
18:42:33 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id SAA14487; Fri, 2 Feb 1996
18:42:30 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id SAA07266 for
<coq-club AT pauillac.inria.fr>;
Fri, 2 Feb 1996 18:42:28 +0100
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id SAA14483 for
<coq-club AT pauillac.inria.fr>;
Fri, 2 Feb 1996 18:42:27 +0100 (MET)
Received: from lip.ens-lyon.fr (lip-gw) by cri.ens-lyon.fr (5.x/SMI-SVR4)
id AA08690; Fri, 2 Feb 1996 18:42:27 +0100
Received: from champagne.ens-lyon.fr by lip.ens-lyon.fr (5.x/SMI-SVR4)
id AA02159; Fri, 2 Feb 1996 18:42:26 +0100
Received: by champagne.ens-lyon.fr (5.x/SMI-SVR4)
id AA00440; Fri, 2 Feb 1996 18:42:25 +0100
Date: Fri, 2 Feb 1996 18:42:25 +0100
From:
Eduardo.Gimenez AT lip.ens-lyon.fr
(Eduardo Gimenez)
Message-Id:
<9602021742.AA00440 AT champagne.ens-lyon.fr>
To:
coq-club AT pauillac.inria.fr
Subject: Re: Fix and Cofix tactics.
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 3448
Lines: 147
Status: RO
> Hi all,
>
> I would like to have some more information about the Fix and Cofix
> tactics since they're not documented in the Reference Manual. Of
> course, in Chapter 6 there are some explanations about the Fix
> operator but nothing about how to use it as a tactic. Only Cofix is
> (lightly) explained in the "Co-Inductive Types" document.
>
> Thanks.
> Gabriel de Dietrich No www page yet.
Hello,
The Fix and Cofix tactics are not documented since they are not
stable yet, we hope to have something better in the future
(see for example the comments about the Cofix tactic in the
document "CoInductives.tex" included in the distribution).
These tactics allow the construction of a proof object as it would
be defined using the Fixpoint or CoFixpoint commands. The Cofix
tactic introduces a variable in the context which has the same type
of the goal, and that can be used to do a recursive call in the proof.
Similarly for the tactic Fix n, which also introduces all the arguments
until the nth one (included). The latter argument is then considered as
the decreasing argument of the Fixpoint definition.
For example, in order to prove that (n:nat)(plus n O)=n we can
proceed as follows :
Coq < Lemma mylemma : (n:nat)(plus n O)=n.
1 subgoal
============================
(n:nat)(plus n O)=n
mylemma < Fix 1.
1 subgoal
mylemma : (n:nat)(plus n O)=n
n : nat
============================
(plus n O)=n
mylemma < Case n.
2 subgoals
mylemma : (n:nat)(plus n O)=n
n : nat
============================
(plus O O)=O
subgoal 2 is:
(n:nat)(plus (S n) O)=(S n)
mylemma < Trivial.
1 subgoal
mylemma : (n:nat)(plus n O)=n
n : nat
============================
(n:nat)(plus (S n) O)=(S n)
mylemma < Intro n0;Simpl; Rewrite (mylemma n0).
1 subgoal
mylemma : (n:nat)(plus n O)=n
n : nat
n0 : nat
============================
(S n0)=(S n0)
mylemma < Trivial.
Subtree proved!
WARNING! The guard condition which ensures the termination of the
proof is verified only once the proof is complete. This means
that you have to be careful about using automatic tactics (like Auto)
which could make bad use of the hypothesis mylemma and generate
a non-decreasing recursive call. Here's an example:
Coq < Lemma mylemma : (n:nat)(plus n O)=n.
1 subgoal
============================
(n:nat)(plus n O)=n
toto < Fix 1.
1 subgoal
mylemma : (n:nat)(plus n O)=n
n : nat
============================
(plus n O)=n
toto < Auto.
Subtree proved!
toto < Qed.
Fix 1.
Auto.
Error: Recursive call applied to an illegal term
The recursive definition [n:nat](mylemma n) is not well-formed
during command Save.
Anyway, you can check at any moment during the construction of the
proof if the condition has been violated, using the command Guarded.
Coq < Lemma mylemma : (n:nat)(plus n O)=n.
1 subgoal
============================
(n:nat)(plus n O)=n
mylemma < Fix 1.
1 subgoal
mylemma : (n:nat)(plus n O)=n
n : nat
============================
(plus n O)=n
mylemma < Guarded.
The condition holds up to here
mylemma < Auto.
Subtree proved!
mylemma < Guarded.
Condition violated : Recursive call applied to an illegal term
The recursive definition [n:nat](mylemma n)
is not well-formed
mylemma <
Obviously, this remark is also valid for the Cofix tactic.
Regards,
Eduardo Gimenez.
From werner Fri Dec 12 13:07:12 1997
3:36 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA25937 for
<coq-club-redistribution AT pauillac.inria.fr>;
Sun, 4 Feb 1996 16:33:35 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA00434 for
coq-club-redistribution@pauillac;
Sun, 4 Feb 1996 16:33:35 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA00300 for
<werner AT cadillac.inria.fr>;
Sun, 4 Feb 1996 14:25:19 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA25580; Sun, 4 Feb 1996
14:25:11 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA03447; Sun, 4 Feb 1996
14:25:10 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA25577; Sun, 4 Feb 1996
14:25:06 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA03440 for
<coq-club AT pauillac.inria.fr>;
Sun, 4 Feb 1996 14:25:04 +0100
Received: from arthur.inria.fr (arthur.inria.fr [138.96.24.74]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA25573 for
<coq-club AT pauillac.inria.fr>;
Sun, 4 Feb 1996 14:25:02 +0100 (MET)
Received: by arthur.inria.fr (8.6.12/8.6.12) id OAA17833; Sun, 4 Feb 1996
14:25:02 +0100
Message-Id:
<199602041325.OAA17833 AT arthur.inria.fr>
To:
coq-club AT pauillac.inria.fr
Subject: something escapes me
Date: Sun, 04 Feb 1996 14:25:01 +0100
From: Gilles Kahn
<Gilles.Kahn AT sophia.inria.fr>
Sender:
werner AT cadillac.inria.fr
Content-Length: 490
Lines: 32
Status: RO
I prove that something exists. Furthermore, I prove that it is
unique. Now, I would like to give this thing a name.
How do I do this? Note that I work in Type, not in Set.
To sum up:
...
Variable U:Type.
...
Theorem Existence: ?bot:U. (P bot).
...
Qed.
Theorem Unicity: (bot, bot':U) (P bot) -> (P bot') -> bot == bot'.
...
Qed.
Definition Bottom: U := ?????
Any help will be appreciated. I realize that the answer may be
absolutely obvious, but I don't find it.
Gilles Kahn
From werner Fri Dec 12 13:07:12 1997
3:01 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA25933 for
<coq-club-redistribution AT pauillac.inria.fr>;
Sun, 4 Feb 1996 16:33:00 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA00428 for
coq-club-redistribution@pauillac;
Sun, 4 Feb 1996 16:33:00 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA00315 for
<werner AT cadillac.inria.fr>;
Sun, 4 Feb 1996 14:39:43 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA25653; Sun, 4 Feb 1996
14:39:41 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA03586; Sun, 4 Feb 1996
14:39:41 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA25650; Sun, 4 Feb 1996
14:39:37 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA03579 for
<coq-club AT pauillac.inria.fr>;
Sun, 4 Feb 1996 14:39:37 +0100
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id OAA25646 for
<coq-club AT pauillac.inria.fr>;
Sun, 4 Feb 1996 14:39:36 +0100 (MET)
Received: from lip.ens-lyon.fr (lip-gw) by cri.ens-lyon.fr (5.x/SMI-SVR4)
id AA01573; Sun, 4 Feb 1996 14:39:35 +0100
Received: from aquavit.ens-lyon.fr by lip.ens-lyon.fr (5.x/SMI-SVR4)
id AA27797; Sun, 4 Feb 1996 14:39:33 +0100
Received: by aquavit.ens-lyon.fr (5.x/SMI-SVR4)
id AA18567; Sun, 4 Feb 1996 14:39:31 +0100
Date: Sun, 4 Feb 1996 14:39:31 +0100
From:
Christine.Paulin AT lip.ens-lyon.fr
(Christine Paulin)
Message-Id:
<9602041339.AA18567 AT aquavit.ens-lyon.fr>
To:
coq-club AT pauillac.inria.fr,
Gilles.Kahn AT sophia.inria.fr
Subject: Re: something escapes me
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 622
Lines: 18
Status: RO
The answer is not obvious, I even do not think it is possible.
As soon as ?bot:U. (P bot) is a theorem of type Prop and U is
in Set you cannot expect to project and get the object of type U
(even if it is provably unique).
If you could prove a property (sig bot:U. (P bot)):Type the you could project
and get the object but it will probably mean that you are able to construct
directly the term bottom of type U.
What you could do is open a section and introduce
Variable Bottom : U.
Hypothesis Pbot : (P Bottom U).
and then in each theorem (of type Prop) you could discharge these hypotheses.
Christine Paulin.
From werner Fri Dec 12 13:07:12 1997
3:58 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA08972 for
<coq-club-redistribution AT pauillac.inria.fr>;
Mon, 5 Feb 1996 15:53:57 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA01824 for
coq-club-redistribution@pauillac;
Mon, 5 Feb 1996 15:53:56 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA01805 for
<werner AT cadillac.inria.fr>;
Mon, 5 Feb 1996 15:46:05 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA08791; Mon, 5 Feb 1996
15:46:03 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA24382; Mon, 5 Feb 1996
15:46:02 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA08786; Mon, 5 Feb 1996
15:45:59 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA24375 for
<coq-club AT pauillac.inria.fr>;
Mon, 5 Feb 1996 15:45:57 +0100
Received: from bescot.cl.cam.ac.uk
(exim AT bescot.cl.cam.ac.uk
[128.232.32.10]) by concorde.inria.fr (8.7.1/8.7.1) with SMTP id PAA08776
for
<coq-club AT pauillac.inria.fr>;
Mon, 5 Feb 1996 15:45:45 +0100 (MET)
Received: from albatross.cl.cam.ac.uk [128.232.0.96] (lcp)
by bescot.cl.cam.ac.uk with esmtp (Exim 0.37 #2)
id E0tjS9o-0001wf-00; Mon, 5 Feb 1996 14:44:40 +0000
X-Mailer: exmh version 1.6.4+cl+patch 10/10/95
To: Gilles Kahn
<Gilles.Kahn AT sophia.inria.fr>
Cc:
coq-club AT pauillac.inria.fr
Subject: Re: something escapes me
X-uri: <URL:http://www.cl.cam.ac.uk/users/lcp>
X-face: "OrDM]eXxWpb;,!g'n)u!-ss/8qvWB4*r>rA5~IAaMPwt$YO^oBckRP3N&D0.K"wKN7B>
E&BJ5P-gy=o">rX=;.8M:sNp55m9?O%dK#v4{5e#8=-q9FUHURBbRfE:g\DybYQW4~MkQ
13swsz`i*9}*8fy}.au9jo.
In-reply-to: Your message of Sun, 04 Feb 1996 14:25:01 +0100.
<199602041325.OAA17833 AT arthur.inria.fr>
Date: Mon, 05 Feb 1996 14:44:28 +0100
From: Lawrence C Paulson
<Larry.Paulson AT cl.cam.ac.uk>
Message-Id:
<E0tjS9o-0001wf-00 AT bescot.cl.cam.ac.uk>
Sender:
werner AT cadillac.inria.fr
Content-Length: 577
Lines: 15
Status: RO
> I prove that something exists. Furthermore, I prove that it is
> unique. Now, I would like to give this thing a name.
Sounds like you need a description operator. I don't know about the
constructive legitimacy of descriptions, but I've heard it is consistent to
add the necessary axiom. In classical logic, stronger versions are sometimes
used (e.g. Hilbert's epsilon).
For a discussion of some of the underlying issues one can do worse than to
look at Principia Mathematica, Chapter III. (Though I don't recommend the
solution proposed there.)
--
Larry
From werner Fri Dec 12 13:07:12 1997
7:53 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA10320 for
<coq-club-redistribution AT pauillac.inria.fr>;
Mon, 5 Feb 1996 16:37:53 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA01936 for
coq-club-redistribution@pauillac;
Mon, 5 Feb 1996 16:37:52 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA01877 for
<werner AT cadillac.inria.fr>;
Mon, 5 Feb 1996 16:28:54 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA10048; Mon, 5 Feb 1996
16:28:52 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA25322; Mon, 5 Feb 1996
16:28:50 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA10041; Mon, 5 Feb 1996
16:28:41 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA25303 for
<coq AT pauillac.inria.fr>;
Mon, 5 Feb 1996 16:28:40 +0100
Received: from pavie.inria.fr (pavie.inria.fr [128.93.11.36]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id QAA10038 for
<coq-club AT inria.fr>;
Mon, 5 Feb 1996 16:28:39 +0100 (MET)
Received: by pavie.inria.fr; Mon, 5 Feb 1996 16:26:03 +0100
Date: Mon, 5 Feb 1996 16:26:03 +0100
From: Gilles Dowek
<dowek AT pavie.inria.fr>
Message-Id:
<199602051526.AA11747 AT pavie.inria.fr>
To:
coq-club AT inria.fr
Subject: descriptions operator
Sender:
werner AT cadillac.inria.fr
Content-Length: 1147
Lines: 40
Status: RO
Hi Gilles,
Curently, there is no descriptions operator implemented in Coq. However
if you have proven the proposition
(Ex x:T)(P x)
you can safely add a variable y:T and an axiom a:(P y) because you get
a consistent and even conservative extension. Each time you prove a
proposition Q with no occurrence of y and a in the new context, you
can prove the proposition
(y:T)(P y) => Q
in the old context and thus the proposition
Q
in the old context (using the proof of (Ex x:T)(P x) and the elimination
rule of the existential quantifier).
You have however a restriction with this simple-minded scheme because
if your proof of (Ex x:T)(P x) is parametrized in some z, this
dependency is lost when you declare y. Thus, you cannot prove the axiom
of choice this way.
If this is not enough, you may also axiomatize a choice (or descriptions
operator) and use it. For instance, you can add the declarations
C:(T:Type)(P:T -> Prop)T.
Choice:(T:Type)(P:T -> Prop)(Ex x:T (P x)) => (P (C T P)).
But I have no guarantee about the consistency of this extension. May
be somebody does.
Cheers
Gilles Dowek
From werner Fri Dec 12 13:07:12 1997
4:51 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA29056 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 9 Feb 1996 17:04:52 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA05178 for
coq-club-redistribution@pauillac;
Fri, 9 Feb 1996 17:04:51 +0100
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA05170 for werner; Fri, 9 Feb 1996
17:04:24 +0100
From: Benjamin Werner
<werner AT cadillac.inria.fr>
Message-Id:
<199602091604.RAA05170 AT cadillac.inria.fr>
Subject: Formation COQ a Lyon 27-29 Mars 96
To:
werner AT cadillac.inria.fr
(Benjamin Werner)
Date: Fri, 9 Feb 1996 17:04:24 +0100 (MET)
X-Mailer: ELM [version 2.4 PL24 ME8]
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 2505
Lines: 77
Status: RO
[ This is an anouncement for a three day Coq course, held in Lyon
on the 27th, 28th and 29th of next March. Since the course is in
french, so is the anounecement. ]
Cher(e) collegue,
Vous trouverez ci-joint une pre-annonce (en forme de questionnaire)
pour une formation Coq.
Merci d'y repondre et/ou de la diffuser autour de vous aux personnes
susceptibles d'etre interessees. Je reste a votre disposition pour plus de
renseignements.
Christine Paulin.
===========
LIP-LR5, URA 1398 CNRS, ENS Lyon tel : (+33) 72 72 82 28
46, allee d'Italie, e-mail :
Christine.Paulin AT ens-lyon.fr
69364 Lyon cedex 07, France fax : (+33) 72 72 80 80
===========
Formation à l'assistant de preuve COQ
LIP-École Normale Supérieure de Lyon
27-29 Mars 1996
Une formation à l'assistant de preuves Coq sera organisée à Lyon
du 27 au 29 mars 96.
Elle comportera des présentations théoriques et des travaux pratiques
introduisant à la manipulation des outils Coq et CtCoq (interface
réalisée à l'aide du système Centaur).
Si vous êtes potentiellement intéressés par cette formation
nous vous remercions de bien vouloir indiquer les points que vous
aimeriez voir développer :
- Introduction à la théorie des types et son application à la
formalisation des mathématiques et de la programmation.
- Le langage d'axiomatisation et de spécification de Coq.
- Exemples de développement de preuves mathématiques.
- Exemples de développement de preuves de programmes.
- Extraction de programmes ML à partir de preuves.
- Preuves de programmes fonctionnels.
- Outils de preuve associés aux types inductifs.
- Utilisation de CtCoq :
Environnement, preuve par selection, impression de preuves, preuve
en sémantique naturelle.
- Utilisation de l'environnement Coq :
Introduction de notations, écriture de tactiques,..
- Autres :
============================================================================
Nom :
Prenom :
Organisme :
Domaines de recherche :
============================================================================
Merci d'indiquer votre niveau de pratique de Coq :
- Je ne dispose pas de Coq sur les machines auxquelles j'ai accès
- J'ai appelé Coq et/ou CTCoq sur de petits exemples
- J'ai fait un développement de preuve de quelques pages
- J'ai écrit une axiomatisation conséquente de plusieurs modules
- J'ai écrit un package de tactiques
- J'ai utilisé Coq pour extraire des programmes certifiés
From werner Fri Dec 12 13:07:12 1997
22:43 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA22935 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 15 Feb 1996 15:22:42 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA21180 for
coq-club-redistribution@pauillac;
Thu, 15 Feb 1996 15:22:42 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id KAA09916 for
<werner AT cadillac.inria.fr>;
Mon, 12 Feb 1996 10:42:57 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id KAA19872; Mon, 12 Feb 1996
10:42:50 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id KAA02317; Mon, 12 Feb 1996
10:42:48 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id KAA19869; Mon, 12 Feb 1996
10:42:45 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id KAA02269 for
<coq-club AT pauillac.inria.fr>;
Mon, 12 Feb 1996 10:42:41 +0100
Received: from ten.dimi.uniud.it (ten.dimi.uniud.it [158.110.144.132]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id KAA19861 for
<coq-club AT pauillac.inria.fr>;
Mon, 12 Feb 1996 10:42:37 +0100 (MET)
Received: from twenty by ten.dimi.uniud.it with SMTP id AA14388
(5.67a/IDA-1.5 for
<coq-club AT pauillac.inria.fr>);
Mon, 12 Feb 1996 10:38:01 +0100
Received: by twenty (5.x/SMI-SVR4)
id AA18229; Mon, 12 Feb 1996 10:37:53 +0100
Date: Mon, 12 Feb 1996 10:37:53 +0100
From:
felchero AT ten.dimi.uniud.it
(Mauro Felchero)
Message-Id:
<9602120937.AA18229@twenty>
To:
coq-club AT pauillac.inria.fr
Subject: Coq user problems.
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 689
Lines: 27
Status: RO
I'm a Coq V5.10 user.
I have some problems defining constructors for inductive and coinductive
types.
I don't understand the meaning of this Warning of Coq system:
"Ignoring Recursive Call"
after definition of inductive and coinductive types.
An example:
Inductive Set TP :=
tp : nat*TP->TP.
This definition causes that Warning, then it is accept.
But in the example :
CoInductive Set TP :=
tp : nat*TP->TP.
It is accepted without the Warning message.
I don't understand this difference.
If you can explain more about constructors of inductive and coinductive
types, forms of constructors, positive occurences, ...
With regards,
Mauro.
From werner Fri Dec 12 13:07:12 1997
23:03 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA22947 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 15 Feb 1996 15:23:03 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA21185 for
coq-club-redistribution@pauillac;
Thu, 15 Feb 1996 15:23:02 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA09940 for
<werner AT cadillac.inria.fr>;
Mon, 12 Feb 1996 11:02:11 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA20343; Mon, 12 Feb 1996
11:02:10 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA03574; Mon, 12 Feb 1996
11:02:08 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA20340; Mon, 12 Feb 1996
11:02:01 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA03565 for
<coq-club AT pauillac.inria.fr>;
Mon, 12 Feb 1996 11:01:55 +0100
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA20325 for
<coq-club AT pauillac.inria.fr>;
Mon, 12 Feb 1996 11:01:54 +0100 (MET)
Received: from lip.ens-lyon.fr (lip-gw [140.77.1.11]) by cri.ens-lyon.fr
(8.7.3/8.7.3) with ESMTP id LAA23078; Mon, 12 Feb 1996 11:01:44 +0100 (MET)
Received: from aquavit.ens-lyon.fr (aquavit [140.77.13.53]) by
lip.ens-lyon.fr (8.7.3/8.7.3) with ESMTP id LAA05473; Mon, 12 Feb 1996
11:01:43 +0100 (MET)
From: Christine Paulin
<Christine.Paulin AT lip.ens-lyon.fr>
Received: (from
cpaulin@localhost)
by aquavit.ens-lyon.fr (8.7.3/8.7.3) id LAA12266; Mon, 12 Feb 1996 11:01:42
+0100 (MET)
Date: Mon, 12 Feb 1996 11:01:42 +0100 (MET)
Message-Id:
<199602121001.LAA12266 AT aquavit.ens-lyon.fr>
To:
coq-club AT pauillac.inria.fr,
felchero AT ten.dimi.uniud.it
Subject: Re: Coq user problems.
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 1491
Lines: 48
Status: RO
Hello,
I know it is a bit strange behavior.
The point is this one :
The inductive or coinductive definition with recursive calls
inside another inductive structure are accepted but not very well supported.
This is your case :
Inductive Set TP := tp : nat*TP->TP.
TP appear inside a product nat*TP
In particular the inductive definition generates
combinators TP_rec for primitive recursion ...
In your case this command does not generate the most powerful combinator
that should be
TP_rec : (P:TP->Set)((n:nat)(p:TP)(P p)->(P (tp (n,p)))->(p:TP)(P p)
but a simpler one "ignoring the recursive call"
TP_rec : (P:TP->Set)((n:nat)(p:TP)(P (tp n p)))->(p:TP)(P p)
You are stongly recommended to use the alternative equivalent definition
Inductive Set TP := tp : nat->TP->TP.
which gives you the good recursion.
If you still prefer your definition you can define
your eliminator by hand using the Fixpoint construction.
Fixpoint TP_rec' [P:TP->Set; f:(n:nat)(p:TP)(P p)->(P (tp (n,p)));p:TP]:(P tp)
:= <P>Case p of [x:nat*TP]<[x:nat*TP](P (tp x))>let (n,p)=x
in (f n p (TP_rec' P f p)).
I know the calculation of the good recursion operator could be done
automatically
but will involve a much more complicated computation.
Because for coinductive definition there is no generation of
induction combinators, you do not get any warning.
Hope the explanation was clear enough.
Do not hesitate to ask for more information.
Christine Paulin.
From werner Fri Dec 12 13:07:12 1997
52:51 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA24953 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 20 Feb 1996 15:52:52 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA27029 for
coq-club-redistribution@pauillac;
Tue, 20 Feb 1996 15:52:50 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id MAA26564 for
<werner AT cadillac.inria.fr>;
Tue, 20 Feb 1996 12:58:35 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id MAA21788; Tue, 20 Feb 1996
12:58:35 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id MAA14503; Tue, 20 Feb 1996
12:58:32 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id MAA21785; Tue, 20 Feb 1996
12:58:30 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id MAA14495 for
<coq-club AT pauillac.inria.fr>;
Tue, 20 Feb 1996 12:58:27 +0100
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id MAA21781 for
<coq-club AT pauillac.inria.fr>;
Tue, 20 Feb 1996 12:58:27 +0100 (MET)
Received: from lip.ens-lyon.fr (lip-gw [140.77.1.11]) by cri.ens-lyon.fr
(8.7.3/8.7.3) with ESMTP id MAA24309 for
<coq-club AT pauillac.inria.fr>;
Tue, 20 Feb 1996 12:58:26 +0100 (MET)
Received: from woodstock.ens-lyon.fr (woodstock [140.77.11.50]) by
lip.ens-lyon.fr (8.7.3/8.7.3) with ESMTP id MAA18670 for
<coq-club AT pauillac.inria.fr>;
Tue, 20 Feb 1996 12:58:25 +0100 (MET)
From: Christine Paulin
<Christine.Paulin AT lip.ens-lyon.fr>
Received: (from
cpaulin@localhost)
by woodstock.ens-lyon.fr (8.7.3/8.7.3) id MAA17418 for
coq-club AT pauillac.inria.fr;
Tue, 20 Feb 1996 12:58:23 +0100 (MET)
Date: Tue, 20 Feb 1996 12:58:23 +0100 (MET)
Message-Id:
<199602201158.MAA17418 AT woodstock.ens-lyon.fr>
To:
coq-club AT pauillac.inria.fr
Subject: Formation Coq 27-29 Mars
Sender:
werner AT cadillac.inria.fr
Content-Length: 5341
Lines: 137
Status: RO
(*********************************************)
(* Formation à l'assistant de preuve COQ *)
(* LIP-École Normale Supérieure de Lyon *)
(* 27-29 Mars 1996 *)
(*********************************************)
Une formation à l'assistant de preuves Coq se tiendra à Lyon du
Mercredi 27 au Vendredi 29 mars 96.
Elle comportera des présentations théoriques et des travaux pratiques
introduisant à la manipulation des outils Coq et CtCoq (interface
réalisée à l'aide du système Centaur).
PROGRAMME
---------
=================
Mercredi 27 mars
=================
- 9h30- Accueil
-10h00- Gérard Huet
Introduction à la théorie des types
Gallina : Langage de spécification de Coq
-12h00- Déjeûner
-14h00- Gilles Kahn
Modélisation en Coq, Introduction à CtCoq
-16h00- Pause
-16h30- Travaux pratiques en Coq et CtCoq
-18h00- Fin de la journée
=================
Jeudi 28 mars
=================
- 9h00- Gérard Huet
Modélisation et Preuves en Coq.
-10h30- Pause
-11h00- Gilles Kahn
Modélisation et Preuves en CtCoq.
-12h30- Déjeûner
-14h00- Catherine Parent
Spécifications et preuves de programmes I
-16h00- Pause
-16h30- Catherine Parent
Spécifications et preuves de programmes II
-18h00- Fin de la journée
=================
Vendredi 29 mars
=================
- 9h00- Eduardo Giménez
Définitions et preuves inductives.
-10h30- Pause
-11h00- Travaux pratiques.
-12h00- Déjeûner
-14h00- Christine Paulin
Écriture de tactiques en Coq
Introduction de notations.
Travaux pratiques.
-16h00- Fin
INSCRIPTION
-----------
Le montant de l'inscription est fixé à 500 FF HT (603 FF TTC)
par jour comprenant la documentation, le déjeuner et les pauses.
Un forfait de 500 FF HT (603 FF TTC) est appliqué pour l'ensemble
des trois journées aux chercheurs venant de l'université.
Un formulaire d'inscription se trouve à la fin de ce courrier, il
devra être retourné accompagné du règlement des frais d'inscription
avant le 20 Mars. Seules les 14 premières demandes pourront être
satisfaites lors de cette formation.
LIEU
----
La formation se tiendra au Laboratoire de l'Informatique du
Parallélisme URA 1398 du CNRS à l'École Normale Supérieure de Lyon,
46 allée d'Italie, 69364 Lyon cedex 07, dans la salle de formation
(3ème étage, aile nord, coté Amphi A).
HÉBERGEMENT
-----------
Un nombre réduit de places est disponible à la résidence d'hôtes de l'ENS.
Demande de réservation de chambre à la résidence de l'ENS:
----------------------------------------------------------
Chambre simple : 150 FF par personne et par nuit.
Chambre double : 110 FF par personne et par nuit.
Arrivée : .................. Départ : ......................
Quelques adresses d'hotels (tarifs indicatifs):
-----------------------------------------------
-- à moins de 100 m de l'ENS :
- Hotel Mercure *** Chambre simple 400 F, petit déjeuner 53 F
70, av Leclerc, 69007 Lyon, tel 72 71 11 11, fax 72 71 11 00
- Hotel Fimotel ** Chambre simple 250 F, petit déjeuner 35 F
246, av M. Merieux, 69007 Lyon, tel 72 72 63 63, fax 78 72 15 30
- Hotel Ibis ** Chambre simple 315 F, petit déjeuner 34 F
68, av Leclerc , F-69007 Lyon,tel 78 58 30 70, fax 78 72 28 61
-- en centre ville :
- Hotel Moderne ** Chambre simple 200 F, petit déjeuner 32 F
15, rue Dubois, 69002 Lyon, tel 78 42 21 83, fax 72 41 04 40
- Hotel Bayard ** Chambre simple 243 F, petit déjeuner 33 F
23, Place Bellecour, 69002 Lyon, tel 78 37 39 64, fax 72 40 95 51
- Hotel Celtic ** Chambre simple 140 F, petit déjeuner 32 F
10, rue F. Vernay (Vieux Lyon), 69005 Lyon, tel 78 28 01 12, fax 78 28 01 34
-- près de la gare de Lyon-Perrache (environ 1km de l'ENS):
- Relais Perrache ** Chambre simple 257 F, petit déjeuner 34 F
24, quai Perrache, 69002 Lyon, tel 78 37 16 64, fax 78 37 67 98
FORMULAIRE d'INSCRIPTION
------------------------
Nom......................................................
Prénom...................................................
Organisme ...............................................
Adresse..................................................
N° de téléphone ........................................
N° de fax ...............................................
e.mail...................................................
Date d'arrivée ..........................................
Date de départ ..........................................
Frais d'inscription
o nbre de jours : x 500 FF. HT (603 FF. TTC) =
o forfait universitaire : 500 FF. HT (603 FF. TTC)
Paiement par chèque ou bon de commande à l'ordre de
l'agent comptable de l'ENS Lyon.
À retourner le plus rapidement possible et avant le 20 Mars 1996
(le nombre de participants est limité à 14)
à LIP, Formation Coq (Christine Paulin)
46 allée d'Italie, 69364 Lyon cedex 07.
par fax : 72 72 80 80
par courrier electronique :
Christine.Paulin AT ens-lyon.fr
From werner Fri Dec 12 13:07:12 1997
38:35 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA22327 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 20 Feb 1996 13:38:35 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id NAA26626 for
coq-club-redistribution@pauillac;
Tue, 20 Feb 1996 13:38:33 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA26619 for
<werner AT cadillac.inria.fr>;
Tue, 20 Feb 1996 13:36:31 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA22311; Tue, 20 Feb 1996
13:36:30 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA14831; Tue, 20 Feb 1996
13:36:28 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA22302; Tue, 20 Feb 1996
13:36:24 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA14823 for
<coq-club AT pauillac.inria.fr>;
Tue, 20 Feb 1996 13:36:21 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA22298 for
<coq-club AT pauillac.inria.fr>;
Tue, 20 Feb 1996 13:36:22 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id NAA26615 for
coq-club@pauillac;
Tue, 20 Feb 1996 13:36:20 +0100
From: Benjamin Werner
<werner AT cadillac.inria.fr>
Message-Id:
<199602201236.NAA26615 AT cadillac.inria.fr>
Subject: New release of Coq and Ct-Coq
To:
coq-club AT pauillac.inria.fr
Date: Tue, 20 Feb 1996 13:36:20 +0100 (MET)
X-Mailer: ELM [version 2.4 PL24 ME8]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 5962
Lines: 165
Status: RO
Hello,
We announce the release of version 5.10.15 of Coq. This release
includes various changes in the code and libraries, which are
described more precisely below. The documentation has also been
updated.
Coq V5.10.15 comes in two flavors: the regular Coq, and a new, fully
up-to-date and compatible distribution of Ct-Coq (i.e. Coq with a
sophisticated graphical user-interface).
The Coq distribution is available at Rocquencourt and in Lyon:
ftp://ftp.ens-lyon.fr/pub/LIP/COQ/V5.10/
ftp://ftp.inria.fr/INRIA/coq/V5.10/
or through:
http://pauillac.inria.fr/coq/systeme_coq-eng.html
As usual, get the README files first, for instructions.
Because the organization of some files and directories has changed, we
will not provide any patches for update.
Ct-coq is available in Sophia-Antipolis:
http://www.inria.fr/croap/ctcoq-eng.html
Below, you will find a summary of the main changes with respect to the
previous version. It is followed by a description of the new Ct-Coq by
Janet Bertot.
For the moment, only the unix version of V5.10.15 is available.
However the Microsoft-Windows as well as the Macintosh version
(finally !) should soon be ready.
As usual, you might send problems, bug reports, remarks about the
installation to
coq AT pauillac.inria.fr
and more general questions about the coq system to the mailing list
coq-club AT pauillac.inria.fr
questions specific to the Ct-Coq interface should be addressed to
ctcoq-request AT sophia.inria.fr
Best wishes,
for the team,
Benjamin Werner
(********************************************************************)
(* Main changes between V5.10.14 (july 95) and V5.10.15 (feb 96) *)
(********************************************************************)
* Changes in code:
- (x:A)(y:A)B is now printed as (x,y:A), same for abstraction.
- Many internal bugs have been fixed.
- New commands Set/Unset Undo to control the number of possible undo
Set/Unset Hyps_limit to control the number of printed
hypotheses
* Changes in tactics:
- New tactics Rewrite .. in
- More inversion tactics (see the reference manual)
1) The tactics (Derive) Inversion and (Derive) Inversion_clear have been
extended to (co)inductive types of sort Set and Type.
2) New tactics are available for deriving inversion lemmas on different
sorts and performing simple dependent inversion.
- The tactic Rewrite uses now the lemmas eq_ind_r and no more the symmetry.
* The reference manual has been updated.
* Changes in librairies :
- Some Hint/Immediate have been added in the basic theories.
- More results on classical logic (previously in INIT/Classical)
are now in the directory theories/LOGIC
- theories/RELATIONS contains basic definitions and properties on relations
while theories/RELATIONS/WELLFOUNDED establishes results on well-foundness.
- Changes in the development theories/ALGEBRA
- A new directory theories/SORTING has been added.
* New contributions :
Bordeaux/Additions
Lannion/polycont
Marseille/CCS
Paris/ZF
Sophia-Antipolis/HARDWARE/ADDER
Sophia-Antipolis/HARDWARE/BLOCK
Sophia-Antipolis/HARDWARE/GENE
Sophia-Antipolis/HARDWARE/MULTIPLIER
Sophia-Antipolis/MATHS/DOMAINS
Sophia-Antipolis/MATHS/GEOMETRY
Sophia-Antipolis/MATHS/GROUPS
Sophia-Antipolis/MATHS/Z
(******************************************************************************)
Subject: CtCoq (running with Coq v5.10.15 -- archive of 15 February 1996)
CtCoq provides a working environment for the Coq theorem prover,
via a graphical user interface. The X interface and Coq run as
separate processes and the interface has multiple fonts and colors
for displaying commands, it provides support for constructing commands
and formulae, has an experimental textual presentation of proofs, and,
using a technique called "Proof by Pointing", allows the user to direct
the proof by clicking with the mouse on various parts of the subgoals.
To find out more, visit our www page listed below.
The CtCoq user interface version "beta2", which runs with Coq version
5.10.15, is now available for both sun4OS4 and DecAlpha workstations.
---------------
New features in this version of CtCoq include:
o Comments are handled partially, i.e., when associated to a toplevel
command. (NB: This works only if you have "perl" on your system.)
o The "Discard" interface has been extended so that the Discard button
may be used for undoing commands *other* than proof steps. Thus, one
can discard theorems, axioms, or definitions. Still certain commands
(such as Require or Hint) cannot be undone.
o Parsing of subexpressions in the Command window is no longer limited
to commands, tactics, or formulae, allowing for finer text editing.
o Proof by Pointing behavior has been improved. The generated script is
more natural for Coq users.
o Menus used in guided editing are now complete (updated for V5.10.15
syntax). Transformations between different variants of a command
or tactic are provided. The presentation of the hierarchical menus
has changed, hopefully making guided editing more agreeable.
o The auto-saving capability has been improved, making it less disruptive.
---------------
The www page is:
http://www.inria.fr/croap/ctcoq/ctcoq-eng.html
The direct ftp route is:
The machine: babar.inria.fr (138.96.24.21)
The directory: pub/centaur/ctcoq-beta2
Follow the README instructions to obtain all that you need.
NB: if you obtain the system directly by ftp you should send
mail to
ctcoq-request AT sophia.inria.fr
indicating for which
architecture(s) you wish to run the CtCoq system.
For all and any questions/problems please send mail to:
ctcoq-request AT sophia.inria.fr
---------------
From werner Fri Dec 12 13:07:12 1997
39:40 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id KAA14618 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 23 Feb 1996 10:39:39 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id KAA00532 for
coq-club-redistribution@pauillac;
Fri, 23 Feb 1996 10:39:39 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA28296 for
<werner AT cadillac.inria.fr>;
Wed, 21 Feb 1996 13:51:33 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA12306; Wed, 21 Feb 1996
13:51:26 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA21455; Wed, 21 Feb 1996
13:51:25 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA12303; Wed, 21 Feb 1996
13:51:16 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA21448 for
<coq-club AT pauillac.inria.fr>;
Wed, 21 Feb 1996 13:51:14 +0100
Received: from paprika.inria.fr (paprika.inria.fr [138.96.24.11]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA12299 for
<coq-club AT pauillac.inria.fr>;
Wed, 21 Feb 1996 13:51:14 +0100 (MET)
Received: by paprika.inria.fr (8.6.12/8.6.12) id NAA07347; Wed, 21 Feb 1996
13:51:12 +0100
Message-Id:
<199602211251.NAA07347 AT paprika.inria.fr>
X-Mailer: exmh version 1.6.5 12/11/95
To:
coq-club AT pauillac.inria.fr
Subject: Using function defined by well founded recursion.
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date: Wed, 21 Feb 1996 13:51:09 +0100
From: Yves Bertot
<Yves.Bertot AT sophia.inria.fr>
Sender:
werner AT cadillac.inria.fr
Content-Length: 1723
Lines: 66
Status: RO
We have problems reasonning about function that have been defined
using the pair Realizer/Program_all. Our main example is more complicated
than what follows, but this examples shows it all.
We define the pred function in the following manner:
Definition my_pred : nat -> nat.
Realizer <nat>rec f :: :: {lt}
[x:nat] (<nat>Case x of O [p:nat]p end).
Program_all.
Try Exact lt_wf.
Defined.
(of course, we know this does not really use well-founded induction but the
style rather that the actual content matters)
Now, we want to check that our function works as we want.
Compute (my_pred O).
returns:
= (well_founded_induction nat [n,m:nat](le (S n) m) lt_wf
[_:nat]nat
[x:nat]
[f:(y:nat)(le (S y) x)->nat]
(<[n:nat]((y:nat)(le (S y) n)->nat)->nat>Case x of
[_:(y:nat)(le (S y) O)->nat]O
[p:nat][_:(y:nat)(le (S y) (S p))->nat]p
end
f)
O)
: nat
Similarly, we didn't find any way to prove the following goal:
Goal (my_pred O) =O.
No use of Simpl, Unfold well_founded_induction, or Acc_rec leads us to
anything
meaningful.
We need a way to unroll well_founded fixpoint definitions that works
as well as what we have when the function is defined using a regular Fixpoint
construct, as appears in the following example:
Definition my_pred2: nat -> nat.
1:Realizer [n:nat](<nat>Case n of O [p:nat]p end);Program_all.
Defined.
Goal (my_pred2 O) = O.
Simpl.
Gives O = O.
Somehow we need a theorem we a statement that looks like:
(well_founded_induction a r wf_r P [x:a]f x)=
(f x ... (well_founded_induction a r wf_r P [x:a]f)).
Does anybody have such a beast?
Laurent, Loic, and Yves
From werner Fri Dec 12 13:07:12 1997
44:59 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id KAA14724 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 23 Feb 1996 10:44:58 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id KAA00546 for
coq-club-redistribution@pauillac;
Fri, 23 Feb 1996 10:44:58 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA28331 for
<werner AT cadillac.inria.fr>;
Wed, 21 Feb 1996 14:24:32 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA13152; Wed, 21 Feb 1996
14:24:29 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA21834; Wed, 21 Feb 1996
14:24:27 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA13140; Wed, 21 Feb 1996
14:24:23 +0100 (MET)
Received: (from
cornes@localhost)
by pauillac.inria.fr (8.6.10/8.6.6) id OAA21818; Wed, 21 Feb 1996 14:24:20
+0100
Date: Wed, 21 Feb 1996 14:24:20 +0100
From: Cristina Cornes
<Cristina.Cornes AT inria.fr>
Message-Id:
<199602211324.OAA21818 AT pauillac.inria.fr>
To:
Yves.Bertot AT sophia.inria.fr,
coq-club AT pauillac.inria.fr
Subject: Re: Using function defined by well founded recursion.
Sender:
werner AT cadillac.inria.fr
Content-Length: 1732
Lines: 57
Status: RO
Hello,
<< Similarly, we didn't find any way to prove the following goal:
Goal (my_pred O) =O.
No use of Simpl, Unfold well_founded_induction, or Acc_rec leads us to
anything
meaningful. >>
The problem is that well founded definitions use many lemmas concerning
for example the well foundation of the relation, and lemmas and theorems are
opaque constants. So, these constants are not unfolded automatically.
One way to do this proof is by changing the opacity by hand:
Transparent well_founded_induction.
Transparent lt_wf.
Transparent well_founded_ltof.
Goal (my_pred O)=O.
Unfold my_pred .
(Unfold well_founded_induction ; Unfold lt ).
Unfold lt_wf .
Simpl.
Unfold well_founded_ltof .
Simpl.
Auto.
Qed.
In this example this idea works because the term is small enough. This idea
becomes difficult to apply when the term of the function is of considerable
size and many lemmas are used to prove the well foundation of the relation.
And it works only (I think) if your goal is a closed term (as it is in your
example).
<< We need a way to unroll well_founded fixpoint definitions that works
as well as what we have when the function is defined using a regular Fixpoint
construct, as appears in the following example:
Somehow we need a theorem we a statement that looks like:
(well_founded_induction a r wf_r P [x:a]f x)=
(f x ... (well_founded_induction a r wf_r P [x:a]f)).
Does anybody have such a beast? >>
I think also that this lemma is the best way to solve the problem.
I have worked a little on proving it but I had some problems.
Christine Paulin has suggested some ideas to me, but I have not yet worked
again on the subject. May be somebody else has also worked on it.
best regards
cristina
From werner Fri Dec 12 13:07:12 1997
46:11 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id KAA14781 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 23 Feb 1996 10:46:10 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id KAA00556 for
coq-club-redistribution@pauillac;
Fri, 23 Feb 1996 10:46:10 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA28347 for
<werner AT cadillac.inria.fr>;
Wed, 21 Feb 1996 14:40:54 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA13459; Wed, 21 Feb 1996
14:40:53 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA22054; Wed, 21 Feb 1996
14:40:52 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA13453; Wed, 21 Feb 1996
14:40:49 +0100 (MET)
Received: (from
cornes@localhost)
by pauillac.inria.fr (8.6.10/8.6.6) id OAA22041; Wed, 21 Feb 1996 14:40:47
+0100
Date: Wed, 21 Feb 1996 14:40:47 +0100
From: Cristina Cornes
<Cristina.Cornes AT inria.fr>
Message-Id:
<199602211340.OAA22041 AT pauillac.inria.fr>
To:
Yves.Bertot AT sophia.inria.fr,
coq-club AT pauillac.inria.fr
Subject: Re: Using function defined by well founded recursion.
Sender:
werner AT cadillac.inria.fr
Content-Length: 519
Lines: 28
Status: RO
Hello,
I'm sorry for the noise. In my last mail I say:
<< And it works only (I think) if your goal is a closed term (as it is in
your
example). >>
This is not true because you can also prove (my_pred (S n))=n.
What I wanted to say is that I think that to be able to prove the equality
by Simpl the _term of the function_ must be closed.
Transparent well_founded_induction.
Transparent lt_wf.
Transparent well_founded_ltof.
Goal (my_pred O)=O.
Auto.
Qed.
Goal (n:nat)(my_pred (S n))=n.
Auto.
Qed.
cristina
From werner Fri Dec 12 13:07:12 1997
12:39 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA19507 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 23 Feb 1996 14:12:38 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id OAA00804 for
coq-club-redistribution@pauillac;
Fri, 23 Feb 1996 14:12:38 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA00771 for
<werner AT cadillac.inria.fr>;
Fri, 23 Feb 1996 13:48:42 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA18916; Fri, 23 Feb 1996
13:48:41 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA06666; Fri, 23 Feb 1996
13:48:40 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA18865; Fri, 23 Feb 1996
13:47:22 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA06640 for
<coq-club AT pauillac.inria.fr>;
Fri, 23 Feb 1996 13:47:21 +0100
Received: from chenas.inria.fr (chenas.inria.fr [192.134.192.136]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id NAA18861 for
<coq-club AT pauillac.inria.fr>;
Fri, 23 Feb 1996 13:47:19 +0100 (MET)
Received: from dassav (dassav.dassault-avion.fr) by chenas.inria.fr
(5.65c8d/92.02.29)
via EUnet-France id AA08830; Fri, 23 Feb 1996 13:47:17 +0100 (MET)
Received: from fnet-ia1.dassault-avion.fr by dassav (5.x/SMI-SVR4)
id AA26621; Fri, 23 Feb 1996 13:45:35 +0100
Received: by fnet-ia1.dassault-avion.fr (5.x/SMI-SVR4)
id AA05681; Fri, 23 Feb 1996 13:47:31 +0100
Date: Fri, 23 Feb 1996 13:47:31 +0100
From:
ledinot AT dassault-avion.fr
(Emmanuel Ledinot)
Message-Id:
<9602231247.AA05681 AT fnet-ia1.dassault-avion.fr>
Content-Type: text
Apparently-To:
coq-club AT pauillac.inria.fr
Sender:
werner AT cadillac.inria.fr
Content-Length: 875
Lines: 34
Status: RO
About Compute, Simpl (my_pred 0), ...
---------------------------------
It seems to me that your troubles come from a misconception of the actual
nature of term when one uses
Definition my_pred: nat->nat.
Realizer term.
.....
Defined.
or
Theorem my_intended_program: My_Spec.
Realizer term
...
Qed.
term IS NOT a program, a function as if defined by Fixpoint.
term is a parameter for a tactic (Program, Program_all) that drives the
engine to synthesize a proof term named my_pred / my_intended_program.
What you expected my_pred to be is in fact (Extraction my_pred), and you
(Unfortunately !!) don't have access to it to submit the command:
Compute ((Extrection my_pred) 0)
The cheat comes from the (nice) syntactic sugar around term, making you
believe that the proof-term that nat->nat is inhabited is the ML-like program
term.
Emmanuel Ledinot.
From werner Fri Dec 12 13:07:12 1997
18:48 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id SAA26287 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 23 Feb 1996 18:18:47 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id SAA01097 for
coq-club-redistribution@pauillac;
Fri, 23 Feb 1996 18:18:47 +0100
From: Benjamin Werner
<werner AT cadillac.inria.fr>
Message-Id:
<199602231718.SAA01097 AT cadillac.inria.fr>
Subject: Re: Using function defined by well founded recursion.
To:
Yves.Bertot AT sophia.inria.fr
(Yves Bertot)
Date: Fri, 23 Feb 1996 18:16:23 +0100 (MET)
In-Reply-To:
<199602211251.NAA07347 AT paprika.inria.fr>
from "Yves Bertot" at Feb 21, 96 01:51:09 pm
X-Mailer: ELM [version 2.4 PL24 ME8]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 3079
Lines: 84
Status: RO
Hello,
Just a few, I hope not too confusing, precisions about the
computational behaviour of well_founded_induction.
What follows is mainly on the topic of the relation between
computational and non-computational proofs. It is probably a little
specialized and will not interest everybody.
In former versions of Coq which did not have the Case / Fixpoint
distinction, well_founded_induction could not be proved and thus was
basically an axiom. Consequently, there was of course no hope of
seeing Yves' function
> = (well_founded_induction nat [n,m:nat](le (S n) m) lt_wf
> [_:nat]nat
> [x:nat]
> [f:(y:nat)(le (S y) x)->nat]
> (<[n:nat]((y:nat)(le (S y) n)->nat)->nat>Case x of
> [_:(y:nat)(le (S y) O)->nat]O
> [p:nat][_:(y:nat)(le (S y) (S p))->nat]p
> end
> f)
> O)
> : nat
having the computational behaviour he expected.
The reason well_founded_induction was not provable, was that the
non-computational predicate well_founded (or Acc, or whatsoever it was
called) had no computational elimination scheme.
In the current versions, the old elimination oeprator (.._rec or
.._ind) are split in two parts: a regular simple pattern matching (of
depth one) and a general purpose fix-point operator. Normalization
(and thus coherence) is preserved by the presence of a guard of some
inductive type, which has to decrease structurally in the recursive
calls. The unfolding of a recursive call can only be done if its guard
is in constructor form.
A side effect is that well_founded_recursion is now provable:
since non-computational terms (of kind Prop or Type) are also
strongly-normalizing, we might allow these terms to be used as guards
in a computational term like, precisely, well_founded_induction.
However, in order to have Yves' program reduced, we then have to
unfold the proof of the termination order, until we get to a
constructor. This is often uncomfortable:
* These are purely logical proofs, and their terms might be quite
larger than usual "programs".
* Since they are purely logical, they often involve opaque constants,
as we have seen in the previous messages.
* It does not work if a free variable (i.e. an axiom) happens to be in
head-position during the reduction of the proof. And thus, the proof
term has, indeed, to be - more or less - closed (which is actually
fortunate, since the opposite would jeopardize normalization).
Generally speaking, it is unpleasent to depend upon the computational
behavior of proofs that are suposed to be non-computational.
For all these reasons it seems more reasonable to me to use the Leiniz
equality you have allready mentioned:
> (well_founded_induction a r wf_r P [x:a]f x)=
> (f x ... (well_founded_induction a r wf_r P [x:a]f)).
I do not exactly know what you need to unroll your function for, but
if I were you, I guess I'd simply add it as an axiom. At least in the
general case, since, as Cristina showed, it might be proved in the
example you sent.
Cheers,
Benjamin
From werner Fri Dec 12 13:07:12 1997
6:53 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA29665 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 1 Mar 1996 16:36:53 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA00771 for
coq-club-redistribution@pauillac;
Fri, 1 Mar 1996 16:36:52 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA00721 for
<werner AT cadillac.inria.fr>;
Fri, 1 Mar 1996 15:01:28 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA27537; Fri, 1 Mar 1996
15:01:27 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA11389; Fri, 1 Mar 1996
15:01:26 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA27534; Fri, 1 Mar 1996
15:01:21 +0100 (MET)
Received: (from
werner@localhost)
by pauillac.inria.fr (8.6.10/8.6.6) id PAA11379 for coq-club; Fri, 1 Mar
1996 15:01:19 +0100
From: Benjamin Werner
<Benjamin.Werner AT inria.fr>
Message-Id:
<199603011401.PAA11379 AT pauillac.inria.fr>
Subject: Coq available for Macintosh and Windows
To:
coq-club AT pauillac.inria.fr
Date: Fri, 1 Mar 1996 15:01:19 +0100 (MET)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 895
Lines: 45
Status: RO
Hello,
The last 5.10.15 version of Coq, is now also available for PC's running
Microsoft Windows 95 or Windows NT, as well as for the Apple Macintosh
(with 68k or PPC architecture).
These releases are as close as possible to the unix versions. There
can be found in the usual ftp directory in Rocquencourt:
ftp://ftp.inria.fr/pub/INRIA/coq/V5.10/CoqWin/
and
ftp://ftp.inria.fr/pub/INRIA/coq/V5.10/CoqMac/
Both distributions do not contain the user's contributions. You might
however use and add the corresponding files from the unix distrib.
As usual, please send any comments, bug reports, questions, to
coq AT pauillac.inria.fr
The Windows version is due to Henri Laulhere; the Macintosh one to
Cesar Munoz.
Cheerfully yours,
for the team,
Benjamin Werner
--------------------------------------------------------------
Coming soon: arithmetic decision tactics.
From werner Fri Dec 12 13:07:12 1997
8:48 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA07708 for
<coq-club-redistribution AT pauillac.inria.fr>;
Wed, 6 Mar 1996 13:18:45 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id NAA02040 for
coq-club-redistribution@pauillac;
Wed, 6 Mar 1996 13:18:46 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id GAA01153 for
<werner AT cadillac.inria.fr>;
Mon, 4 Mar 1996 06:26:04 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id GAA22126; Mon, 4 Mar 1996
06:26:04 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id GAA18542; Mon, 4 Mar 1996
06:26:01 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id GAA22123; Mon, 4 Mar 1996
06:25:58 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id GAA18532 for
<coq-club AT pauillac.inria.fr>;
Mon, 4 Mar 1996 06:25:51 +0100
Received: from leopard.cs.byu.edu (leopard.cs.byu.edu [128.187.2.182]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id GAA22119 for
<coq-club AT pauillac.inria.fr>;
Mon, 4 Mar 1996 06:25:48 +0100 (MET)
Received: from jaguar.cs.byu.edu by leopard.cs.byu.edu with ESMTP
(1.37.109.15/16.2) id AA148857098; Sun, 3 Mar 1996 22:24:59 -0700
From: "Paul E. Black"
<black AT leopard.cs.byu.edu>
Received: by jaguar.cs.byu.edu (1.37.109.15/CS-Client)
id AA210686917; Sun, 3 Mar 1996 22:21:57 -0700
Date: Sun, 3 Mar 1996 22:21:57 -0700
Message-Id:
<199603040521.AA210686917 AT jaguar.cs.byu.edu>
To:
coq-club AT pauillac.inria.fr,
nuprllist AT cs.cornell.edu,
ptb AT dit.upm.es,
qed AT mcs.anl.gov
Subject: new software verification e-mail list
Sender:
werner AT cadillac.inria.fr
Content-Length: 906
Lines: 21
Status: RO
This is to announce a new software verification e-mail list. I and a
number of people I have met are interested in formal verification of
software, but I have not found any newsgroups or e-mail lists devoted
exclusively to it. To help, I created a mailing list where people can
discuss issues related to proving programs. To join the list, send
e-mail to
majordomo AT lal.cs.byu.edu
The subject doesn't matter. The body must contain the line
subscribe softverf
You should get an automatic response within about an hour.
Soon I will create some World Wide Web pages with references and
resources related to software verification.
-paul-
Paul E. Black
(p.black AT ieee.org)
Laboratory for Applied Logic, 3325 TMCB
black AT cs.byu.edu
Brigham Young University
voice: +1 801 378 8113 Provo, Utah 84602-6576
KC7PKT Web: http://lal.cs.byu.edu/people/black/black.html
From werner Fri Dec 12 13:07:12 1997
6:48 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id TAA19845 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 8 Mar 1996 19:16:49 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id TAA06586 for
coq-club-redistribution@pauillac;
Fri, 8 Mar 1996 19:16:47 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA06327 for
<werner AT cadillac.inria.fr>;
Fri, 8 Mar 1996 16:37:38 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA16977; Fri, 8 Mar 1996
16:37:32 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA17222; Fri, 8 Mar 1996
16:37:29 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA16974; Fri, 8 Mar 1996
16:37:26 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA17213 for
<coq-club AT pauillac.inria.fr>;
Fri, 8 Mar 1996 16:37:24 +0100
Received: from enpc.enpc.fr (enpc.enpc.fr [192.54.211.31]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id QAA16970 for
<coq-club AT pauillac.inria.fr>;
Fri, 8 Mar 1996 16:37:24 +0100 (MET)
Received: from pikaboo.enpc.fr (pikaboo.enpc.fr [192.54.211.127]) by
enpc.enpc.fr (8.6.10/8.6.10) with SMTP id QAA16279 for
<coq-club AT pauillac.inria.fr>;
Fri, 8 Mar 1996 16:41:50 +0100
Received: from pikaboo (localhost) by pikaboo.enpc.fr (4.1/SMI-4.1)
id AA25470; Fri, 8 Mar 96 16:41:51 +0100
Sender:
werner AT cadillac.inria.fr
Message-Id:
<3140553F.41C67EA6 AT cermics.enpc.fr>
Date: Fri, 08 Mar 1996 16:41:51 +0100
From: Mathieu JAUME
<jaume AT styx.enpc.fr>
X-Mailer: Mozilla 2.0 (X11; I; SunOS 4.1.3_U1 sun4m)
Mime-Version: 1.0
To:
coq-club AT pauillac.inria.fr
Subject: coinductive type
X-Url: http://pauillac.inria.fr/coq/systeme_coq-eng.html
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Length: 703
Lines: 36
Status: RO
Hello,
I found some problems for dealing with coinductives types :
With :
Variable A : Type.
I defined the coinductive type :
CoInductive Type Stream :=
nil_stream : Stream |
si : A -> Stream -> Stream.
s:Stream is a finite or infinite sequence
with :
Definition OP := A -> A.
I defined the function :
CoFixpoint OPS : OP -> Stream -> Stream :=
[f:OP][s:Stream]<Stream>Case s of
nil_stream
[p:A][s0:Stream](si (f p) (OPS f s0))
end.
But I can't proove this trivial lemma :
Lemma App_OPS : (f:OP)(p:A)(s:Stream)(OPS f (si p s))==(si (f p) (OPS f
s)).
and I don't understand why ?
mathieu
From werner Fri Dec 12 13:07:12 1997
7:30 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id TAA19849 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 8 Mar 1996 19:17:31 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id TAA06593 for
coq-club-redistribution@pauillac;
Fri, 8 Mar 1996 19:17:29 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id TAA06554 for
<werner AT cadillac.inria.fr>;
Fri, 8 Mar 1996 19:05:28 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id TAA19716; Fri, 8 Mar 1996
19:05:28 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id TAA20862; Fri, 8 Mar 1996
19:05:26 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id TAA19711; Fri, 8 Mar 1996
19:05:24 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id TAA20854 for
<coq-club AT pauillac.inria.fr>;
Fri, 8 Mar 1996 19:05:21 +0100
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id TAA19707 for
<coq-club AT pauillac.inria.fr>;
Fri, 8 Mar 1996 19:05:22 +0100 (MET)
Received: from lip.ens-lyon.fr (lip-gw [140.77.1.11]) by cri.ens-lyon.fr
(8.7.5/8.7.3) with ESMTP id TAA06761 for
<coq-club AT pauillac.inria.fr>;
Fri, 8 Mar 1996 19:05:20 +0100 (MET)
Received: from champagne.ens-lyon.fr (champagne [140.77.13.50]) by
lip.ens-lyon.fr (8.7.5/8.7.3) with ESMTP id TAA05274 for
<coq-club AT pauillac.inria.fr>;
Fri, 8 Mar 1996 19:05:19 +0100 (MET)
From: Eduardo Gimenez
<Eduardo.Gimenez AT lip.ens-lyon.fr>
Received: (from
egimenez@localhost)
by champagne.ens-lyon.fr (8.7.5/8.7.3) id TAA01049 for
coq-club AT pauillac.inria.fr;
Fri, 8 Mar 1996 19:05:19 +0100 (MET)
Date: Fri, 8 Mar 1996 19:05:19 +0100 (MET)
Message-Id:
<199603081805.TAA01049 AT champagne.ens-lyon.fr>
To:
coq-club AT pauillac.inria.fr
Subject: Re: coinductive type
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 2460
Lines: 84
Status: RO
> Hello,
> I found some problems for dealing with coinductives types :
> [...]
>
> CoInductive Type Stream :=
> nil_stream : Stream |
> si : A -> Stream -> Stream.
>
> I defined the function :
>
> CoFixpoint OPS : OP -> Stream -> Stream :=
> [f:OP][s:Stream]<Stream>Case s of
> nil_stream
> [p:A][s0:Stream](si (f p) (OPS f s0))
> end.
>
> But I can't proove this trivial lemma :
>
> Lemma App_OPS : (f:OP)(p:A)(s:Stream)(OPS f (si p s))==(si (f p) (OPS f s)).
>
> and I don't understand why ?
>
> mathieu
>
Hi Mathieu,
What follows is an explanation of how
to prove this in general, for any CoFixpoint definition.
When you introduce an infinite object through a CoFixpoint
definition, say
CoFixpoint f : A->Stream := F
for certain F, its application is a canonical expression. This means
that for any a:A, the term (f a) it is completely evaluated
expression.
The elimination rule for the stream (f a) is the following one:
Case (f a) of g end ----> Case (F f a) of g end.
In other words, the definition of f is expanded only when it is
strictly necessary. Thus, the equality (f a) == (F f a) can not be
solved just using the tactic Simpl, since both (f a) and
(F f a) are canonical and different expressions.
In order to prove the propositional equality (x:Stream)(f x)==(F f x),
you have to prove first the following lemma:
Lemma unfold_Stream :
(s:Stream)
s==(<Stream>Case s of nil_stream [a:A][s1:Stream](si a s1) end).
Destruct s.
Trivial.
Trivial.
Qed.
Then you can prove :
Theorem App_F : (x:Stream)(f x)==(F f x).
Intro x.
Apply (unfold_Stream (f x)).
Qed.
The trick is that the application of unfold_Stream puts (f x) as
the argument of a Case expression, enabling its expansion.
As each branch of the Case just replaces the corresponding constructor
by itself, the expression (<Stream>Case (f x) of nil_Stream si end)
evaluates to (F f x), as we want. The proof is general and it may be
used to expand any CoFixpoint definition. Actually, it should become
a tactic "Expand f" one of these days.
For further explanations you may consult the first sections of the
paper "CoInductive Types in Coq: An experiment with the Alternating
Bit Protocol", which is available at the following address:
ftp://ftp.lip.ens-lyon.fr/pub/Rapports/RR/RR95/RR95-38.ps.Z
I hope this was not too much confusing.
Yours,
Eduardo.
From werner Fri Dec 12 13:07:12 1997
28:39 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA14317 for
<coq-club-redistribution AT pauillac.inria.fr>;
Wed, 13 Mar 1996 11:28:35 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id LAA14861 for
coq-club-redistribution@pauillac;
Wed, 13 Mar 1996 11:28:38 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA14812 for
<werner AT cadillac.inria.fr>;
Wed, 13 Mar 1996 11:23:33 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA14201; Wed, 13 Mar 1996
11:23:28 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA20870; Wed, 13 Mar 1996
11:23:30 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA14195; Wed, 13 Mar 1996
11:23:23 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA20860 for
<coq-club AT pauillac.inria.fr>;
Wed, 13 Mar 1996 11:23:26 +0100
Received: from fluit.cs.vu.nl
(root AT fluit.cs.vu.nl
[130.37.16.4]) by concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA14191 for
<coq-club AT pauillac.inria.fr>;
Wed, 13 Mar 1996 11:23:21 +0100 (MET)
Received: by fluit.cs.vu.nl (Smail3.1.28.1 #23)
id m0twni6-000A2aC; Wed, 13 Mar 96 11:23 +0100
Message-Id:
<m0twni6-000A2aC AT fluit.cs.vu.nl>
Date: Wed, 13 Mar 96 11:23:14 MET
From: "M. Bognar"
<mirna AT cs.vu.nl>
To:
coq-club AT pauillac.inria.fr
Subject: Suggestions for exercise?
Sender:
werner AT cadillac.inria.fr
Content-Length: 522
Lines: 18
Status: RO
Hello, Coq-world!
I would like to learn using Coq by doing an example.
I am looking for a didactic example of a protocol that can be
easily formalized and proven correct using Coq.
Can anybody help me?
Thanking you in advance,
Mirna Bognar
--------------------------------------------------------------------
Mirna Bognar email:
mirna AT cs.vu.nl
Dept. Mathematics & Computer Science
Vrije Universiteit, Amsterdam
--------------------------------------------------------------------
From werner Fri Dec 12 13:07:12 1997
06:23 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA17148 for
<coq-club-redistribution AT pauillac.inria.fr>;
Wed, 13 Mar 1996 13:06:19 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id NAA15036 for
coq-club-redistribution@pauillac;
Wed, 13 Mar 1996 13:06:21 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id MAA15007 for
<werner AT cadillac.inria.fr>;
Wed, 13 Mar 1996 12:55:16 +0100
Received: from hera.cwi.nl (hera.cwi.nl [192.16.191.1]) by concorde.inria.fr
(8.7.1/8.7.1) with SMTP id MAA16832 for
<werner AT cadillac.inria.fr>;
Wed, 13 Mar 1996 12:55:11 +0100 (MET)
Received: from snip.cwi.nl by hera.cwi.nl with SMTP
id
<AA01417 AT cwi.nl>;
Wed, 13 Mar 1996 12:54:42 +0100
Received: by snip.cwi.nl
id
<AA02636 AT cwi.nl>;
Wed, 13 Mar 1996 12:54:42 +0100
From:
JanFriso.Groote AT cwi.nl
Message-Id:
<9603131154.AA02636=jfg AT snip.cwi.nl>
Subject: Re: Suggestions for exercise? (fwd)
To:
werner AT cadillac.inria.fr
Date: Wed, 13 Mar 1996 12:54:41 +0100 (MET)
X-Mailer: ELM [version 2.4 PL24]
Content-Type: text
Sender:
werner AT cadillac.inria.fr
Content-Length: 1587
Lines: 56
Status: RO
Forwarded message:
>From jfg Wed Mar 13 12:54:06 1996
From:
JanFriso.Groote AT cwi.nl
Message-Id:
<9603131154.AA02630=jfg AT snip.cwi.nl>
Subject: Re: Suggestions for exercise?
To:
mirna AT cs.vu.nl
(M. Bognar)
Date: Wed, 13 Mar 1996 12:54:05 +0100 (MET)
Cc:
jfg AT cwi.nl
(Jan Friso Groote)
In-Reply-To:
<m0twni6-000A2aC AT fluit.cs.vu.nl>
from "M. Bognar" at Mar 13, 96 11:23:14 am
X-Mailer: ELM [version 2.4 PL24]
Content-Type: text
Content-Length: 1136
Hello Mirnar,
> I would like to learn using Coq by doing an example.
> I am looking for a didactic example of a protocol that can be
> easily formalized and proven correct using Coq.
You might consider redoing the queue||queue=queue example worked
out by Henri Korver. There are two reports available at the
reports site of the Department of Philosophy at Utrecht University
(see http://phil.ruu.nl under `preprints'). Using the basic theory
developed and formalized in Coq, this is fairly straightforward.
My experience is that trying to prove anything, including protocols,
correct without building upon appropriate basis, is always hard.
You may contact Henri Korver directly
(korver AT phil.ruu.nl)
for
any form of assistance.
Veel succes,
Jan Friso Groote
----------------------------------------------------------------------
Jan Friso Groote
CWI
Department of Software Technology
Kruislaan 413
1089 SJ Amsterdam
The Netherlands
P.O.Box 94079
1090 GB Amsterdam
The Netherlands
Tel. +31 20 592 4232
Fax. +31 20 592 4199
jfg AT cwi.nl
Home address
Schoenerstraat 49
3534 RL Utrecht
The Netherlands
Tel. +31 30 2431045
From werner Fri Dec 12 13:07:12 1997
12:15 +0100
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA10850 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 21 Mar 1996 16:11:56 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA05367 for
coq-club-redistribution@pauillac;
Thu, 21 Mar 1996 16:12:14 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA05355 for
<werner AT cadillac.inria.fr>;
Thu, 21 Mar 1996 16:09:46 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA10789; Thu, 21 Mar 1996
16:09:25 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA14698; Thu, 21 Mar 1996
16:09:43 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA10786; Thu, 21 Mar 1996
16:09:23 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA14690 for
<coq-club AT pauillac.inria.fr>;
Thu, 21 Mar 1996 16:09:41 +0100
Received: from victor.labri.u-bordeaux.fr (victor.labri.u-bordeaux.fr
[147.210.8.168]) by concorde.inria.fr (8.7.1/8.7.1) with SMTP id QAA10782 for
<coq-club AT pauillac.inria.fr>;
Thu, 21 Mar 1996 16:09:21 +0100 (MET)
Received: from meltem (meltem.labri.u-bordeaux.fr) by
victor.labri.u-bordeaux.fr (4.1/SM-mailhost-BORDEAUX-1.0)
id AA21436; Thu, 21 Mar 96 16:11:43 +0100
Received: by meltem (4.1/SM-BORDEAUX0.1)
id AA12972; Thu, 21 Mar 96 16:11:15 +0100
Date: Thu, 21 Mar 96 16:11:15 +0100
From:
Pierre.Casteran AT labri.u-bordeaux.fr
(Pierre CASTERAN)
Message-Id:
<9603211511.AA12972@meltem>
To:
coq-club AT pauillac.inria.fr
Subject: positivity
Sender:
werner AT cadillac.inria.fr
Content-Length: 682
Lines: 31
Status: RO
Hello,
Just a question about the positivity conditions in the constraints
for inductive definitions.
Is there a result on some continuity of some type transformation associated
with the definition ? (or simply monotonicity ?).
Where ?
Thanks in advance,
--
Pierre Casteran
Project:
Vivre "sur une terre liberée de l'horizon journalier de crocs et de
dollars" (Julio Cortazar)
LaBRI, Universite Bordeaux-I | 12 place Puy Paulin
351 Cours de la Liberation | 33000 Bordeaux
F-33405 TALENCE Cedex | France
France | 56 81 15 80
tel : 56 84 69 31
fax : 56 84 66 69
email:
casteran AT labri.u-bordeaux.fr
From werner Fri Dec 12 13:07:12 1997
0:36 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA06491 for
<coq-club-redistribution AT pauillac.inria.fr>;
Wed, 3 Apr 1996 14:20:04 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id OAA04466 for
coq-club-redistribution@pauillac;
Wed, 3 Apr 1996 14:20:35 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA04416 for
<werner AT cadillac.inria.fr>;
Wed, 3 Apr 1996 14:07:48 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA06282; Wed, 3 Apr 1996
14:07:15 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA12141; Wed, 3 Apr 1996
14:07:44 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA06275; Wed, 3 Apr 1996
14:07:11 +0200 (MET DST)
Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id OAA29141 for
<coq-club AT margaux.inria.fr>;
Wed, 3 Apr 1996 14:07:42 +0200
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
nez-perce.inria.fr (8.7.1/8.7.1) with ESMTP id OAA08473 for
<coq-club@margaux AT inria.fr>;
Wed, 3 Apr 1996 14:07:09 +0200 (MET DST)
Received: from lip.ens-lyon.fr (lip-gw [140.77.1.11]) by cri.ens-lyon.fr
(8.7.5/8.7.3) with ESMTP id OAA05446 for
<coq-club@margaux AT inria.fr>;
Wed, 3 Apr 1996 14:07:40 +0200 (MET DST)
Received: from champagne.ens-lyon.fr (champagne [140.77.13.50]) by
lip.ens-lyon.fr (8.7.5/8.7.3) with ESMTP id OAA25668 for
<coq-club@margaux AT inria.fr>;
Wed, 3 Apr 1996 14:07:39 +0200 (MET DST)
From: Eduardo Gimenez
<Eduardo.Gimenez AT lip.ens-lyon.fr>
Received: (from
egimenez@localhost)
by champagne.ens-lyon.fr (8.7.5/8.7.3) id OAA01009 for
coq-club@margaux AT inria.fr;
Wed, 3 Apr 1996 14:07:38 +0200 (MET DST)
Date: Wed, 3 Apr 1996 14:07:38 +0200 (MET DST)
Message-Id:
<199604031207.OAA01009 AT champagne.ens-lyon.fr>
To:
coq-club@margaux AT inria.fr
Subject: Tutorial on Recursive Types
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 558
Lines: 18
Status: RO
Hello,
This is just to announce that there is a short tutorial on recursive
types in Coq which can be obtained by anonymous ftp through the www
page of the Coq team at Lyon:
http://www.ens-lyon.fr/LIP/groupes/coq/environment.us.html
This tutorial is intended for people who has already read the general
one (also available at the same address). It contains examples about
the application of tactics related with recursive types (Case, Rewrite,
Inversion, Elim, etc.) as well as some simple exercises too.
Comments are welcome!
Cheers,
Eduardo Gimenez.
From werner Fri Dec 12 13:07:12 1997
07:31 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id SAA17278 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 25 Apr 1996 18:07:26 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id SAA20796 for
coq-club-redistribution@pauillac;
Thu, 25 Apr 1996 18:07:24 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA10458 for
<werner AT cadillac.inria.fr>;
Wed, 3 Apr 1996 17:17:29 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA10012; Wed, 3 Apr 1996
17:16:56 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA18200; Wed, 3 Apr 1996
17:17:14 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA10001; Wed, 3 Apr 1996
17:16:41 +0200 (MET DST)
Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id RAA10269 for
<coq-club AT margaux.inria.fr>;
Wed, 3 Apr 1996 17:17:11 +0200
Received: from kali.cc.ruu.nl (kali.cc.ruu.nl [131.211.16.201]) by
nez-perce.inria.fr (8.7.1/8.7.1) with SMTP id RAA10455 for
<coq-club%margaux AT inria.fr>;
Wed, 3 Apr 1996 17:16:34 +0200 (MET DST)
Received: by kali.cc.ruu.nl id AA27941
(5.67b/IDA-1.5 for
coq-club%margaux AT inria.fr);
Wed, 3 Apr 1996 17:16:51 +0200
From: "j.m.h.cobben"
<J.M.H.Cobben AT cc.ruu.nl>
Message-Id:
<199604031516.AA27941 AT kali.cc.ruu.nl>
Subject: Termination of TermRewritingSystems
To:
coq-club%margaux AT inria.fr
Date: Wed, 3 Apr 1996 17:16:51 +0200 (MET DST)
X-Mailer: ELM [version 2.4 PL25]
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 1261
Lines: 41
Status: RO
[ Moderator's note: I just realized I forgot to re-post the following
message. I think it was because I started thinking about an answer
myself before forwarding it...
My humble apologies to Thijs Cobben.
Benjamin Werner ]
Hello,
Does anyone have a reference on / idea about the following subject:
"It is common practice to represent a functional program as a
term-rewriting system, i.e. a binary relation R on a TermAlgebra induced by
pairs <l,r> (l no var, var(l)<var(r)) of rewrite rules, and R closed
under substitution ((R x y)->(f:A->A)(R (f x) (f y))
But: you want the function specified by the rewrite rules <l,r> to be a
mapping onto a simpler algebra. Think of arithmetic + mapping elements
from Inductive Set
init_nat=o:init_nat|s:init_nat->init_nat|+:init_nat->init_nat->init_nat
to elements of nat. That is... if the specification of + as a term
rewriting system is confluent and strongly normalizing.
Question: How do I define properties SN and Confluence in Coq. Can this
be done fully 'impredicative', i.e. context independent? Is there a
reference on the subject?
"
Hope I didn't bore anyone...
===============
Thijs Cobben
Student Cognitive Artificial Intelligence
Utrecht University
The Netherlands
cobben AT phil.ruu.nl
From werner Fri Dec 12 13:07:12 1997
50:31 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA16753 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 18 Apr 1996 16:50:31 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA02754 for
coq-club-redistribution@pauillac;
Thu, 18 Apr 1996 16:50:30 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA27089 for
<werner AT cadillac.inria.fr>;
Tue, 16 Apr 1996 14:48:49 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA06038; Tue, 16 Apr 1996
14:47:40 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA10932; Tue, 16 Apr 1996
14:48:38 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA06032; Tue, 16 Apr 1996
14:47:36 +0200 (MET DST)
Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id OAA16034 for
<coq-club AT margaux.inria.fr>;
Tue, 16 Apr 1996 14:48:36 +0200
Received: from psyche.inria.fr (psyche.inria.fr [138.96.48.36]) by
nez-perce.inria.fr (8.7.1/8.7.1) with ESMTP id OAA04984 for
<coq-club@margaux AT inria.fr>;
Tue, 16 Apr 1996 14:47:35 +0200 (MET DST)
Received: by psyche.inria.fr (8.6.13/8.6.12) id OAA02234; Tue, 16 Apr 1996
14:48:32 +0200
Message-Id:
<199604161248.OAA02234 AT psyche.inria.fr>
X-Mailer: exmh version 1.6.5 12/11/95
To:
coq-club@margaux AT inria.fr
Subject: Pourquoi ca ne marche pas?
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date: Tue, 16 Apr 1996 14:48:31 +0200
From: Loic Pottier
<Loic.Pottier AT sophia.inria.fr>
Sender:
werner AT cadillac.inria.fr
Content-Length: 1829
Lines: 74
Status: RO
[ Moderator's note : Sorry, I can't translate all the messages.
Benjamin Werner ]
Je ne comprend pas pourquoi ca ne marche pas:
d : nat
n : nat
H : (well_founded (vnat n) (vdivs n))
a : (vnat (S n))
d0 : nat
n0 : nat
v : (vnat n)
H1 : d0=n
x : (vnat n)
H0 : (y:(vnat n))
(vdivs n y x)->(Acc (vnat (S n)) (vdivs (S n)) (vcons n O y))
y : (vnat (S n))
H2 : (vdivs (S n) y (vcons n O x))
d1 : nat
n1 : nat
m : nat
v0 : (vnat n)
v' : (vnat n)
H3 : d1=n
H4 : (existS nat [x:nat](vnat x) (S n) (vcons n n1 v0))
=(existS nat [x:nat](vnat x) (S n) y)
H5 : m=O
H6 : (existS nat [d:nat](vnat d) n v')
=(existS nat [d:nat](vnat d) n x)
H7 : (le n1 O)
H8 : (vdivs n v0 v')
H9 : n1=O
============================
(vdivs n v0 x)
La, j'ai envie de faire:
Dependent Rewrite <- H6.
Mais ca ne change pas mon x en v' comme je l'esperait...
Je travaille avec : Welcome to Coq V5.10.15 (Thu Feb 15 1996)
sur un Sun.
(Mais il se passe la meme chose sur powerbook...)
Voila la definition des objets qui sont utilises ici:
Inductive vnat:nat->Set:=
vnil:(vnat O)
|vcons:(d:nat)nat->(vnat d)->(vnat (S d)).
Inductive vdiv:(d:nat)(vnat d)->(vnat d)->Prop:=
vdiv0:(vdiv O vnil vnil)
|vdiv1:(d:nat)(n,m:nat)(v,v':(vnat d))
(le n m)->(vdiv d v v')->(vdiv (S d) (vcons d n v)(vcons d m v')).
Hint vdiv0 vdiv1.
Inductive vdivs:(d:nat)(vnat d)->(vnat d)->Prop:=
vdivs1:(d:nat)(n,m:nat)(v,v':(vnat d))
(lt n m)->(vdiv d v v')->(vdivs (S d) (vcons d n v)(vcons d m v'))
|vdivs2:(d:nat)(n,m:nat)(v,v':(vnat d))
(le n m)->(vdivs d v v')->(vdivs (S d) (vcons d n v)(vcons d m v')).
Hint vdivs1 vdivs2.
Et je suis dans la preuve de:
Theorem wf_vdivs:(d:nat)(well_founded (vnat d) (vdivs d)).
Loic Pottier
Projet Safir
INRIA Sophia.
From werner Fri Dec 12 13:07:12 1997
50:44 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA16765 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 18 Apr 1996 16:50:44 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA02759 for
coq-club-redistribution@pauillac;
Thu, 18 Apr 1996 16:50:43 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA27121 for
<werner AT cadillac.inria.fr>;
Tue, 16 Apr 1996 15:13:33 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA06622; Tue, 16 Apr 1996
15:12:31 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA11730; Tue, 16 Apr 1996
15:13:29 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA06619; Tue, 16 Apr 1996
15:12:27 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id PAA28194 for
<coq-club AT margaux.inria.fr>;
Tue, 16 Apr 1996 15:13:27 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA06615 for
<coq-club AT margaux.inria.fr>;
Tue, 16 Apr 1996 15:12:26 +0200 (MET DST)
Received: (from
cornes@localhost)
by pauillac.inria.fr (8.6.10/8.6.6) id PAA11722 for
coq-club AT margaux.inria.fr;
Tue, 16 Apr 1996 15:13:26 +0200
Date: Tue, 16 Apr 1996 15:13:26 +0200
From: Cristina Cornes
<Cristina.Cornes AT inria.fr>
Message-Id:
<199604161313.PAA11722 AT pauillac.inria.fr>
To:
coq-club AT margaux.inria.fr
Subject: question de Loic
Sender:
werner AT cadillac.inria.fr
Content-Length: 1200
Lines: 54
Status: RO
Bonjour,
<< La, j'ai envie de faire: Dependent Rewrite <- H6.
Mais ca ne change pas mon x en v' comme je l'esperait... >>
est que x et v0 tous les deux dependent de n donc Dependent Rewrite
n'arrive pas a generaliser le but en sorte de pouvoir reecrire.
Malheussement Dependent Rewrite ne souleve le message d'erreur avec
cet information. Bug a reparer :)
Tu peux faire le rewrite si tu generalises v0 d'abord:
n : nat
d : nat
v : (vnat n)
x : (vnat n)
v0 : (vnat n)
v' : (vnat n)
H6 : (existS nat [d:nat](vnat d) n v')
=(existS nat [d:nat](vnat d) n x)
============================
(vdivs n v0 x)
Unnamed_thm < Generalize v0.
1 subgoal
n : nat
d : nat
v : (vnat n)
x : (vnat n)
v0 : (vnat n)
v' : (vnat n)
H6 : (existS nat [d:nat](vnat d) n v')
=(existS nat [d:nat](vnat d) n x)
============================
(v0:(vnat n))(vdivs n v0 x)
Unnamed_thm < Dependent Rewrite <- H6.
1 subgoal
n : nat
d : nat
v : (vnat n)
x : (vnat n)
v0 : (vnat n)
v' : (vnat n)
H6 : (existS nat [d:nat](vnat d) n v')
=(existS nat [d:nat](vnat d) n x)
============================
(v0:(vnat n))(vdivs n v0 v')
amicalement
cristina
From werner Fri Dec 12 13:07:12 1997
44:08 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA16535 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 18 Apr 1996 16:44:02 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA02717 for
coq-club-redistribution@pauillac;
Thu, 18 Apr 1996 16:44:01 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA02348 for
<werner AT cadillac.inria.fr>;
Thu, 18 Apr 1996 14:23:48 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA10489; Thu, 18 Apr 1996
14:23:40 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA06419; Thu, 18 Apr 1996
14:23:38 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA10481; Thu, 18 Apr 1996
14:23:38 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA06410 for
<coq-club AT pauillac.inria.fr>;
Thu, 18 Apr 1996 14:23:36 +0200
Received: from arthur.inria.fr (arthur.inria.fr [138.96.24.74]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA10471 for
<coq-club AT pauillac.inria.fr>;
Thu, 18 Apr 1996 14:23:31 +0200 (MET DST)
Received: by arthur.inria.fr (8.6.13/8.6.12) id OAA25346; Thu, 18 Apr 1996
14:23:25 +0200
Message-Id:
<199604181223.OAA25346 AT arthur.inria.fr>
To:
coq-club AT pauillac.inria.fr
Subject: Problem with Rewrite
Date: Thu, 18 Apr 1996 14:23:21 +0200
From: Gilles Kahn
<Gilles.Kahn AT sophia.inria.fr>
Sender:
werner AT cadillac.inria.fr
Content-Length: 535
Lines: 32
Status: RO
I have a problem with "Rewrite A in B"
I have an Hypothesis of the form
H'3 : (Rel_of V D' e fx)
in my local context. In the global context, I have:
f_is_functional : (x:U) (y, z:V) (f x y) -> (f x z) -><V> y == z
When I say
Rewrite (f_is_functional x fx y) in H'3.
I obtain the following obscure warning
Error: No equality here :
---------------------
Of course I get around this with the following gymnastics:
Generalize H'3; Clear H'3.
Rewrite (f_is_functional x fx y).
Intro H'3.
------------------------
Gilles
From werner Fri Dec 12 13:07:12 1997
47:18 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA16617 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 18 Apr 1996 16:47:18 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA02738 for
coq-club-redistribution@pauillac;
Thu, 18 Apr 1996 16:47:11 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA02710 for
<werner AT cadillac.inria.fr>;
Thu, 18 Apr 1996 16:43:17 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA16497; Thu, 18 Apr 1996
16:43:16 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA09599; Thu, 18 Apr 1996
16:43:14 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA16487; Thu, 18 Apr 1996
16:43:14 +0200 (MET DST)
Received: (from
cornes@localhost)
by pauillac.inria.fr (8.6.10/8.6.6) id QAA09584; Thu, 18 Apr 1996 16:43:12
+0200
From: Cristina Cornes
<Cristina.Cornes AT inria.fr>
Message-Id:
<199604181443.QAA09584 AT pauillac.inria.fr>
Subject: Re: Problem with Rewrite
To:
Gilles.Kahn AT sophia.inria.fr
(Gilles Kahn)
Date: Thu, 18 Apr 1996 16:43:11 +0200 (MET DST)
Cc:
coq-club AT pauillac.inria.fr
In-Reply-To:
<199604181223.OAA25346 AT arthur.inria.fr>
from "Gilles Kahn" at Apr 18, 96 02:23:21 pm
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 1183
Lines: 49
Status: RO
[ Thanks for mentioning this bug. Actually, Rewrite ... in is not
written using Rewrite and thus the behavior of the two tactics is not
the same. The point is that Rewrite ... in awaits an equality proof,
and not a proof of a proposition ending by an equality, as Rewrite
does. ]
Bonjour,
merci de soulever ce bug. En fait Rewrite..in n'est pas ecrit en termes
de Rewrite, donc il y a ce type de comportement non uniforme des deux
tactiques. Le probleme est que Rewrite ..in attend une egalite' et pas un
lemme dont la conclusion est une egalite (comme c'est le cas du Rewrite
simple). Dans votre example il faudrait appliquer f_is_functional
a tous ses arguments pour pouvoir faire le rewrite.
P : V->Prop
x : U
fx : V
y : V
H : (P fx)
X : (f x fx)
X0 : (f x y)
============================
(P fx)
Unnamed_thm < Rewrite -> (f_is_functional x fx y) in H.
Error: No equality here
during command Rewrite (f_is_functional x fx y) in H.
Unnamed_thm < Rewrite -> (f_is_functional x fx y X X0) in H.
1 subgoal
P : V->Prop
x : U
fx : V
y : V
H : (P y)
X : (f x fx)
X0 : (f x y)
============================
(P fx)
amicalement
cristina
From werner Fri Dec 12 13:07:12 1997
08:08 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA17273 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 18 Apr 1996 17:08:08 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA02841 for
coq-club-redistribution@pauillac;
Thu, 18 Apr 1996 17:08:07 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA02834 for
<werner AT cadillac.inria.fr>;
Thu, 18 Apr 1996 17:07:51 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA17255; Thu, 18 Apr 1996
17:07:49 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA10325; Thu, 18 Apr 1996
17:07:46 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA17250; Thu, 18 Apr 1996
17:07:45 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA10317 for
<coq-club AT pauillac.inria.fr>;
Thu, 18 Apr 1996 17:07:43 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA17245 for
<coq-club AT pauillac.inria.fr>;
Thu, 18 Apr 1996 17:07:43 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA02830 for
coq-club@pauillac;
Thu, 18 Apr 1996 17:07:42 +0200
From: Benjamin Werner
<werner AT cadillac.inria.fr>
Message-Id:
<199604181507.RAA02830 AT cadillac.inria.fr>
Subject: The mutilated chess board. Coq, Isabelle
To:
coq-club AT pauillac.inria.fr
Date: Thu, 18 Apr 1996 17:07:41 +0200 (MET DST)
X-Mailer: ELM [version 2.4 PL24 ME8]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 7105
Lines: 183
Status: RO
Hello,
I guess most of you allready recieved these messages. I also forgot to
post them before my vacations.
Apologies,
Benjamin Werner
--------------------------------------------------
>From : Lawrence C Paulson Mar 29, 96 12:12:30 pm +0100
To:
isabelle-users AT cl.cam.ac.uk,
bra-types AT cs.chalmers.se,
qed AT mcs.anl.gov
Subject: Mutilated Chess Board
Date: Fri, 29 Mar 1996 12:12:30 +0100
The following paper is available on the WWW at
http://www.cl.cam.ac.uk/users/lcp/papers/mutil.dvi.gz
--
Larry Paulson
A Simple Mechanical Proof for the Mutilated Chess Board
Abstract
The impossibility of tiling the mutilated chess board has been formalized
and verified using Isabelle. The formalization is not in the standard
analytical style, but instead uses inductive definitions. The proofs are
straightforward except for some lemmas concerning finite
cardinalities. This exercise is an object lesson in choosing a good
formalization; it demonstrates the advantages of inductive definitions.
---------------------------------------------------
>From : Gerard Huet Mar 29, 96 05:50:11 pm +0100
Date: Fri, 29 Mar 1996 17:50:11 +0100
To:
Larry.Paulson AT cl.cam.ac.uk,
bra-types AT cs.chalmers.se,
isabelle-users AT cl.cam.ac.uk,
qed AT mcs.anl.gov
Subject: Re: Mutilated Chess Board
Cc:
coq-club AT pauillac.inria.fr
It is amazing how much interest this little puzzle is attracting. I thought
this problem had been settled a long time ago, when I showed John McCarthy
(in july 1973) how to correctly model this problem in second order logic.
At the time, I formalised it in my Constrained Resolution version of Church's
Simple Theory of Types, which lead to 5 clauses. A 5 steps resolution proof
leads to a constraint of 4 unification problems, which could be shown
satisfiable using higher-order unification. I am sure that Peter Andrews'
prover could easily find the proof in a completely automatic fashion.
I recently re-formalised the argument in the Coq proof assistant, which leads
here too to a 5 steps proof. Here is the full development:
(****************************************************************************)
(* Checker.v *)
(****************************************************************************)
(* The mutilated checkerboard problem *)
(* Coq V5.10 G. Huet March 20th 1996 *)
(* Uses second-order formalisation Constrained Resolution G. Huet July 1973 *)
(* Cf `A tough nut for proof procedures' J. McCarthy July 1964 SAIL Memo 16 *)
(****************************************************************************)
Require Functions.
Parameters Black,White : Set. (* sets of black (resp. white) squares *)
Parameter BW : Black -> White. (* |Black|<=|White| in full board *)
Axiom BW_One_one : (One_one BW).
(* finite board *)
Axiom Finite_Board : (Finite Black).
(* The Domino one_one map covers White *)
Parameter Domino : White -> Black.
Axiom Domino_one_one : (One_one Domino).
Theorem Domino_covers_Black : (Onto Domino).
Proof.
Apply Surjections_right with f:=BW.
Apply (Finite_Board (BW o Domino)).
Apply Injections_compose.
Exact BW_One_one.
Exact Domino_one_one.
Qed.
(****************************************************************************)
As you may see, the argument is rather direct, it is a simple cardinality
reasoning. As Larry remarked, the only difficulty is in the correct
mathematics
modelling of the problem, although to my taste he over-specifies things. There
is no need at all to axiomatize the geometry of the board. All we have to say
is that we have as many White squares as Black squares in the full
checkerboard
(which I state by postulating a One-one function BW : Black -> White), and
that
the set of Black squares is finite. Now any domino covering of all White
squares (postulating a One_one function Domino : White -> Black) must also
cover all Black squares, a contradiction with the mutilation hypothesis.
We do not need any heavy duty set theory, nor inductive types, this is pure
second-order predicate calculus with simple types. Note that we abstract
completely the geometry. In particular, I never talk about dominos covering
adjacent squares, this has nothing to do with the argument, any more than
you have to state whether the board is made of wood or metal. Note also
that it is completely constructive, and that the excluded middle is not
needed.
Of course the proof above is hard to completely automate, since there is an
essential guessing of the term (BW o Domino). But, as I hinted above, a
completely mechanical proof could be obtained in 2 steps : first generate the
5 steps proof outline, keeping unification constriants. The term (BW o Domino)
is then found automatically by the final unification step.
If the above proof baffles you, here is the elementary library on functions
which is used in the example, complete with the rule for infix composition.
(****************************************************************************)
(* Basic properties of functions over Set. G. Huet March 1996 Coq V5.10 *)
Section Mappings.
Variables X,Y:Set.
Variable f:X->Y.
Definition Injective := (x,x':X)(f x)=(f x') -> x=x'.
Definition Surjective := (y:Y)(Ex [x:X]y=(f x)).
End Mappings.
Syntactic Definition One_one := (Injective ? ?).
Syntactic Definition Onto := (Surjective ? ?).
Section Finiteness.
Variables X:Set.
Definition Finite := (f:X->X)(One_one f)->(Onto f).
End Finiteness.
Section Composition.
Variables X,Y,Z:Set.
Variable f:X->Y.
Variable g:Y->Z.
Definition comp := [x:X](g (f x)).
End Composition.
Grammar command command2 :=
[command1($f) "o" command2($g)] -> [$0 = <<(comp ? ? ? $f $g)>>].
Section Preservation.
Variables X,Y,Z:Set.
Variable f:X->Y.
Variable g:Y->Z.
Lemma Injections_compose : (One_one f)->(One_one g)->(One_one (f o g)).
Proof.
Auto.
Qed.
Lemma Surjections_right : (Onto (f o g))->(Onto g).
Proof.
Intro Sfg; Red; Intro z; Elim (Sfg z).
Intros x E; Exists (f x); Trivial.
Qed.
Lemma Surjections_compose : (Onto f)->(Onto g)->(Onto (f o g)).
Proof.
Unfold Surjective comp; Intros Sf Sg z.
Elim (Sg z); Intros y E; Elim (Sf y); Intros x E'.
Exists x; Rewrite E; Rewrite E'; Trivial.
Qed.
End Preservation.
(****************************************************************************)
The last lemma is not needed in the checkerboard example.
The whole trick is to state in the right way that the board is finite:
Definition Finite := (f:X->X)(One_one f)->(Onto f).
i.e. a set X is finite iff every one_one function f:X->X is onto.
This is what higher order buys you: abstraction.
This example ought to be meditated by people who think that constructive
mathematics yields necessarily heavy encodings...
Apologies for multiple copies to all those groups interested in checkerboards!
Gerard Huet
-----------------------------------
From werner Fri Dec 12 13:07:12 1997
45:29 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA16816 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 25 Apr 1996 17:45:29 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA20693 for
coq-club-redistribution@pauillac;
Thu, 25 Apr 1996 17:45:28 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA20647 for
<werner AT cadillac.inria.fr>;
Thu, 25 Apr 1996 17:34:33 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA16590; Thu, 25 Apr 1996
17:34:32 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA07567; Thu, 25 Apr 1996
17:34:30 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA16581; Thu, 25 Apr 1996
17:34:29 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA07560 for
<coq-club AT pauillac.inria.fr>;
Thu, 25 Apr 1996 17:34:28 +0200
Received: from melipa.ec-nantes.fr (melipa.ec-nantes.fr [130.66.101.1]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id RAA16573 for
<coq-club AT pauillac.inria.fr>;
Thu, 25 Apr 1996 17:34:27 +0200 (MET DST)
Received: from lan10.ec-nantes.fr by melipa.ec-nantes.fr with SMTP;
Thu, 25 Apr 1996 17:35:32 +0200 (WET-DST)
Received: from
(argon@localhost)
by lan10.ec-nantes.fr (8.6.11/jtpda-5.1) id RAA14977
; Thu, 25 Apr 1996 17:31:28 +0100
Date: Thu, 25 Apr 1996 17:31:28 +0100
From:
Pablo.Argon AT lan10.ec-nantes.fr
(Pablo ARGON)
Message-Id:
<199604251631.RAA14977 AT lan10.ec-nantes.fr>
To:
coq-club AT pauillac.inria.fr
Subject: Lot of A/\B
Cc:
argon AT lan10.ec-nantes.fr
Sender:
werner AT cadillac.inria.fr
Content-Length: 409
Lines: 30
Status: RO
Hello,
I have a lot of hypothesis like (*) :
H : A /\ B
H0: C /\ D
...
============
X
and I know that if I have;
H : A
H': B
H0: C
H0': D
...
============
X
Auto solves it !
Is it some tactic to transform the first configuration in the other ?
(*) because this goals are generated by Program_all and my
specification is something like {x:X| (Px->Qx)/\(Qx->Px)} .
Thank's by advance,
Pablo Argon.
From werner Fri Dec 12 13:07:12 1997
08:36 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA08486 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 30 Apr 1996 16:08:35 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA05647 for
coq-club-redistribution@pauillac;
Tue, 30 Apr 1996 16:08:35 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA05611 for
<werner AT cadillac.inria.fr>;
Tue, 30 Apr 1996 15:53:20 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA08091; Tue, 30 Apr 1996
15:53:11 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA00239; Tue, 30 Apr 1996
15:53:09 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA08086; Tue, 30 Apr 1996
15:53:08 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id PAA24437 for
<coq-club AT margaux.inria.fr>;
Tue, 30 Apr 1996 15:53:07 +0200
Received: from ten.dimi.uniud.it (ten.dimi.uniud.it [158.110.144.132]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id PAA08082 for
<coq-club AT margaux.inria.fr>;
Tue, 30 Apr 1996 15:53:04 +0200 (MET DST)
Received: from 158.110.144.221 ([158.110.144.221]) by ten.dimi.uniud.it with
SMTP id AA13541
(5.67a/IDA-1.5 for
<coq-club AT margaux.inria.fr>);
Tue, 30 Apr 1996 15:49:08 +0200
Message-Id:
<31861A56.7A71 AT dimi.uniud.it>
Date: Tue, 30 Apr 1996 15:49:10 +0200
From: Marino Miculan
<miculan AT dimi.uniud.it>
Reply-To:
miculan AT dimi.uniud.it
Organization: Universit=?iso-8859-1?Q?=E0 di Udine, Dipartimento di
Matematica e Informatica?=
X-Mailer: Mozilla 2.0 (Macintosh; I; 68K)
Mime-Version: 1.0
To: Coq Club
<coq-club AT margaux.inria.fr>
Subject: How to prove "==" goals?
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 697
Lines: 17
Status: RO
Hi all,
I've tried for a while to prove that (~False) == True, where "==" is the
"eqT" relation of Coq. The only properties concerning this predicate are
those of the file "Logic_Type.v" (I guess); more precisely, they state
that "==" is a congruence and has just one constructor, the reflexivity.
Since it couldn't be *so* difficult, there should be some hidden trick
I've missed... can someone give me a hint?
Cheers,
Marino.
--
Marino Miculan - Dipartimento di Matematica e Informatica
Universit` di Udine - via delle Scienze 206 - 33100 Udine - Italy
tel. +39-432-55.8456 - fax +39-432-55.8499 (attn. Miculan)
mailto:miculan AT dimi.uniud.it
http://www.dimi.uniud.it/~miculan
From werner Fri Dec 12 13:07:12 1997
08:59 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA08499 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 30 Apr 1996 16:08:58 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA05652 for
coq-club-redistribution@pauillac;
Tue, 30 Apr 1996 16:08:58 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA05630 for
<werner AT cadillac.inria.fr>;
Tue, 30 Apr 1996 16:04:01 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA08359; Tue, 30 Apr 1996
16:03:59 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA00588; Tue, 30 Apr 1996
16:03:56 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA08356; Tue, 30 Apr 1996
16:03:55 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id QAA24507 for
<coq-club AT margaux.inria.fr>;
Tue, 30 Apr 1996 16:03:54 +0200
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA08352 for
<coq-club AT margaux.inria.fr>;
Tue, 30 Apr 1996 16:03:53 +0200 (MET DST)
Received: from lip.ens-lyon.fr (lip-gw [140.77.1.11]) by cri.ens-lyon.fr
(8.7.5/8.7.3) with ESMTP id QAA17597; Tue, 30 Apr 1996 16:03:21 +0200 (MET
DST)
Received: from aquavit.ens-lyon.fr (aquavit [140.77.13.53]) by
lip.ens-lyon.fr (8.7.5/8.7.3) with ESMTP id QAA00907; Tue, 30 Apr 1996
16:03:20 +0200 (MET DST)
From: Christine Paulin
<Christine.Paulin AT lip.ens-lyon.fr>
Received: (from
cpaulin@localhost)
by aquavit.ens-lyon.fr (8.7.5/8.7.3) id QAA01985; Tue, 30 Apr 1996 16:03:19
+0200 (MET DST)
Date: Tue, 30 Apr 1996 16:03:19 +0200 (MET DST)
Message-Id:
<199604301403.QAA01985 AT aquavit.ens-lyon.fr>
To:
miculan AT dimi.uniud.it
Subject: Re: How to prove "==" goals?
Cc:
coq-club AT margaux.inria.fr
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 600
Lines: 21
Status: RO
Hello,
== is intentional equality on a Type A in your case the type
Prop of propositions.
In particular the existence of a closed proof of t==u implies t and u
are beta-convertible.
The propositions ~False = (False->False)
and True = Ind(X:Prop)(X->X)
are certainly not intentionally equal.
What holds is True <-> ~False
and you will get True=~False if you put as an extra axiom the extensionality
property : ((A,B:Prop)(A<->B)->A==B)
It is also obvious to prove ~(True=False) since True=False -> True -> False
is a direct consequence of the elimination for equality.
Christine Paulin.
From werner Fri Dec 12 13:07:12 1997
40:47 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA11037 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 30 Apr 1996 17:40:46 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA05922 for
coq-club-redistribution@pauillac;
Tue, 30 Apr 1996 17:40:46 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA05881 for
<werner AT cadillac.inria.fr>;
Tue, 30 Apr 1996 17:30:56 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA10805; Tue, 30 Apr 1996
17:30:54 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA06350; Tue, 30 Apr 1996
17:30:53 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA10802; Tue, 30 Apr 1996
17:30:52 +0200 (MET DST)
Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA06342 for
<coq AT pauillac.inria.fr>;
Tue, 30 Apr 1996 17:30:50 +0200
Received: from tamdhu (tamdhu.dcs.st-and.ac.uk [138.251.192.40]) by
nez-perce.inria.fr (8.7.1/8.7.1) with SMTP id RAA19291 for
<coq-club AT inria.fr>;
Tue, 30 Apr 1996 17:30:42 +0200 (MET DST)
Received: from keith.dcs.st-and.ac.uk by tamdhu (4.1/SMI-4.1)
id AA06032; Tue, 30 Apr 96 16:30:32 BST
Received: by keith.dcs.st-and.ac.uk (4.1/SMI-4.1)
id AA09661; Tue, 30 Apr 96 16:30:22 BST
Date: Tue, 30 Apr 96 16:30:22 BST
From:
aaa AT dcs.st-and.ac.uk
(A^3)
Message-Id:
<9604301530.AA09661 AT keith.dcs.st-and.ac.uk>
To:
coq-club AT inria.fr
Subject: Selective Rewriting of equal terms.
Sender:
werner AT cadillac.inria.fr
Content-Length: 723
Lines: 31
Status: RO
If I have a previously proved equality Lemma, say
(f x y z)=(f y x z)
and I have a goal
(g (f A B C) (f A B C)),
is there a simple way to rewrite this to
(g (f A B C) (f B A C))
directly without having to cut a new equality:
(g (f A B C) (f A B C)) = (g (f A B C) (F B A C))
Use this as a rewrite rule then prove it using the original rule?
In short, I want to be able to choose which term is re-written
by some sort of index, as is available for Unfolding.
*E-mail*aaa AT dcs.st-and.ac.uk*******
Andrew A Adams
**snail*40 Fife Park, St Andrews*** Division of Computer Science
***mail*Fife KY16 9UE, UK********** School of Maths and Comp Sci
****Tel*+44-1334-463268/589-464141* University of St Andrews
From werner Fri Dec 12 13:07:12 1997
47:43 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA11244 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 30 Apr 1996 17:47:42 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA05969 for
coq-club-redistribution@pauillac;
Tue, 30 Apr 1996 17:47:42 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA05928 for
<werner AT cadillac.inria.fr>;
Tue, 30 Apr 1996 17:42:42 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA11088; Tue, 30 Apr 1996
17:42:40 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA06620; Tue, 30 Apr 1996
17:42:39 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA11085; Tue, 30 Apr 1996
17:42:38 +0200 (MET DST)
Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA06612 for
<coq AT pauillac.inria.fr>;
Tue, 30 Apr 1996 17:42:37 +0200
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
nez-perce.inria.fr (8.7.1/8.7.1) with ESMTP id RAA19413 for
<coq-club AT inria.fr>;
Tue, 30 Apr 1996 17:42:36 +0200 (MET DST)
Received: from lip.ens-lyon.fr (lip-gw [140.77.1.11]) by cri.ens-lyon.fr
(8.7.5/8.7.3) with ESMTP id RAA22160; Tue, 30 Apr 1996 17:42:26 +0200 (MET
DST)
Received: from champagne.ens-lyon.fr (champagne [140.77.13.50]) by
lip.ens-lyon.fr (8.7.5/8.7.3) with ESMTP id RAA03928; Tue, 30 Apr 1996
17:42:24 +0200 (MET DST)
From: Eduardo Gimenez
<Eduardo.Gimenez AT lip.ens-lyon.fr>
Received: (from
egimenez@localhost)
by champagne.ens-lyon.fr (8.7.5/8.7.3) id RAA01786; Tue, 30 Apr 1996
17:42:23 +0200 (MET DST)
Date: Tue, 30 Apr 1996 17:42:23 +0200 (MET DST)
Message-Id:
<199604301542.RAA01786 AT champagne.ens-lyon.fr>
To:
aaa AT dcs.st-and.ac.uk
Subject: Re: Selective Rewriting of equal terms.
Cc:
coq-club AT inria.fr
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 530
Lines: 17
Status: RO
>
> In short, I want to be able to choose which term is re-written
> by some sort of index, as is available for Unfolding.
>
In order to rewrite the n-th occurrence of t in the
goal (from left to right) just use the command ``Pattern n t''
before Rewrite. See Coq's reference manual (pages 40-41)
for furhter details about Pattern. There are also some examples
of its use in the tutorial about recursive types in Coq
available at
http://www.ens-lyon.fr/LIP/groupes/coq/environment.us.html.
Best wishes,
Eduardo Gimenez.
From werner Fri Dec 12 13:07:12 1997
47:23 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA11238 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 30 Apr 1996 17:47:22 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA05964 for
coq-club-redistribution@pauillac;
Tue, 30 Apr 1996 17:47:22 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA05957 for
<werner AT cadillac.inria.fr>;
Tue, 30 Apr 1996 17:47:05 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA11230; Tue, 30 Apr 1996
17:46:58 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA06725; Tue, 30 Apr 1996
17:46:57 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA11224; Tue, 30 Apr 1996
17:46:55 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA06716 for
<coq AT pauillac.inria.fr>;
Tue, 30 Apr 1996 17:46:55 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA11221; Tue, 30 Apr 1996
17:46:54 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA05953; Tue, 30 Apr 1996 17:46:53
+0200
From: Benjamin Werner
<werner AT cadillac.inria.fr>
Message-Id:
<199604301546.RAA05953 AT cadillac.inria.fr>
Subject: Re: Selective Rewriting of equal terms.
To:
aaa AT dcs.st-and.ac.uk
(A^3)
Date: Tue, 30 Apr 1996 17:46:53 +0200 (MET DST)
Cc:
coq-club AT inria.fr
In-Reply-To:
<9604301530.AA09661 AT keith.dcs.st-and.ac.uk>
from "A^3" at Apr 30, 96 04:30:22 pm
X-Mailer: ELM [version 2.4 PL24 ME8]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 1019
Lines: 48
Status: RO
Hi,
>
> If I have a previously proved equality Lemma, say
>
> (f x y z)=(f y x z)
>
>
> and I have a goal
>
>
> (g (f A B C) (f A B C)),
>
> is there a simple way to rewrite this to
>
> (g (f A B C) (f B A C))
I think if you do a Pattern before using the tactics Rewrite or
Replace ... with, then only the chosen occurences are actually
replaced.
In your case, the following should do:
Pattern 2 (f A B C).
(goal becomes ([x:T](g (f A B C)) (f B A C)) )
Rewrite <the name of the equality lemma>.
Possibly you will have to specify the arguments of the equality lemma.
But in simple cases it should not be necessary.
Cheers,
Benjamin Werner
----------------------------------------------------------------------------
Projet Coq
INRIA-Rocquencourt, BP 105, F-78 153 LE CHESNAY cedex, FRANCE
E-mail:
Benjamin.Werner AT inria.fr
Phone: +33 (1) 39 63 52 31
Fax: +33 (1) 39 63 53 30
http://pauillac.inria.fr/~werner
-----------------------------------------------------------------------------
From werner Fri Dec 12 13:07:12 1997
51:12 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA08303 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 14 May 1996 15:51:12 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA07098 for
coq-club-redistribution@pauillac;
Tue, 14 May 1996 15:51:11 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id SAA00679 for
<werner AT cadillac.inria.fr>;
Fri, 10 May 1996 18:12:44 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id SAA03080; Fri, 10 May 1996
18:12:36 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id SAA25723; Fri, 10 May 1996
18:12:35 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id SAA03070; Fri, 10 May 1996
18:12:30 +0200 (MET DST)
Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id SAA25710 for
<coq AT pauillac.inria.fr>;
Fri, 10 May 1996 18:12:23 +0200
Received: from tamdhu (tamdhu.dcs.st-and.ac.uk [138.251.192.40]) by
nez-perce.inria.fr (8.7.1/8.7.1) with SMTP id SAA06419 for
<coq-club AT inria.fr>;
Fri, 10 May 1996 18:12:15 +0200 (MET DST)
Received: from keith.dcs.st-and.ac.uk by tamdhu (4.1/SMI-4.1)
id AA25527; Fri, 10 May 96 17:11:44 BST
Received: by keith.dcs.st-and.ac.uk (4.1/SMI-4.1)
id AA19891; Fri, 10 May 96 17:11:40 BST
Date: Fri, 10 May 96 17:11:40 BST
From:
aaa AT dcs.st-and.ac.uk
(A^3)
Message-Id:
<9605101611.AA19891 AT keith.dcs.st-and.ac.uk>
To:
coq-club AT inria.fr
Subject: Hints list within sections.
Sender:
werner AT cadillac.inria.fr
Content-Length: 550
Lines: 14
Status: RO
Is there a way of making an addition to the global hints list while
still within a section. The problem I'm having at the moment is that
a Hint command given within a third or fourth level nested Section
has to be repeated at every end-of-Section command, otherwise it is
lost to the hints list.
*E-mail*aaa AT dcs.st-and.ac.uk*******
Andrew A Adams
**snail*40 Fife Park, St Andrews*** Division of Computer Science
***mail*Fife KY16 9UE, UK********** School of Maths and Comp Sci
****Tel*+44-1334-463268/589-464141* University of St Andrews
From werner Fri Dec 12 13:07:12 1997
40:49 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA08074 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 14 May 1996 15:40:48 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA07080 for
coq-club-redistribution@pauillac;
Tue, 14 May 1996 15:40:48 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA05166 for
<werner AT cadillac.inria.fr>;
Mon, 13 May 1996 13:04:42 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA16093; Mon, 13 May 1996
13:04:35 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA10605; Mon, 13 May 1996
13:04:34 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id NAA16090; Mon, 13 May 1996
13:04:32 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA10558 for
<coq-club AT pauillac.inria.fr>;
Mon, 13 May 1996 13:00:46 +0200
Received: from psyche.inria.fr (psyche.inria.fr [138.96.48.36]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id MAA15316 for
<coq-club AT pauillac.inria.fr>;
Mon, 13 May 1996 12:24:04 +0200 (MET DST)
Received: by psyche.inria.fr (8.6.13/8.6.12) id MAA07488; Mon, 13 May 1996
12:24:02 +0200
Message-Id:
<199605131024.MAA07488 AT psyche.inria.fr>
X-Mailer: exmh version 1.6.5 12/11/95
To:
coq-club AT pauillac.inria.fr
Subject: Extending Rewrite tactic
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date: Mon, 13 May 1996 12:24:00 +0200
From: Loic Pottier
<Loic.Pottier AT sophia.inria.fr>
Sender:
werner AT cadillac.inria.fr
Content-Length: 1823
Lines: 56
Status: RO
[(Bad...sorry)english translation follows.]
Voila une chose qui me ferait tres plaisir et qui me faciliterait la vie:
une tactique Rewrite_equiv, qui ferait la meme chose que Rewrite mais pour
des
objets vivant dans un ensemble muni d'une relation d'equivalence, et
d'operateurs, disons internes et d'arite 1 ou 2 pour commencer, compatibles
avec cette relation d'equivalence.
Par exemple, pour resoudre le but suivant simplement par
Rewrite_equiv H.
(pour l'instant je ne sais pas faire autrement qu'en passant mettant entre
autres la symetrie de eqA en Hint, ce qui fait ramer Auto; et pour des choses
plus compliquees, il faut augmenter la profondeur de recherche d'Auto).
eqA:A->A->Prop
eq_equiv:(equiv A eqA)
f:A->A->A
f_compatible:(x,x',y,y':A)(eqA x x')->(eqA y y')->(eqA (f x y) (f x' y'))
g_compatible:(x,x',y,y':A)(eqA x x')->(eqA y y')->(eqA (g x y) (g x' y'))
x:A
y:A
z:A
H:(eqA x y)
================
(eqA (g (f x z) y) (g (f y z) x))
Je n'ai jamais essaye d'ecrire de nouvelles tactiques.
Mais peut-etre que quelqu'un a deja fait ce travail quelque part?
Loic
[I would very much appreciate a tactic Rewrite_equiv, doing the same thing
than Rewrite but for a set with an equivalence relation, and compatible
operators.
For example, to solve this goal, with
Rewrite_equiv H.
(For the moment, I use some Hint, included Hint the symmetry of eqZ, which
make Auto very slow...and need to increase the depth of Auto for large
expressions).
eqA:A->A->Prop
eq_equiv:(equiv A eqA)
f:A->A->A
f_compatible:(x,x',y,y':A)(eqA x x')->(eqA y y')->(eqA (f x y) (f x' y'))
g_compatible:(x,x',y,y':A)(eqA x x')->(eqA y y')->(eqA (g x y) (g x' y'))
x:A
y:A
z:A
H:(eqA x y)
================
(eqA (g (f x z) y) (g (f y z) x))
I never tried to write new tactics.
But perhaps someone already did this work?
Loic]
From werner Fri Dec 12 13:07:12 1997
06:12 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA13676 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 11 Jun 1996 16:06:11 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA13543 for
coq-club-redistribution@pauillac;
Tue, 11 Jun 1996 16:06:10 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA13533 for
<werner AT cadillac.inria.fr>;
Tue, 11 Jun 1996 15:59:49 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA13550; Tue, 11 Jun 1996
15:59:48 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA05267; Tue, 11 Jun 1996
15:59:46 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA13547; Tue, 11 Jun 1996
15:59:45 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id PAA11614 for
<coq-club AT margaux.inria.fr>;
Tue, 11 Jun 1996 15:59:39 +0200
Received: from ten.dimi.uniud.it (ten.dimi.uniud.it [158.110.144.132]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id PAA13526 for
<coq-club AT margaux.inria.fr>;
Tue, 11 Jun 1996 15:58:51 +0200 (MET DST)
Received: from 158.110.144.218 ([158.110.144.218]) by ten.dimi.uniud.it with
SMTP id AA13252
(5.67a/IDA-1.5 for
<coq-club AT margaux.inria.fr>);
Tue, 11 Jun 1996 15:57:49 +0200
Message-Id:
<31BD7B5E.B02 AT dimi.uniud.it>
Date: Tue, 11 Jun 1996 15:57:51 +0200
From: Marino Miculan
<miculan AT dimi.uniud.it>
Reply-To:
miculan AT dimi.uniud.it
Organization: Universit` di Udine, Dipartimento di Matematica e Informatica
X-Mailer: Mozilla 2.02 (Macintosh; I; 68K)
Mime-Version: 1.0
To:
coq-club AT margaux.inria.fr
Subject: Induction, Records & some other weird things.
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 2062
Lines: 49
Status: RO
Hi all,
I've got a problem with inductive (and dually coinductive) definitions.
Being (hopely:-) consistent, Coq requires the constructors of an
inductive type to be strictly positive. Now, suppose we define a
"subtype" of Prop, the Type of Monotone Schemata:
Record Monotone : Type := mkMono{
scheme : Prop -> Prop
mono_cond : (P,Q:Prop) (P -> Q) -> (scheme P) -> (scheme Q)}.
that is, a F:Monotone is a propositional functor together with the proof
that it is monotone (here the condition stucks the semantical notion,
but I suppose we can adopt a syntactical one as well). Thus, for
F:Monotone, (scheme F) surely is a monotone function over Prop. So I
would like to define a fixpoint of such function, or better a recursive
constructor as follows:
Inductive mu [F:Monotone] : Prop :=
mu_intro : (scheme F (mu F)) -> (mu F).
Semantically, this is correct: since mu can be applied only to Monotone
terms, (scheme F) is monotone, and hence the constructor is sound. But
syntactically, Coq rejects a priori the definition because (mu F)
appears as argument of a function. Similarly, the following is rejected:
Fixpoint fix [F:Monotone] : Prop := (scheme F (fix F)).
Things goes bad also if we work on a Set, instead of a Type such Prop.
*SO*, should I interpret this as a limitation of Coq? That is, there are
recursive schemata, semantically sound, that we cannot implement in Coq
and more generally in the Calculus of Inductive Constructions (see the
rule W-Ind, page 70 of the manual)?
Or there is a way to tell Coq "relax, I've got the proof that (scheme F)
is monotone, see here, it is (mono_cond F)!"?
I suppose this is possible by means of an ad hoc tactic, but I would
preferr to avoid such things, at least as much as possible...
- marino
--
Marino Miculan - Dipartimento di Matematica e Informatica
Universita` di Udine - via delle Scienze 206 - 33100 Udine - Italy
tel. +39-432-55.8456 - fax +39-432-55.8499 (attn. Miculan)
mailto:miculan AT dimi.uniud.it
http://www.dimi.uniud.it/~miculan
From werner Fri Dec 12 13:07:12 1997
00:57 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA14829 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 11 Jun 1996 17:00:56 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA13631 for
coq-club-redistribution@pauillac;
Tue, 11 Jun 1996 17:00:55 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA13620 for
<werner AT cadillac.inria.fr>;
Tue, 11 Jun 1996 16:56:26 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA14681; Tue, 11 Jun 1996
16:56:25 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA07917; Tue, 11 Jun 1996
16:56:23 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA14674; Tue, 11 Jun 1996
16:56:22 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id QAA12109 for
<coq-club AT margaux.inria.fr>;
Tue, 11 Jun 1996 16:56:21 +0200
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA14666 for
<coq-club AT margaux.inria.fr>;
Tue, 11 Jun 1996 16:56:20 +0200 (MET DST)
Received: from lip.ens-lyon.fr (lip-gw [140.77.1.11]) by cri.ens-lyon.fr
(8.7.5/8.7.3) with ESMTP id QAA26318 for
<coq-club AT margaux.inria.fr>;
Tue, 11 Jun 1996 16:56:19 +0200 (MET DST)
Received: from champagne.ens-lyon.fr (champagne [140.77.11.30]) by
lip.ens-lyon.fr (8.7.5/8.7.3) with ESMTP id QAA18432 for
<coq-club AT margaux.inria.fr>;
Tue, 11 Jun 1996 16:56:18 +0200 (MET DST)
From: Eduardo Gimenez
<Eduardo.Gimenez AT lip.ens-lyon.fr>
Received: (from
egimenez@localhost)
by champagne.ens-lyon.fr (8.7.5/8.7.3) id QAA08647 for
coq-club AT margaux.inria.fr;
Tue, 11 Jun 1996 16:56:15 +0200 (MET DST)
Date: Tue, 11 Jun 1996 16:56:15 +0200 (MET DST)
Message-Id:
<199606111456.QAA08647 AT champagne.ens-lyon.fr>
To:
coq-club AT margaux.inria.fr
Subject: Re:Induction, Records & some other weird things.
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 2529
Lines: 73
Status: RO
Hi Marino!
> [..] are there
> recursive schemata, semantically sound, that we cannot implement in Coq
> and more generally in the Calculus of Inductive Constructions (see the
> rule W-Ind, page 70 of the manual)?
Certainly yes. In my opinion, there are two different approaches to
inductive definitions. On one hand you have those systems where
recursive definitions are considered as fixed points of monotonic
operators, and where the proof of monotonicity is left to the user. On
the other, you have systems like Coq, which try to detect a sufficient
condition for the operator to be monotonic. The former ones require to
prove monotonicity each time you make a definition (which may be a
little boring) and sometimes require an extra level of encoding of the
type in terms of other types (represinting F in terms of products,
disjoint unions, etc). The latter ones are more friendly and allow
more direct definitions, but do not cover all possible sound
definitions.
Anyway, note that your definition is not sound!
Taking:
Definition F := [X:Set]X->X.
you can easily prove that:
Lemma mono_cond : (P,Q:Set)(P->Q)->(F P)->(F Q).
Unfold F.
Auto.
Qed.
and thus your definition
> Inductive mu [F:Monotone] : Prop :=
> mu_intro : (scheme (F (mu F))) -> (mu F).
>
would become equivalent to :
Inductive mu : Set :=
mu_intro : (mu -> mu)->mu.
which is an inconsistent definition, because of
the negative occurrence of mu. In fact mu is nothing but the set
of untyped lambda terms. It is not difficult to
construct an obect of type mu that behaves as the
non-normalizable term (\x.(x x) \x.(x x)) --just take mu_intro
as the lambda abstraction and define application by case analysis
on mu. This can not be allowed in Coq, since the consistency
of its logical system is based on the fact that any term is
noramalizable.
Also the definition :
>
> Fixpoint fix [F:Monotone] : Prop := (scheme (F (fix F))).
>
is not correct, no matter which F you take, since the argument of
the recursive call of fix (this is, F) is not smaller than F itself.
You should understand the Fixpoint command as a way of defining
functions by structural recursion.
In my opinion, the problem with your definitions is that you are trying
an approach close to denotational semantics, which is not sound inside
type theory. Denotational semantics can make sense of any kind of
recursion (even non-terminating one), while in type theory only
terminating functions are allowed.
With best regards,
Eduardo Gimenez.
From werner Fri Dec 12 13:07:13 1997
18:30 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA04303 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 20 Jun 1996 16:18:30 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA26456 for
coq-club-redistribution@pauillac;
Thu, 20 Jun 1996 16:18:28 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA26397 for
<werner AT cadillac.inria.fr>;
Thu, 20 Jun 1996 16:02:12 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA03794; Thu, 20 Jun 1996
16:02:11 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA06553; Thu, 20 Jun 1996
16:02:04 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA03783; Thu, 20 Jun 1996
16:02:03 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id QAA05014 for
<coq-club AT margaux.inria.fr>;
Thu, 20 Jun 1996 16:02:02 +0200
Received: from ten.dimi.uniud.it (ten.dimi.uniud.it [158.110.144.132]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id QAA03774 for
<coq-club AT margaux.inria.fr>;
Thu, 20 Jun 1996 16:01:53 +0200 (MET DST)
Received: from 158.110.144.217 ([158.110.144.217]) by ten.dimi.uniud.it with
SMTP id AA04302
(5.67a/IDA-1.5 for
<coq-club AT margaux.inria.fr>);
Thu, 20 Jun 1996 16:01:17 +0200
Message-Id:
<31C959AD.1B98 AT dimi.uniud.it>
Date: Thu, 20 Jun 1996 16:01:17 +0200
From: Marino Miculan
<miculan AT dimi.uniud.it>
Reply-To:
miculan AT dimi.uniud.it
Organization: Universit` di Udine, Dipartimento di Matematica e Informatica
X-Mailer: Mozilla 2.02 (Macintosh; I; 68K)
Mime-Version: 1.0
To: Coq Club
<coq-club AT margaux.inria.fr>
Subject: Mutual Inductive def's & Paradoxes
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 3284
Lines: 78
Status: RO
Hello, I'm back...
(I begin thinking to be the *only* one to have problems with Coq...
but I don't know whether this is good or bad :-)
Again on Mutual Inductive definitions. In the CIC, the types of the
objects under definition cannot contain the objects themselves. That's
to say, in the following scheme
Mutual Inductive
I1 : T1 :=
... constructors for I1 ...
with I2 : T2 :=
... constructors for I2 ...
....
with In : Tn :=
... constructors for In ...
T1,...,Tn cannot contain any of I1,...,In. This is due, I suppose, to a
consistency problem. Indeed, a free generalization of T1...Tn yields
easily a paradox: if the following definition would be feasible
Mutual Inductive A:B := a:A
with B:A := b:B.
the minimal solution of the functor corresponding to this definition
should be "A isomorphic to B" and "a iso to b". Hence, A would inhabit a
type isomorphic to A itself, and this should yield (a version of)
Girard's Paradox.
However, there are useful cases of such definitions where, at a first
sight, there are no problems. This happens in particular when we want to
implement a context-sensitive grammar. A simple example is the
definition of lists of naturals all different each other. This
corresponds to the following grammar:
l ::= <> | n.l if n \not\in l
where the formation of l.m is subject to the condition that the head
natural does not appear in the tail. A direct, easy, nice and faithful
representation of this language would be as follows
Mutual Definition diffnats : Set :=
empty : diffnats
| cons : (n:nat)(l:diffnats)(notin n l) -> diffnats
with notin : nat -> diffnats ->Prop :=
notin_empty : (n:nat)(notin n empty)
| notin_cons : (n,m:nat)(l:diffnats)
(not (n=m)) -> (notin n l) -> (notin n (cons m l)).
Well, there seems to be nothing wrong with this definition.
Semantically, the associated endofunctor seems to have a good initial
algebra (oh, the category is quite cumbersome, it is
\Prod_{X:S}(Nat \to X \to C), being S and C the topoi in which Set and
Prop are interpreted, respectively).
Most context-sensitive grammars can be defined in such a way: the first
object is the set of phrases, and its constructors can refer to
parallely defined conditions on the language itself. It is a *real* pity
that Coq does not allow for these definitions...
I suppose these definitions work because they are stratified: the type
of notin contains diffnats, but the type of diffnats is made up only of
already defined types. So, I'm wondering whether it is possible to relax
this condition on Mutual Inductive definition, allowing for stratified
types of defining objects. In the above scheme, this means that Ti can
contain Tj for 0<=j<i. Is there any evidence of inconsistency spreading
out from this? Or are there any other reason for avoiding such
definitions?
Thank you in advance,
- marino
--
Marino Miculan - Dipartimento di Matematica e Informatica
Universita' di Udine - via delle Scienze 206 - 33100 Udine - Italy
tel. +39-432-55.8456 - fax +39-432-55.8499 (attn. Miculan)
mailto:miculan AT dimi.uniud.it
http://www.dimi.uniud.it/~miculan
From werner Fri Dec 12 13:07:13 1997
18:43 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA04314 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 20 Jun 1996 16:18:43 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA26461 for
coq-club-redistribution@pauillac;
Thu, 20 Jun 1996 16:18:42 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA26440 for
<werner AT cadillac.inria.fr>;
Thu, 20 Jun 1996 16:17:01 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA04273; Thu, 20 Jun 1996
16:17:00 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA08339; Thu, 20 Jun 1996
16:16:52 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA04266; Thu, 20 Jun 1996
16:16:51 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id QAA05177 for
<coq-club AT margaux.inria.fr>;
Thu, 20 Jun 1996 16:16:50 +0200
Received: from melmac.risc.uni-linz.ac.at (melmac.risc.uni-linz.ac.at
[193.170.36.100]) by concorde.inria.fr (8.7.1/8.7.1) with SMTP id QAA04258
for
<coq-club AT margaux.inria.fr>;
Thu, 20 Jun 1996 16:16:46 +0200 (MET DST)
Received: from localhost by melmac.risc.uni-linz.ac.at with SMTP id AA02893
(5.67b8/IDA-1.5 for
<coq-club AT margaux.inria.fr>);
Thu, 20 Jun 1996 16:16:33 +0200
Message-Id:
<199606201416.AA02893 AT melmac.risc.uni-linz.ac.at>
To:
coq-club AT margaux.inria.fr
Subject: beginner problem
From:
Robert.Pollak AT risc.uni-linz.ac.at
Date: Thu, 20 Jun 96 16:16:30 +0200
Sender:
werner AT cadillac.inria.fr
Content-Length: 310
Lines: 22
Status: RO
Hi coq-specialists!
I have just a little question:
In my first little proof, I get to the point, where
one of the assumptions is
~ <nat> x0 =y0
and the goal is:
~ <nat> (S x0) =(S y0)
How is this done in the most efficient way,
and, how is this done without higher-level tactics?
thank you,
Robert
From werner Fri Dec 12 13:07:13 1997
55:24 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA05450 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 20 Jun 1996 16:55:24 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA26592 for
coq-club-redistribution@pauillac;
Thu, 20 Jun 1996 16:55:23 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA26584 for
<werner AT cadillac.inria.fr>;
Thu, 20 Jun 1996 16:53:28 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA05377; Thu, 20 Jun 1996
16:53:27 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA22406; Thu, 20 Jun 1996
16:53:24 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA05374; Thu, 20 Jun 1996
16:53:23 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id QAA05568 for
<coq-club AT margaux.inria.fr>;
Thu, 20 Jun 1996 16:53:22 +0200
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA05368 for
<coq-club AT margaux.inria.fr>;
Thu, 20 Jun 1996 16:53:21 +0200 (MET DST)
Received: from lip.ens-lyon.fr (lip-gw [140.77.1.11]) by cri.ens-lyon.fr
(8.7.5/8.7.3) with ESMTP id QAA23578; Thu, 20 Jun 1996 16:53:15 +0200 (MET
DST)
Received: from champagne.ens-lyon.fr (champagne [140.77.11.30]) by
lip.ens-lyon.fr (8.7.5/8.7.3) with ESMTP id QAA10767; Thu, 20 Jun 1996
16:53:03 +0200 (MET DST)
From: Eduardo Gimenez
<Eduardo.Gimenez AT lip.ens-lyon.fr>
Received: (from
egimenez@localhost)
by champagne.ens-lyon.fr (8.7.5/8.7.3) id QAA00992; Thu, 20 Jun 1996
16:53:11 +0200 (MET DST)
Date: Thu, 20 Jun 1996 16:53:11 +0200 (MET DST)
Message-Id:
<199606201453.QAA00992 AT champagne.ens-lyon.fr>
To:
Robert.Pollak AT risc.uni-linz.ac.at
Subject: Re: beginner problem
Cc:
coq-club AT margaux.inria.fr
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 746
Lines: 44
Status: RO
Hi Robert,
The quickest way to prove it is to use the tactic "Injection"
(see section 4.8 of Coq's manual for further details about
this tactic).
Goal (x,y:nat)~x=y->~(S x)=(S y).
Red.
Intros.
Red in H.
Apply H.
Injection H0;Trivial.
Qed.
Regards,
Eduardo Gimenez.
> From
>Â werner AT margaux.inria.fr
> Thu Jun 20 16:16 MET 1996
> To:
>Â coq-club AT margaux.inria.fr
> Subject: beginner problem
>
>
> Hi coq-specialists!
>
> I have just a little question:
> In my first little proof, I get to the point, where
> one of the assumptions is
>
> ~ <nat> x0 =y0
>
> and the goal is:
>
> ~ <nat> (S x0) =(S y0)
>
>
>
> How is this done in the most efficient way,
> and, how is this done without higher-level tactics?
>
> thank you,
>
> Robert
>
From werner Fri Dec 12 13:07:13 1997
26:29 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA06929 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 20 Jun 1996 17:26:29 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA26712 for
coq-club-redistribution@pauillac;
Thu, 20 Jun 1996 17:26:28 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA26703 for
<werner AT cadillac.inria.fr>;
Thu, 20 Jun 1996 17:25:14 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA06851; Thu, 20 Jun 1996
17:25:13 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA01096; Thu, 20 Jun 1996
17:25:11 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA06846; Thu, 20 Jun 1996
17:25:10 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id RAA06334 for
<coq-club AT margaux.inria.fr>;
Thu, 20 Jun 1996 17:25:09 +0200
Received: from victor.labri.u-bordeaux.fr (victor.labri.u-bordeaux.fr
[147.210.8.168]) by concorde.inria.fr (8.7.1/8.7.1) with SMTP id RAA06842 for
<coq-club AT margaux.inria.fr>;
Thu, 20 Jun 1996 17:25:07 +0200 (MET DST)
Received: from scrasmeustache.labri.u-bordeaux.fr.labri by
victor.labri.u-bordeaux.fr (4.1/SM-mailhost-BORDEAUX-1.0)
id AA11859; Thu, 20 Jun 96 17:26:24 +0200
Date: Thu, 20 Jun 96 17:26:24 +0200
From:
Pierre.Casteran AT labri.u-bordeaux.fr
(Pierre CASTERAN)
Message-Id:
<9606201526.AA11859 AT victor.labri.u-bordeaux.fr>
Received: by scrasmeustache.labri.u-bordeaux.fr.labri (4.1/SMI-4.1)
id AA24629; Thu, 20 Jun 96 17:19:26 +0200
To:
Robert.Pollak AT risc.uni-linz.ac.at
Cc:
coq-club AT margaux.inria.fr
In-Reply-To:
<199606201416.AA02893 AT melmac.risc.uni-linz.ac.at>
(Robert.Pollak AT risc.uni-linz.ac.at)
Subject: Re: beginner problem
Sender:
werner AT cadillac.inria.fr
Content-Length: 1972
Lines: 102
Status: RO
> From:
>Â Robert.Pollak AT risc.uni-linz.ac.at
> Date: Thu, 20 Jun 96 16:16:30 +0200
> Sender:
>Â werner AT cadillac.inria.fr
>
>
> Hi coq-specialists!
>
> I have just a little question:
> In my first little proof, I get to the point, where
> one of the assumptions is
>
> ~ <nat> x0 =y0
>
> and the goal is:
>
> ~ <nat> (S x0) =(S y0)
>
>
>
> How is this done in the most efficient way,
> and, how is this done without higher-level tactics?
>
> thank you,
>
> Robert
a) Modern solution: from some hypothesis H:(S x)=(S y); use
"Injection H", and get x=y.
Goal (x,y:nat)~x=y -> ~(S x)=(S y).
Red ;Intros;Apply H.
(*
x : nat
y : nat
H : ~x=y
H0 : (S x)=(S y)
============================
x=y
*)
Injection H0;Auto.
Save firstproof.
b)
Basic solution;
Define (by Case) the predecessor function, and convert
(by "Change") a subgoal "x=y" into (predecessor (S x))=(predecessor (S y)).
and then it's trivial.
Goal (x,y:nat)~x=y -> ~(S x)=(S y).
Red;Intros;Apply H.
(*
x : nat
y : nat
H : ~x=y
H0 : (S x)=(S y)
============================
x=y
*)
Definition predecessor:=[y:nat]
<nat>Case y of (* O *) O
(* S z *) [z:nat]z end.
Change (predecessor (S x))=(predecessor (S y)).
(*
x : nat
y : nat
H : ~x=y
H0 : (S x)=(S y)
============================
(predecessor (S x))=(predecessor (S y))
*)
Rewrite H0;Auto.
Save secondproof.
--
Pierre Casteran,
LaBRI, Universite Bordeaux-I | 12 place Puy Paulin
351 Cours de la Liberation | 33000 Bordeaux
F-33405 TALENCE Cedex | France
France | 56 81 15 80
tel : 56 84 69 31
fax : 56 84 66 69
email:
casteran AT labri.u-bordeaux.fr
www: http://www.labri.u-bordeaux.fr/~casteran
"Les rêves sont aussi beaux que la réalité, mais ils ne sont pas mieux".
(J.L.Borges, cité sur la pochette du disque "Black Gipsy" d' Archie Shepp )
From werner Fri Dec 12 13:07:13 1997
06:42 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA26091 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 21 Jun 1996 17:06:43 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA28429 for
coq-club-redistribution@pauillac;
Fri, 21 Jun 1996 17:06:41 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA28258 for
<werner AT cadillac.inria.fr>;
Fri, 21 Jun 1996 14:33:32 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA22768 for
<werner AT cadillac.inria.fr>;
Fri, 21 Jun 1996 14:33:33 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA18590; Fri, 21 Jun 1996
14:33:30 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA22765; Fri, 21 Jun 1996
14:33:30 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA18582 for
<coq-club AT pauillac.inria.fr>;
Fri, 21 Jun 1996 14:33:28 +0200
Received: from nimbus.unice.fr (nimbus.unice.fr [134.59.1.6]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id OAA22761 for
<coq-club AT pauillac.inria.fr>;
Fri, 21 Jun 1996 14:33:28 +0200 (MET DST)
Received: (from
blenzing@localhost)
by nimbus.unice.fr (8.6.12/8.6.12) id OAA21797 for
coq-club AT pauillac.inria.fr;
Fri, 21 Jun 1996 14:41:44 +0200
Date: Fri, 21 Jun 1996 14:41:44 +0200
From: blenzing
<blenzing AT nimbus.unice.fr>
Message-Id:
<199606211241.OAA21797 AT nimbus.unice.fr>
To:
coq-club AT pauillac.inria.fr
Sender:
werner AT cadillac.inria.fr
Content-Length: 958
Lines: 23
Status: RO
Messieurs,
Nous sommes etudiants a l'Universite de NICE. Notre projet de fin d'annee est
une reconstruction (tres sommaire) d'arithmetique de base en coq.
Nous sommes debutants, aussi cela peut paraitre naif.
Nous voudrions implementer le pgcd de deux nombres dans les entiers naturels.
L'idee que nous avons est la suivante :
a,b entiers
si il existe p divisant a et b, alors
pgcd(a,b)=p*pgcd(m,n) ou a=m*p et b=n*p.
sinon pgcd(a,b)=1.
mais nous n'arrivons pas a ecrire la definition recursive puisque ca n'est
pas une recursion classique.
Notre but est de demontrer l'identite de Bezout dans N et nous avons donc
besoin de definir le pgcd.
Nous avons deja montre qu'il y a une infinite de nombres premiers et nous
avons presque montre le lemme de Gauss (un lemme clef resiste).
Pourriez vous nous guider pour ecrire cette definition ou avez vous une autre
idee ?
Merci d'avance.
E-mail:
erollant AT nimbus.unice.fr
blenzing AT nimbus.unice.fr
From werner Fri Dec 12 13:07:13 1997
06:56 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA26105 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 21 Jun 1996 17:06:56 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA28434 for
coq-club-redistribution@pauillac;
Fri, 21 Jun 1996 17:06:55 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA28293 for
<werner AT cadillac.inria.fr>;
Fri, 21 Jun 1996 15:04:57 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA23341 for
<werner AT cadillac.inria.fr>;
Fri, 21 Jun 1996 15:04:57 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA23354; Fri, 21 Jun 1996
15:04:55 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA23338; Fri, 21 Jun 1996
15:04:55 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA23346 for
<coq-club AT pauillac.inria.fr>;
Fri, 21 Jun 1996 15:04:53 +0200
Received: from cri.ens-lyon.fr (cri.ens-lyon.fr [140.77.1.32]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA23334 for
<coq-club AT pauillac.inria.fr>;
Fri, 21 Jun 1996 15:04:53 +0200 (MET DST)
Received: from lip.ens-lyon.fr (lip-gw [140.77.1.11]) by cri.ens-lyon.fr
(8.7.5/8.7.3) with ESMTP id PAA18874; Fri, 21 Jun 1996 15:04:51 +0200 (MET
DST)
Received: from aquavit.ens-lyon.fr (aquavit [140.77.11.33]) by
lip.ens-lyon.fr (8.7.5/8.7.3) with ESMTP id PAA04494; Fri, 21 Jun 1996
15:04:38 +0200 (MET DST)
From: Christine Paulin
<Christine.Paulin AT lip.ens-lyon.fr>
Received: (from
cpaulin@localhost)
by aquavit.ens-lyon.fr (8.7.5/8.7.3) id PAA02387; Fri, 21 Jun 1996 15:04:44
+0200 (MET DST)
Date: Fri, 21 Jun 1996 15:04:44 +0200 (MET DST)
Message-Id:
<199606211304.PAA02387 AT aquavit.ens-lyon.fr>
To:
coq-club AT pauillac.inria.fr,
blenzing AT nimbus.unice.fr
X-Sun-Charset: US-ASCII
Sender:
werner AT cadillac.inria.fr
Content-Length: 2527
Lines: 69
Status: RO
Bonjour,
a,b entiers
si il existe p divisant a et b, alors
pgcd(a,b)=p*pgcd(m,n) ou a=m*p et b=n*p.
sinon pgcd(a,b)=1
Cette definition n'est pas forcement bien definie puisque si p etait egal
a un alors cela bouclerait.
Par contre elle est bien fondee par rapport a l'ordre lt sur les entiers
Pour la definir il faut utiliser l'operateur
general well_founded_induction valable pour n'importe quelle
relation bien fondee ou plus simplement l'operateur
lt_wf_rec obtenu en faisant un Require Wf_nat
Le type de cet operateur est
(p:nat)(P:nat->Set)((n:nat)((m:nat)(lt m n)->(P m))->(P n)) -> (P p).
et correspond a la possibilite de faire une recursion "course_of_value"
sur les entiers
et il s'execute de la maniere suivante
(lt_wf_rec p P F)=(F p [m:nat][H:(lt m p)](lt_wf_rec m P F))
Si je dois definir une fonction f :nat->C avec f(x)=G((f x1),..,(f xp))
ou chaque xp est tel que il exite une preuve ltxp de (lt xp x) alors
il suffit de poser
f:=[x:nat](lt_wf_rec x [_:nat]C [x:nat][frec:(p:nat)(lt p x)->C]
(G((frec x1 ltx1),...,(frec xp ltxp))))
dans votre cas il suffit de faire
[a:nat](lt_wf_rec a [q:nat]nat->nat
[n:nat][pgcdrec:(m:nat)(lt m n)->nat->nat]
[b:nat](si il existe p>1,n1,b1 tq n=p*n1 et b=p*b1
alors p* (pgcdrec n1 (une preuve que (lt n1 n))
b1)
sinon 1))
Ceci est assez peu intuitif (un outil permettant d'engendrer automatiquement
cette expression a partir de la definition recursive usuelle est en cours
de realisation)
Une maniere plus naturelle de construire ce programme est la suivante.
Il suffit de specifier de maniere relationnelle ce qu'est un pgcd
on a un predicat PGCD(a,b,p) defini de maniere a ce que PGCD(a,b,pgcd(a,b))
soit toujours verifie.
Ensuite on cherche a prouver (a,b:nat){p:nat|PGCD(a,b,p)}
Pour cela, on fait une induction bien fonde'e sur a
par les tactiques Intro a; Apply (lt_wf_rec a)
puis on continue en distinguant le cas ou a et b ont un diviseur commun ou
non.
On a ainsi construit non seulement le programme de pgcd mais aussi sa
preuve.
Le programme lui-meme de type nat->nat->nat peut s'obtenir par extraction
ou projection.
Une maniere encore plus naturelle de faire cela est d'utiliser
les outils Realizer/Program.
La documentation contient un exemple analogue concernant la division
euclidienne.
En esperant que cela vous aidera a faire votre "devoir".
Cordialement,
Christine Paulin.
From werner Fri Dec 12 13:07:13 1997
5:02 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA14399 for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 2 Jul 1996 17:04:50 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA16328 for
coq-club-redistribution@pauillac;
Tue, 2 Jul 1996 17:04:49 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA06833 for
<werner AT cadillac.inria.fr>;
Wed, 26 Jun 1996 14:54:19 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA19286 for
<werner AT cadillac.inria.fr>;
Wed, 26 Jun 1996 14:54:18 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA00652; Wed, 26 Jun 1996
14:54:17 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA19281; Wed, 26 Jun 1996
14:54:15 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA00645 for
<coq AT pauillac.inria.fr>;
Wed, 26 Jun 1996 14:54:15 +0200
Received: from tamdhu (tamdhu.dcs.st-and.ac.uk [138.251.192.40]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id OAA19271 for
<coq-club AT inria.fr>;
Wed, 26 Jun 1996 14:54:11 +0200 (MET DST)
Received: from keith.dcs.st-and.ac.uk by tamdhu (4.1/SMI-4.1)
id AA00429; Wed, 26 Jun 96 13:52:25 BST
Received: by keith.dcs.st-and.ac.uk (4.1/SMI-4.1)
id AA27979; Wed, 26 Jun 96 13:52:18 BST
Date: Wed, 26 Jun 96 13:52:18 BST
From:
aaa AT dcs.st-and.ac.uk
(A^3)
Message-Id:
<9606261252.AA27979 AT keith.dcs.st-and.ac.uk>
To:
coq-club AT inria.fr
Subject: Well-Founded Induction for Mutually Defined Sets.
Sender:
werner AT cadillac.inria.fr
Content-Length: 547
Lines: 15
Status: RO
Has anyone prooduced a well-founded induction principle on Prop for
mutually inductively defined sets, similar to the principle proved
in theories/INIT/Wf.v in the distribution? I find myself needing to
prove stronger induction principles than the standard one for
some mutually defined sets.
*E-mail*aaa AT dcs.st-and.ac.uk*******
Andrew A Adams
**snail*45 Fife Park, St Andrews*** Division of Computer Science
***mail*Fife KY16 9UE, UK********** School of Maths and Comp Sci
****Tel*+44-1334-463268/589-464141* University of St Andrews
From werner Fri Dec 12 13:07:13 1997
47:34 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA08944 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 27 Jun 1996 16:47:31 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA08542 for
coq-club-redistribution@pauillac;
Thu, 27 Jun 1996 16:47:33 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA08306 for
<werner AT cadillac.inria.fr>;
Thu, 27 Jun 1996 14:10:13 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA06082; Thu, 27 Jun 1996
14:10:12 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA26824; Thu, 27 Jun 1996
14:10:05 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA06079; Thu, 27 Jun 1996
14:10:04 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id OAA23536 for
<coq-club AT margaux.inria.fr>;
Thu, 27 Jun 1996 14:10:03 +0200
Received: from melmac.risc.uni-linz.ac.at (melmac.risc.uni-linz.ac.at
[193.170.36.100]) by concorde.inria.fr (8.7.1/8.7.1) with SMTP id OAA06075
for
<coq-club AT margaux.inria.fr>;
Thu, 27 Jun 1996 14:10:01 +0200 (MET DST)
Received: from localhost by melmac.risc.uni-linz.ac.at with SMTP id AA25812
(5.67b8/IDA-1.5 for
<coq-club AT margaux.inria.fr>);
Thu, 27 Jun 1996 14:09:53 +0200
Message-Id:
<199606271209.AA25812 AT melmac.risc.uni-linz.ac.at>
To:
coq-club AT margaux.inria.fr
Subject: beginner problem#3 (question 3 of a FAQ?)
From:
Robert.Pollak AT risc.uni-linz.ac.at
Date: Thu, 27 Jun 96 14:09:52 +0200
Sender:
werner AT cadillac.inria.fr
Content-Length: 1673
Lines: 88
Status: RO
Hallo again!
This time my question is about automatic rewriting.
In order to learn how to work with the system, I am just
at redefining nat, plus, mult, ...
Now please have a look at the theorem Thm2_6 in the file below:
Do I really have to do all these rewritings manually?
Even in Thm 2_5 (right multiplication with zero) I have to do
the rewriting manually.
Does anyone know an abbreviation for this?
Thanx,
Robert
------------cut here------------------------------
Inductive NN: Set :=
O: NN
| S: NN ->NN.
Recursive Definition plus: NN -> NN ->NN:=
O x => x
| (S x) y => (S (plus x y)).
Recursive Definition mult: NN -> NN ->NN:=
O x => O
| (S x) y => (plus (mult x y) y).
Theorem S_eq: (n, m:NN) n =m ->(S n) =(S m).
Intros n m H'; Try Assumption.
Apply f_equal with A := NN.
Auto.
Qed.
Hint S_eq.
Theorem Thm2_1: (x:NN)(plus x O) =x.
Induction x; Simpl; Auto.
Qed.
Hint Thm2_1.
Theorem Thm2_2: (x, y:NN)(plus x (S y)) =(S (plus x y)).
Induction x; Simpl; Auto.
Qed.
Hint Thm2_2.
Theorem Thm2_3: (x, y, z:NN)(plus x (plus y z)) =(plus (plus x y) z).
Induction x; Simpl; Auto.
Qed.
Hint Thm2_3.
Theorem Thm2_4: (x, y:NN)(plus x y) =(plus y x).
Induction x.
Auto.
Intros n H' y; Simpl.
Rewrite (Thm2_2 y n).
Auto.
Qed.
Hint Thm2_4.
Theorem Thm2_5: (x:NN)(mult x O) =O.
Induction x.
Auto.
Intros n H'; Simpl.
Rewrite H'.
Auto.
Qed.
Hint Thm2_5.
Theorem Thm2_6: (x, y:NN)(mult x (S y)) =(plus (mult x y) x).
Induction x.
Auto.
Intros n H' y; Simpl.
Rewrite (H' y).
Rewrite <- (Thm2_3 (mult n y) n (S y)).
Rewrite <- (Thm2_3 (mult n y) y (S n)).
Rewrite (Thm2_2 n y).
Rewrite (Thm2_2 y n).
Rewrite (Thm2_4 n y).
Auto.
Qed.
From werner Fri Dec 12 13:07:13 1997
55:07 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA09073 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 27 Jun 1996 16:54:59 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA08557 for
coq-club-redistribution@pauillac;
Thu, 27 Jun 1996 16:55:01 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA08500 for
<werner AT cadillac.inria.fr>;
Thu, 27 Jun 1996 16:08:14 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA08367; Thu, 27 Jun 1996
16:08:13 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA00486; Thu, 27 Jun 1996
16:08:10 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA08364; Thu, 27 Jun 1996
16:08:09 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id QAA15138 for
<coq-club AT margaux.inria.fr>;
Thu, 27 Jun 1996 16:08:08 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA08358; Thu, 27 Jun 1996
16:08:07 +0200 (MET DST)
Received: (from
huet@localhost)
by pauillac.inria.fr (8.6.10/8.6.6) id QAA00476; Thu, 27 Jun 1996 16:08:07
+0200
Date: Thu, 27 Jun 1996 16:08:07 +0200
From: Gerard Huet
<Gerard.Huet AT inria.fr>
Message-Id:
<199606271408.QAA00476 AT pauillac.inria.fr>
To:
Robert.Pollak AT risc.uni-linz.ac.at,
coq-club AT margaux.inria.fr
Subject: Re: beginner problem#3 (question 3 of a FAQ?)
Sender:
werner AT cadillac.inria.fr
Content-Length: 2248
Lines: 41
Status: RO
Re Do I really have to do all these rewritings manually?
There are several possible answers.
First, maybe you do not have to do all these rewritings at all, and the
sequence of lemmas is very sensitive to an economical development.
For instance, it is a good idea to prove commutativity of operators very
soon. Thus maybe Theorem Thm2_6: (x, y:NN)(mult x (S y)) =(plus (mult x y) x).
is easier to show by first commuting (mult x (S y)) into (mult (S y) x), in
order to use internal reduction as much as possible, rather than equational
rewriting.
Second, there are alternate approaches to proving these theorems "concretely"
in arithmetic. Many of these theorems are consequences of the ring axioms.
So one possible attack is to prove ring axioms, and then to use general
theorems about rings, instantiated in arithmetic. Hopefully some day we shall
have modules in Coq allowing to shift between the abstract and the concrete
points of view, and also specific decision procedures e.g. for abelian rings
alleviating the need to do some of these algebraic proofs by hand.
Thirdly, it is true that in the currently distributed system equality
reasoning
is a pain in the neck, and this is an euphemism. Amokrane Saibi is in the
process of installing a rewriting package of specialised tactics which will
ease such equational reasoning in the next version of Coq, with a sufficient
degree of generality to allow rewriting by any preordering verifying
congruence
laws and not just with Leibniz equality. This will allow equational reasoning
in quotient structures, in abstract algebras, etc.
Of course this answer is not very satisfactory for the current user, who may
not believe that "dans la prochaine version, on rasera gratis".
But it must be understood that in Coq, if we want to preserve the essential
feature of generating explicit proof trees, there is no fast shortcut with
decision procedures: every decision procedure must leave a trace explicit
enough to allow reconstruction of a proof tree.
In the same vein of "wait for the next version which will solve all your
problems", I just heard that Yves Bertot is exprerimenting with
"Rewrite by clicking" in CTCoq. This would somewhat temperate the
adverbe "manually" above.
Gerard Huet
From werner Fri Dec 12 13:07:13 1997
46:20 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id RAA01904 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 11 Jul 1996 17:46:20 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id RAA29992 for
coq-club-redistribution@pauillac;
Thu, 11 Jul 1996 17:46:19 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA17555 for
<werner AT cadillac.inria.fr>;
Wed, 3 Jul 1996 11:51:42 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA25369 for
<werner AT cadillac.inria.fr>;
Wed, 3 Jul 1996 11:51:42 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA22646; Wed, 3 Jul 1996
11:51:40 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id LAA25366; Wed, 3 Jul 1996
11:51:39 +0200 (MET DST)
Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id LAA22640 for
<coq AT pauillac.inria.fr>;
Wed, 3 Jul 1996 11:51:38 +0200
Received: from xr3.atlas.fr (xr3.atlas.fr [194.51.9.5]) by nez-perce.inria.fr
(8.7.1/8.7.1) with ESMTP id LAA14276 for
<Club-Coq AT inria.fr>;
Wed, 3 Jul 1996 11:51:36 +0200 (MET DST)
X400-Received: by /PRMD=INTERNET/ADMD=ATLAS/C=FR/; Relayed;
Wed, 3 Jul 1996 11:50:42 +0200
X400-Received: by mta xr3.atlas.fr in /PRMD=INTERNET/ADMD=ATLAS/C=FR/;
Relayed;
Wed, 3 Jul 1996 11:50:42 +0200
X400-Received: by /ADMD=ATLAS/C=FR/; Relayed; Wed, 3 Jul 1996 11:50:35 +0200
X400-Received: by /PRMD=CNET/ADMD=ATLAS/C=FR/; Relayed;
Wed, 3 Jul 1996 11:50:11 +0200
Date: Wed, 3 Jul 1996 11:50:11 +0200
X400-Originator:
monin AT lannion.cnet.fr
X400-Recipients: non-disclosure:;
X400-MTS-Identifier:
[/PRMD=CNET/ADMD=ATLAS/C=FR/;836387419 AT x400.lannion.cnet.fr]
X400-Content-Type: P2-1984 (2)
Content-Identifier: Coq aided abuse
Alternate-Recipient: Allowed
From: "Jean-fr MONIN - FT.CNET/LAA/EIA/EVP"
<monin AT lannion.cnet.fr>
Message-ID:
<9607030950.AA26543@lsun169>
To:
Club-Coq AT inria.fr
Subject: Coq aided abuse of Coq
Sender:
werner AT cadillac.inria.fr
Content-Length: 2321
Lines: 73
Status: RO
**
Abstract : using fallacious dependent types is a useful trick
when defining functions in Theorem mode.
> Date: 25 Sep 93 22:03:05+0200
> From: Gilles Kahn
>Â <Gilles.Kahn AT sophia.inria.fr>
> To:
>Â coq-club AT margaux.inria.fr
> Subject: Coq as a structure-editor
In this old message Gilles started a discussion about puzzling
theorems which are actually definitions : tactics are just a way to
guide the construction of a function. This has been advocated as
useful in some situations, such as Case constructs over a complicated
type, and especially useful when the type of the result is complicated.
Now here is an example, taken from the manual about recursive
definitions. We aim at defining the Ackermann function :
Ack O m = (S m)
Ack (S n) O = Ack n (S O)
Ack (S n) (S m) = Ack n (Ack (S n) m)
[let us forget "Recursive Definition", which is the simplest way to proceed].
Definition Ack : nat->nat->nat.
Intro n; Elim n.
Intro m; Exact (S m). (* n=0 *)
Intros p f; Elim m. (* n=S p; f:nat->nat *)
Exact (f (S O)). (* m=0 *)
Intros q a. (* m=S q; a:nat *)
Exact (f a).
Defined.
The exact meaning of f and a in this development is puzzling,
at least for me. A guess is that a=Ack(u,v) with u depending of n
and v depending on m, and that f=Ack(w) with w depending on n.
In the actual definition of the manual f is named Ack_n
and a is named Ack_Sn_m... but this is misleading :
if you look carefully you will see that f=Ack(p) and a=Ack(Sp,q) !
----------
An easy way to let Coq compute for you the meaning of these
variables is to replace nat by an equal type (modulo beta-conversion)
which (fallaciously) depends on n and m :
Definition TAck := [n,m:nat]nat.
Then at each stage you see clearly what are the nat in your
goal and in your hypotheses, for instance :
Definition Ack : (n,m:nat)(TAck n m).
Intro n; Elim n.
Intro m; Exact (S m).
Intros p Ack_p m; Elim m.
Exact (Ack_p (S O)).
Intros q Ack_Sp_q.
(*
n : nat
p : nat
Ack_p : (m:nat)(TAck p m) (* instead of nat->nat *)
m : nat
q : nat
Ack_Sp_q : (TAck (S p) q) (* instead of nat *)
============================
(TAck (S p) (S q)) (* instead of nat *)
*)
Exact (Ack_p Ack_Sp_q).
Defined.
Jean-Francois Monin
From werner Fri Dec 12 13:07:13 1997
6:56 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id MAA13991 for
<coq-club-redistribution AT pauillac.inria.fr>;
Sun, 1 Sep 1996 12:06:55 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id MAA27614 for
coq-club-redistribution@pauillac;
Sun, 1 Sep 1996 12:06:54 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id TAA06508 for
<werner AT cadillac.inria.fr>;
Sat, 24 Aug 1996 19:49:33 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id TAA28203 for
<werner AT cadillac.inria.fr>;
Sat, 24 Aug 1996 19:49:31 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id TAA16694; Sat, 24 Aug 1996
19:49:31 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id TAA28200; Sat, 24 Aug 1996
19:49:29 +0200 (MET DST)
Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id TAA16686 for
<coq AT pauillac.inria.fr>;
Sat, 24 Aug 1996 19:49:26 +0200
Received: from tamdhu.dcs.st-andrews.ac.uk (tamdhu.dcs.st-and.ac.uk
[138.251.192.40]) by nez-perce.inria.fr (8.7.1/8.7.1) with SMTP id TAA07876
for
<coq-club AT inria.fr>;
Sat, 24 Aug 1996 19:49:24 +0200 (MET DST)
Received: from keith.dcs.st-and.ac.uk by tamdhu.dcs.st-andrews.ac.uk
(4.1/SMI-4.1)
id AA04337; Sat, 24 Aug 96 18:49:19 BST
Received: by keith.dcs.st-and.ac.uk (4.1/SMI-4.1)
id AA23005; Sat, 24 Aug 96 18:49:27 BST
Date: Sat, 24 Aug 96 18:49:27 BST
From:
aaa AT dcs.st-and.ac.uk
(A^3)
Message-Id:
<9608241749.AA23005 AT keith.dcs.st-and.ac.uk>
To:
coq-club AT inria.fr
Subject: Use of the context to represent variables.
Sender:
werner AT cadillac.inria.fr
Content-Length: 955
Lines: 24
Status: RO
This isn't a direct question about coq, but I'm hoping someone on the
mailing list can help me. My supervisor is sure that the following is not
a new idea, but he cannot remember a publication including it, and I
cannot find one.
When formalising a sequent-style calculus, one has to choose how
one represents variables referencing formulae in the context.
One possibility is to use the context to date to reference the
next added formula, so that one uses 'nil' to represent F1,
F1::nil to represent F2 etc in the following context:
.....F2::F1::nil.
Does anyone know of a publication including this idea. (My supervisor
thinks Per Martin-L"of may have mentioned the idea in a talk a while
back.)
*E-mail*aaa AT dcs.st-and.ac.uk*******
Andrew A Adams
**snail*45 Fife Park, St Andrews*** Division of Computer Science
***mail*Fife KY16 9UE, UK********** School of Maths and Comp Sci
****Tel*+44-1334-463268/589-464141* University of St Andrews
From werner Fri Dec 12 13:07:13 1997
01:18 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA03302 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 30 Aug 1996 16:01:16 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA22433 for
coq-club-redistribution@pauillac;
Fri, 30 Aug 1996 16:01:16 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA19502 for
<werner AT cadillac.inria.fr>;
Thu, 29 Aug 1996 15:03:40 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA19337 for
<werner AT cadillac.inria.fr>;
Thu, 29 Aug 1996 15:03:40 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA19269; Thu, 29 Aug 1996
15:03:38 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA19324; Thu, 29 Aug 1996
15:03:36 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA19262 for
<coq AT pauillac.inria.fr>;
Thu, 29 Aug 1996 15:03:33 +0200
Received: from coaster.cs.vu.nl
(root AT coaster.cs.vu.nl
[192.31.231.224]) by concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA19318
for
<coq AT pauillac.inria.fr>;
Thu, 29 Aug 1996 15:03:31 +0200 (MET DST)
Received: by coaster.cs.vu.nl (Smail3.1.28.1 #27)
id m0uw6kf-00003tC; Thu, 29 Aug 96 15:03 +0200
Message-Id:
<m0uw6kf-00003tC AT coaster.cs.vu.nl>
Date: Thu, 29 Aug 96 15:03:17 MET DST
From: "M. Bognar"
<mirna AT cs.vu.nl>
To:
coq AT pauillac.inria.fr
Subject: names different, syntax the same -> the same?
Sender:
werner AT cadillac.inria.fr
Content-Length: 1884
Lines: 80
Status: RO
Hello!
I've run in to a problem for which i wonder if it
was meant to be a 'problem'.
---- What i wanted to do, was the following:
define a list type "listL" with concatenation ";;" and
then define a commutative list type "ComListL" as
type "ListL" with union "++" and
commutativity of "++" as an axiom.
(See the Coq code: note that
"ComListL" is "ListL", and that the definitions of
";;" and "++" are equal.)
----What happened was:
I could prove that ";;" on lists is commutative!
(***** in Coq - begin *****)
Parameter L : Set.
(* list over elements of L *)
Inductive ListL : Set := empty : ListL | con : L->ListL->ListL.
(* concatenation of two lists *)
Fixpoint concat [w:ListL]: ListL->ListL :=
[u:ListL]<ListL>Case w of
u
[i:L][w':ListL](con i (concat w' u))
end.
(* syntactic sugar *)
Token ";;".
Infix 9 ";;" concat.
(* commutative lists are lists.... *)
Syntactic Definition ComListL := ListL.
(* ... with concatenation of two lists ..... *)
Fixpoint com_concat [M:ComListL]: ComListL->ComListL :=
[N:ComListL]<ComListL>Case M of
N
[i:L][M':ComListL](con i (com_concat M' N))
end.
Token "++".
Infix 9 "++" com_concat.
(* ... that is commutative *)
Axiom plus_com : (M,N:ComListL)(M++N)=(N++M).
Lemma huh: (k,l:ListL)(k;;l)=(l;;k).
Intros.
(*
============================
(k ;; l)=(l ;; k)
*)
Rewrite plus_com.
(*
============================
(l ++ k)=(l ;; k)
*)
Trivial.
(* Subtree proved! *)
(***** in Coq - end *****)
I guess Coq uses only the defining lambda-terms for ";;" and "++"
and because they are equal, it concludes that ";;" and "++" are
equal.
Is there a reason for making this choice? If not, could it be
changed?
Thanking in advance,
Mirna Bognar
From werner Fri Dec 12 13:07:13 1997
05:05 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA03347 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 30 Aug 1996 16:05:04 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA22451 for
coq-club-redistribution@pauillac;
Fri, 30 Aug 1996 16:05:04 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA19588 for
<werner AT cadillac.inria.fr>;
Thu, 29 Aug 1996 15:38:18 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA20029 for
<werner AT cadillac.inria.fr>;
Thu, 29 Aug 1996 15:38:18 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA19466; Thu, 29 Aug 1996
15:38:16 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA20024; Thu, 29 Aug 1996
15:38:16 +0200 (MET DST)
Received: (from
cornes@localhost)
by pauillac.inria.fr (8.6.10/8.6.6) id PAA19456; Thu, 29 Aug 1996 15:38:13
+0200
From: Cristina Cornes
<Cristina.Cornes AT inria.fr>
Message-Id:
<199608291338.PAA19456 AT pauillac.inria.fr>
Subject: Re: names different, syntax the same -> the same?
To:
mirna AT cs.vu.nl
(M. Bognar)
Date: Thu, 29 Aug 1996 15:38:12 +0200 (MET DST)
Cc:
coqdev AT pauillac.inria.fr
In-Reply-To:
<m0uw6kf-00003tC AT coaster.cs.vu.nl>
from "M. Bognar" at Aug 29, 96 03:03:17 pm
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 556
Lines: 17
Status: RO
Hello Mirna,
in Coq Syntactic Definition allows to associate several concrete syntax to
a certain object. Is a way to define "alias". In your example once the
parsing has finished ListL and ComListL denote the same internal object.
That's why ";;" and "++" are the same (modulo names).
> Is there a reason for making this choice? If not, could it be
> changed?
I think that Syntactic Definition was initially thought in this way,
as a mechanism for defining sugar syntax. But may be somebody else knows
a better justification.
Best regards
cristina
From werner Fri Dec 12 13:07:13 1997
27:41 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA03951 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 30 Aug 1996 16:27:39 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA22563 for
coq-club-redistribution@pauillac;
Fri, 30 Aug 1996 16:27:40 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id TAA20078 for
<werner AT cadillac.inria.fr>;
Thu, 29 Aug 1996 19:04:41 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id TAA23045 for
<werner AT cadillac.inria.fr>;
Thu, 29 Aug 1996 19:04:41 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id TAA21969; Thu, 29 Aug 1996
19:04:39 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id TAA23042; Thu, 29 Aug 1996
19:04:39 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id TAA21963 for
<coqdev AT pauillac.inria.fr>;
Thu, 29 Aug 1996 19:04:37 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id TAA23038; Thu, 29 Aug 1996
19:04:34 +0200 (MET DST)
Received: (from
herbelin@localhost)
by margaux.inria.fr (8.6.10/8.6.6) id TAA14192; Thu, 29 Aug 1996 19:04:33
+0200
Date: Thu, 29 Aug 1996 19:04:33 +0200
From: Hugo Herbelin
<herbelin AT margaux.inria.fr>
Message-Id:
<199608291704.TAA14192 AT margaux.inria.fr>
To:
mirna AT cs.vu.nl
Subject: Re: Suggestions for exercise?
Cc:
coqdev AT pauillac.inria.fr
Sender:
werner AT cadillac.inria.fr
Content-Length: 1154
Lines: 25
Status: RO
Dear Mirna,
as mentioned by Cristina, ComListL is just another name for
ListL (i.e. an "alias"), therefore, concat and com_concat denote the
same lambda-term. Yes, this implies for Coq the (internal) equality of
concat and com_concat. Rewrite detects this equality and works.
More generally, two objects in Coq are equal if they are identical
up to replacement of constants by their definition (delta-conversion),
to substitution of the parameters of the functions by their value
(beta-conversion), and to simplification of functions defined by case
and recursivity (iota-conversion). Even if you would have type
"Definition ComListL := ListL" (not an alias, but a new construction
defined to be ListL), concat and com_concat would have been equal (but
not identical because the replacement of ComListL by its definition is
necessary to detect the equality), and you would have got the same
result.
There is no solution to make concat and com_concat different except
to define directly ComListL as a new inductive type with new constructors,
say, com_empty and com_con.
Best regards,
Hugo
From werner Fri Dec 12 13:07:13 1997
06:23 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA03414 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 30 Aug 1996 16:06:21 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA22471 for
coq-club-redistribution@pauillac;
Fri, 30 Aug 1996 16:06:21 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA22174 for
<werner AT cadillac.inria.fr>;
Fri, 30 Aug 1996 14:05:18 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA01224 for
<werner AT cadillac.inria.fr>;
Fri, 30 Aug 1996 14:05:18 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA25503; Fri, 30 Aug 1996
14:05:16 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id OAA01221; Fri, 30 Aug 1996
14:05:16 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA25497 for
<coq-club AT pauillac.inria.fr>;
Fri, 30 Aug 1996 14:05:14 +0200
Received: from relay2.eunet.fr (relay2.EUnet.fr [192.134.192.149]) by
concorde.inria.fr (8.7.1/8.7.1) with SMTP id OAA01217 for
<coq-club AT pauillac.inria.fr>;
Fri, 30 Aug 1996 14:05:14 +0200 (MET DST)
Received: from dassav (dassav.dassault-avion.fr) by relay2.eunet.fr
(5.65c8d/96.05.03)
via EUnet-France id AA17492; Fri, 30 Aug 1996 14:05:11 +0200 (MET)
Received: from fnet-ia1.dassault-avion.fr by dassav (5.x/SMI-SVR4)
id AA00532; Fri, 30 Aug 1996 14:01:15 +0200
Received: by fnet-ia1.dassault-avion.fr (5.x/SMI-SVR4)
id AA22574; Fri, 30 Aug 1996 14:08:10 +0200
Date: Fri, 30 Aug 1996 14:08:10 +0200
From:
ledinot AT dassault-avion.fr
(Utilisateur FNET)
Message-Id:
<9608301208.AA22574 AT fnet-ia1.dassault-avion.fr>
Content-Type: text
Apparently-To:
coq-club AT pauillac.inria.fr
Sender:
werner AT cadillac.inria.fr
Content-Length: 2411
Lines: 85
Status: RO
(*---------------------------------------------------------------
Problem with the error message:
"We found an existential that we could not instanciate"
using Coq V5.10.15 (Thu Feb 15 1996)
-----------------------------------------------------------------*)
Require Export TheoryList.
Parameters A,B:Set.
Definition Pile:=(list A).
Parameter P:Pile->Prop.
Parameter f:Pile->(Exc B).
(*----- Start of the behavior -----*)
(* refused *)
Axiom Spec1:(p:Pile)
(r:(Exc B))
(eq ? r (f p))->(P p)->(Ex [v:B](eq ? r (value ? v))/\p=(nil
?)).
(* accepted (suppression of the premisse (P p)*)
Axiom Spec2:(p:Pile)
(r:(Exc B))
(eq ? r (f p))->(Ex [v:B](eq ? r (value ? v))/\p=(nil ?)).
(* accepted (suppression of 2nd member of the conjunction) *)
Axiom Spec3:(p:Pile)
(r:(Exc B))
(eq ? r (f p))->(P p)->(Ex [v:B](eq ? r (value ? v))).
(* accepted (implicit argument ? of nil replaced by A) *)
Axiom Spec4:(p:Pile)
(r:(Exc B))
(eq ? r (f p))->(P p)->(Ex [v:B](eq ? r (value ? v))/\p=(nil
A)).
(* accepted ! (implicit argument restored but other premisses suppressed *)
Axiom Spec5:(p:(list A))(P p)->(Ex [v:B]p=(nil ?)).
(* refused again !!! *)
Axiom Spec6:(p:(list A))(r:(Exc B))
(eq ? r (f p))->(P p)->(Ex [v:B]p=(nil ?)).
(*-------- End of the behavior --------*)
Question: Is this behavior normal ?
--------
Focus: the use of implicit arguments in the predicate of an existential seems
------ strangely sensitive to the presence of dependent products before the
existential. But remark that the ? of (eq ? r (value ? v)) seems of
no importance in this example.
Remark: I also noticed that the resolution of implicit arguments is much less
------ efficient as soon as constants (such as Pile here) are defined. I
found terms with several ? accepted when abstractions were written
[x:(list A)] that were then refused when I replaced (list A) by a
constant such as Pile. I kept the constants and removed the ?s but
I did't understand why I had to do this.
-----------------------------
Emmanuel Ledinot
DASSAULT-AVIATION
DGT/DTN/EL
78 Quai Marcel Dassault
92215 Saint Cloud Cedex
France
email:
ledinot AT dassault-avion.fr
Tel: (1) 47.11.53.05
------------------------------
From werner Fri Dec 12 13:07:13 1997
05:24 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id QAA03354 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 30 Aug 1996 16:05:23 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA22457 for
coq-club-redistribution@pauillac;
Fri, 30 Aug 1996 16:05:23 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA22342 for
<werner AT cadillac.inria.fr>;
Fri, 30 Aug 1996 15:27:53 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA02757 for
<werner AT cadillac.inria.fr>;
Fri, 30 Aug 1996 15:27:52 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA26118; Fri, 30 Aug 1996
15:27:52 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.1/8.7.1) with ESMTP id PAA02754; Fri, 30 Aug 1996
15:27:45 +0200 (MET DST)
Received: (from
huet@localhost)
by pauillac.inria.fr (8.6.10/8.6.6) id PAA26105; Fri, 30 Aug 1996 15:27:43
+0200
Date: Fri, 30 Aug 1996 15:27:43 +0200
From: Gerard Huet
<Gerard.Huet AT inria.fr>
Message-Id:
<199608301327.PAA26105 AT pauillac.inria.fr>
To:
Cristina.Cornes AT inria.fr,
mirna AT cs.vu.nl
Subject: Re: names different, syntax the same -> the same?
Cc:
coqdev AT pauillac.inria.fr
Sender:
werner AT cadillac.inria.fr
Content-Length: 1721
Lines: 70
Status: RO
This phenomenon has nothing to do with concrete syntax.
The problem is that you try to force commutativity on non-commutative lists.
Lists are lists. They are not just any first-order structure which is
declared first associative, then also commutative. Actually, the moment
you write Axiom plus_com : (M,N:ComListL)(M++N)=(N++M).
you are already in deep trouble: how do you know this is consistent?
Your only hope is when the Set L contains at most one inhabitant, since
concatenation is abelian in one-character alphabets. Actually, you may
prove:
Coq < Lemma incons : (x,y:L)x=y.
1 subgoal
============================
(x,y:L)x=y
incons < Intros.
1 subgoal
x : L
y : L
============================
x=y
incons < Cut (con x (con y empty)) = (con y (con x empty)).
2 subgoals
x : L
y : L
============================
(con x (con y empty))=(con y (con x empty))->x=y
subgoal 2 is:
(con x (con y empty))=(con y (con x empty))
incons < Intro.
2 subgoals
x : L
y : L
H : (con x (con y empty))=(con y (con x empty))
============================
x=y
subgoal 2 is:
(con x (con y empty))=(con y (con x empty))
incons < Injection H 1.
1 subgoal
x : L
y : L
============================
(con x (con y empty))=(con y (con x empty))
incons < Change ((con x empty)++(con y empty))=((con y empty)++(con x empty)).
1 subgoal
x : L
y : L
============================
((con x empty) ++ (con y empty))=((con y empty) ++ (con x empty))
incons < Apply plus_com.
Subtree proved!
This it is not a good idea of forcing a quotient on an existing data type.
Commutative lists may be axiomatized as multisets, in the spirit of
V5.10.15/theories/SORTING/Multiset_of_A.v
G. Huet
From werner Fri Dec 12 13:07:13 1997
00:54 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id QAA14849 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 11 Oct 1996 16:00:49 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id QAA05741 for
coq-club-redistribution@pauillac;
Fri, 11 Oct 1996 16:00:49 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA26469 for
<werner AT cadillac.inria.fr>;
Mon, 23 Sep 1996 17:42:55 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id RAA25114 for
<werner AT cadillac.inria.fr>;
Mon, 23 Sep 1996 17:42:54 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA08467; Mon, 23 Sep 1996
17:42:52 +0200
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id RAA25111; Mon, 23 Sep 1996
17:42:52 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id RAA08459 for
<coq-club AT pauillac.inria.fr>;
Mon, 23 Sep 1996 17:42:49 +0200
From:
owner-tphols-announce AT leopard.cs.byu.edu
Received: from leopard.cs.byu.edu (leopard.cs.byu.edu [128.187.2.182]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id RAA25060 for
<coq-club AT pauillac.inria.fr>;
Mon, 23 Sep 1996 17:41:19 +0200 (MET DST)
Received: by leopard.cs.byu.edu
(1.37.109.15/16.2) id AA179553239; Mon, 23 Sep 1996 11:40:39 -0400
Message-Id:
<199609061539.AA124424383 AT margay.cs.byu.edu>
To:
tphols-announce AT leopard.cs.byu.edu
Subject: TPHOLs Mailing List
Mime-Version: 1.0 (generated by tm-edit 7.46)
Content-Type: text/plain; charset=US-ASCII
Date: Fri, 06 Sep 1996 09:39:43 -0600
>From: "Phil Windley"
><windley AT cs.byu.edu>
Sender:
werner AT cadillac.inria.fr
Precedence: list
Reply-To: "Phillip J. Windley"
<windley AT leopard.cs.byu.edu>
Content-Length: 1589
Lines: 43
Status: RO
At the most recent TPHOLs conference in Finland, we decided to create a
list of lists for the purpose of transacting TPHOLs business. If you're
receiving this message its because you're on one of those lists:
coq-club AT pauillac.inria.fr
info-hol AT lal.cs.byu.edu
isabelle-users AT cl.cam.ac.uk
nuprlnotes AT cs.cornell.edu
imps AT linus.mitre.org
pvs AT csl.sri.com
lambda-usergroup AT dcs.ed.ac.uk
tphols-announce AT lal.cs.byu.edu
is a closed, moderated mailing list. That
means you can't join it (period) and you can't post to it without me
(i.e. the moderator) saying its OK. The intention is that the only members
of the tphols mailing list will be other mailing lists. The only
announcements that come to it will be announcements related the the TPHOLs
Conference.
Consequently, we expect traffic from this list to be light (on the order of
a dozen messages a year all related to the TPHOLs Conference).
You can post a TPHOLs related message be sending to
tphols-announce AT lal.cs.byu.edu.
If there are other mailing lists with subscribers who are predominantly
interested in theorem proving in a higher-order logic, please send the name
of the list to me and we'll add it to the distribution.
Thanks.
--phil--
__________________________________________________________________________
Phillip J. Windley, Assoc. Professor |
windley AT cs.byu.edu
Laboratory for Applied Logic | VOX: 801.378.3722
Brigham Young University | FAX: 801.378.7775
http://lal.cs.byu.edu/people/windley/windley.html |
From werner Fri Dec 12 13:07:13 1997
1:40 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id OAA06101 for
<coq-club-redistribution AT pauillac.inria.fr>;
Wed, 9 Oct 1996 14:41:39 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id OAA01799 for
coq-club-redistribution@pauillac;
Wed, 9 Oct 1996 14:41:37 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id TAA27892 for
<werner AT cadillac.inria.fr>;
Mon, 7 Oct 1996 19:57:47 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id UAA08472; Mon, 7 Oct 1996
20:57:45 +0200 (MET DST)
Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id UAA02768; Mon, 7 Oct 1996
20:57:45 +0200
Received: from animal.cs.chalmers.se (animal.cs.chalmers.se [129.16.225.30])
by nez-perce.inria.fr (8.7.6/8.7.1) with ESMTP id UAA03384; Mon, 7 Oct 1996
20:57:40 +0200 (MET DST)
Received: (from
daemon@localhost)
by animal.cs.chalmers.se (8.7.5/8.7.3) id UAA21993 for bra-types-mail; Mon,
7 Oct 1996 20:57:08 +0200 (MET DST)
Received: from alonzo.tip.cs.cmu.edu (ALONZO.TIP.CS.CMU.EDU [128.2.209.194])
by animal.cs.chalmers.se (8.7.5/8.7.3) with SMTP id UAA21989 for
<bra-types AT cs.chalmers.se>;
Mon, 7 Oct 1996 20:57:06 +0200 (MET DST)
Received: from [127.0.0.1] by alonzo.tip.cs.cmu.edu id aa16991;
7 Oct 96 14:56 EDT
To:
theorem-provers AT ai.mit.edu,
bra-types AT cs.chalmers.se,
qed AT mcs.anl.gov,
rewriting-list AT lorraine.loria.fr
Reply-to: Frank Pfenning
<fp+ AT cs.cmu.edu>
Subject: CFP: JAR Special Issue on Formal Proof
Date: Mon, 07 Oct 1996 14:56:45 -0400
Message-ID:
<16989.844714605 AT alonzo.tip.cs.cmu.edu>
From: Frank Pfenning
<Frank_Pfenning AT alonzo.tip.cs.cmu.edu>
Sender:
werner AT cadillac.inria.fr
Content-Length: 3601
Lines: 78
Status: RO
Dear Colleagues,
enclosed is the call for papers of a special issue of the Journal of
Automated Reasoning on Formal Proof. We are also considering adding a
special track to the JAR devoted entirely to the (mostly electronic)
publication of formal proofs. I would welcome any comments or
suggestions you might have regarding this enterprise.
Best Regards,
Frank Pfenning
P.S.: If you are considering submitting to the special issue, I would
appreciate a message in advance to help in planning. No obligation
implied.
----------------------------------------------------------------------
Frank Pfenning Phone: +1 412 268-6343
Department of Computer Science Fax: +1 412 268-5576
Carnegie Mellon University Email:
fp AT cs.cmu.edu
Pittsburgh, PA 15213-3891, U.S.A. URL: http://www.cs.cmu.edu/~fp/
----------------------------------------------------------------------
Call for Papers
Journal of Automated Reasoning
Special Issue on Formal Proof
Theorem proving environments have been used to formalize significant
mathematical developments, such as Goedel's incompleteness theorem or
the Church-Rosser theorem. Such implementations provide more than
formal verification by giving us new insights into theories and proof
techniques in various areas of mathematics and computer science. Often,
formalization experiments of this nature remain unpublished, since
traditional publication in a journal or book is inadequate to convey and
archive the material. Consequently, new developments often have to
start from scratch rather than taking advantage of previous
formalizations.
This special issue of the Journal of Automated Reasoning is devoted to
papers describing the implementation of a significant proof or theory
within a theorem prover. A submission should consist of two parts: (1)
a paper outlining the theory, proofs, formalization techniques, etc. in
informal mathematical language (limited to 30 pages), and (2) the code
of the implementation. In addition to the hardcopy publication in the
Journal of Automated Reasoning, papers and implementations will be made
available electronically for browsing and retrieval.
Submissions should satisfy the usual standards of scholarship and
originality, although novelty of the proof or theory itself is
explicitly not required. Importance and difficulty of the encoded
theory will play an important role in the evaluation. Journal-quality
submissions which do not fit into the special issue may be considered
for a future track of the Journal of Automated Reasoning devoted
entirely to the publication of formal proofs.
Submissions should be in plain LaTeX or LaTeX2e accompanied by a
PostScript file and the source of the implementation in plain text
format. Precise cross references should be included in both. The
version of the theorem proving environment used should be clearly
identified and publicly available. Please contact the editor of the
special issue if your submissions is likely to deviate from these
guidelines. See also http://www.cs.cmu.edu/~fp/jar.html for further
information and a LaTeX style file for the Journal of Automated
Reasoning from Kluwer Academic Publishers.
The submission deadline is January 15, 1997. Please direct inquiries to
the guest editor of this special issue.
Frank Pfenning
Department of Computer Science
Carnegie Mellon University
Pittsburgh, PA 15213-3891
Phone: +1 412 269-6343
FAX: +1 412 268-5576
Email:
fp AT cs.cmu.edu
URL: http://www.cs.cmu.edu/~fp/
From werner Fri Dec 12 13:07:13 1997
57:00 +0200
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id NAA11663 for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 11 Oct 1996 13:56:59 +0200 (MET DST)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id NAA05539 for
coq-club-redistribution@pauillac;
Fri, 11 Oct 1996 13:56:59 +0200
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id MAA05525 for
<werner AT cadillac.inria.fr>;
Fri, 11 Oct 1996 12:53:34 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id NAA11599; Fri, 11 Oct 1996
13:53:31 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id NAA21128; Fri, 11 Oct 1996
13:53:30 +0200
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id NAA11596; Fri, 11 Oct 1996
13:53:28 +0200 (MET DST)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.6.10/8.6.6) with ESMTP id MAA19741 for
<coq-club AT margaux.inria.fr>;
Fri, 11 Oct 1996 12:53:28 +0100
Received: from psyche.inria.fr (psyche.inria.fr [138.96.48.36]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id NAA11592 for
<coq-club AT margaux.inria.fr>;
Fri, 11 Oct 1996 13:53:26 +0200 (MET DST)
Received: by psyche.inria.fr (8.7.6/8.6.12) id NAA06031; Fri, 11 Oct 1996
13:53:26 +0200 (MET DST)
Message-Id:
<199610111153.NAA06031 AT psyche.inria.fr>
X-Mailer: exmh version 1.6.7 5/3/96
X-url: http://www.inria.fr/safir/WHOSWHO/Loic/home.html
X-face:
JRTYIW_+,2nYo%&zMFjCx~ttkU|@1,72:8_?>?B6OHkG,FE@C{vKA.2X``QoCs.&kCN]M7G
UEEr5((_x9Vjw]I$FmsOH%s6*\IUu~$@`tH<KN`I:1Wlv|$e<#@B8Fy"Oanvp>$vb-o$NF%||i^R<?
Lo68:QYY~N6D[{Y:RtGm*+F1:O6F+N-]B
Reply-to:
Loic.Pottier AT sophia.inria.fr
Organization: INRIA, Sophia Antipolis, France
Telephone: (33) 93 65 78 19
Fax: (33) 93 65 78 58
To:
coq-club AT margaux.inria.fr
Subject: Proving fix-point equation
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date: Fri, 11 Oct 1996 13:53:24 +0200
From: Loic Pottier
<Loic.Pottier AT sophia.inria.fr>
Sender:
werner AT cadillac.inria.fr
Content-Length: 1642
Lines: 74
Status: RO
(English translation follows)
Bonjour,
Acc_rec est defini par point fixe (dans INIT/Wf.v):
Section AccRec.
Variable P : A -> Set.
Variable F : (x:A)((y:A)(R y x)->(Acc y))->((y:A)(R y x)->(P y))->(P x).
Fixpoint Acc_rec [x:A;a:(Acc x)] : (P x)
:= (F x (Acc_inv x a) ([y:A][h:(R y x)](Acc_rec y (Acc_inv x a y h)))).
End AccRec.
Je n'arrive pas a prouver l'equation de point fixe:
1 subgoal
A : Set
R : A->A->Prop
P : A->Set
x : A
a : (Acc A R x)
F : (x:A)((y:A)(R y x)->(Acc A R y))->((y:A)(R y x)->(P y))->(P x)
============================
(Acc_rec A R P F x a)
=(F x (Acc_inv A R x a)
[y:A][h:(R y x)](Acc_rec A R P F y (Acc_inv A R x a y h)))
l1 < Elim a.
Error: Cannot solve a second-order unification problem
during command Elim a.
Comment faire, ou est-ce sans espoir, et pourquoi?
Loic
----------------
Hello,
Acc_rec is defined by fixed-point (in INIT/Wf.v):
Section AccRec.
Variable P : A -> Set.
Variable F : (x:A)((y:A)(R y x)->(Acc y))->((y:A)(R y x)->(P y))->(P x).
Fixpoint Acc_rec [x:A;a:(Acc x)] : (P x)
:= (F x (Acc_inv x a) ([y:A][h:(R y x)](Acc_rec y (Acc_inv x a y h)))).
End AccRec.
I cannot prove its fixed-point equation:
1 subgoal
A : Set
R : A->A->Prop
P : A->Set
x : A
a : (Acc A R x)
F : (x:A)((y:A)(R y x)->(Acc A R y))->((y:A)(R y x)->(P y))->(P x)
============================
(Acc_rec A R P F x a)
=(F x (Acc_inv A R x a)
[y:A][h:(R y x)](Acc_rec A R P F y (Acc_inv A R x a y h)))
l1 < Elim a.
Error: Cannot solve a second-order unification problem
during command Elim a.
How to do it, or is-it impossible. and then why?
Loic
From werner Fri Dec 12 13:07:13 1997
5:53 +0100 (MET)
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id OAA06397 for
<coq-club-redistribution AT pauillac.inria.fr>;
Wed, 20 Nov 1996 14:55:49 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id OAA26339 for
coq-club-redistribution@pauillac;
Wed, 20 Nov 1996 14:55:48 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id SAA13920 for
<werner AT cadillac.inria.fr>;
Fri, 15 Nov 1996 18:34:50 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id SAA25351; Fri, 15 Nov 1996
18:34:48 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA05193; Fri, 15 Nov 1996
18:34:46 +0100 (MET)
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id SAA25348; Fri, 15 Nov 1996
18:34:43 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.7.6/8.7.3) with ESMTP id SAA26896 for
<coq-club AT margaux.inria.fr>;
Fri, 15 Nov 1996 18:34:43 +0100 (MET)
Received: from melmac.risc.uni-linz.ac.at (melmac.risc.uni-linz.ac.at
[193.170.36.100]) by concorde.inria.fr (8.7.6/8.7.1) with SMTP id SAA25344
for
<coq-club AT margaux.inria.fr>;
Fri, 15 Nov 1996 18:34:37 +0100 (MET)
Received: from localhost by melmac.risc.uni-linz.ac.at with SMTP id AA20405
(5.67b8/IDA-1.5 for
<coq-club AT margaux.inria.fr>);
Fri, 15 Nov 1996 18:34:30 +0100
Message-Id:
<199611151734.AA20405 AT melmac.risc.uni-linz.ac.at>
To:
coq-club AT margaux.inria.fr
Subject: beginner problem #4: polynomials
Date: Fri, 15 Nov 96 18:34:28 +0100
From:
Robert.Pollak AT risc.uni-linz.ac.at
Sender:
werner AT cadillac.inria.fr
Content-Length: 1397
Lines: 38
Status: RO
Hello,
as I wanted to get a brief overview on how I could use coq,
I have tried to define general polynomials and to prove
basic theorems, like the commutativity.
In a first attempt, I have stated the properties
of the monomials and the monomial predicates as axioms
(They should be hypotheses, but then CtCoq becomes too slow,
since all the Hypotheses are displayed in the State window.)
If you look at my proof of commutativity (URLs below),
it is very long, messy and complicated.
(Induction over the sum of the summands lengths.)
My original plan was to try associativity next,
but I fear that this proof would become so large that I would
completely lose the overview ;)
I think that one of my main problems is that the plus on polynomials
cannot be defined in a 'Recursive Definition' because of the
case distinctions.
Do you know a way to work with polynomials more elegantly?
(I am really looking forward to proving more complicated
theorems e.g. about Groebner bases?)
This contains my first experiments with polynomials:
http://www.risc.uni-linz.ac.at:70/0/systems/software/coq/benchmark_Poly_Lists_NN.v
I am using self defined lists, that are in here:
http://www.risc.uni-linz.ac.at:70/0/systems/software/coq/benchmark_Lists_NN.v
and my own natural numbers, defined here:
http://www.risc.uni-linz.ac.at:70/0/systems/software/coq/benchmark_NN.v
Thank you for any help!
Robert
From werner Fri Dec 12 13:07:13 1997
8:54 +0100 (MET)
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id OAA06550 for
<coq-club-redistribution AT pauillac.inria.fr>;
Wed, 20 Nov 1996 14:58:54 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id OAA26373 for
coq-club-redistribution@pauillac;
Wed, 20 Nov 1996 14:58:52 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id KAA19199 for
<werner AT cadillac.inria.fr>;
Mon, 18 Nov 1996 10:19:18 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id KAA17602; Mon, 18 Nov 1996
10:19:16 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id KAA20630; Mon, 18 Nov 1996
10:19:15 +0100 (MET)
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id KAA17596; Mon, 18 Nov 1996
10:19:12 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
margaux.inria.fr (8.7.6/8.7.3) with ESMTP id KAA04442 for
<coq-club AT margaux.inria.fr>;
Mon, 18 Nov 1996 10:19:12 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id KAA17590; Mon, 18 Nov 1996
10:19:09 +0100 (MET)
Received: (from
boutin@localhost)
by pauillac.inria.fr (8.7.6/8.7.3) id KAA20626; Mon, 18 Nov 1996 10:19:09
+0100 (MET)
From: boutin samuel jean
<Samuel.Boutin AT inria.fr>
Message-Id:
<199611180919.KAA20626 AT pauillac.inria.fr>
Subject: beginner problem #4: polynomials (fwd)
To:
coq-club AT margaux.inria.fr,
Loic.Pottier AT sophia.inria.fr
Date: Mon, 18 Nov 1996 10:19:09 +0100 (MET)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 1090
Lines: 26
Status: RO
Hello,
* Loic Pottier
(Loic.Pottier AT sophia.inria.fr)
investigates computer
algebra using the Coq system and can certainly help you.
* The purpose of Computer Algebra/Symbolic computation consists often
of equational reasonning in structures which are most of the time
formal rings. I've investigated the definition of decision procedures
on abelian rings in the Coq system usig two methods. First the usual
LCF'like approach where the pb is to generate a ``good'' sequence of
tactics (rewrites) to solve a problem (an equation). Secondly using
reflection (translation of a problem on Leibniz identity into a
computation performed by the definitional identity of the Coq system).
The LCF tactic is available in the beta release of Coq V6.1 to come
these day (look at V6.1/tactics/contrib/acdsimpl). The other tactic
will be available for the final release (end of december) with very
improved performances w.r.t the LCF'like approach.
* I've not been able to read the files at the URLs above.
( Error code 403
Sorry, access denied or files does not exist)
hope this help,
Sam
From werner Fri Dec 12 13:07:13 1997
5:24 +0100 (MET)
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id OAA06371 for
<coq-club-redistribution AT pauillac.inria.fr>;
Wed, 20 Nov 1996 14:55:24 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id OAA26334 for
coq-club-redistribution@pauillac;
Wed, 20 Nov 1996 14:55:22 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id TAA24432 for
<werner AT cadillac.inria.fr>;
Tue, 19 Nov 1996 19:18:54 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id TAA21088; Tue, 19 Nov 1996
19:18:46 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id TAA26178; Tue, 19 Nov 1996
19:18:44 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id TAA21085; Tue, 19 Nov 1996
19:18:41 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id TAA26174 for
<CoqRocq AT pauillac.inria.fr>;
Tue, 19 Nov 1996 19:18:41 +0100 (MET)
Received: from animal.cs.chalmers.se (animal.cs.chalmers.se [129.16.225.30])
by concorde.inria.fr (8.7.6/8.7.1) with ESMTP id TAA21081 for
<CoqRocq AT pauillac.inria.fr>;
Tue, 19 Nov 1996 19:18:40 +0100 (MET)
Received: (from
daemon@localhost)
by animal.cs.chalmers.se (8.8.3/8.7.3) id TAA04457 for bra-types-mail; Tue,
19 Nov 1996 19:16:28 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
animal.cs.chalmers.se (8.8.3/8.7.3) with ESMTP id TAA04453 for
<bra-types AT cs.chalmers.se>;
Tue, 19 Nov 1996 19:16:27 +0100 (MET)
Received: from margaux.inria.fr (margaux.inria.fr [128.93.8.2]) by
concorde.inria.fr (8.7.6/8.7.1) with ESMTP id TAA21057; Tue, 19 Nov 1996
19:16:24 +0100 (MET)
Received: (from
herbelin@localhost)
by margaux.inria.fr (8.7.6/8.7.3) id TAA16754; Tue, 19 Nov 1996 19:16:23
+0100 (MET)
Date: Tue, 19 Nov 1996 19:16:23 +0100 (MET)
From: Hugo Herbelin
<herbelin AT margaux.inria.fr>
Message-Id:
<199611191816.TAA16754 AT margaux.inria.fr>
To:
Coq-club AT pauillac.inria.fr,
bra-types AT cs.chalmers.se,
gdr-prog AT geocub.greco-prog.fr
Subject: Coq V6.1.beta release
Sender:
werner AT cadillac.inria.fr
Content-Length: 1427
Lines: 36
Status: RO
The Coq team is happy to announce the release of the new version of Coq : V6.1
This version is still in beta test, the final release is scheduled for
Christmas.
The new features are :
- It is written in Objective Caml and runs significantly faster
(Objective Caml 1.03 is needed)
- Important new functionalities are :
* Definition of functions using pattern-matching
* Implicit syntax :
+ automatic generation of implicit arguments
+ declaration of implicit coercions between families of types
* Natural : a tool by Yann Coscoy to pretty-print proofs in natural
language
* Omega : tactic by Pierre Cre'gut to solve problems in Presburger
Arithmetic
* ACSimpl : tactic to solve equational problems in commutative rings
* EAuto : Extension of Auto using a Prolog-like resolution
It is available from
ftp.ens-lyon.fr:/pub/LIP/COQ/V6.1.beta
ftp.inria.fr:INRIA/Projects/coq/coq/V6.1.beta
Main changes are briefly described in the file doc/Changes.dvi.gz and the
Reference Manual has been updated but is still in draft form.
In case of installation problem, mail to
coq AT pauillac.inria.fr.
There exists a moderated Coq mailing list for general questions or
remarks about Coq: send a mail to
Coq-Club AT pauillac.inria.fr
Use
Coq-Club-request AT pauillac.inria.fr
for [un]subscribing.
From werner Fri Dec 12 13:07:13 1997
9:51 +0100 (MET)
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.6/8.7.3) with ESMTP id PAA09607 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 27 Mar 1997 15:19:49 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA25624 for
coq-club-redistribution@pauillac;
Thu, 27 Mar 1997 15:19:49 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id OAA25590 for
<werner AT cadillac.inria.fr>;
Thu, 27 Mar 1997 14:48:13 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.3) with ESMTP id OAA08743 for
<werner AT cadillac.inria.fr>;
Thu, 27 Mar 1997 14:48:11 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id OAA02038; Thu, 27 Mar 1997
14:48:11 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.3) with ESMTP id OAA08737; Thu, 27 Mar 1997
14:48:06 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id OAA02032 for
<coq-club AT pauillac.inria.fr>;
Thu, 27 Mar 1997 14:48:06 +0100 (MET)
Received: from psyche.inria.fr (psyche.inria.fr [138.96.48.36]) by
concorde.inria.fr (8.7.6/8.7.3) with ESMTP id OAA08731 for
<coq-club AT pauillac.inria.fr>;
Thu, 27 Mar 1997 14:48:05 +0100 (MET)
Received: by psyche.inria.fr (8.8.5/8.6.12) id OAA26138; Thu, 27 Mar 1997
14:48:04 +0100 (MET)
Message-Id:
<199703271348.OAA26138 AT psyche.inria.fr>
X-Mailer: exmh version 1.6.7 5/3/96
X-url: http://www.inria.fr/safir/WHOSWHO/Loic/home.html
X-face:
JRTYIW_+,2nYo%&zMFjCx~ttkU|@1,72:8_?>?B6OHkG,FE@C{vKA.2X``QoCs.&kCN]M7G
UEEr5((_x9Vjw]I$FmsOH%s6*\IUu~$@`tH<KN`I:1Wlv|$e<#@B8Fy"Oanvp>$vb-o$NF%||i^R<?
Lo68:QYY~N6D[{Y:RtGm*+F1:O6F+N-]B
Reply-to:
Loic.Pottier AT sophia.inria.fr
Organization: INRIA, Sophia Antipolis, France
Telephone: (33) 93 65 78 19
Fax: (33) 93 65 78 58
To:
coq-club AT pauillac.inria.fr
Subject: Strange message in inductive type definition
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date: Thu, 27 Mar 1997 14:48:02 +0100
From: Loic Pottier
<Loic.Pottier AT sophia.inria.fr>
Sender:
werner AT cadillac.inria.fr
Content-Length: 323
Lines: 27
Status: RO
With this input:
Section s1.
Variable A:Set.
Inductive P2:Set:=
P2A:A->P2
| P2X:P2->P2->P2.
End s1.
Parameter A:Set.
Inductive Poln:Set:=
Poln1:A->Poln
|Poln2:(P2 Poln)->Poln.
Coq gives this warning:
Warning: Ignoring recursive call
What does it mean? (I did not found it in the doc...)
Loic Pottier
From werner Fri Dec 12 13:07:13 1997
9:31 +0100 (MET)
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.6/8.7.3) with ESMTP id PAA10043 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 27 Mar 1997 15:29:30 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA25642 for
coq-club-redistribution@pauillac;
Thu, 27 Mar 1997 15:29:30 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA25617 for
<werner AT cadillac.inria.fr>;
Thu, 27 Mar 1997 15:19:32 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.3) with ESMTP id PAA09594 for
<werner AT cadillac.inria.fr>;
Thu, 27 Mar 1997 15:19:31 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id PAA02377; Thu, 27 Mar 1997
15:19:30 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.3) with ESMTP id PAA09586; Thu, 27 Mar 1997
15:19:26 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id PAA02370 for
<coq-club AT pauillac.inria.fr>;
Thu, 27 Mar 1997 15:19:26 +0100 (MET)
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.6/8.7.3) with ESMTP id PAA09582; Thu, 27 Mar 1997
15:19:24 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA25613; Thu, 27 Mar 1997 15:19:24
+0100
From: Benjamin Werner
<werner AT cadillac.inria.fr>
Message-Id:
<199703271419.PAA25613 AT cadillac.inria.fr>
Subject: Re: Strange message in inductive type definition
To:
Loic.Pottier AT sophia.inria.fr
Date: Thu, 27 Mar 1997 15:19:24 +0100 (MET)
Cc:
coq-club AT pauillac.inria.fr
In-Reply-To:
<199703271348.OAA26138 AT psyche.inria.fr>
from "Loic Pottier" at Mar 27, 97 02:48:02 pm
X-Mailer: ELM [version 2.4 PL24 ME8]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
werner AT cadillac.inria.fr
Content-Length: 1705
Lines: 67
Status: RO
Dear Loic,
When defining type A:Set, the parameter of the constructor Poln2 is
considered recursive, since Poln occurs in its type.
This definition is legal in V6.0, since:
* Parameter A occurs negatively in the constructors of P2 (actualy in
P2A).
* Hence, it is considered that Poln occurs positively in (P2 Poln),
which is necessary for the definition to be accepted.
However, when making use of this facility, it is very difficult to
build the most general induction/elimination scheme for Poln_rec. We
therefore decided to have Poln_rec to be defined as if the constructor
Poln2 was not recursive:
Coq < Coq < Check Poln_rec.
Poln_rec
: (P:Poln->Set)
((a:A)(P (Poln1 a)))
->((p:(P2 Poln))(P (Poln2 p)))->(p:Poln)(P p)
You still can make use of recursive call over the argument of Poln2,
as described in the documentation, but you have to do your
construction by hand using Fixpoint and Case(s). Notably, the Elim
tactic will not allow you to do recursive proofs:
Coq < Variable al : Poln->Prop.
al is assumed
Coq < Goal (p:Poln)(al p).
1 subgoal
============================
(p:Poln)(al p)
Unnamed_thm < Induction p.
2 subgoals
p : Poln
============================
(a:A)(al (Poln1 a))
subgoal 2 is:
(p:(P2 Poln))(al (Poln2 p))
Cheers,
Benjamin Werner
----------------------------------------------------------------------------
Projet Coq
INRIA-Rocquencourt, BP 105, F-78 153 LE CHESNAY cedex, FRANCE
E-mail:
Benjamin.Werner AT inria.fr
Phone: +33 (1) 39 63 52 31
Mobile: +33 (6) 11 82 55 02
Fax: +33 (1) 39 63 53 30
http://pauillac.inria.fr/~werner
-----------------------------------------------------------------------------
From werner Fri Dec 12 13:07:13 1997
8:26 +0100 (MET)
Received: from cadillac.inria.fr (cadillac.inria.fr [128.93.8.131]) by
concorde.inria.fr (8.7.6/8.7.3) with ESMTP id PAA10463 for
<coq-club-redistribution AT pauillac.inria.fr>;
Thu, 27 Mar 1997 15:38:25 +0100 (MET)
Received: (from
werner@localhost)
by cadillac.inria.fr (8.6.10/8.6.6) id PAA25671 for
coq-club-redistribution@pauillac;
Thu, 27 Mar 1997 15:38:25 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
cadillac.inria.fr (8.6.10/8.6.6) with ESMTP id PAA25658 for
<werner AT cadillac.inria.fr>;
Thu, 27 Mar 1997 15:31:01 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.3) with ESMTP id PAA10215 for
<werner AT cadillac.inria.fr>;
Thu, 27 Mar 1997 15:30:59 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id PAA02582; Thu, 27 Mar 1997
15:30:59 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by
concorde.inria.fr (8.7.6/8.7.3) with ESMTP id PAA10206; Thu, 27 Mar 1997
15:30:54 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id PAA02575 for
<coq-club AT pauillac.inria.fr>;
Thu, 27 Mar 1997 15:30:54 +0100 (MET)
Received: from pomerol.inria.fr (pomerol.inria.fr [128.93.8.36]) by
concorde.inria.fr (8.7.6/8.7.3) with SMTP id PAA10202 for
<coq-club AT pauillac.inria.fr>;
Thu, 27 Mar 1997 15:30:52 +0100 (MET)
Received: by pomerol.inria.fr (4.1/SMI-4.1)
id AA00424; Thu, 27 Mar 97 15:29:14 +0100
Date: Thu, 27 Mar 97 15:29:14 +0100
Message-Id:
<9703271429.AA00424 AT pomerol.inria.fr>
From: Eduardo Gimenez
<Eduardo.Gimenez AT inria.fr>
To:
coq-club AT pauillac.inria.fr
Subject: Re: Strange message in inductive type definition
Sender:
werner AT cadillac.inria.fr
Content-Length: 708
Lines: 30
Status: RO
Hello,
> You still can make use of recursive call over the argument of Poln2,
> as described in the documentation, but you have to do your
> construction by hand using Fixpoint and Case(s). Notably, the Elim
> tactic will not allow you to do recursive proofs:
Just to complement Benjamin's answer, an alternative definition would
be to introduce P2 and Poln simoultaneously, as follows :
Section s1.
Variable A:Set.
Mutual Inductive
P2:Set:=
P2A:Poln->P2
| P2X:P2->P2->P2
with
Poln:Set:=
Poln1:A->Poln
|Poln2:P2->Poln.
Then you may derive useful elimination schemes using the command
"Scheme" (see section 8.5, page 92 of the reference manual for version
V5.10).
Cheers,
Eduardo Gimenez.
From werner Fri Dec 12 13:07:13 1997
ived: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id RAA19616
for
<coq-club-redistribution AT pauillac.inria.fr>;
Mon, 24 Nov 1997 17:35:56 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id RAA11501 for
coq-club-redistribution@pauillac;
Mon, 24 Nov 1997 17:35:55 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id RAA03153 for
<mayero AT bouzy.inria.fr>;
Thu, 20 Nov 1997 17:55:25 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id RAA27125;
Thu, 20 Nov 1997 17:55:23 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id RAA12744; Thu, 20 Nov 1997
17:55:19 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id RAA27097;
Thu, 20 Nov 1997 17:54:01 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id RAA12728 for
<coq-club AT pauillac.inria.fr>;
Thu, 20 Nov 1997 17:54:00 +0100 (MET)
Received: from cheyenne.irisa.fr (cheyenne.irisa.fr [131.254.22.15])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id RAA27091
for
<coq-club AT pauillac.inria.fr>;
Thu, 20 Nov 1997 17:53:59 +0100 (MET)
Received: from hol.fr (zapata.irisa.fr [131.254.22.6])
by cheyenne.irisa.fr (8.8.7/8.8.7) with ESMTP id RAA18450
for
<coq-club AT pauillac.inria.fr>;
Thu, 20 Nov 1997 17:53:28 +0100 (MET)
Sender:
mayero AT bouzy.inria.fr
Message-ID:
<34746B07.ACF8ABBB AT hol.fr>
Date: Thu, 20 Nov 1997 17:53:28 +0100
From: David Nowak
<David.Nowak AT hol.fr>
Organization: unorganized
X-Mailer: Mozilla 4.03 [en] (X11; I; SunOS 5.5 sun4m)
MIME-Version: 1.0
To: Club Coq
<coq-club AT pauillac.inria.fr>
Subject: All methods must construct elements in coinductive types
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Content-Length: 1235
Lines: 55
Status: RO
Que signifie le message d'erreur :
All methods must construct elements in coinductive types
> coqtop -opt
Welcome to Coq V6.1 (Dec 24 1996)
Coq < Require Bool.
[Reinterning Bool ...
done]
Coq < Require Streams.
[Reinterning Streams ...
done]
Coq < CoInductive OrS : (Stream bool)->(Stream bool)->(Stream
bool)->Prop :=
Coq < or_stream : (s1,s2,s3:(Stream bool))(b1,b2,b3:bool)
Coq < (OrS s1 s2 s3)->(orb b1 b2)=b3->
Coq < (OrS (cons b1 s1) (cons b2 s2) (cons b3 s3)).
OrS is defined
Coq < CoFixpoint ors : (Stream bool)->(Stream bool)->(Stream bool) :=
Coq < [s1,s2:(Stream bool)] Cases s1 s2 of
Coq < (Cons b1 s1') (Cons b2 s2') => (cons (orb b1 b2) (ors s1'
s2'))
Coq < end.
ors is corecursively defined
Coq < Lemma ors_spec : (s1,s2:(Stream bool)){s3:(Stream bool)|(OrS s1 s2
s3)}.
1 subgoal
============================
(s1,s2:(Stream bool)){s3:(Stream bool) | (OrS s1 s2 s3)}
ors_spec < Realizer ors.
1 subgoal
============================
(s1,s2:(Stream bool)){s3:(Stream bool) | (OrS s1 s2 s3)}
ors_spec < Program.
Error: All methods must construct elements in coinductive types
during command
Program.
--
David
mél :
David.Nowak AT hol.fr
ouèbe : http://www.mygale.org/~nowak/
From werner Fri Dec 12 13:07:13 1997
ived: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id RAA27678
for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 21 Nov 1997 17:34:26 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id RAA04913 for
coq-club-redistribution@pauillac;
Fri, 21 Nov 1997 17:34:25 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id PAA04733 for
<mayero AT bouzy.inria.fr>;
Fri, 21 Nov 1997 15:44:08 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id PAA23775;
Fri, 21 Nov 1997 15:44:07 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id PAA03666; Fri, 21 Nov 1997
15:43:58 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id PAA23768;
Fri, 21 Nov 1997 15:43:55 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id PAA03659 for
<coq AT pauillac.inria.fr>;
Fri, 21 Nov 1997 15:43:54 +0100 (MET)
Received: from coaster.cs.vu.nl
(root AT coaster.cs.vu.nl
[192.31.231.224])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id PAA23763
for
<coq AT pauillac.inria.fr>;
Fri, 21 Nov 1997 15:43:52 +0100 (MET)
Received: by coaster.cs.vu.nl (Smail3.1.28.1 #39)
id m0xYuJ3-001igxC; Fri, 21 Nov 97 15:43 +0100
Message-Id:
<m0xYuJ3-001igxC AT coaster.cs.vu.nl>
Date: Fri, 21 Nov 97 15:43:41 MET
From: "M. Bognar"
<mirna AT cs.vu.nl>
To:
coq AT pauillac.inria.fr
Subject: Fixpoint vs Recursive Definition
Sender:
mayero AT bouzy.inria.fr
Content-Length: 1534
Lines: 67
Status: RO
Hello!
We have a problem here with the definition of
the Ackermann's function in Coq, and we do not
understand it.
We are working with Coq V6.1 (Dec 24 1996),
but still using `Recursive Definition'.
Since `Recursive Definition' is no more described in
the manuals, we would like to know what the difference
is between the following two formulations
(except the difference that the first is accepted by
Coq and the second is not)
>> Coq code begin <<
Recursive Definition ack: nat->nat->nat :=
O n => (S n) |
(S m') O => (ack m' (S O)) |
(S m') (S n') => (ack m' (ack (S m') n')).
Fixpoint ack1[m:nat] : nat -> nat :=
Case m of [n:nat](S n)
[m':nat]([n:nat](ack2 m' n))
end
with ack2[i,k:nat]: nat :=
Case k of (ack1 i (S O))
[k':nat](ack1 i (ack2 i k'))
end.
>> Coq code end<<
The first formulation generates the term
Coq < Print ack.
ack =
[x1:nat]
(Fix F{F/1 : nat->nat->nat :=
[n:nat]
<nat->nat>Case n of
[x2:nat](S x2)
[n0,x2:nat]
(Fix F0{F0/1 : nat->nat :=
[n1:nat]
<nat>Case n1 of
(F n0 (S O))
[n2:nat](F n0 (F0 n2))
end} x2)
end} x1)
: nat->nat->nat
Is there a way to formulate this (using for example, `Fixpoint'
and NOT using `Recursive Definition') in the current version of Coq?
Thanks in advance!
Best regards,
Vincent van Oostrom and Mirna Bognar
From werner Fri Dec 12 13:07:13 1997
ived: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id RAA27776
for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 21 Nov 1997 17:35:22 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id RAA04924 for
coq-club-redistribution@pauillac;
Fri, 21 Nov 1997 17:35:22 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id QAA04763 for
<mayero AT bouzy.inria.fr>;
Fri, 21 Nov 1997 16:19:20 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id QAA24849;
Fri, 21 Nov 1997 16:19:19 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id QAA04454; Fri, 21 Nov 1997
16:19:10 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id QAA24843;
Fri, 21 Nov 1997 16:19:09 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id QAA04442 for
<coq AT pauillac.inria.fr>;
Fri, 21 Nov 1997 16:19:07 +0100 (MET)
Received: from lri.lri.fr
(root AT lri.lri.fr
[129.175.15.1])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id QAA24839
for
<coq AT pauillac.inria.fr>;
Fri, 21 Nov 1997 16:19:06 +0100 (MET)
Received: from romeo.lri.fr
(paulin AT pc83.lri.fr
[129.175.8.103])
by lri.lri.fr (8.8.5/jtpda-5.2) with ESMTP id QAA15799
; Fri, 21 Nov 1997 16:19:00 +0100 (MET)
Received: by romeo.lri.fr
(8.6.12/feuille) id RAA02552
; Fri, 21 Nov 1997 17:18:48 +0100
Date: Fri, 21 Nov 1997 17:18:48 +0100
Message-Id:
<199711211618.RAA02552 AT romeo.lri.fr>
From: Christine Paulin
<Christine.Paulin AT lri.fr>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
To: "M. Bognar"
<mirna AT cs.vu.nl>
Cc:
coq AT pauillac.inria.fr
Subject: Re: Fixpoint vs Recursive Definition
In-Reply-To:
<m0xYuJ3-001igxC AT coaster.cs.vu.nl>
References:
<m0xYuJ3-001igxC AT coaster.cs.vu.nl>
X-Mailer: VM 6.34 under Emacs 19.34.1
Reply-To:
Christine.Paulin AT lri.fr
(Christine Paulin)
Sender:
mayero AT bouzy.inria.fr
Content-Length: 1238
Lines: 43
Status: RO
Dear Vincent van Oostrom and Mirna Bognar,
Definition of ackerman needs 2 embedded fixpoint as you can see in the
term generated by Recursive Definition.
Fixpoint only accepts one level of recursion but there is the
well-known trick to define ack with two ``primitive-like'' recursive
functions one of them taking a function as argument. In Coq you can
write this as:
Fixpoint ack2 [ackm:nat->nat;n:nat] : nat :=
Case n of (ackm (S O)) [n':nat](ackm (ack2 ackm n')) end.
Fixpoint ack [m:nat] : nat -> nat :=
Case m of [n:nat](S n)
[m':nat](ack2 (ack m'))
end.
You could check that the expected equations are trivially proved,
because they correspond to internally convertible terms.
Lemma lem1 : (n:nat)(ack O n)=(S n).
Trivial.
Save.
Lemma lem2 : (m:nat)(ack (S m) O)=(ack m (S O)).
Trivial.
Save.
Lemma lem3 : (m,n:nat)(ack (S m) (S n))=(ack m (ack (S m) n)).
Trivial.
Save.
Best regards,
Christine Paulin.
--
Christine Paulin-Mohring mailto :
Christine.Paulin AT lri.fr
LRI, URA 410 CNRS, Bat 490, Université Paris Sud, 91405 ORSAY Cedex
LRI tel : (+33) (0)1 69 15 66 35 fax : (+33) (0)1 69 15 65 86
INRIA tel : (+33) (0)1 39 63 55 70 fax : (+33) (0)1 39 63 56 84
From werner Fri Dec 12 13:07:13 1997
ived: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id RAA19744
for
<coq-club-redistribution AT pauillac.inria.fr>;
Mon, 24 Nov 1997 17:40:16 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id RAA11513 for
coq-club-redistribution@pauillac;
Mon, 24 Nov 1997 17:40:15 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id LAA11052 for
<mayero AT bouzy.inria.fr>;
Mon, 24 Nov 1997 11:46:44 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id LAA05977;
Mon, 24 Nov 1997 11:46:44 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id LAA00498; Mon, 24 Nov 1997
11:46:39 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id LAA05973;
Mon, 24 Nov 1997 11:46:38 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id LAA00491 for
<coq-club AT pauillac.inria.fr>;
Mon, 24 Nov 1997 11:46:37 +0100 (MET)
Received: from loupiac.inria.fr
(gimenez AT loupiac.inria.fr
[128.93.11.82])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id LAA05969
for
<coq-club AT pauillac.inria.fr>;
Mon, 24 Nov 1997 11:46:36 +0100 (MET)
Received: (from
gimenez@localhost)
by loupiac.inria.fr (8.8.5/8.8.5) id LAA30968;
Mon, 24 Nov 1997 11:47:49 +0100
Date: Mon, 24 Nov 1997 11:47:49 +0100
Message-Id:
<199711241047.LAA30968 AT loupiac.inria.fr>
From: Eduardo Gimenez
<Eduardo.Gimenez AT inria.fr>
To:
coq-club AT pauillac.inria.fr
Subject: Re: All methods must construct elements in coinductive types
Sender:
mayero AT bouzy.inria.fr
Content-Length: 1802
Lines: 62
Status: RO
> Que signifie le message d'erreur :
>
> All methods must construct elements in coinductive types
>
>Coq < CoFixpoint ors : (Stream bool)->(Stream bool)->(Stream bool) :=
>Coq < [s1,s2:(Stream bool)] Cases s1 s2 of
>Coq < (Cons b1 s1') (Cons b2 s2') => (cons (orb b1 b2) (ors s1' s2'))
>Coq < end.
>ors is corecursively defined
>Coq < Lemma ors_spec :
> (s1,s2:(Stream bool)){s3:(Stream bool)|(OrS s1 s2 s3)}.
>1 subgoal
>
> ============================
> (s1,s2:(Stream bool)){s3:(Stream bool) | (OrS s1 s2 s3)}
>ors_spec < Realizer ors.
>1 subgoal
>
> ============================
> (s1,s2:(Stream bool)){s3:(Stream bool) | (OrS s1 s2 s3)}
>
>ors_spec < Program.
>Error: All methods must construct elements in coinductive types
>during command
>Program.
It means that if you say that your proof is an infinite object (that
is what you are saying when you give the stream (ors s1 s2) as the
realizer of your lemma) then the type of this proof --i.e., the
conclusion of your lemma-- must be a coinductive type. Note that this
is not the case in your lemma, which introduces a proof of type
{x:A|B(x)} (which is just a shorthand for (sig A B), where sig is
introduced as follows :
Coq < Print sig.
Inductive sig [A:Set;P:A->Prop] : Set := exist : (x:A)(P x)->(sig A P)
In order to prove your lemma, one possibility is to proceed in this way:
Lemma ors_spec: (s1,s2:(Stream bool)){s3:(Stream bool) | (OrS s1 s2 s3)}.
Intros s1 s2.
Exists (ors s1 s2).
Generalize s1 s2;Clear s1 s2.
Cofix.
1 subgoal
ors_spec : (s1,s2:(Stream bool))(OrS s1 s2 (ors s1 s2))
============================
(s1,s2:(Stream bool))(OrS s1 s2 (ors s1 s2))
Then you proceed by cases on s1 and s2, you expand the definition of
ors, etc.
Hope this helps ...
Cheers,
Eduardo Gimenez.
From werner Fri Dec 12 13:07:13 1997
ived: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id RAA21851
for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 25 Nov 1997 17:07:12 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id RAA13318 for
coq-club-redistribution@pauillac;
Tue, 25 Nov 1997 17:07:10 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id OAA13033 for
<mayero AT bouzy.inria.fr>;
Tue, 25 Nov 1997 14:25:55 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id OAA15902;
Tue, 25 Nov 1997 14:25:55 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id OAA25792; Tue, 25 Nov 1997
14:25:48 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id OAA15899;
Tue, 25 Nov 1997 14:25:48 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id OAA25789 for
<coq-club AT pauillac.inria.fr>;
Tue, 25 Nov 1997 14:25:46 +0100 (MET)
Received: from hermes.dur.ac.uk (hermes.dur.ac.uk [129.234.4.9])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id OAA15894
for
<coq-club AT pauillac.inria.fr>;
Tue, 25 Nov 1997 14:25:45 +0100 (MET)
Received: from easby by hermes.dur.ac.uk id
<NAA23598 AT hermes.dur.ac.uk>
(8.8.7/ for dur.ac.uk) with SMTP; Tue, 25 Nov 1997 13:25:43 GMT
Received: from whitby.durham.cs by easby id
<NAA22663@easby>;
Tue, 25 Nov 1997 13:25:41 GMT
Received: from localhost by whitby.durham.cs (SMI-8.6/SMI-SVR4)
id NAA06843; Tue, 25 Nov 1997 13:25:40 GMT
Message-Id:
<199711251325.NAA06843 AT whitby.durham.cs>
X-Mailer: exmh version 2.0zeta 7/24/97
To:
coq-club AT pauillac.inria.fr
Subject: A problem with double induction
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date: Tue, 25 Nov 1997 13:25:39 +0000
From: Alex Jones
<A.P.Jones AT durham.ac.uk>
Sender:
mayero AT bouzy.inria.fr
Content-Length: 1162
Lines: 31
Status: RO
Dear Coq Users,
I wonder if any of you can help me with this problem. Firstly, a bit of
background:
I've inductively defined a type of type-theoretic terms (ie. var, lambda,
etc.) and also the type of contexts. I've also defined an inductive relation,
ceq : context->context->Prop, which is meant to be equality between contexts.
The problem: I wish to prove results along the lines of
(g1,g2:context)(ceq g1 g2)->(g3:context)(ceq g2 g3)->(ceq g1 g3)
by using two inductions, one on the derivation of (ceq g1 g2) and the other
on
the deriviation of (ceq g2 g3). Now, the problem is that g2 is common to both
these derivations and when I use the elim tactic for the second induction,
Coq
generalizes g2 to a new term which is then in no way connected to any
previous
references of g2 (of which there may be many).
Can any one explain to me a general way of performing the double induction
which unifies both instances of g2 without having to work out the term of the
double induction principle itself as this would become unmanageable for other
parts of my formalization.
Thanks for any help,
Alex Jones,
Dept. of CS,
University of Durham,
UK
From werner Fri Dec 12 13:07:13 1997
ived: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA24016
for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 25 Nov 1997 18:15:05 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id SAA13419 for
coq-club-redistribution@pauillac;
Tue, 25 Nov 1997 18:15:03 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id SAA13409 for
<mayero AT bouzy.inria.fr>;
Tue, 25 Nov 1997 18:13:32 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA23946;
Tue, 25 Nov 1997 18:13:32 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA02058; Tue, 25 Nov 1997
18:13:26 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA23943;
Tue, 25 Nov 1997 18:13:26 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA02055 for
<coq-club AT pauillac.inria.fr>;
Tue, 25 Nov 1997 18:13:24 +0100 (MET)
Received: from lri.lri.fr
(paulin AT lri.lri.fr
[129.175.15.1])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA23939
for
<coq-club AT pauillac.inria.fr>;
Tue, 25 Nov 1997 18:13:24 +0100 (MET)
Received: from
(paulin@localhost)
by lri.lri.fr (8.8.5/jtpda-5.2) id SAA19290
; Tue, 25 Nov 1997 18:12:48 +0100 (MET)
Date: Tue, 25 Nov 1997 18:12:48 +0100 (MET)
Message-Id:
<199711251712.SAA19290 AT lri.lri.fr>
From: Christine Paulin
<Christine.Paulin AT lri.fr>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
To: Alex Jones
<A.P.Jones AT durham.ac.uk>
Cc:
coq-club AT pauillac.inria.fr
Subject: Re: A problem with double induction
In-Reply-To:
<199711251325.NAA06843 AT whitby.durham.cs>
References:
<199711251325.NAA06843 AT whitby.durham.cs>
X-Mailer: VM 6.34 under Emacs 19.34.1
Reply-To:
Christine.Paulin AT lri.fr
(Christine Paulin)
Sender:
mayero AT bouzy.inria.fr
Content-Length: 902
Lines: 30
Status: RO
Dear Alex,
In general a double induction is simply solved by an induction on the
first predicate (using Elim) followed by an Inversion over the second
hypothesis.
For instance
Inductive even : nat -> Prop := even_O : (even O)
| even_S : (n:nat)(even n)->(even (S (S n))).
Inductive odd : nat -> Prop := odd_SO : (odd (S O))
| odd_S : (n:nat)(odd n)->(odd (S (S n))).
Goal (n:nat)(even n)->(odd n)->False.
Induction 1; Intros.
Inversion H0.
Inversion H2.
Apply H1; Trivial.
Christine Paulin.
--
Christine Paulin-Mohring mailto :
Christine.Paulin AT lri.fr
LRI, URA 410 CNRS, Bat 490, Université Paris Sud, 91405 ORSAY Cedex
LRI tel : (+33) (0)1 69 15 66 35 fax : (+33) (0)1 69 15 65 86
INRIA tel : (+33) (0)1 39 63 55 70 fax : (+33) (0)1 39 63 56 84
Tatoo tel : 06 04 24 44 75
message numerique +1(pas urgent)-3(tres urgent) ou * + message vocal
From werner Fri Dec 12 13:07:13 1997
ived: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA24614
for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 25 Nov 1997 18:35:39 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id SAA13463 for
coq-club-redistribution@pauillac;
Tue, 25 Nov 1997 18:35:37 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id SAA13450 for
<mayero AT bouzy.inria.fr>;
Tue, 25 Nov 1997 18:33:57 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA24576;
Tue, 25 Nov 1997 18:33:57 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA02453; Tue, 25 Nov 1997
18:33:51 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA24572;
Tue, 25 Nov 1997 18:33:50 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA02448 for
<coq-club AT pauillac.inria.fr>;
Tue, 25 Nov 1997 18:33:48 +0100 (MET)
Received: from lri.lri.fr
(root AT lri.lri.fr
[129.175.15.1])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA24565
for
<coq-club AT pauillac.inria.fr>;
Tue, 25 Nov 1997 18:33:49 +0100 (MET)
Received: from pc84.lri.fr
(loisel AT pc84.lri.fr
[129.175.8.104])
by lri.lri.fr (8.8.5/jtpda-5.2) with ESMTP id SAA19723
; Tue, 25 Nov 1997 18:33:46 +0100 (MET)
Received: by pc84.lri.fr
(8.8.5/feuille) id SAA18353
; Tue, 25 Nov 1997 18:33:43 +0100
Date: Tue, 25 Nov 1997 18:33:43 +0100
Message-Id:
<199711251733.SAA18353 AT pc84.lri.fr>
From: Patrick Loiseleur
<Patrick.Loiseleur AT lri.fr>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
To: Alex Jones
<A.P.Jones AT durham.ac.uk>
Cc:
coq-club AT pauillac.inria.fr
Subject: Re: A problem with double induction
In-Reply-To:
<199711251325.NAA06843 AT whitby.durham.cs>
References:
<199711251325.NAA06843 AT whitby.durham.cs>
X-Mailer: VM 6.34 under Emacs 19.34.1
Sender:
mayero AT bouzy.inria.fr
Content-Length: 1056
Lines: 44
Status: RO
Dear Alex,
let us see what happens on a small example :
(* Beginning *)
Inductive eq_nat : nat -> nat -> Prop :=
eqO : (eq_nat O O)
| eqS : (n,m:nat)(eq_nat n m) -> (eq_nat (S n) (S m))
.
Lemma eq_nat_assoc :
(n,m:nat) (eq_nat n m) -> (q:nat)(eq_nat m q) -> (eq_nat n q).
============================
(n,m,q:nat)(eq_nat n m)->(eq_nat m q)->(eq_nat n q)
eq_nat_assoc < Induction 1.
2 subgoals
n : nat
m : nat
q : nat
H : (eq_nat n m)
============================
(eq_nat O q)->(eq_nat O q)
subgoal 2 is:
(n,m:nat)
(eq_nat n m)
->((eq_nat m q)->(eq_nat n q))->(eq_nat (S m) q)->(eq_nat (S n) q)
(* End of example *)
Here I makes a proof by induction on the proof of (eq_nat n m) : but
it destructurates also n and m : they are equal to O and O in the
first subgoal and (S n0) and (S m0) in the second. You can't make such
a proof and keep n and m "intact". But it does'nt matter : it's even
better like this.
I don't know if I replied your question ...
--
Patrick.Loiseleur AT lri.fr
bat 490, bureau 095, tel 6453
From werner Fri Dec 12 13:07:13 1997
ved: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id NAA25834
for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 5 Dec 1997 13:13:29 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id NAA01213 for
coq-club-redistribution@pauillac;
Fri, 5 Dec 1997 13:13:29 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id TAA16687 for
<mayero AT bouzy.inria.fr>;
Thu, 27 Nov 1997 19:16:39 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id TAA10291;
Thu, 27 Nov 1997 19:16:33 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id TAA14628; Thu, 27 Nov 1997
19:16:02 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id TAA10282;
Thu, 27 Nov 1997 19:16:01 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id TAA14621 for
<coq AT pauillac.inria.fr>;
Thu, 27 Nov 1997 19:15:59 +0100 (MET)
Received: from blaise.irit.fr (blaise.irit.fr [141.115.64.187])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id TAA10276
for
<coq AT pauillac.inria.fr>;
Thu, 27 Nov 1997 19:15:58 +0100 (MET)
Received: from blaise (localhost [127.0.0.1]) by blaise.irit.fr
(8.7.5/8.6.12) with SMTP id TAA07087 for
<coq AT pauillac.inria.fr>;
Thu, 27 Nov 1997 19:15:56 +0100 (MET)
Sender:
mayero AT bouzy.inria.fr
Message-ID:
<347DB8DB.60E5 AT irit.fr>
Date: Thu, 27 Nov 1997 19:15:56 +0100
From: Mamoun FILALI-AMINE
<filali AT irit.fr>
Organization: IRIT
X-Mailer: Mozilla 3.01Gold (X11; I; SunOS 5.5.1 sun4u)
MIME-Version: 1.0
To:
coq AT pauillac.inria.fr
Subject: probleme avec :>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mozilla-Status: 0000
Content-Length: 922
Lines: 48
Status: RO
Bonjour,
Nous cherchons a utiliser la declaration de coercion au sein
d'un record et nous avons eu des problemes. Nous avons essaye de
localiser l'erreur par les tests suivants:
Section Probleme.
Variable String: Type.
Variable Adulte: nat->Prop.
Record Personne: Type := mkPersonne{
age:> nat;
nom: String
}.
(* OK *)
Record Personne1: Type := mkPersonne1{
age1:> nat;
cond1: (gt age1 O)
}.
(* OK *)
Record Personne2: Type := mkPersonne2{
age2:> nat;
cond2: (Adulte age2)
}.
(* OK *)
Variable Adulte3: String->Prop.
Record Personne3: Type := mkPersonne3{
age3:> String;
cond2: (Adulte3 age3)
}.
(*
Personne3_ind is defined
Personne3_rec is defined
Personne3_rect is defined
Personne3 is defined
System Error Match in file class.ml from char #6617 to #6942.
If this is in user-written tactic code, then it needs to be modified.
If it is in system code then this needs to be reported.
during command
*)
From werner Fri Dec 12 13:07:13 1997
ved: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id NAA25907
for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 5 Dec 1997 13:14:56 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id NAA01223 for
coq-club-redistribution@pauillac;
Fri, 5 Dec 1997 13:14:56 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id AAA29957 for
<mayero AT bouzy.inria.fr>;
Fri, 5 Dec 1997 00:38:09 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id AAA09694;
Fri, 5 Dec 1997 00:38:07 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id AAA16251; Fri, 5 Dec 1997
00:38:02 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id AAA09691;
Fri, 5 Dec 1997 00:38:00 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id AAA16248 for
<coq-club AT pauillac.inria.fr>;
Fri, 5 Dec 1997 00:37:59 +0100 (MET)
Received: from mail2.isdnet.net
(root AT mail2.hol.fr
[194.149.160.36])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id AAA09686
for
<coq-club AT pauillac.inria.fr>;
Fri, 5 Dec 1997 00:37:58 +0100 (MET)
Received: from socrate
(root AT rennes-35.hol.fr
[195.154.40.163]) by mail2.isdnet.net (8.8.5/8.8.5) with ESMTP id AAA08130
for
<coq-club AT pauillac.inria.fr>;
Fri, 5 Dec 1997 00:37:56 +0100 (CET)
Received: from socrate ([127.0.0.1]) by socrate
with smtp (ident nowak using rfc1413) id m0xdkv0-000FPxC
(Debian Smail-3.2 1996-Jul-4 #2); Fri, 5 Dec 1997 00:42:54 +0100 (CET)
Sender:
mayero AT bouzy.inria.fr
Message-ID:
<34873FFD.35B2FBCC AT hol.fr>
Date: Fri, 05 Dec 1997 00:42:53 +0100
From: David Nowak
<David.Nowak AT hol.fr>
X-Mailer: Mozilla 3.01 (X11; I; Linux 2.0.30 i486)
MIME-Version: 1.0
To:
coq-club AT pauillac.inria.fr
Subject: Contre l'intuition
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Content-Length: 1343
Lines: 51
Status: RO
'r
Comme il est interdit de filtrer un flux, J'ai défini un prédicat Filter
tel que (Filter x y) signifie que y est le flux x auquel on a enlevé les
valeurs à false.
CoInductive Filter : (Stream bool)->(Stream bool)->Prop :=
filter_false : (x,y:(Stream bool))
(Filter x y)->(Filter (cons false x) y)
| filter_true : (x,y:(Stream bool))
(Filter x y)->(Filter (cons true x) (cons true y)).
Puis je définis le flux dont toutes les valeurs sont à false.
CoFixpoint sfalse : (Stream bool) :=
(cons false sfalse).
Je peux alors montrer que tout flux est le filtré de sfalse :
Lemma filter : (x:(Stream bool))(Filter sfalse x).
Proof.
Cofix.
Intro.
Case x.
Clear x.
Intros a x.
Rewrite -> (unfold_Stream ? sfalse).
Simpl.
Apply filter_false.
Auto.
Qed.
A priori ce théorème semble absurde car un filtré ne peut avoir que des
valeurs à true. Comment l'expliquer ?
Pour éviter ce théorème, j'aurais besoin de dire qu'un flux x de
booléens ne contient pas sfalse, i.e. qu'il y a toujours un nombre fini
de valeurs à false entre deux valeurs à true. Est-il possible d'exprimer
une telle propriété ? Ca me permettrait (peut-^etre) de prouver
l'unicité du filtré lorsque cette condition est vérifiée.
Merci.
--
David
Mél :
mailto:David.Nowak AT hol.fr
Ouèbe : http://www.mygale.org/~nowak/
From werner Fri Dec 12 13:07:13 1997
ved: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id NAA25949
for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 5 Dec 1997 13:15:34 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id NAA01228 for
coq-club-redistribution@pauillac;
Fri, 5 Dec 1997 13:15:33 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id KAA00994 for
<mayero AT bouzy.inria.fr>;
Fri, 5 Dec 1997 10:30:25 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id KAA21220;
Fri, 5 Dec 1997 10:30:23 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id KAA23064; Fri, 5 Dec 1997
10:30:18 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id KAA21217;
Fri, 5 Dec 1997 10:30:17 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id KAA23061 for
<coq-club AT pauillac.inria.fr>;
Fri, 5 Dec 1997 10:30:16 +0100 (MET)
Received: from loupiac.inria.fr
(gimenez AT loupiac.inria.fr
[128.93.11.82])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id KAA21212
for
<coq-club AT pauillac.inria.fr>;
Fri, 5 Dec 1997 10:30:15 +0100 (MET)
Received: (from
gimenez@localhost)
by loupiac.inria.fr (8.8.5/8.8.5) id KAA19523;
Fri, 5 Dec 1997 10:31:14 +0100
Date: Fri, 5 Dec 1997 10:31:14 +0100
Message-Id:
<199712050931.KAA19523 AT loupiac.inria.fr>
From: Eduardo Gimenez
<Eduardo.Gimenez AT inria.fr>
To:
coq-club AT pauillac.inria.fr
Subject: Re:Contre l'intuition
Sender:
mayero AT bouzy.inria.fr
Content-Length: 3226
Lines: 97
Status: RO
Bonjour David,
> A priori ce théorème semble absurde car un filtré ne peut avoir que des
> valeurs à true. Comment l'expliquer ?
Le vient du fait que tu as mal specifie ton predicat. En fait, la
premiere regle d'introduction que tu donnes pour (Filter x y)
peut etre lue comme dissant qu'on peut toujours aller chercher le
resultat plus loins ``au fond'' de x. Ce predicat etant coinductif, on
peut donc continuer a` chercher indefiniment ledit resultat. En d'autres
mots: en applicant la regle filter_false tu promets a` chaque coup que
le resultat de filtrer sfalse est un stream donne, qui se trouve un peu
plus loins, mais tu continue comme ca ad-infinitum.
C'est cela qui fait ton theoreme filter: il construit la preuve
filter x =
(filter_false sfalse x
(filter_false sfalse x
(filter_false sfalse x ......)))
> Pour éviter ce théorème, j'aurais besoin de dire qu'un flux x de
> booléens ne contient pas sfalse, i.e. qu'il y a toujours un nombre fini
> de valeurs à false entre deux valeurs à true. Est-il possible d'exprimer
> une telle propriété ? Ca me permettrait (peut-^etre) de prouver
> l'unicité du filtré lorsque cette condition est vérifiée.
Le predicat que tu cherches a` exprimer peut etre decrit comme ca:
Inductive FalsePrefix : (Stream bool)->(Stream bool)->Prop :=
AnotherFalse :
(x,y:(Stream bool))
(FalsePrefix x y)->(FalsePrefix(cons false x) y)
| EndFalse :
(x:(Stream bool))
(FalsePrefix (cons true x) (cons true x)).
CoInductive OnlyFiniteFalse : (Stream bool)->Prop :=
onlyFiniteFalse :
(x,y:(Stream bool))
(FalsePrefix x y)->
(OnlyFiniteFalse y)->(OnlyFiniteFalse x)
Note que le fait que FalsePrefix soit introduit comme un predicat
inductif est crucial pour quil y ait seulement un nombre finit de
valeurs False dans la stream.
Cordialement,
Eduardo Gimenez.
----------------------Message de David Nowak-------------------------------
Comme il est interdit de filtrer un flux, J'ai défini un prédicat Filter
tel que (Filter x y) signifie que y est le flux x auquel on a enlevé les
valeurs à false.
CoInductive Filter : (Stream bool)->(Stream bool)->Prop :=
filter_false : (x,y:(Stream bool))
(Filter x y)->(Filter (cons false x) y)
| filter_true : (x,y:(Stream bool))
(Filter x y)->(Filter (cons true x) (cons true y)).
Puis je définis le flux dont toutes les valeurs sont à false.
CoFixpoint sfalse : (Stream bool) :=
(cons false sfalse).
Je peux alors montrer que tout flux est le filtré de sfalse :
Lemma filter : (x:(Stream bool))(Filter sfalse x).
Proof.
Cofix.
Intro.
Case x.
Clear x.
Intros a x.
Rewrite -> (unfold_Stream ? sfalse).
Simpl.
Apply filter_false.
Auto.
Qed.
A priori ce théorème semble absurde car un filtré ne peut avoir que des
valeurs à true. Comment l'expliquer ?
Pour éviter ce théorème, j'aurais besoin de dire qu'un flux x de
booléens ne contient pas sfalse, i.e. qu'il y a toujours un nombre fini
de valeurs à false entre deux valeurs à true. Est-il possible d'exprimer
une telle propriété ? Ca me permettrait (peut-^etre) de prouver
l'unicité du filtré lorsque cette condition est vérifiée.
Merci.
From werner Fri Dec 12 13:07:13 1997
ved: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id NAA25854
for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 5 Dec 1997 13:14:17 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id NAA01218 for
coq-club-redistribution@pauillac;
Fri, 5 Dec 1997 13:14:16 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id MAA01186 for
<mayero AT bouzy.inria.fr>;
Fri, 5 Dec 1997 12:25:23 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id MAA24883;
Fri, 5 Dec 1997 12:25:20 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id MAA25247; Fri, 5 Dec 1997
12:25:11 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id MAA24879;
Fri, 5 Dec 1997 12:25:10 +0100 (MET)
Received: (from
werner@localhost)
by pauillac.inria.fr (8.7.6/8.7.3) id MAA25239; Fri, 5 Dec 1997 12:25:08
+0100 (MET)
From: Benjamin Werner
<Benjamin.Werner AT inria.fr>
Message-Id:
<199712051125.MAA25239 AT pauillac.inria.fr>
Subject: Re: probleme avec :>
In-Reply-To:
<347DB8DB.60E5 AT irit.fr>
from Mamoun FILALI-AMINE at "Nov 27, 97 07:15:56 pm"
To:
filali AT irit.fr
(Mamoun FILALI-AMINE)
Date: Fri, 5 Dec 1997 12:25:08 +0100 (MET)
Cc:
coq AT pauillac.inria.fr
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
mayero AT bouzy.inria.fr
Content-Length: 1523
Lines: 76
Status: RO
Bonjour,
Je me trompe peut-etre, mais sur l'exemple envoye, je crois que le Pb
n'a rien a voir avec :>, mais juste avec le double emploi de
l'identificateur cond2 comme champ des record Personne2 et Personne3:
>
> Section Probleme.
>
> Variable String: Type.
>
> Variable Adulte: nat->Prop.
>
> Record Personne: Type := mkPersonne{
> age:> nat;
> nom: String
> }.
>
> (* OK *)
> Record Personne1: Type := mkPersonne1{
> age1:> nat;
> cond1: (gt age1 O)
> }.
>
> (* OK *)
> Record Personne2: Type := mkPersonne2{
> age2:> nat;
> cond2: (Adulte age2)
> }.
>
> (* OK *)
> Variable Adulte3: String->Prop.
>
> Record Personne3: Type := mkPersonne3{
> age3:> String;
> cond2: (Adulte3 age3)
> }.
>
Sur une version interne, plus actuelle, le message d'erreur est tres
clair:
Personne3_rec is defined
Personne3_rect is defined
Personne3 is defined
Warning: cond2 cannot be defined. Clash with previous constant cond2
Si je fais:
Record Personne3: Type := mkPersonne3{
age3:> String;
cond3: (Adulte3 age3)
}.
Il me semble que tout va bien.
Ou n'ai-je pas compris la question ?
Amicalement,
Benjamin Werner
----------------------------------------------------------------------------
Projet Coq
INRIA-Rocquencourt, BP 105, F-78 153 LE CHESNAY cedex, FRANCE
E-mail:
Benjamin.Werner AT inria.fr
Phone: +33 (1) 39 63 52 31
Mobile: +33 (6) 11 82 55 02
Fax: +33 (1) 39 63 56 84
http://pauillac.inria.fr/~werner
-----------------------------------------------------------------------------
From werner Fri Dec 12 13:07:13 1997
ved: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id PAA28717
for
<coq-club-redistribution AT pauillac.inria.fr>;
Fri, 5 Dec 1997 15:01:41 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id PAA01323 for
coq-club-redistribution@pauillac;
Fri, 5 Dec 1997 15:01:40 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id OAA01302 for
<mayero AT bouzy.inria.fr>;
Fri, 5 Dec 1997 14:05:50 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id OAA27206;
Fri, 5 Dec 1997 14:05:49 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id OAA26867; Fri, 5 Dec 1997
14:05:42 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id OAA27198;
Fri, 5 Dec 1997 14:05:40 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id OAA26860 for
<coq AT pauillac.inria.fr>;
Fri, 5 Dec 1997 14:05:39 +0100 (MET)
Received: from blaise.irit.fr (blaise.irit.fr [141.115.64.187])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id OAA27194
for
<coq AT pauillac.inria.fr>;
Fri, 5 Dec 1997 14:05:38 +0100 (MET)
Received: (from
filali@localhost)
by blaise.irit.fr (8.8.8/8.8.8) id OAA12515;
Fri, 5 Dec 1997 14:05:33 +0100 (MET)
Date: Fri, 5 Dec 1997 14:05:33 +0100 (MET)
From: Mamoun FILALI-AMINE
<filali AT irit.fr>
Message-Id:
<199712051305.OAA12515 AT blaise.irit.fr>
To:
Benjamin.Werner AT inria.fr
Subject: Re: probleme avec :>
Cc:
coq AT pauillac.inria.fr
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-MD5: 35bmWLCoR5M7aGBeew9/XA==
Sender:
mayero AT bouzy.inria.fr
Content-Length: 1045
Lines: 43
Status: RO
Les traces donnees pour tacer le pb rencontre avaient
ete recueillies lors de sessions coq diiferentes (1 par exemple).
Il ne pouvait donc s'agir de double emploi d'identificateur.
Pour etre plus precis voici la trace de la session coq ou
le pb est rencontre:
blaise% coqtop
Welcome to Coq V6.1 (Dec 24 1996)
Coq < Section Probleme.
Coq < Variable String: Type.
String is assumed
Coq < Variable Adulte: nat->Prop.
Adulte is assumed
Coq < Variable Adulte3: String->Prop.
Adulte3 is assumed
Coq < Coq < Record Personne3: Type := mkPersonne3{
age3:> String;
cond2: (Adulte3 age3)
}.
Coq < Coq < Coq < Personne3_ind is defined
Personne3_rec is defined
Personne3_rect is defined
Personne3 is defined
System Error Match in file class.ml from char #6617 to #6942.
If this is in user-written tactic code, then it needs to be modified.
If it is in system code then this needs to be reported.
during command
Structure Personne3 : Type := mkPersonne3{
age3 :> String;
cond2 : (Adulte3 age3) }.
Coq <
Amicalement.
Mamoun Filali
From werner Fri Dec 12 13:07:13 1997
ved: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA28116
for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 9 Dec 1997 18:52:07 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id SAA16286 for
coq-club-redistribution@pauillac;
Tue, 9 Dec 1997 18:52:07 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id SAA16232 for
<mayero AT bouzy.inria.fr>;
Tue, 9 Dec 1997 18:23:03 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA27267;
Tue, 9 Dec 1997 18:23:01 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA21909; Tue, 9 Dec 1997
18:22:57 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA27259;
Tue, 9 Dec 1997 18:22:55 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA21906 for
<coq-club AT pauillac.inria.fr>;
Tue, 9 Dec 1997 18:22:53 +0100 (MET)
Received: from batman.labri.u-bordeaux.fr (batman.labri.u-bordeaux.fr
[147.210.8.5])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA27255
for
<coq-club AT pauillac.inria.fr>;
Tue, 9 Dec 1997 18:22:52 +0100 (MET)
Received: (from
casteran@localhost)
by batman.labri.u-bordeaux.fr (8.8.7/8.8.7) id SAA18999
for
coq-club AT pauillac.inria.fr;
Tue, 9 Dec 1997 18:23:19 +0100 (MET)
Date: Tue, 9 Dec 1997 18:23:19 +0100 (MET)
From: Pierre CASTERAN
<Pierre.Casteran AT labri.u-bordeaux.fr>
Message-Id:
<199712091723.SAA18999 AT batman.labri.u-bordeaux.fr>
To:
coq-club AT pauillac.inria.fr
Subject: help needed
Sender:
mayero AT bouzy.inria.fr
Content-Length: 155
Lines: 9
Status: RO
Hello,
I'm looking for the proof of inconsitency of a type system
with Type:Type
May anybody send me (a pointer to) it ?
Thank you in advance,
Pierre
From werner Fri Dec 12 13:07:13 1997
ved: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA28233
for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 9 Dec 1997 18:55:12 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id SAA16299 for
coq-club-redistribution@pauillac;
Tue, 9 Dec 1997 18:55:12 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id SAA16247 for
<mayero AT bouzy.inria.fr>;
Tue, 9 Dec 1997 18:30:52 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA27449;
Tue, 9 Dec 1997 18:30:49 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA22058; Tue, 9 Dec 1997
18:30:45 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA27444;
Tue, 9 Dec 1997 18:30:43 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA22054 for
<coq-club AT pauillac.inria.fr>;
Tue, 9 Dec 1997 18:30:43 +0100 (MET)
Received: from loupiac.inria.fr
(gimenez AT loupiac.inria.fr
[128.93.11.82])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA27440
for
<coq-club AT pauillac.inria.fr>;
Tue, 9 Dec 1997 18:30:42 +0100 (MET)
Received: (from
gimenez@localhost)
by loupiac.inria.fr (8.8.5/8.8.5) id SAA09643;
Tue, 9 Dec 1997 18:31:02 +0100
Date: Tue, 9 Dec 1997 18:31:02 +0100
Message-Id:
<199712091731.SAA09643 AT loupiac.inria.fr>
From: Eduardo Gimenez
<Eduardo.Gimenez AT inria.fr>
To:
coq-club AT pauillac.inria.fr
CC:
Pierre.Casteran AT labri.u-bordeaux.fr
Subject: Re:help needed
Sender:
mayero AT bouzy.inria.fr
Content-Length: 421
Lines: 17
Status: RO
Hello Pierre,
Here there is (one) possible reference :
@INPROCEEDINGS{TC86,
AUTHOR = {Th. Coquand},
ADDRESS = {Cambridge, MA},
BOOKTITLE = {Symposium on Logic in Computer Science},
PUBLISHER = {IEEE Computer Society Press},
TITLE = {An Analysis of Girard's Paradox},
YEAR = {1986}
}
Cheers,
Eduardo.
From werner Fri Dec 12 13:07:13 1997
ved: from bouzy.inria.fr (bouzy.inria.fr [128.93.8.80])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA28294
for
<coq-club-redistribution AT pauillac.inria.fr>;
Tue, 9 Dec 1997 18:55:50 +0100 (MET)
Received: (from
mayero@localhost)
by bouzy.inria.fr (8.6.10/8.6.6) id SAA16305 for
coq-club-redistribution@pauillac;
Tue, 9 Dec 1997 18:55:50 +0100
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
bouzy.inria.fr (8.6.10/8.6.6) with ESMTP id SAA16261 for
<mayero AT bouzy.inria.fr>;
Tue, 9 Dec 1997 18:33:13 +0100
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA27517;
Tue, 9 Dec 1997 18:33:10 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA22149; Tue, 9 Dec 1997
18:33:06 +0100 (MET)
Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA27504;
Tue, 9 Dec 1997 18:33:04 +0100 (MET)
Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by
pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id SAA22145 for
<coq-club AT pauillac.inria.fr>;
Tue, 9 Dec 1997 18:33:04 +0100 (MET)
Received: from jurancon.inria.fr (jurancon.inria.fr [128.93.8.74])
by concorde.inria.fr (8.8.7/8.8.5) with ESMTP id SAA27500;
Tue, 9 Dec 1997 18:33:03 +0100 (MET)
Received: (from
delahaye@localhost)
by jurancon.inria.fr (8.7.6/8.7.3) id SAA27707; Tue, 9 Dec 1997 18:33:03
+0100 (MET)
From: David Delahaye
<delahaye AT jurancon.inria.fr>
Message-Id:
<199712091733.SAA27707 AT jurancon.inria.fr>
Subject: Re: help needed
To:
Pierre.Casteran AT labri.u-bordeaux.fr
(Pierre CASTERAN)
Date: Tue, 9 Dec 1997 18:33:03 +0100 (MET)
Cc:
coq-club AT pauillac.inria.fr
In-Reply-To:
<199712091723.SAA18999 AT batman.labri.u-bordeaux.fr>
from "Pierre CASTERAN" at Dec 9, 97 06:23:19 pm
X-Mailer: ELM [version 2.4 PL24 ME8]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender:
mayero AT bouzy.inria.fr
Content-Length: 458
Lines: 24
Status: RO
Hello,
>
> Hello,
> I'm looking for the proof of inconsitency of a type system
> with Type:Type
>
> May anybody send me (a pointer to) it ?
>
> Thank you in advance,
> Pierre
>
I think you can find this proof (Girard's paradox) in:
Jean Yves Girard, Interpretation Fonctionnelle et Elimination des coupures
dans
l'arithmetique d'ordre superieur. PhD thesis 1972.
I don't know if it exists other references...
Regards.
David.
- Problems and suggestions for Coq, werner
Archive powered by MhonArc 2.6.16.