coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Tadeusz Litak <tadeusz.litak AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Beginner question: 0 - 1 = 0?
- Date: Mon, 24 Jul 2023 16:59:16 +0200
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=tadeusz.litak AT gmail.com; spf=Pass smtp.mailfrom=tadeusz.litak AT gmail.com; spf=None smtp.helo=postmaster AT mail-ej1-f49.google.com
- Ironport-data: A9a23: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
- Ironport-hdrordr: A9a23:RCDUp6hBfpQpJbmUUqZvtqkaoHBQXgMji2hC6mlwRA09TyXqrb HWoB19726KtN9xYgBdpTnkAsO9qBznhPxICOUqTM2ftUzdyRaVxeJZnO7fKl/bak7DH4dmvM 8KE5SWSueAdmSS6/yKhzVQe+xA/DDtytHPuQ6x9QYUcegnUdAF0+67MGqm+49NKTWuyaBXKH NU3KR6mwY=
- Ironport-phdr: A9a23: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 w==
- Ironport-sdr: 64be91c8_mK4RMLzI6uA6FMxv30kUTM898zH+Ti2oH3OmyMDMIOfAQtH aXyfQkeBnSaljLux6AYFkyC7alu7vY+VMSzThvA==
On top of what others have said, there are numerous way of handling partial functions in Coq. An obvious way is to use the Option (or "Maybe") monad, familiar to all functional programmers, but there are other solutions too. Here is a more exhaustive discussion:
http://adam.chlipala.net/cpdt/html/Cpdt.Subset.html
Best,
t.
On 23/7/23 5:56 PM, Sylvain Boulmé wrote:
More generally, turning a "usual" partial function into a total function only allows some "unusual" theorems such that "0 - a = 0", but does not invalidate any of the partial function (By definition, such a theorem is valid for any total interpretation of the partial function).
In many cases, these "unsual" theorems simplify the proofs. At least, because it is simpler to handle total functions than partial ones.
For example, consider the proof of "(c+a) - (c+b) = a - b". With a partial
function, you should prove instead
"b <= a -> (c+a) - (c+b) = a - b"
and thus, in an induction proof, you would have to prove the "b <= a " hypothesis of the induction hypothesis. This is not necessary on the total function.
We only should take care when interpreting theorems about the total function: they may not directly apply to the partial one. If needed, we may still introduce a definition for representing the "partial function" (there are various techniques for that, the most general one is probably to introduce an inductive relation representing the graph of the partial function) and proves a correspondence theorem between the "partial function" and the total one (as skteched for minus by Dominique below).
Best,
Sylvain.
Le 23/07/2023 à 17:04, Dominique Larchey-Wendling a écrit :
This is from the definition of "minus" in Coq with infix notation "x - y".
"Print minus" will give you the fixpoint definition.
If a <= b then a-b = 0. You can prove this.
You just have to be aware that this is not the usual subtraction
operation which would be a partial operation on natural numbers
(positive integers), ie a-b should be undefined when a < b.
a - b has the "usual" meaning if (and only if) a >= b.
This is enough to get (a + b) - b = a for instance
But (a - b) + b is not equal to a, unless a >= b.
Best,
Dominique
----- Mail original -----
De: "Frank Schwidom" <schwidom AT gmx.net>
À: "coq-club" <coq-club AT inria.fr>
Envoyé: Dimanche 23 Juillet 2023 16:53:35
Objet: [Coq-Club] Beginner question: 0 - 1 = 0?
Hi,
what puzzles me is that I can obviously get a wromg result from the view of
the
natural understanding:
Coq < Compute 0 - 1.
= 0
: nat
How can it be clear that this makes no problems in proofs?
Regards,
Frank
- [Coq-Club] Beginner question: 0 - 1 = 0?, Frank Schwidom, 07/23/2023
- Re: [Coq-Club] Beginner question: 0 - 1 = 0?, Dominique Larchey-Wendling, 07/23/2023
- Re: [Coq-Club] Beginner question: 0 - 1 = 0?, Sylvain Boulmé, 07/23/2023
- Re: [Coq-Club] Beginner question: 0 - 1 = 0?, Ana Borges, 07/23/2023
- Re: [Coq-Club] Beginner question: 0 - 1 = 0?, Castéran Pierre, 07/23/2023
- Re: [Coq-Club] Beginner question: 0 - 1 = 0?, Qinshi Wang, 07/24/2023
- Re: [Coq-Club] Beginner question: 0 - 1 = 0?, Hugo Herbelin, 07/26/2023
- Re: [Coq-Club] Beginner question: 0 - 1 = 0?, Qinshi Wang, 07/24/2023
- Re: [Coq-Club] Beginner question: 0 - 1 = 0?, Castéran Pierre, 07/23/2023
- Re: [Coq-Club] Beginner question: 0 - 1 = 0?, Tadeusz Litak, 07/24/2023
- Re: [Coq-Club] Beginner question: 0 - 1 = 0?, Ana Borges, 07/23/2023
- Re: [Coq-Club] Beginner question: 0 - 1 = 0?, Sylvain Boulmé, 07/23/2023
- Re: [Coq-Club] Beginner question: 0 - 1 = 0?, Dominique Larchey-Wendling, 07/23/2023
Archive powered by MHonArc 2.6.19+.