Commit graph

6579 commits

Author SHA1 Message Date
Leonardo de Moura
4ac88d0eb8 test: lex example from David 2022-03-18 19:53:17 -07:00
Leonardo de Moura
3193acecfa fix: flush the CoreM and MetaM caches at modifyEnv
This fix may impact performance. Note that we don't need to flush the
cache if we are "adding" stuff to the environment. We only need to
flush the caches if the change is not monotonic. BTW, most of the
changes are monotonic. I think this is why we did not hit this bug before.

We may also move all these caches to an environment extension. It is
an easy way to make sure we preserve the cache when extending the
environment.

I tried a few benchmarks and did not notice a significant difference.

cc @kha @gebner

fixes #1051
2022-03-17 16:02:30 -07:00
Leonardo de Moura
184b0b8e8d feat: improve "result types must be in the same universe level" error message
The new error message makes it clear why the definition is not accepted.

See issue #1050
2022-03-17 07:41:37 -07:00
Daniel Fabian
cf4e873974 feat: support Sort u in ac_refl. 2022-03-16 17:21:20 -07:00
Daniel Fabian
d667d5ab5d feat: rewrite the tactic using simp as the basis. 2022-03-16 17:21:20 -07:00
Daniel Fabian
ed63274874 refactor: move ac_refl syntaxt to Init/Notation 2022-03-16 17:21:20 -07:00
Daniel Fabian
73a59e5bc4 feat: use simp instead of rewrite inside of ac_refl 2022-03-16 17:21:20 -07:00
Daniel Fabian
84f72b9389 test: add further ac_refl tests. 2022-03-16 17:21:20 -07:00
Daniel Fabian
a60220b036 feat: add tactic for ac_refl. 2022-03-16 17:21:20 -07:00
Leonardo de Moura
4320a61f4d chore: use Prod notation in test 2022-03-16 17:14:16 -07:00
Leonardo de Moura
50813429b8 fix: add expected type hint
Other tactics (e.g., `simp_all`) may try to infer the type of the
proof, and `Nat.Linear.eq_of_toNormPoly_eq` has a messy resulting type.
2022-03-16 17:07:22 -07:00
Sebastian Ullrich
4fd520e902 feat: generalize inferred namespace notation to functions 2022-03-16 23:40:05 +01:00
Leonardo de Moura
68154a6c69 test: add Pos view 2022-03-16 10:08:43 -07:00
Leonardo de Moura
05a2778b0d fix: ensure explicit pattern variables provided by the uses are indeed pattern variables 2022-03-16 07:50:29 -07:00
Leonardo de Moura
d6de53a7aa perf: custom splitAnd 2022-03-15 16:59:11 -07:00
Leonardo de Moura
49e33fdb23 chore: fix tests 2022-03-15 11:35:47 -07:00
Leonardo de Moura
aa68057c85 chore: more general type universes in example 2022-03-15 05:19:02 -07:00
Leonardo de Moura
4e261b15e5 fix: smart unfolding bug in over applications 2022-03-14 19:17:21 -07:00
Leonardo de Moura
eb7539ef77 fix: mkEqnTypes overapplied lhs in equational theorems
This issue was exposed by the "Dependent de Bruijn indices" from CPDT.
2022-03-14 17:42:21 -07:00
Leonardo de Moura
7fda1f47f8 test: add test for issue fixed in previous commit 2022-03-14 14:11:08 -07:00
Leonardo de Moura
ef154ec0cf test: add TreeNode example using for in notation 2022-03-14 11:52:54 -07:00
Leonardo de Moura
2ac9cfb7b1 fix: eta expand partial applications of recursive function being defined 2022-03-14 10:05:33 -07:00
Leonardo de Moura
801552e1ac chore: fix tests 2022-03-14 10:05:33 -07:00
Leonardo de Moura
d2cc5b4a83 chore: fix test 2022-03-13 15:53:21 -07:00
Leonardo de Moura
fa0964c07e fix: preserve variable name at WF decreasing goals when function has only one non fixed argument 2022-03-13 13:20:07 -07:00
Leonardo de Moura
060be7e7ec fix: :: is infix right 2022-03-13 09:25:56 -07:00
Leonardo de Moura
672a889c83 test: add hlist pattern match example 2022-03-13 09:15:55 -07:00
Leonardo de Moura
5707cab7bf feat: improve #eval command
Now, if it fails to synthesize the TC instance, it applies `whnf` and
tries again.
2022-03-12 19:55:15 -08:00
Leonardo de Moura
3cd41acd14 test: HList with notation overloads 2022-03-12 19:47:57 -08:00
Leonardo de Moura
af5a24140a test: simple type checker at CPDT 2022-03-12 18:44:52 -08:00
Leonardo de Moura
7e3519a3a2 test: add CPDT first example 2022-03-12 17:06:20 -08:00
Leonardo de Moura
f0c31d7e28 feat: allow rw to unfold nonrecursive definitions too 2022-03-12 15:44:52 -08:00
Leonardo de Moura
cf0ca026fb feat: equation theorems at rw 2022-03-12 13:53:02 -08:00
Leonardo de Moura
a6bfefe5bd fix: nasty performance problem at isDefEq
This problem was originally exposed by the `Array.eraseIdxAux`.
2022-03-12 10:44:43 -08:00
Leonardo de Moura
eddcedb58c fix: pattern normalization code 2022-03-12 06:07:04 -08:00
Leonardo de Moura
a4f47adf9e fix: normalize method at Match.lean 2022-03-11 18:19:37 -08:00
larsk21
64dba41b4c feat: enable fuzzy matching for completion 2022-03-11 16:25:26 -08:00
Leonardo de Moura
5caf1bc692 chore: style
Use `·` instead of `.` for structuring tactics.
2022-03-11 16:12:46 -08:00
Leonardo de Moura
ddf93d2f8a feat: support for arrow types in the dot notation
cc @gebner
2022-03-11 15:39:41 -08:00
Leonardo de Moura
8d42978e63 feat: generate error message when induction tactic is used on a nested inductive type without specifying an eliminator 2022-03-11 14:45:57 -08:00
Leonardo de Moura
712e9b7d45 chore: add custom induction principle for LazyList 2022-03-11 14:21:35 -08:00
Leonardo de Moura
7d5da95434 fix: remove unused hypotheses from conditional equation theorems 2022-03-11 14:10:57 -08:00
Leonardo de Moura
272dd5533f chore: style use · instead of . for lambda dot notation
We are considering removing `.` as an alternative for `·` in the
lambda dot notation (e.g., `(·+·)`).
Reasons:
- `.` is not a perfect replacement for `·` (e.g., `(·.insert ·)`)
- `.` is too overloaded: `(f.x)` and `(f .x)` and `(f . x)`. We want to keep the first two.
2022-03-11 07:49:03 -08:00
Leonardo de Moura
e1fa9c131c feat: inferring namespace from expected type a la Swift
Now that `PatternVars.lean` has been redesigned, it is feasible to
implement issue #944.

closes #944
2022-03-10 16:55:25 -08:00
Leonardo de Moura
3214a20d33 feat: allow overloaded notation in patterns 2022-03-10 12:51:34 -08:00
Leonardo de Moura
fddc8b06ac fix: missing case at getStuckMVar?
Fix issue reported at
https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/'rewrite'.20failed.20but.20it.20should.20work/near/274870747
2022-03-10 10:33:11 -08:00
Leonardo de Moura
7850dc023b fix: make sure the structure instance notation does not leak auxiliary type annotations (e.g., autoParam and optParam) 2022-03-10 08:41:00 -08:00
Leonardo de Moura
efc89eb4e1 fix: make sure inferProjType consume auxiliary type annotations 2022-03-10 08:15:34 -08:00
Leonardo de Moura
0ef8aaeda0 feat: make sure minor premises in recursors do not include auxiliary type annotations (e.g., autoParam and optParam) 2022-03-10 08:08:36 -08:00
Leonardo de Moura
33883e9d2a fix: resulting type of projection functions should not include auxiliary type annotations (e.g., autoParam) 2022-03-10 07:47:38 -08:00