Commit graph

7570 commits

Author SHA1 Message Date
E.W.Ayers
4c2fedae50 doc: fix @Kha's issues with MonadControl 2022-04-01 10:06:58 +02:00
Leonardo de Moura
059459b097 fix: occurs check at refine tactic 2022-03-31 18:08:05 -07:00
Leonardo de Moura
096e4eb6d0 fix: equation generation for nested recursive definitions
The issue was raised on Zulip. The issue is triggered in
declarations containing overlapping patterns and nested recursive
definitions occurring as the discriminant of `match`-expressions.
Recall that Lean 4 generates conditional equations for declarations
containing overlapping patterns.
To address the issue we had to "fold" `WellFounded.fix` applications
back as recursive applications of the functions being defined.

The new test exposes the issue.
2022-03-31 17:04:06 -07:00
Leonardo de Moura
6652d2665d chore: remove old comment 2022-03-31 15:59:31 -07:00
Leonardo de Moura
734902bd3c test: add split list example from Zulip without sorrys 2022-03-31 13:03:58 -07:00
Leonardo de Moura
2bd04285f8 fix: #1087
This commit is using the easy fix described at issue #1087.
Hopefully the performance overhead is small.

closes #1087
2022-03-30 18:48:02 -07:00
Leonardo de Moura
63b9060ce9 chore: fix comments 2022-03-30 16:23:06 -07:00
Leonardo de Moura
3dd0c84c4d chore: enforce naming convetion for tactics 2022-03-30 16:19:05 -07:00
Leonardo de Moura
a509b0c615 test: Sign 2022-03-30 13:33:29 -07:00
Leonardo de Moura
1a8840330f test: add test for example that does not work in Lean3
cc @eric-wieser
2022-03-30 12:59:55 -07:00
Leonardo de Moura
e53e088be8 test: make it clear the proofs hold by reflexivity 2022-03-30 12:40:30 -07:00
Leonardo de Moura
6056a4cbfa test: stars_and_bars 2022-03-30 12:38:05 -07:00
Leonardo de Moura
46ce3013d0 feat: cleanup local context before elaborating match alternatives RHS 2022-03-29 18:52:07 -07:00
Leonardo de Moura
d1e4712038 fix: smart unfolding
See new comment to understand the issue.

closes #1081
2022-03-29 15:49:14 -07:00
Leonardo de Moura
86432f1833 feat: improve let-pattern and have-pattern macro expansion 2022-03-29 07:33:22 -07:00
Sebastian Ullrich
6dfddbe2e7 feat: quotation precheck for choice nodes 2022-03-29 10:50:11 +02:00
Leonardo de Moura
c7321e0061 chore: remove revert hack from example 2022-03-28 17:18:36 -07:00
Leonardo de Moura
a06cd40e29 feat: improve match expression support at simp 2022-03-28 17:17:01 -07:00
Leonardo de Moura
3c964f3b9f feat: substitute auxiliary equations introduced by the split tactic 2022-03-28 14:29:28 -07:00
Leonardo de Moura
314bd3ae4c fix: simpH? at match expression equation theorem generator
closes #1080
2022-03-28 12:48:54 -07:00
Leonardo de Moura
2dea5471da feat: add support for HEq to the subst tactic 2022-03-28 12:23:55 -07:00
Leonardo de Moura
334f4f6c85 test: for issue #1079
The error reported on issue #1079 does not happen in the master branch.

closes #1079
2022-03-28 07:19:55 -07:00
Leonardo de Moura
4e008cf8b7 chore: move to tests 2022-03-27 14:57:33 -07:00
Leonardo de Moura
4801b37cfb fix: exfalso 2022-03-27 14:56:24 -07:00
Leonardo de Moura
a2e467eb32 fix: mkEqnTypes
stop as soon as `lhs` and `rhs` are definitionally equal, and avoid
unnecessary case analysis.

This commit fixes the last issue exposed by #1074

