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: Jonathan Leivent <jonikelee AT gmail.com>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Cascading tactics
  • Date: Fri, 31 Mar 2017 19:37:47 -0400
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=jonikelee AT gmail.com; spf=Pass smtp.mailfrom=jonikelee AT gmail.com; spf=None smtp.helo=postmaster AT mail-qt0-f174.google.com
  • Ironport-phdr: 9a23:IlaJ/haUkwQVVAdhNuLm1WT/LSx+4OfEezUN459isYplN5qZoMW/bnLW6fgltlLVR4KTs6sC0LuK9fi4EUU7or+5+EgYd5JNUxJXwe43pCcHRPC/NEvgMfTxZDY7FskRHHVs/nW8LFQHUJ2mPw6arXK99yMdFQviPgRpOOv1BpTSj8Oq3Oyu5pHfeQtFiT6ybL9oMBm6sRjau9ULj4dlNqs/0AbCrGFSe+RRy2NoJFaTkAj568yt4pNt8Dletuw4+cJYXqr0Y6o3TbpDDDQ7KG81/9HktQPCTQSU+HQRVHgdnwdSDAjE6BH6WYrxsjf/u+Fg1iSWIdH6QLYpUjul86pmRh3lhSkeOzIl/2zcl8h8gaJHrB6koRF03ozab5yPNPdmY63TY90aS2pCUMhfWSNODYGzYJcAAecaIeZVrZPwq0cSoRawBwShAv7kxD9Shn/x2K03y+AvEQbA3AM6A9IOsG7brNPoP6kUT++1zbfIwivFb/NKxDzw74rIchcnofGNXrJ/b87RxlcxGA7egVWQrJbqPzKR1ugXr2eb6O9gWPuphmU6pQ9xpT2vyd0tionPno8Vy1bE9T94wIkvP9G4RlR7bNi5G5VTryGXL5V6Tt8mTm1yuys3yqcKtYCmcCUL0pgr2hzSZvOff4SW7R/vTuecLSpiiH9mdr+znRa//Eymx+bhTMe7ykxKoTBAktTUtnACyRjT6s+fR/t45Eih2DKP2xnK6uFYPUw4jKTbJ4Mjz7M/jJYTvkPDHij5mEXykqCabFkr+u+t6+j/Y7XmoIGTN5Nshw3gLqgjntazDOc4PwQUQWSX5OWx2Kf+8UD7T7hGlvg2nbPYsJDeK8QbvKm5AwpN34Yh7Ba/CTam0NcGknkDMl1KZgmKj4fsO17UIfD4Ce2zjEirkDdu3/zGJKHuAo3RLnjfl7fsZapy60lFyAYq0d9f449UBaoaLfLoWk7xscTYAQUjPwy1xebnEtR92ZkEVWKBGK/KeJ/V5FSP/6ckJ/SGTI4Tojf0bfY/tND0inpsu1gbdLWp1J1fTH25APlgPw3NY33qg9QMFWoHlgU7Re3uzlaFVGgAND6JQ6sg62RjW8qdBoDZS9Xw2LE=



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