Commit graph

7082 commits

Author SHA1 Message Date
Leonardo de Moura
988e43d2b4 fix: WF should reject definitions that do not take any arguments 2021-10-04 13:24:30 -07:00
Leonardo de Moura
85c49cfeb3 feat: apply termination tactic provided by user 2021-10-03 18:47:52 -07:00
Leonardo de Moura
23740778d4 refactor: termination hints 2021-10-03 18:09:35 -07:00
Leonardo de Moura
a12ade3da4 chore: fix test 2021-10-03 17:20:16 -07:00
Leonardo de Moura
42773941ed chore: fix test 2021-10-02 17:00:07 -07:00
Leonardo de Moura
1e44902243 fix: add withFreshMacroScope at expandMacroImpl? 2021-10-02 16:57:25 -07:00
Leonardo de Moura
15347272c7 feat: elaborate wait_* notation
We can use to define `if-then-else` using macros
2021-10-02 16:27:22 -07:00
Leonardo de Moura
b510bb305d feat: elaborate let_mvar% 2021-10-02 16:12:50 -07:00
Leonardo de Moura
acd21052c0 chore: remove old notation 2021-10-02 15:06:40 -07:00
Daniel Fabian
e1f591ba61 test: do no use unit in ac_expr.lean.
It is not necessary to define a unit element for the proof to go through.
2021-10-02 11:11:08 -07:00
Leonardo de Moura
2546a2cf7e test: add test for if-then-else issue
The issue was reported here:
https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/Required.20type.20annotation.20using.20Array
2021-09-30 22:23:22 -07:00
Leonardo de Moura
28d81ee456 fix: do not extract closed terms containing constants being defined
It may produce crashes during initialization.
2021-09-30 12:46:38 -07:00
Leonardo de Moura
837677cb4c test: doc string 2021-09-30 11:27:09 -07:00
Leonardo de Moura
ff38774b95 test: printDecls 2021-09-29 17:44:21 -07:00
Leonardo de Moura
09d0c93589 feat: declare functions in mutual block using auxiliary fuction defined using WF 2021-09-29 11:24:52 -07:00
Leonardo de Moura
608417b946 fix: check number of explicit variables at induction/cases alternatives when @ is not used
fixes #690
2021-09-29 07:39:38 -07:00
Leonardo de Moura
3fed9c9df7 feat: reject partial when if constant is not a function
fixes #697
2021-09-28 21:07:14 -07:00
Leonardo de Moura
200a38e20c feat: improve letIdLhs parser
The extra space is only really needed to distinguish an array update (NIY)
```
let x[i] := ...
```
from a declaration taking an instance argument
```
let f [Monad m] := ...
```

closes #696
2021-09-28 18:10:25 -07:00
Leonardo de Moura
b85d95b7b6 fix: panic in monadic polymorphic code
fixes #695
2021-09-28 17:46:19 -07:00
Leonardo de Moura
d0462153a0 fix: bug at smart unfolding procedure
It fixes an issue reported at https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/Simplifications.20in.20proofs.2Ftype-checking.20not.20happening.3B.20wh.2E.2E.2E
2021-09-28 10:45:54 -07:00
Leonardo de Moura
ceb9889b0e feat: elaborate temination_by term 2021-09-25 16:54:41 -07:00
Leonardo de Moura
a5b27952b5 fix: panic messages on invalid input
fixes #689
2021-09-25 09:01:01 -07:00
Leonardo de Moura
1282fb2d97 fix: getMatchWithExtra
`getMatchKeyArgs` returns arguments in reverse order.
2021-09-25 08:36:12 -07:00
Leonardo de Moura
58c938cef8 feat: 'termination_by' goodies 2021-09-22 21:09:33 -07:00
Chris Lovett
ad7c5b26a7
fix: UTF-8 file path support for lean on Windows
* fix msys2 windows build so the windows apps support utf-8 file paths.

* use windres to compile default-manifest.o

* windres is in binutils.

* stop modifying default-manifest.o

* copy to stage0

* fix semicolon joining of lists in add_custom_target

* undo changes to stage0 as per CR feedback.

* fix makefile

* fix: revert cmakelists.txt COMMAND_EXPAND_LISTS  change

* fix: msys2 dependencies

* add unit test for decoding UTF-8 chars to prove "lean.exe" can read utf-8 encoded files where utf-8 is also used in the file name.

* fix: utf-8 test by using windows-2022

* fix: do we really need cmake 3.11 or will 3.10 do?

* nope, really does require cmake 11.
2021-09-22 12:21:52 +02:00
Leonardo de Moura
6b1bed5c38 chore: fix test output 2021-09-21 20:37:23 -07:00
Leonardo de Moura
a909e8cf26 feat: arity mismatch error message at well-founded recursion 2021-09-21 20:34:15 -07:00
Leonardo de Moura
6a880fecc9 chore: modify findDocString? 2021-09-21 17:29:40 -07:00
Leonardo de Moura
640fc964b6 feat: basic termination_by bookkeeping 2021-09-21 15:24:42 -07:00
Leonardo de Moura
d43876ac2d chore: fix test 2021-09-21 14:54:45 -07:00
Leonardo de Moura
9085167872 test: Fin match test that relies heavily on contradiction
This example is based on a Lean 3 issue described at
https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/equation.20compiler.20help.20me.20plz
2021-09-21 12:57:08 -07:00
Leonardo de Moura
0351c96831 feat: better error message for induction tactic on mutually inductives 2021-09-21 06:56:17 -07:00
Sebastian Ullrich
15109b5f23 chore: remove obsolete file 2021-09-21 15:54:16 +02:00
Leonardo de Moura
2cbf0ba8e9 test: add "parameters" that are fixed in all equations 2021-09-20 12:58:22 -07:00
Leonardo de Moura
41a58459d7 test: equational theorem generation 2021-09-20 11:12:42 -07:00
Leonardo de Moura
9e980b2a78 fix: bug at decAux?
We are getting a few "stuck at universe constraint" errors after the
fix. We may need to add some kind of approximation in the future.
2021-09-20 07:12:57 -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
fe55205105 test: equational theorem test 2021-09-19 09:34:08 -07:00
Leonardo de Moura
82f3042fa4 fix: equational theorem generation for structural recursion 2021-09-19 08:48:40 -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
fe7b750bce fix: fixes #679 2021-09-18 15:34:29 -07:00
Leonardo de Moura
fc1ec438b8 fix: Repr Name instance 2021-09-18 15:29:32 -07:00
Leonardo de Moura
2a9ba9f795 fix: add support for hierachical names containing numerical parts
closes #677
2021-09-17 19:21:49 -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
d378df47d7 fix: fixes #633 2021-09-16 14:11:34 -07:00
Sebastian Ullrich
d65871241d chore: replace sed with perl in test driver
Consistent across all three platforms
2021-09-16 21:33:56 +02:00
Leonardo de Moura
04b7924154 chore: fix tests 2021-09-16 10:29:38 -07:00
Leonardo de Moura
1c00f29043 test: add let_fun pretty printing test 2021-09-16 10:14:42 -07:00