Zulip Chat Archive
Stream: general
Topic: Lean 3.5.0c Released
Simon Hudon (Dec 27 2019 at 23:32):
Dear Lean community,
We finally have a release for Lean 3.5.0c! Using elan
, it can be installed with the following command line:
elan toolchain install leanprover-community/lean:3.5.0
leanpkg.toml
files can be updated to refer to 3.5.0c:
lean_version = "leanprover-community/lean:3.5.0"
The binaries can be found here and, as before, they are available for Linux, OS X, Windows and for the browser.
All the code that works with 3.4.2 should still work and we made sure that the current version of mathlib still works with this release. A more detailed summary of the changes can be found here.
Going forward, we will continue fixing bugs and adding features that makes Leaners' (or Lean-atics?) life easier. We have been strict so far in maintaining backward compatibility but we will now start considering breaking changes as well.
Special thanks to those who made this release possible: @Bryan Gin-ge Chen, @Edward Ayers, @Gabriel Ebner, @Wojciech Nawrocki, @Mario Carneiro, @matt rice, @Keeley Hoek and of course @Leonardo de Moura and @Sebastian Ullrich.
Rob Lewis (Dec 27 2019 at 23:45):
This is great! Thanks for the hard work guys.
Rob Lewis (Dec 27 2019 at 23:47):
I think the workshop in January would be a good time to talk about "porting" mathlib to 3.5c, that is, taking advantage of changes that aren't backward compatible.
Simon Hudon (Dec 27 2019 at 23:48):
Good idea :) I think @Jeremy Avigad planned on mathlib discussion, we can bring it up then
Rob Lewis (Dec 27 2019 at 23:50):
Yup. We'll put up more details about the schedule soon. But we have a few blocks of time set aside for this kind of stuff.
Rob Lewis (Dec 27 2019 at 23:52):
With proper elan integration, I don't see any reason not to make the change, and some of the new features/fixes will really be helpful.
Simon Hudon (Dec 27 2019 at 23:55):
Cool :) Are you thinking of some specific?
Rob Lewis (Dec 28 2019 at 00:42):
Renaming all the primed tactics, first of all, but I think there's a lot.
Patrick Massot (Dec 28 2019 at 10:33):
I'm very much interested in this for teaching. Is there anything I could do to get a version of Lean for linux, windows and MacOS where all primed versions become unprimed and, much more importantly, rintros
becomes intro
and rcases
becomes cases
? I think those would intro
and cases
changes would even be backward compatible.
Kevin Buzzard (Dec 28 2019 at 10:52):
I think cases H with H1 H2
becomes rcases H with ⟨H1, H2⟩
.
Chris Hughes (Dec 28 2019 at 10:58):
There's plenty of little updates to the library that we'd like to do (e.g. get rid of nat.pow
and discrete_field
). Would it be a good idea to move the core library into mathlib and make these changes?
Yury G. Kudryashov (Dec 28 2019 at 11:01):
BTW, which part of the Lean C++ code is responsible for class instances resolution? I think about adding an algorithm that works better with algebraic classes, namely go down the chain from existing constants, not up from the goal.
Patrick Massot (Dec 28 2019 at 12:06):
Indeed rcases
is not backward compatible, I was wrong.
Patrick Massot (Dec 28 2019 at 12:08):
Yury, what you are asking for is a huge change.
Patrick Massot (Dec 28 2019 at 12:10):
It seems that what I'm asking should actually be rather easy. The intro
tactic is defined in Lean (in core lib of course) so it should be possible to change it without recompiling Lean, and I could try to find a completely new name for rcases
. Too bad split
and destruct
are already taken.
Patrick Massot (Dec 28 2019 at 12:13):
@Simon Hudon Is there any reason why intro
wasn't changed to rintro
in Lean 3.5.0c?
Yury G. Kudryashov (Dec 28 2019 at 12:13):
@Patrick Massot I don't know whether I'll have time/skills to work on this, and I don't expect it to be done soon. However I feel that this is a way to go, at least for algebraic structures.
Patrick Massot (Dec 28 2019 at 12:15):
I don't deny that, I'm only trying to keep a distinction between easy modifications that could be made before or during Fomm2020 and long-term goals.
Kevin Buzzard (Dec 28 2019 at 14:45):
Yury, you would probably be better off talking to @Daniel Selsam directly about this. He understands type class inference well. In some sense type class inference has turned out to be one of the biggest problems which mathematicians have had with Lean 3, and things were written about it in the mathlib paper. My impression is that it was originally written with modest goals in mind perhaps inspired by the way it is used in computer science, and then mathematicians wanted to push it a whole lot further ("if group
is a typeclass then I guess module
should be too, because modules are defined by a few axioms just like groups -- oh dear things just got complicated" was something that happened, and "if group
is a typeclass then I guess ring
and comm_ring
and field
and complete_topological_field
and 100 other things are too -- oh crap, type class inference is now trying 20 times to prove that the integers are a field".
Simon Hudon (Dec 28 2019 at 16:35):
Simon Hudon Is there any reason why
intro
wasn't changed torintro
in Lean 3.5.0c?
The goal of the first community release was to be conservative, to make a Lean version that could be used interchangeably (almost) with 3.4.2. If we move rintro
into Lean core, we have to remove it from mathlib. That can be a suitable next step but I think there needs to be a discussion about the willingness of the mathlib community to break compatibility with Leo's Lean 3
Patrick Massot (Dec 28 2019 at 16:36):
But isn't rintro
fully compatible with intro
?
Simon Hudon (Dec 28 2019 at 16:38):
You mean move rintro
and call it intro
? You're right, that might not break anything. This is in the category of changes we could call moving mathlib tactics to core (which especially concerns the primed tactics). The best is to make one decision for the block with little variations from tactic to tactic.
Patrick Massot (Dec 28 2019 at 16:40):
Yes.
Yury G. Kudryashov (Jan 01 2020 at 13:03):
BTW, a smaller change that could help: add a command #cache_instance
that adds an instance to the cache. Should work for instances involving local variables
. Then a file can start with several #cache_instance
s instead of local attribute [instance, priority 10000]
.
Last updated: Dec 20 2023 at 11:08 UTC