fixes #1074
2022-03-25 19:13:21 -07:00
Leonardo de Moura
3a310fb122 fix: the eta for structures implementation in the elaborator was different from the implementation in the kernel
This issue was exposed by issue #1074
2022-03-25 18:24:15 -07:00
Leonardo de Moura
7307b02fd7 fix: missing test at has_trivial_structure
see #1074
2022-03-25 17:36:30 -07:00
Leonardo de Moura
e53435979f fix: remove hacky addAutoBoundImplicitsOld 2022-03-25 09:23:43 -07:00
Leonardo de Moura
6631d92d7b fix: addAutoBoundImplicitsOld occurrences at MutualDef.lean and Structure.lean
This commit also fixes non-termination at `collectUnassignedMVars`
2022-03-25 09:07:59 -07:00
Leonardo de Moura
e48cc8901e fix: add new addAutoBoundImplicits that avoids the hack at addAutoBoundImplicitsOld 2022-03-25 08:40:57 -07:00
Leonardo de Moura
370e9c421f fix: bug at deriving Hashable 2022-03-24 18:46:10 -07:00
Leonardo de Moura
fdbe893c40 fix: catch mkAppM exceptions 2022-03-23 17:35:04 -07:00
Leonardo de Moura
9d32d7bcf5 test: for issue #1062
closes #1062
2022-03-22 14:14:28 -07:00
Leonardo de Moura
6007147d71 fix: allow universes to be postponed further
closes #1058
2022-03-22 13:57:58 -07:00
Mario Carneiro
c29da66c5a
fix: annotate binders in intro for hover / go to def 2022-03-22 12:10:51 +00:00
Leonardo de Moura
3d9e587862 fix: check type mismatch at dependent pattern matching compiler
see issue #1057
2022-03-21 09:28:02 -07:00
Leonardo de Moura
9944feb095 test: use [reducible] 2022-03-21 07:39:44 -07:00
Leonardo de Moura
3a75cf1920 test: nested inductives 2022-03-21 05:57:02 -07:00
Leonardo de Moura
321d6b0e67 feat: support for user-defined simp attributes in the simp tactic.
See `RELEASES.md`

TODO: make sure `-thm` also removes `thm` from user-defined simp attributes.
2022-03-20 18:45:57 -07:00
Leonardo de Moura
a2690d5278 feat: improve #eval command 2022-03-20 15:18:47 -07:00
Leonardo de Moura
7b1091770c test: Repr for HList 2022-03-20 15:05:34 -07:00
Leonardo de Moura
6d926c7989 feat: macro expand match alternatives
see #371

This commit does not implement all features discussed in this issue.
It has implemented it as a macro expansion. Thus, the following is
accepted
```lean
inductive StrOrNum where
  | S (s : String)
  | I (i : Int)

def StrOrNum.asString (x : StrOrNum) :=
  match x with
  | I a | S a => toString a
```
It may confuse the Lean LSP server. The `a` on `toString` shows the
information for the first alternative after expansion (i.e., `a` is an `Int`).
After expansion, we have
```
def StrOrNum.asString (x : StrOrNum) :=
  match x with
  | I a => toString a
  | S a => toString a
```
2022-03-20 14:20:13 -07:00
Leonardo de Moura
51ee6fe4f1 chore: fix test 2022-03-20 13:27:19 -07:00
Leonardo de Moura
87bb299f08 feat: add Iterator.atEnd 2022-03-20 11:40:46 -07:00
Leonardo de Moura
3862e7867b refactor: make String.Pos opaque
TODO: this refactoring exposed bugs in `FuzzyMatching` and `Lake`

closes #410
2022-03-20 10:47:13 -07:00
Jakob von Raumer
a91f92c11e feat: allow constants to be type classes
There no reason against constants to be type classes so it is just the check in `addClass` that is needed to be modified.

Closes #1054
2022-03-20 08:03:34 -07:00
Leonardo de Moura
1b357db3b0 fix: nasty bug at findDeclarationRangesCore?
We must search the environment extension first, and then the builtin
table. Otherwise, the builtin declarations do not change when we
modify the files.

closes #1021
2022-03-19 16:53:22 -07:00
Leonardo de Moura
ed7c8904a9 fix: propagate local and scope modifiers at elab_rules
closes #1039
2022-03-19 16:08:06 -07:00
E.W.Ayers
d954706fcf feat: ApplyNewGoals config for apply
Lean.Meta.Tactic.apply now accepts an ApplyConfig argument.
`apply` now changes which metavariables are stored with choice
of the newGoals config.
This allows one to implement `fapply` and `eapply`.
An example of this is given in tests/lean/run/apply_tac.lean.

Closes #1045
2022-03-19 15:51:40 -07:00
Leonardo de Moura
4f318d3304 test: use dot notation in the example 2022-03-19 10:39:58 -07:00