Leonardo de Moura
9ee529e5ce
fix: use PSum instead of Sum when using well-founded recursion
...
See new test for example that did not work with `Sum` because type
alpha was `Sort u`.
2022-02-17 16:14:34 -08:00
Leonardo de Moura
4a0ae8326c
feat: compute the fixed prefix size for mutually recursive definitions
2022-02-17 14:12:05 -08:00
Leonardo de Moura
e1d9dc4b38
feat: store noncomputable declarations
2022-02-16 13:33:02 -08:00
Leonardo de Moura
d1e5e4166a
feat: use sorry instead of trying to synthesize Inhabited at error recovery
2022-02-15 09:15:18 -08:00
Leonardo de Moura
f75fdcb19b
feat: when Lean cannot prove termination, then report error and add definition as partial, and if it fails add as axiom
2022-02-15 07:44:27 -08:00
Leonardo de Moura
e8c23cdf7e
feat: add cache at Lean/Elab/PreDefinition/WF/PackDomain.lean
2022-02-11 09:52:14 -08:00
Leonardo de Moura
123e0f42e9
feat: support partial and over applications at WF/PackDomain.lean
...
closes #1013
2022-02-11 09:28:17 -08:00
Leonardo de Moura
9fe0d28107
fix: do not split on if-then-else terms when generating equation theorems
...
Reason: avoid unnecessary case-analysis explosion
It is also unnecessary since we only refine the `below` and `F`
arguments over `match`-expressions.
This fixes the last case at issue #998
```
attribute [simp] BinaryHeap.heapifyDown
```
closes #998
2022-02-09 17:43:35 -08:00
Leonardo de Moura
3b67c7db81
fix: handling of letrec declarations in the well-founded recursion module
2022-02-09 10:13:52 -08:00
Leonardo de Moura
471ef75345
feat: improve test at packDomain
2022-02-09 10:13:52 -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
8692225432
fix: saveEqn at Lean/Elab/PreDefinition/Eqns.lean
...
see #998
2022-02-08 13:44:49 -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
Leonardo de Moura
f78d355416
chore: style
2022-02-06 07:29:26 -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
dbb6dcd9a9
fix: remove irrelevant hypotheses in auto-generated equation theorems
2022-02-02 15:39:51 -08:00
Leonardo de Moura
f5509ab867
fix: equational lemma generation for definitions using named patterns
...
closes #945
2022-01-19 17:45:54 -08:00
Leonardo de Moura
873a2ba8a6
feat: unfold namedPattern applications at equation theorems
2022-01-18 15:03:20 -08:00
Leonardo de Moura
da06bb6605
fix: matching inside new termination_by
2022-01-17 08:47:05 -08:00
Leonardo de Moura
7d5f14b4a7
chore: elaborate default_or_ofNonempty% and add mkDefault
2022-01-15 11:55:58 -08:00
Leonardo de Moura
c34adb7dd5
feat: allow partial definitions to be define if type is non empty
2022-01-14 16:50:36 -08:00
Leonardo de Moura
1620987b6c
fix: recursive applications in discriminants
2022-01-13 09:56:33 -08:00
Leonardo de Moura
9162901c86
fix: expandTerminationByNonCore
2022-01-12 16:22:54 -08:00
Leonardo de Moura
91a0ac8a12
feat: elaborate new termination_by syntax
2022-01-12 16:15:30 -08:00
Leonardo de Moura
addcbc6fa3
feat: process termination_by syntax
2022-01-12 16:15:30 -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
de19767594
feat: basic skeleton for termination_by' vs termination_by
2022-01-11 16:53:39 -08:00
Leonardo de Moura
868a43a747
chore: remove dead code
2022-01-11 16:22:20 -08:00
Leonardo de Moura
430b641e81
feat: use decreasing_tactic
2022-01-11 14:47:19 -08:00
Leonardo de Moura
a087b21bc0
fix: bug at WF/Fix.lean
2022-01-11 14:38:31 -08:00
Leonardo de Moura
4c918a2363
feat: use default_decreasing_tactic at WF/Fix.lean
2022-01-10 14:55:38 -08:00
Sebastian Ullrich
60a70372af
chore: remove stray file breaking stage 0 update
...
/cc @leodemoura
2022-01-10 12:57:51 +01:00
Leonardo de Moura
57b9e0852e
fix: clear local context at mkUnfoldEq
2022-01-07 13:51:45 -08:00
Leonardo de Moura
e8a4dbbc2a
chore: document and cleanup mkUnfoldProof
2022-01-07 13:51:45 -08:00
Leonardo de Moura
b797c982fc
feat: add mkUnfoldProof
2022-01-07 13:51:45 -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
7acbbb4fbb
fix: auxiliary whnfAux used at mkEqns
2022-01-06 09:57:41 -08:00
Leonardo de Moura
ff49fd6b7e
fix: apply afterCompilation attributes after we have compiled *all* definitions in a mutual block
2022-01-05 15:57:51 -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
b2918e0c76
test: add tests for WF.mkEqns
2022-01-04 17:18:51 -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