coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Adam Chlipala <adam AT chlipala.net>
- To: Aaron Bohannon <bohannon AT cis.upenn.edu>
- Cc: Coq Club <coq-club AT inria.fr>
- Subject: Re: [Coq-Club] recursive Ltac definitions
- Date: Wed, 20 Oct 2010 13:10:55 -0400
Aaron Bohannon wrote:
Why do the first four definitions succeed while the fifth one fails?
(I have a very hard time imagining I'm the first to discover this...)
Ltac t := t.
Ltac t := t t.
Ltac t u := t u.
Ltac t u := t t u.
Ltac t u := t (t u).
Error: The reference t was not found in the current environment.
Two main parsing non-terminals are used in Ltac: "ltac" (tactic code) and "constr" (Gallina code). By default, the body of a tactic definition is "ltac," while the arguments to tactic functions are "constr." You can usually switch non-terminals using the notation demonstrated below:
Ltac t u := t ltac:(t u).
I'm not sure if this will work dynamically. I usually [let]-bind tactic calls whose results will be passed to other tactics.
- [Coq-Club] recursive Ltac definitions, Aaron Bohannon
- [Coq-Club] Re: recursive Ltac definitions,
Aaron Bohannon
- [Coq-Club] Equational Reasoning over streams,
Herman Geuvers
- Re: [Coq-Club] Equational Reasoning over streams,
Thorsten Altenkirch
- Re: [Coq-Club] Equational Reasoning over streams,
David Leduc
- Re: [Coq-Club] Equational Reasoning over streams,
Herman Geuvers
- Re: [Coq-Club] Equational Reasoning over streams, AUGER Cedric
- Re: [Coq-Club] Equational Reasoning over streams,
Keiko Nakata
- Re: [Coq-Club] Equational Reasoning over streams, David Leduc
- Re: [Coq-Club] Equational Reasoning over streams,
Herman Geuvers
- Re: [Coq-Club] Equational Reasoning over streams,
David Leduc
- Re: [Coq-Club] Equational Reasoning over streams,
Thorsten Altenkirch
- [Coq-Club] Equational Reasoning over streams,
Herman Geuvers
- Re: [Coq-Club] recursive Ltac definitions, Adam Chlipala
- [Coq-Club] Re: recursive Ltac definitions,
Aaron Bohannon
Archive powered by MhonArc 2.6.16.