coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Timothy Carstens <intoverflow AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] "Lean is like Coq but better"
- Date: Thu, 2 Jan 2020 18:14:30 -0700
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=intoverflow AT gmail.com; spf=Pass smtp.mailfrom=intoverflow AT gmail.com; spf=None smtp.helo=postmaster AT mail-oi1-f193.google.com
- Ironport-phdr: 9a23:7p3mTBUDvOly/Aei3bBAGK8wNgrV8LGtZVwlr6E/grcLSJyIuqrYbBeAt8tkgFKBZ4jH8fUM07OQ7/m7HzZcu93b7zgrS99lb1c9k8IYnggtUoauKHbQC7rUVRE8B9lIT1R//nu2YgB/Ecf6YEDO8DXptWZBUhrwOhBoKevrB4Xck9q41/yo+53Ufg5EmCexbal9IRmrowjdrNcajIR8Jqo+1BfEoGZDdvhLy29vOV+dhQv36N2q/J5k/SRQuvYh+NBFXK7nYak2TqFWASo/PWwt68LlqRfMTQ2U5nsBSWoWiQZHAxLE7B7hQJj8tDbxu/dn1ymbOc32Sq00WSin4qx2RhLklDsLOjgk+27Ql8JwkblboAq/qBNj347aboaVNP9kcaPce9MRWG5NU8lVWiBEBI63cokBAPcbPetAs4bzqFsAohSjCweiB+3vxD1HiGHx06AhyessEwTG0RYgH94SsnnZqsj+OqcIUeCyyanF1SvNb/JT2Tf69IjIchAgquySUL1qa8rR0lUvGB3DjlWLtIfoODKV1uIRs2ic8epvS/ivi2AjqwF2rDmi3cgsiozTiYIUzlDI7zl2wIEwJdChTkNwfNCqEJxVty6ANot2RNsvQ25puCYmyr0GpIW0cDILyJQgwRPUdv+Jc5CQ7x79SOqcJS10iXFldb6lmhq/8EqtxvfhWsSw3ltGtitIn9nWunwQyhDe5NKLRuVj8kqlwzqDyhzf5+FCLEspj6TUMYQhzaQ1lpcLsUTMACv2mELuga+TbEok++yo5/3gYrXnu5OQLoF0hhz6P6kggMC/DuM4Mg8BX2if5+uwzqHs/Ur8QLlSj/02lLfWsIzCKMgFuqK0BxVZ34Uj5hqlEjur0dYVkWMaIF9Bdh+Ll43pNEvPIPD8A/e/mVOskDJzyvDHOL3hHpLNLmbdn7f7c7Z970lcyQQowNBQ4pJbELABIPbpVkDts9zYCwc1MxaozOb/FNV9yoQeVHqTDa+eKaPeqEOH5uYyI+aXf4IVozb8K/095/H0l3M5mFkdfbOo3ZQNcny4EO5mcA2lZi/nhc5EGmMXtCI/SvbrgRuMS219fXG3Cp494zYnCJPuJo7ZXZyghqfJiCa9AppIa3pIDleTOXjtfoSAHfwLbXTBcYdajjUYWO35GMca3ha0uVqmmuM7fNqRwTURsNfY7PYw//fazEhg+jl9DsDb2GaIHTktwzE4AgQu1aU6mnRTj1eO1a8i3a5dHN1XovRIC0I0bM+HieN9DN/2V0TKedLbEA/3EOXjOik4S5cK+/FLZk98H9u4iRWahnilBrYUk/qAA5lmq68=
To be fair to the state of the art, Ltac has clearly demonstrated its viability as a tactics framework. Indeed, this mailing list has many subscribers whose productivity in Ltac is legendary.
Anecdotally, as an ordinary user coming at Coq from the outside, Ltac was the hardest part to learn. The basic idea is simple enough to understand, but going from that to scalable, maintainable, readable frameworks is a skill unto itself. I don’t know about others on this list, but I find Ltac definitions incredibly hard to read when browsing other people’s code.
Against a backdrop of “some people are stellar with Ltac” and “some find it inhibiting,” long term the big question is: what changes could be made to yield improvements in productivity writ large?
A tactics system that’s built to support proof DSLs doesn’t seem like a crazy idea to me - it seems more like a natural generalization of the state of the art. Ltac is already a monad (morally speaking), why not make that explicit? Monad transformers are super handy things, why not explore their uses here?
Will those ideas pan out? Real world, the answer is probably going to be “yes for some teams, no for others,” same as when we ask whether language X is the “best language” (or more broadly, technology X). Hoping for one environment/approach to rule them all is something I’m sure we all do, but historically computing doesn’t usually go that way. We’ll see!
Sent from my iPhone
On Jan 2, 2020, at 5:45 PM, Beta Ziliani <beta AT mpi-sws.org> wrote:
Talking about tactic languages, I agree with Adam that proof engineering is a young field, and we are still finding what are the good abstractions. But Ltac is *very* limited to explore these, and this limitation is what got me into the Mtac projects: I wanted to have good programming practices in my proofs, and Ltac is clearly not up to the task. Lean's way, if it is not the ideal, at least is pointing in the right direction. Same or different language, that's not really important. What matters is what you can do with it.My 1ct.BetaOn Thu, Jan 2, 2020 at 9:16 PM Talia Ringer <tringer AT cs.washington.edu> wrote:Hi, the UW user study mentioned earlier is here: http://tlringer.github.io/pdf/analytics.pdfIt's a start (I say as the first author), but it will not answer every question you have. The infrastructure and data are public. We really, really hope the lessons we learned and the data and infrastructure will help other people with future user studies. Our main goals were to encourage user studies in the Coq community, and figure out some ways to improve automation.We didn't do this study for Lean, but hopefully the lessons for how to conduct these user studies generalize enough to help people outside of just the Coq community. Within Coq, unsurprisingly, some of our users wrote a lot of custom tactics, while some wrote few or none. This is not in the paper, but the data should show this, though you will need to write an analysis to crawl the data and figure out how often those users defined new tactics. More interesting might be how often users messed up while defining those tactics, how much time they spent tweaking tactics, and so on.A controlled study across proof assistants for tactic development would be very challenging given the small number of users in our community and the difficulty of controlling for other variables. But I hope to see people at least try this kind of thing.Anyways, if you care about any of this, please come to our CPP talk. A lot of what I want is to start a community discussion on how we can run better user studies.---With respect to reducing the number of languages: I'm also not sure it's a win, but I do think that one thing Kevin is getting at that is nice is being able to write new commands without using the plugin system or modifying Coq itself. And believe me, I am probably the most enthusiast plugin developer in the community. But when you build a plugin, even for something simple and really universal like the use cases Kevin mentioned, it is very difficult to get users.The particular commands Kevin mentioned maybe aren't necessary in Coq, but I've had people ask me to implement functionality before that I already had implemented and exposed as a Coq command in one of my plugins. Getting developers to use new tools is always hard. Getting developers to use libraries is less hard. It would be nice to be able to write commands directly inside of Coq once in a while, at least for relatively simple things. (The plugin system should still exist alongside that.)On Thu, Jan 2, 2020, 3:33 PM Adam Chlipala <adamc AT csail.mit.edu> wrote:On 1/2/20 6:00 PM, Kevin Buzzard wrote:
It's not clear to me that reducing the number of languages is a clear win, when we often design new languages to better suit different use cases.On Thu, 2 Jan 2020 at 21:55, Adam Chlipala <adamc AT csail.mit.edu> wrote:
I'm not sure I understand this point. Ltac works well for most kinds of
tactic programming. At least, I don't see how it could be held not to
meet the binary requirement of "a rich programming environment with
useful abstractions."
I am not a computer scientist and I don't have much experience with Coq,but with Lean you only need to learn one language not two,
At least in Coq, I feel like all of the above kinds of queries are obviated by the default display in proof mode. I get the feeling "namespace" means something different and more subtle in Lean, though. (And I've never seen the need for a "linter" in mechanized proof, especially for experienced users.)and as well aswriting tactics people have been writing things like linters, new commandswhich tell you which namespace you're in, which namespaces are open,what variables you have and so on, stuff which makes the end users lifea bit easier.
I think today it makes a lot more sense for pure math vs. program verification to try to codify the existing shared knowledge base, since it's so much better-established. One issue with program verification is that it brings in different kinds of scalability challenges, such that it no longer makes sense to think in terms of "which famous theorems are proved," but rather "which tools are available for new verifications." Tactics can be just as important as theorems, and they very rarely correspond neatly with decision procedures.In general, I think it's a mistake to compare proof assistants using
criteria associated with random varieties of open-source projects, since
typically open-source projects are much less involved in major
design-space innovations. IMO, worrying about quality of library
ecosystems should mostly be avoided.
When mathematicians come looking at these systems, one of the first questionsthey seem to ask is "how much mathematics is in there already?".
- Re: [Coq-Club] Fwd: "Lean is like Coq but better", (continued)
- Re: [Coq-Club] Fwd: "Lean is like Coq but better", BEGAY Pierre-leo, 01/08/2020
- Re: [Coq-Club] Fwd: "Lean is like Coq but better", Frédéric Blanqui, 01/09/2020
- Re: [Coq-Club] Fwd: "Lean is like Coq but better", Vincent Semeria, 01/09/2020
- Re: [Coq-Club] Fwd: "Lean is like Coq but better", Thorsten Altenkirch, 01/04/2020
- Re: [Coq-Club] "Lean is like Coq but better", Kevin Buzzard, 01/03/2020
- Re: [Coq-Club] "Lean is like Coq but better", Adam Chlipala, 01/03/2020
- Re: [Coq-Club] "Lean is like Coq but better", Talia Ringer, 01/03/2020
- Re: [Coq-Club] "Lean is like Coq but better", Beta Ziliani, 01/03/2020
- Re: [Coq-Club] "Lean is like Coq but better", Timothy Carstens, 01/03/2020
- Re: [Coq-Club] "Lean is like Coq but better", Beta Ziliani, 01/03/2020
- Re: [Coq-Club] "Lean is like Coq but better", Talia Ringer, 01/03/2020
- Re: [Coq-Club] "Lean is like Coq but better", Jason Gross, 01/03/2020
- Re: [Coq-Club] "Lean is like Coq but better", Adam Chlipala, 01/03/2020
- Re: [Coq-Club] "Lean is like Coq but better", Timothy Carstens, 01/03/2020
Archive powered by MHonArc 2.6.18.