Commit graph

199 commits

Author SHA1 Message Date
Joachim Breitner
279607f5f8
refactor: forallAltTelescope to take altNumParams (#3230)
this way this function does not have to peek at the `altType` to see
when there are no more arguments, which makes it a bit more explicit,
and also a bit more robust should one apply this function to the type of
an alternative with the motive already instantiated.

It seems this uncovered a variable shadow bug, where the counter `i` was
accidentially reset after removing the `i`’th entry in `ys`.
2024-01-31 11:03:03 +00:00
Joachim Breitner
18459cb537
refactor: CasesOnApp.refineThrough can return a lambda, not an open term (#2974)
which also removes an error condition at the use site.

While I am at it, I rename a parameter in `GuessLex` that I forgot to
rename earlier.

The effect will be user-visible (in obscure corner cases) with #2960, so
I’ll have the test there.

A few places would benefit from a `lambdaTelescopeBounded` that
garantees the result has the right length (eta-expanding when
necessary). I’ll look into that separately, and left TODOs here.
2023-11-29 15:58:03 +00:00
Joachim Breitner
6592df52cc
feat: Add MatcherApp. and CasesOnApp.refineThrough (#2882)
these are compagnions to `MatcherApp.addArg` and `CasesOnApp.addArg`
when one only has an
expression (which may not be a type) to transform, but not a concret
values.

This is a prerequisite for guessing lexicographic order (#2874). Keeping
this on a separate PR because it’s sizable, and has a clear independent
specification.
2023-11-27 15:52:32 +00:00
int-y1
8d7520b36f chore: fix typos in comments 2023-10-08 10:46:05 +02:00
Mario Carneiro
5d3ac5f80c fix: panic in Match.SimpH.substRHS 2023-05-28 17:04:28 -07:00
Leonardo de Moura
0a031fc9bb chore: replace Expr.forEach with Expr.forEachWhere 2022-12-01 05:19:32 -08:00
Mario Carneiro
dd5948d641 chore: snake-case attributes (part 1) 2022-10-19 09:28:08 -07:00
Gabriel Ebner
ba57ad3480 feat: add implementation-detail hypotheses 2022-10-11 17:24:35 -07:00
Mario Carneiro
391aef5cd7 feat: automatic extension names 2022-10-06 17:19:30 -07:00
Mario Carneiro
85119ba9d1 chore: move Std.* data structures to Lean.* 2022-09-26 05:46:04 -07:00
Mario Carneiro
3e83e28e8f feat: injections with names 2022-09-20 17:36:35 -07:00
Mario Carneiro
6392c5b456 chore: import reductions 2022-09-15 14:02:38 -07:00
Sebastian Ullrich
98145ad8ba chore: not a docstring 2022-08-31 22:19:27 +02:00
Sebastian Ullrich
e81ba951c6 fix: Core.transform API and uses 2022-08-25 19:07:42 -07:00
Leonardo de Moura
109be66092 chore: fix build 2022-08-10 20:29:39 -07:00
Leonardo de Moura
0204c5f9b7 chore: remove dead code 2022-08-07 22:13:34 -07:00
Leonardo de Moura
ee70805c35 feat: add LCNF missing cases 2022-08-06 20:23:29 -07:00
Leonardo de Moura
84ff8d4a04 feat: store pending contraints during dependent pattern matching
It is a better solution for issues #1361 and #1279, and it was on the
to-do list for a while.
2022-08-03 17:45:55 -07:00
Leonardo de Moura
cbd022e4eb refactor: replaceFVarIdAtLocalDecl => LocalDecl.replaceFVarId 2022-08-03 10:32:45 -07:00
Leonardo de Moura
a9e7290e4b refactor: use isDefEq instead of custom unify procedure
See comment with new issue at #1361
2022-08-02 18:00:00 -07:00
Leonardo de Moura
ae5db0f563 chore: style 2022-08-02 17:44:19 -07:00
Leonardo de Moura
815bc95c47 refactor: remove duplication MVarId.applyRefl => MVarId.refl
and mark `MVarId.applyRefl` as deprecated.
2022-08-01 18:44:07 -07:00
Leonardo de Moura
6dcba78338 refactor: improve MVarId method discoverability
See issue #1346
2022-07-27 17:49:00 -07:00
Leonardo de Moura
a7e0976ae6 chore: style 2022-07-27 09:58:52 -07:00
Leonardo de Moura
90fb110cc9 refactor: improve FVarId method discoverability
See issue #1346
2022-07-25 22:18:58 -07:00
Leonardo de Moura
db7e546155 fix: Match.unify?
closes #1361
2022-07-25 20:30:01 -07:00
Leonardo de Moura
8335a82aed refactor: improve MVarId method discoverability
See issue #1346
2022-07-24 21:36:33 -07:00
Mario Carneiro
f6211b1a74
chore: convert doc/mod comments from /- to /--//-! (#1354) 2022-07-22 12:05:31 -07:00
Mario Carneiro
a2ef6bd19e fix: malformed/misaligned markdown code fences 2022-07-20 11:12:42 +02:00
Gabriel Ebner
a8cab84735 refactor: use computed fields for Expr 2022-07-11 14:19:41 -07:00
Leonardo de Moura
03ce7cb17c fix: dependent pattern matching bug
closes #1279
Originally reported at https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/case.20in.20dependent.20match.20not.20triggering.20.28.3F.29/near/288328239
2022-07-03 13:25:12 -07:00
Leonardo de Moura
54c60d4c2d feat: a[i] and a[i]! notation for Subarrays 2022-07-02 15:54:34 -07:00
Leonardo de Moura
2ebcf29cde chore: use a[i]! for array accesses that may panic 2022-07-02 15:12:05 -07:00
Leonardo de Moura
96a72d67f2 fix: avoid unnecessary dependencies at mkMatcher
fixes #1237
2022-06-23 10:21:32 -07:00
Leonardo de Moura
2a940dd4ae feat: add Expr.collectFVars, LocalDecl.collectFVars, Pattern.collectFVars, and AltLHS.collectFVars
They are all in `MetaM`.

These are helper functions for issue #1237. We need to "cleanup" the
local context before trying to compile the match-expression.

see issue #1237
2022-06-22 15:53:43 -07:00
Leonardo de Moura
bbc196eeb7 fix: make sure WF/Fix.lean tolerates MatcherApp.addArg? failures
see #1228
2022-06-17 17:37:33 -07:00
Leonardo de Moura
02c4e548df feat: replace constant with opaque 2022-06-14 17:02:59 -07:00
Leonardo de Moura
77ae79be46 chore: use let/if in do blocks 2022-06-13 17:10:14 -07:00
Leonardo de Moura
fb574af873 fix: mkSplitterProof
This commit fixes the first issue reported at #1179

closes #1179
2022-06-12 19:38:54 -07:00
Leonardo de Moura
09d1530d8e feat: detect unexpected occurrences of match-expression minor premises
The error message is far from perfect, but it is better than ignoring
the issue and failing later with an even more incomprehensible error
message.

see #1179
2022-06-12 12:07:42 -07:00
Leonardo de Moura
17db981880 fix: equation theorem for match with more than one "as" pattern
see #1195
see #1179
2022-06-10 18:23:13 -07:00
Leonardo de Moura
041827bed5 chore: unused variables 2022-06-07 17:54:10 -07:00
Sebastian Ullrich
8eefbf5227 chore: further clean up refactored code 2022-06-07 16:37:45 -07:00
Sebastian Ullrich
fb2a2b3de2 fix: fixup previous commit 2022-06-07 16:37:45 -07:00
Sebastian Ullrich
ae7b895f7a refactor: unname some unused variables 2022-06-07 16:37:45 -07:00
Leonardo de Moura
2c5bafcbd8 fix: dead variables at match equation hypotheses
This commit addresses an issue reported at https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/Structural.20Recursion.20Problem/near/284238723
2022-05-28 16:09:35 -07:00
Leonardo de Moura
e26f86dd45 fix: improve simpH?, remove unnecessary hypotheses 2022-05-28 15:30:01 -07:00
Leonardo de Moura
2fc23a2a2b feat: make sure we can use split to synthesize code 2022-05-23 11:55:57 -07:00
Leonardo de Moura
090503cfd5 chore: cleanup 2022-05-06 17:12:10 -07:00
Leonardo de Moura
cddf9ddd95 fix: forallAltTelescope heterogeneous equality support 2022-04-29 15:37:20 -07:00