mirror of
https://github.com/leanprover/lean4.git
synced 2026-03-17 18:34:06 +00:00
feat(doc/changes.md): create change log
This commit is contained in:
committed by
Leonardo de Moura
parent
3700bb4568
commit
a045b0f00c
@@ -19,6 +19,7 @@ About
|
||||
- [Theorem Proving in Lean](https://leanprover.github.io/theorem_proving_in_lean/index.html)
|
||||
- [Standard Library](library/library.md)
|
||||
- [Emacs Mode](src/emacs/README.md)
|
||||
- [Change Log](doc/changes.md)
|
||||
- For HoTT mode, please use [Lean2](https://github.com/leanprover/lean2).
|
||||
|
||||
Requirements
|
||||
|
||||
55
doc/changes.md
Normal file
55
doc/changes.md
Normal file
@@ -0,0 +1,55 @@
|
||||
Current build
|
||||
-------------
|
||||
|
||||
Lean is still evolving rapidly, and we apologize for the resulting instabilities. The lists below summarizes some of the new features and incompatibilities with respect to release 3.1.0.
|
||||
|
||||
*Features*
|
||||
|
||||
* The `leanpkg` package manager now manages projects and dependencies. See the documentation [here](https://github.com/leanprover/lean/tree/master/leanpkg). Parts of the standard library, like the superposition theorem prover `super`, have been moved to their own repositories. `.project` files are no longer needed to use `emacs` with projects.
|
||||
|
||||
* Well-founded recursion is now supported. (Details and examples for this and the next two items will soon appear in _Theorem Proving in Lean_.)
|
||||
|
||||
* Nested and mutual inductive data types are now supported.
|
||||
|
||||
* There is support for coinductive predicates.
|
||||
|
||||
* The `simp` tactic has been improved and supports more options, like wildcards. Hover over `simp` in an editor to see the documentation string (docstring).
|
||||
|
||||
* Additional interactive tactics have been added, and can be found [here](https://github.com/leanprover/lean/blob/master/library/init/meta/interactive.lean).
|
||||
|
||||
* A `case` tactic can now be used to structure proofs by cases and by induction. See [here](https://github.com/leanprover/lean/pull/1515).
|
||||
|
||||
* Various data structures, such as hash maps, have been added to the standard library [here](https://github.com/leanprover/lean/tree/master/library/data).
|
||||
|
||||
* There is preliminary support for user-defined parser extensions. More information can be found [here](https://github.com/leanprover/lean/pull/1617), and some examples can be found [here](https://github.com/leanprover/lean/blob/master/library/init/meta/interactive_base.lean#L149-L181).
|
||||
|
||||
* Numerous improvements have been made to the parallel compilation infrastructure and editor interfaces, for example, as described [here](https://github.com/leanprover/lean/pull/1405) and [here](https://github.com/leanprover/lean/pull/1534).
|
||||
|
||||
* There is a `transfer` method that can be used to transfer results e.g. to isomorphic structures; see [here](https://github.com/leanprover/lean/pull/1435).
|
||||
|
||||
* The monadic hierarchy now includes axioms for monadic classes. (See [here](https://github.com/leanprover/lean/pull/1447).)
|
||||
|
||||
|
||||
*Changes*
|
||||
|
||||
* Commands that produce output are now preceded by a hash symbol, as in `#check`, `#print`, `#eval` and `#reduce`. The `#eval` command calls the bytecode evaluator, and `#reduce` does definitional reduction in the kernel. Many instances of alternative syntax like `premise` for `variable` and `hypothesis` for `parameter` have been eliminated. See the discussion [here](https://github.com/leanprover/lean/issues/1432).
|
||||
|
||||
* The hierarchy of universes is now named `Sort 0`, `Sort 1`, `Sort 2`, and so on. `Prop` is alternative syntax for `Sort 0`, `Type` is alternative syntax for `Sort 1`, and `Type n` is alternative syntax for `Sort (n + 1)`. Many general constructors have been specialized from arbitrary `Sort`s to `Type` in order to simplify elaboration.
|
||||
|
||||
* Use `universe u` instead of `universe variable u` to declare a universe variable.
|
||||
|
||||
* The syntax `l^.map f` for projections is now deprecated in favor of `l.map f`.
|
||||
|
||||
* The behavior of the `show` tactic in interactive tactic mode has changed. It no longer leaves tactic mode. Also, it can now be used to select a goal other than the current one.
|
||||
|
||||
* The `assertv` and `definev` tactics have been eliminated in favor of `note` and `pose`.
|
||||
|
||||
* The encoding of structures has been changed, following the strategy described [here](https://github.com/leanprover/lean/wiki/Refactoring-structures). Generic operations like `add` and `mul` are replaced by `has_add.add` and `has_mul.mul`, respectively. One can provisionally obtain the old encodings with `set_option old_structure_cmd true
|
||||
`.
|
||||
|
||||
* Syntax for quotations in metaprograms has changed. The notation `` `(t)`` elaborates `t` at definition time and produces an expression. The notation ``` ``(t) ``` resolves names at definition time produces a pre-expression, and ```` ```(t)```` resolves names at tactic execution time, and produces a pre-expression. Details can be found in the paper Ebner et al, _A Metaprogramming Framework for Formal Verification_.
|
||||
|
||||
* The types `expr` for expressions and `pexpr` for pre-expressions have been unified, so that `pexpr` is defined as `expr ff`. See [here](https://github.com/leanprover/lean/pull/1580).
|
||||
|
||||
* Handling of the `io` monad has changed. Examples can be found [here](https://github.com/leanprover/lean/tree/master/leanpkg/leanpkg) in the code for `leanpkg`, which is written in Lean itself.
|
||||
|
||||
Reference in New Issue
Block a user