coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Favonia <favonia AT umn.edu>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] How to organize this tricky proof?
- Date: Fri, 22 Mar 2019 09:29:47 -0500
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=favonia AT umn.edu; spf=Pass smtp.mailfrom=kbh AT umn.edu; spf=None smtp.helo=postmaster AT mta-p6.oit.umn.edu
- Ironport-phdr: 9a23:o5LLbBZejlhKsjVvWgEKJYb/LSx+4OfEezUN459isYplN5qZocuybnLW6fgltlLVR4KTs6sC17OO9f+5EjJbqb+681k6OKRWUBEEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i764jEdAAjwOhRoLerpBIHSk9631+ev8JHPfglEnjWwba5uIBmsrwjdq8YajIpsJ60s1hbHv3xEdvhMy2h1P1yThRH85smx/J5n7Stdvu8q+tBDX6vnYak2VKRUAzs6PW874s3rrgTDQhCU5nQASGUWkwFHDBbD4RrnQ5r+qCr6tu562CmHIc37SK0/VDq+46t3ThLjlSEKPCM7/m7KkMx9lK1UoByjqBJ/zYDaY5ybOuRica7GZ9wWWXBMU9xNWyBdAI6xaZYEAeobPeZfqonwv1sAogGgBQmrAuPvyyVHjWLx0K00yeshDwbG3AohH90Uq3nUsdD1NKEIXe+r0abI0CzOYvVL0jn+8IjFag0trP+DUL5qcsfcxlMjGx7Bg1iRs4DpIS+Z2+UVv2SF8+ZtUfijhm0npg1rvDSj2sQhhpPXio4J1lzJ8zhyzpwvKt2iUkF7ZMapEJtOuCGeMIt7WsYiQ31ytyoj0r0LuIS3fC8LyJQ73RLfdvmHc46S7h39SemRPC90hHNjeL2hmxa/6VWsx+PzW8Wu01tHoTBJnsTIu30MzRDf9NSLR/pl8kekwzmP1gTT6u9eIUAzkKrWM50hzaUwlpcIrETDGyn2lF/og6CLa0Uo4vKo5Pj/YrX6up+cMJd5hR35MqQ3g8CwHeA4MhUVUGWA4uS91Ljj/VXjT7lQj/02lLPZsJHAKsgBqK65GVwd7oF24BGmSjyizd4wnH8dLVsDdgjUoZLuPgTgKe7/C/a2ywCimSlswfHPFqDkBNPAImWVw+SpRqp090MJkFl79ttY/Z8BUuhQcsK2YVf4sZnjNjF8NgW1x+j9D9AshJ4bXySCDrLLafqO42/N3fomJqy3XKFQoCz0eqo44viogHMkywdEIPuZmKAPYXX9JcxIZkWUZX222oUEDW5PplR4S+32zkCHV3hea2vgB68=
You may break the mutuality by defining a proposition `PQ t` intuitively meaning `forall (smaller t' that would be used in the proof), P t' -> Q t'` and proving `bar' : forall (t : T), PQ t -> (P t -> R t)` instead. Things may be further simplified through minor adjustments depending on what `P` and `Q` actually are.
Best,
Favonia
they/them/theirs
On Thu, Mar 21, 2019 at 3:51 PM Jason -Zhong Sheng- Hu <fdhzs2010 AT hotmail.com> wrote:
Hi,
consider a type `T` and an inductively defined proposition `P : T -> Prop`. theorem `foo : forall (t : T), P t -> Q t` is proved by doing an induction on `t` and then `P t`.
however, inside of `foo`, in each case of `t`, I will need another theorem `bar : forall (t : T), P t -> R t`, which is proved by induction on `P t` and some cases require `foo`.
since `bar` always operate on smaller `P t` instances, so these two theorems are true, but just mutually dependent.
my problem is, I am not sure how to organize this proof to make it shorter. clearly, I can prove `bar` for each particular `t` but it pointlessly adds so much more identical proofs. On the other hand, `foo` and `bar` are not structurally mutually recursive either, because `foo` decreases on `T` while `bar` decreases on `P t`, which stops me from using Fixpoint.
Is there any way to organize the proof, so that I only need to prove `foo` and `bar` once?
- [Coq-Club] How to organize this tricky proof?, Jason -Zhong Sheng- Hu, 03/21/2019
- Re: [Coq-Club] How to organize this tricky proof?, Dominique Larchey-Wendling, 03/21/2019
- Re: [Coq-Club] How to organize this tricky proof?, Jason -Zhong Sheng- Hu, 03/21/2019
- Re: [Coq-Club] How to organize this tricky proof?, Xavier Leroy, 03/22/2019
- Re: [Coq-Club] How to organize this tricky proof?, Jason -Zhong Sheng- Hu, 03/22/2019
- Re: [Coq-Club] How to organize this tricky proof?, Favonia, 03/22/2019
- Re: [Coq-Club] How to organize this tricky proof?, Dominique Larchey-Wendling, 03/21/2019
Archive powered by MHonArc 2.6.18.