Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Cascading tactics

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Cascading tactics


Chronological Thread 
  • From: Pierre Courtieu <pierre.courtieu AT gmail.com>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Cascading tactics
  • Date: Sat, 01 Apr 2017 12:22:28 +0000
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=pierre.courtieu AT gmail.com; spf=Pass smtp.mailfrom=pierre.courtieu AT gmail.com; spf=None smtp.helo=postmaster AT mail-wm0-f44.google.com
  • Ironport-phdr: 9a23:tCttWBLUSMurHhKzwNmcpTZWNBhigK39O0sv0rFitYgRL/vxwZ3uMQTl6Ol3ixeRBMOAuq4C07KempujcFRI2YyGvnEGfc4EfD4+ouJSoTYdBtWYA1bwNv/gYn9yNs1DUFh44yPzahANS47xaFLIv3K98yMZFAnhOgppPOT1HZPZg9iq2+yo9ZDeZwpFiCChbb9uMR67sRjfus4KjIV4N60/0AHJonxGe+RXwWNnO1eelAvi68mz4ZBu7T1et+ou+MBcX6r6eb84TaFDAzQ9L281/szrugLdQgaJ+3ART38ZkhtMAwjC8RH6QpL8uTb0u+ZhxCWXO9D9QLYpUjqg8qhrUgflhygJNzE78G/ZhM9+gr9Frh29vBFw2ZLYbZuPOfZiYq/Qf9UXTndBUMZLUCxBB5uxYZEOD+UfJ+ZYtZfyrEYQoBu5GAmsHv/vyj5WiX/rwKY31PwhEQDY0ww6BdIBrm7Yo8nyNKcPS+C10KjIwiveb/5N1jf97ZLHchElof2WQb1wds/RxFApGgjYgFuQronlMCmU1uQLq2Wb7uxgVfiui2E9sQ1xrCKvy8ExgYfKnoIY0lLJ+CpjzIooO9G1SFR3bN26HJdKuCyXOI17Sd44TW5yoiY10LgGtIa7fCcUzJQnwAbSa/mdfIiJ5hLvTeiQITJkiH58drKyiBm//VKvyu37Ucm031JKoTRfntbQsXAN0gTf6smBSvRj4keswTSC2g/J5u1ZP0w5lbDXJp0/zrIqmZcevlzPHirsl0X3iK+WeF8k+u+t6+n/erXmp4GTN5Vuig7gKKghhsu/AfkiMggSXmiU5/m82abs/U38WrpKj/k2nrPFv5DdIMQXvrS5DBNN0oY/9xa/CC+r38gfnXkeNV5KZBaHj5XyNFzVO/D5DfK/g0y2nztxxvDGOKfhApTXIXTZnrfhZ+U110kJww0qiNtb+ph8C7cbIfu1VFWimsbfC0oBMgGu2euvI9JgzJ8fVH/HVreYPbnIvBmD4f81P+iBeacavT/8L74u4Pu43ixxokMUYaT8hchfU3u/BPkze0g=

What about
repeat progress type_check_once.
?

Best
P

Le sam. 1 avr. 2017 à 01:38, Jonathan Leivent <jonikelee AT gmail.com> a écrit :


On 03/31/2017 05:59 PM, Robert Rand wrote:
> Hi all,
>
> I'm trying to use Ltac to apply a tactic called type_check_once to all
> goals until no further progress can be made. Often this requires a cascade:
> type_check_once might instantiate a existential variable in goal #6 which
> then allows us to solve goal #3. No new goals are generated in this process.
>
> The problem is that the tactics seem to focus on a single goal, and does
> not cascade properly.
>
> In Coq 8.5 the following code worked but it fails in 8.6 (that is, we now
> have to call "all: type_check" multiple times in a row to solve all goals).
>
> Ltac type_check := let n := numgoals in do n type_check_once.
>
> (I've also tried using [> type_check_once..] in place of type_check, but
> this doesn't seem to buy us anything.)
>
> The following two approaches seemed to show promise, but both fail in some
> cases, for reasons unclear to me:
>
> Ltac type_check_num :=
>    let pre := numgoals in
>    type_check_once;
>    let post := numgoals in
>    tryif (guard post < pre) then type_check_num else idtac.
>
> Ltac type_check_circ :=
>    intros; compute;
>    try (progress [> type_check_once ..]; type_check_circ)
>
> Any suggestions?

Robert,

Have you tried:

Ltac type_check := let n := numgoals in do n repeat type_check_once.

You also might be interested in the lengthy discussion in
https://coq.inria.fr/bugs/show_bug.cgi?id=3878

-- Jonathan




Archive powered by MHonArc 2.6.18.

Top of Page