Open YaelDillies opened 7 months ago
it will be possible in
lake
to specify that you only want to depend on a subset of these libraries.
I don't understand why this is useful. Already, if you do lake build
in your project, it only builds the bits of mathlib that you actually import. You can use lake exe cache
in a similar way. So the "unused" bits of mathlib are already not meaningfully "depended" on.
The bottom part of mathlib is quite a mess. Algebra, data structures and order theory could be developed separately (at least for a while) but are not. Instead, "horizontal" imports keep happening between what would otherwise be three disjoint trees.
The main sources of trouble are
Nat
andInt
, as they are ubiquitous. Their basic properties can be accessed through typeclass-mediated lemmas by importingData.Nat.Basic
andData.Nat.Order.Basic
. However this comes at the cost of importing basic algebra or basic algebraic order theory where unnecessary. Instead, we can use theNat
- andInt
-specific lemmas provided by Std.Polynomial
,Real
orSet.Icc
are defined underData
. The solution is to simply move them to the correct top-level folder.The purpose of this issue is to collect the PRs doing at least one of the above:
11601
11633
11653
11661
11711
11715
11716
11725
11729
11732
11741
11750
11751
11753
11765
11845
Once all these issues will be fixed, we will be able to create three new Lean libraries Algebra, Data, Order, all still living in the current repository.
After such a split, these sublibraries would form a DAG in terms of dependencies. This adds some constraints to future refactors, as that DAG would essentially become immutable.
The benefits?
lake
to specify that you only want to depend on a subset of these libraries.