-
Notifications
You must be signed in to change notification settings - Fork 199
Description
Over the next few years, it will be desirable to slowly shift to writing new automation in one of the successor tactic languages to Ltac, such as Ltac2 or Elpi. As the paper motivating Ltac2 points out, Ltac is slow and relies on many heuristics to "automagically" do the right thing for the user, while the newer tactic languages are faster and more composable. In addition, my impression is that the Elpi API is fairly comprehensive and the Ltac2 API is steadily growing while the Ltac API is static, so Ltac2 should be more expressive than Ltac in the long run.
There are some related questions:
- in what language should new tactics be written? Personally I like the Elpi language but Ltac2 is the more conservative approach, both in terms of not requiring additional dependencies and being similar to Ltac. (Other major libraries like math-comp use Elpi, so I think it's an acceptable dependency.)
- what are the downsides and how severe are they? One question is stdlib dependency: I will defer discussion of Ltac2 until Rocq 9 is on opam and I can play with it, it has some problems in Coq 8.*. Elpi afaik does not depend on anything in the stdlib but I will double check. (Cyril Cohen stated that HoTT-compatibility is one goal for the Trocq project which uses both Elpi and this library, so others have interest in keeping Elpi separate from the stdlib)
I consider Ltac2 to be not well documented. There are a few tutorials online. If we wanted to use this language for automation I would personally contribute some tutorials for the Coq-HoTT wiki to explain the usage of Ltac2. Elpi is well documented imo.