Commit graph

195 commits

Author SHA1 Message Date
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
Leonardo de Moura
dce55f79ed feat: eliminate recursive application syntax annotation at addAndCompileUnsafe 2021-12-17 07:24:44 -08:00
Leonardo de Moura
7df9cf6a0a feat: eliminate "recAppSyntax" information during structural recursion 2021-12-17 07:15:14 -08:00