Leonardo de Moura
d2dc38fdb6
perf: use HasConstCache to minimize the number of visited terms at Structural and WF
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2022-03-15 08:40:47 -07:00
Leonardo de Moura
7af09ac009
refactor: move equation theorem cache to Meta/Eqns.lean
2022-03-12 15:34:32 -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
e66575d4fc
refactor: move and generalize ensureNoRecFn
2022-02-09 10:13:52 -08:00
Leonardo de Moura
2ef0146140
fix: avoid unnecessary matcheApp.addArgs at BRecOn and Fix
...
It fixes the following two cases from #998
```
attribute [simp] Lean.Export.exportName
attribute [simp] Lean.Export.exportLevel
```
2022-02-08 15:06:14 -08:00
Leonardo de Moura
3367f0b06a
feat: use splitTarget? when proving equation theorems for recursive definitions
2022-02-08 12:53:09 -08:00
Leonardo de Moura
c486203481
fix: use simpTargetStar when proving equation theorems for recursive definitions
...
Add `take` function reported at Zulip.
2022-02-08 11:43:45 -08:00
Leonardo de Moura
5baac1905f
fix: use private names for theorems that are created on demand
...
closes #1006
2022-02-07 13:16:22 -08:00
Mario Carneiro
6e7d76f4d8
fix: typo
2022-02-03 18:21:14 -08:00
Leonardo de Moura
12e2a79170
chore: fix codebase after removing auto pure
2022-02-03 18:08:14 -08:00
Leonardo de Moura
111d09fda3
fix: must apply afterCompilation attributes *after* smart unfolding definition was declared
...
The `[simp]` attribute checks whether the smart unfolding defintion
has been declared.
closes #946
2022-01-12 08:28:03 -08:00
Leonardo de Moura
98f4e51a12
feat: add mkUnfoldEq skeleton
2022-01-06 17:42:45 -08:00
Leonardo de Moura
d8d7d63830
fix: registers eqns info before adding definition
...
Otherwise `[simp]` at definition will fail to generate equational theorems.
2022-01-06 12:24:40 -08:00
Leonardo de Moura
4d1343d670
chore: use _eq instead of eq to name auto generated equational theorems
2022-01-04 17:23:34 -08:00
Leonardo de Moura
d782a97f5c
feat: add WF.mkProof for WF.mkEqns
2022-01-04 17:00:54 -08:00
Leonardo de Moura
2a0cd18d4b
feat: add WF.mkEqns
2022-01-04 15:44:05 -08:00
Leonardo de Moura
d941e97716
feat: add WF/Eqns.lean skeleton
2022-01-04 15:31:22 -08:00
Leonardo de Moura
947240ef9e
refactor: add PreDefinition/Eqns.lean
2022-01-04 13:52:41 -08:00
Leonardo de Moura
e9c112007b
fix: avoid Syntax trees leaks into .olean files
...
closes #918
2022-01-03 09:36:06 -08:00
Leonardo de Moura
7df9cf6a0a
feat: eliminate "recAppSyntax" information during structural recursion
2021-12-17 07:15:14 -08:00
Leonardo de Moura
e38fab1b4e
fix: ignore Expr.MData at deltaRHS?
2021-12-16 16:58:10 -08:00
Leonardo de Moura
68bd55af32
chore: fix codebase
2021-12-10 13:12:09 -08:00
Leonardo de Moura
b2d88f7bcc
fix: bug at saveEqn
2021-12-02 17:38:39 -08:00
Leonardo de Moura
c42196440f
fix: give preference to non-indices at findRecArg
...
fixes #837
2021-12-01 16:45:19 -08:00
Leonardo de Moura
5d73f0eb01
chore: fix typo
2021-12-01 15:08:41 -08:00
Leonardo de Moura
67c8e76b08
fix: preserve unused let declarations
...
This commit fixes reported at
https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/unused.20let.20disappears/near/257528105
2021-10-18 17:40:15 -07:00
Leonardo de Moura
a7f36cc642
chore: style
2021-09-26 15:52:13 -07:00
Leonardo de Moura
07fb8504a1
fix: bug introduced today
2021-09-21 20:36:18 -07:00
Leonardo de Moura
ed47091691
chore: add extra trace messages and document issue
2021-09-21 20:33:44 -07:00
Leonardo de Moura
06a741be5c
feat: ensure equational theorem conditions occur after the main variables
2021-09-20 11:41:33 -07:00
Leonardo de Moura
f2a418a7ae
chore: smartUnfolding cleanup
...
We remove dead code, update comments, and add new tests
See #445
2021-09-19 15:29:11 -07:00
Leonardo de Moura
5b0a1c2b2f
feat: smart unfolding support for nested match-expressions
...
See #445
2021-09-19 15:17:56 -07:00
Leonardo de Moura
82f3042fa4
fix: equational theorem generation for structural recursion
2021-09-19 08:48:40 -07:00
Leonardo de Moura
233a262c03
feat: improve whnfReducibleLHS?
2021-09-19 08:33:51 -07:00
Leonardo de Moura
c2d33a1a58
fix: bug at addSmartUnfoldingDef
...
The approach using `matcherBelowDep : NameSet` was not correct because
we "reuse" matcher-declarations. For example, in the definition
```
def f : Nat → Bool
| 0 => true
| n + 1 => (match n with
| 0 => true
| _ + 1 => true) && f n
```
we have to `match`-expressions but they can be compiled the same
matcher `f.match_1`. Thus, the set `matcherBelowDep` would contain
`f.match_1` since the first occurence refined the `Nat.below` argument
at `mkBRecOn`. Thus, `addSmartUnfoldingDef` was incorrectly assuming the second
`match` was refined too.
We fixed this issue by simulating `mkBRecOn` behavior.
fixes #445
2021-09-18 19:15:38 -07:00
Leonardo de Moura
c795a75045
feat: modify approach for generating equational theorems
2021-09-18 15:58:31 -07:00
Leonardo de Moura
1ce65672ba
chore: modify strategy for constructing equational theorems
2021-09-18 08:27:07 -07:00
Leonardo de Moura
d413aa1dc5
feat: generate proofs for structural (conditional) equality theorems
2021-09-17 18:57:39 -07:00
Leonardo de Moura
1a0badac06
feat: generate conditional structural equation theorem types
...
TODO: proofs
2021-09-17 16:49:30 -07:00
Leonardo de Moura
6ffb3f91f0
feat: save information for generating structural equation theorems later
2021-09-17 14:20:28 -07:00
Leonardo de Moura
de05b0a038
chore: add Eqns.lean entry point
2021-09-11 13:12:09 -07:00
Leonardo de Moura
f26c905130
refactor: split Structural.lean into smaller files
2021-09-11 03:40:51 -07:00