Commit graph

26011 commits

Author SHA1 Message Date
Leonardo de Moura
8feb14186e chore: update stage0 2021-09-09 18:07:35 -07:00
Leonardo de Moura
1e1a085ab3 test: eq theorem derivation 2021-09-09 17:51:49 -07:00
Leonardo de Moura
7607a24469 test: deriving DecidableEq for enum types
Forgot to add test.
2021-09-09 17:47:23 -07:00
Leonardo de Moura
5154f462f8 feat: add reduce conv tactic 2021-09-09 17:47:10 -07:00
Leonardo de Moura
496cc92ae9 feat: add simpMatch helper conv tactic 2021-09-09 17:29:32 -07:00
Leonardo de Moura
09eecc5c08 fix: simp was not applying rewrites to the function application prefixes 2021-09-09 17:07:14 -07:00
Leonardo de Moura
5a7badd69a feat: add support for erasing keyed attributes
This commit addresses any issue described at https://leanprover.zulipchat.com/#narrow/stream/270676-lean4/topic/Eq.2Endrec.20vs.20Eq.2Erec
2021-09-09 14:28:41 -07:00
Leonardo de Moura
b5b5370181 feat: add delta to conv mode 2021-09-09 13:07:33 -07:00
Leonardo de Moura
4087525cba feat: add delta tactic 2021-09-09 13:07:33 -07:00
Leonardo de Moura
3c49969832 feat: add replaceLocalDeclDefEq 2021-09-09 13:07:33 -07:00
Leonardo de Moura
cd75132378 refactor: add withLocation combinator 2021-09-09 13:07:33 -07:00
Sebastian Ullrich
c5940f0149 fix: cmake/make dependencies 2021-09-09 18:12:55 +02:00
Leonardo de Moura
075ba63a8b feat: add LEAN_ABORT_ON_PANIC 2021-09-09 04:49:16 -07:00
Sebastian Ullrich
2159a90c8c fix: lean target dependencies
Fixes #661
2021-09-09 11:55:33 +02:00
Leonardo de Moura
474395aae4 perf: use binary search 2021-09-08 16:54:54 -07:00
Leonardo de Moura
193d4dc9f5 feat: optimized deriving DecidableEq for enumeration types
The proof term is liner on the number of constructors, but type
checking is not linear because the reduction engine in the kernel is
not efficient.
2021-09-08 16:21:32 -07:00
Leonardo de Moura
9b0dfc4b90 feat: convert "orphan" kernel nat literals n into ofNat n 2021-09-08 14:58:13 -07:00
Leonardo de Moura
9032ddd773 chore: add simp lemma for converting Nat.add back into + notation 2021-09-08 14:58:13 -07:00
Christian Pehle
bd02f16b43 feat: optimized ``deriving BEq`` for enumeration types 2021-09-08 14:57:21 -07:00
Sebastian Ullrich
e0869bdf55 fix: sanitized build 2021-09-08 17:24:31 +02:00
Sebastian Ullrich
a97621467f fix: stdlib.make: missing target 2021-09-08 17:24:31 +02:00
Sebastian Ullrich
68a3799b7c refactor: build lean in stdlib.make 2021-09-08 17:24:31 +02:00
Sebastian Ullrich
01325170a6 feat: make LEANC_CC configurable 2021-09-08 17:24:31 +02:00
Sebastian Ullrich
af78071000 chore: use -Bsymbolic in favor of -Bsymbolic-functions, which Zig doesn't like 2021-09-08 17:24:31 +02:00
Sebastian Ullrich
ab9a31a806 refactor: leanc: use case 2021-09-08 17:24:31 +02:00
Sebastian Ullrich
9702fe1981 chore: leanc: use C instead of C++ compiler 2021-09-08 17:24:31 +02:00
Leonardo de Moura
716ffecf89 chore: add sorry tactic 2021-09-08 08:10:37 -07:00
Leonardo de Moura
c1573d15c1 test: missing tests 2021-09-08 08:00:36 -07:00
Leonardo de Moura
12af1480d6 feat: add specialize tactic 2021-09-08 08:00:02 -07:00
Sebastian Ullrich
3787c6081c fix: pass worker cmdline options to Lean code 2021-09-08 11:34:31 +02:00
Sebastian Ullrich
58e8c5774c fix: stdlib_flags.h 2021-09-08 11:34:31 +02:00
Chris Lovett
bc3900cbb9 doc: small fixes 2021-09-07 19:19:58 -07:00
Leonardo de Moura
3fc226dc6d chore: fix tests 2021-09-07 19:14:30 -07:00
Leonardo de Moura
445cc3085f refactor: avoid Name, MVarId, and FVarId confusion 2021-09-07 19:06:50 -07:00
Leonardo de Moura
750c2507da test: add *> laziness test
This commit also fixes a broken test

Closes #617

The following operators are now lazy: `<|>`, `>>`, `*>`, `<*`, `<*>`
2021-09-07 18:03:15 -07:00
Leonardo de Moura
e5600b03df chore: update stage0 2021-09-07 17:51:26 -07:00
Leonardo de Moura
53ec43ff9b refactor: lazy evaluation for >>, <*>, <*, and *>
see issue: #617
2021-09-07 17:50:34 -07:00
Leonardo de Moura
51b7c4cf21 chore: remove Nondet.lean
It was too "unsafe", and it is dead code.
2021-09-07 17:36:20 -07:00
Leonardo de Moura
6ea7869c6a chore: "fix" <|> notation declaration
The `infix` declaration was generating a delaborator, but it is
producing the invalid term
```
ConstantFunction.f myFun 3 <|> fun _ => ConstantFunction.f myFun 4
```
It is invalid because the `macro_rules` for `<|>` is based on
`binop_lazy%` which introduces the `fun _ =>` for us.

I tried to use
```
notation:20 a:21 " <|> " b:20 => HOrElse.hOrElse a fun _ : Unit => b
```
but the delaborator generator does not work for this case.
2021-09-07 17:29:27 -07:00
Leonardo de Moura
eb94e87195 chore: fix some tests 2021-09-07 17:20:21 -07:00
Leonardo de Moura
c5f9113dcf test: use <|> at binop_lazy test 2021-09-07 17:10:36 -07:00
Leonardo de Moura
2f0a936f88 chore: update stage0 2021-09-07 17:08:16 -07:00
Leonardo de Moura
3714cf16ec refactor: lazy evaluation for <|>
see #617
2021-09-07 17:06:10 -07:00
Leonardo de Moura
3b136816fe chore: update stage0 2021-09-07 13:39:59 -07:00
Leonardo de Moura
55f01fb6e1 feat: elaborate binop_lazy% 2021-09-07 13:30:09 -07:00
Leonardo de Moura
61976c4e56 chore: update stage0 2021-09-07 13:29:50 -07:00
Leonardo de Moura
d991c20859 chore: add binop_lazy%
This is a gadget for issue #617.
2021-09-07 13:00:36 -07:00
Leonardo de Moura
5a862a06c6 chore: remove leftover 2021-09-07 12:57:27 -07:00
Leonardo de Moura
f46eedac84 fix: fixes #655 2021-09-07 12:17:28 -07:00
Leonardo de Moura
a8007ee827 chore: update stage0 2021-09-07 08:26:55 -07:00