Commit graph

84 commits

Author SHA1 Message Date
Leonardo de Moura
162062b3de feat: improve Lawful.lean 2021-02-23 12:38:00 -08:00
Leonardo de Moura
d0574d8eb1 feat: add LawfulMonad for StateT 2021-02-21 10:52:53 -08:00
Leonardo de Moura
4ec85a39a5 fix: Not should not be reducible, special support for Ne
Unification hint for `Not`
2021-02-15 17:36:11 -08:00
Leonardo de Moura
99ba21a881 chore: annotations for simp 2021-02-15 17:04:47 -08:00
Leonardo de Moura
aae8a35150 feat: add ForIn type class 2021-02-04 17:59:44 -08:00
Leonardo de Moura
4a19a5d2a4 refactor: move Eq.trans to Prelude.lean
We need it at `SizeOf.lean`
2021-01-27 18:27:04 -08:00
Leonardo de Moura
be7ddef689 refactor: move congr and congrFun to Prelude.lean
We use them to generate the `sizeOf` lemmas.
2021-01-25 17:18:08 -08:00
Sebastian Ullrich
0c91b3769e chore: replace variables in src/ 2021-01-22 14:36:05 +01:00
Leonardo de Moura
ad913de340 refactor: define SizeOf before Core.lean 2021-01-20 17:07:02 -08:00
Leonardo de Moura
244b72befd feat: simpArrow 2021-01-01 17:15:15 -08:00
Leonardo de Moura
ce09e795b9 feat: finalizeProof at rewrite step 2021-01-01 11:33:34 -08:00
Leonardo de Moura
4a06057410 feat: simp 2020-12-31 15:44:18 -08:00
Leonardo de Moura
3b6d65c3c3 chore: use deriving Inhabited 2020-12-13 10:09:20 -08:00
Leonardo de Moura
d734a2605b chore: adjust stdlib 2020-11-29 17:01:56 -08:00
Leonardo de Moura
e21b4a6399 feat: nicer syntax for unification hints 2020-11-27 19:18:18 -08:00
Leonardo de Moura
ebba9d119d feat: unification hints 2020-11-27 18:12:49 -08:00
Leonardo de Moura
0869f38de4 chore: update structure, class, inductive 2020-11-27 15:09:30 -08:00
Leonardo de Moura
d6f778bec4 refactor: arbitrary without explicit arguments
@Kha I was tired of writing `arbitrary _` :)
There 0 places in the stdlib where the type needs to be provided.
If in the future we need to specify the type we can use
`arbitrary (α := <type>)`
2020-11-25 09:07:38 -08:00
Leonardo de Moura
f456e006dc chore: test instance ... where 2020-11-23 18:24:23 -08:00
Leonardo de Moura
304c80d610 feat: use <| 2020-11-19 09:03:38 -08:00
Leonardo de Moura
c305c2691f chore: use := 2020-11-19 07:22:31 -08:00
Leonardo de Moura
77eaf17a47 refactor: move idDelta to Prelude.lean, add idRhs 2020-11-15 12:54:29 -08:00
Leonardo de Moura
dbf99a17b6 chore: define notation using infix commands 2020-11-11 08:26:12 -08:00
Leonardo de Moura
9c9d65e640 chore: move definitions needed by macros to Prelude.lean 2020-11-11 06:56:45 -08:00
Leonardo de Moura
cca3bad0bb feat: add Prelude.lean
`Prelude.lean` has no dependencies, and
at the end of `Prelude`, the `syntax` and `macro` commands are operational.
2020-11-10 18:08:18 -08:00
Leonardo de Moura
c665d5e20a chore: cleanup 2020-11-10 15:40:00 -08:00
Leonardo de Moura
7f364feeb5 chore: add Classical.lean, Equivalence, and cleanup 2020-11-10 14:55:34 -08:00
Leonardo de Moura
7e51020685 chore: move SizeOf to its own file 2020-11-10 14:43:03 -08:00
Leonardo de Moura
2daeb195b5 chore: use new names 2020-11-10 10:15:19 -08:00
Leonardo de Moura
fdb7db5650 chore: rename Eq.subst argument 2020-11-08 14:05:17 -08:00
Sebastian Ullrich
f56d81de32 chore: revert "chore: avoid .."
This reverts commit 60c0e7b3d4.
2020-11-03 15:12:23 +01:00
Leonardo de Moura
60c0e7b3d4 chore: avoid ..
@Kha The parenthesizer generates an error when `..` is used in terms
2020-11-02 19:32:32 -08:00
Leonardo de Moura
bb99fc400a chore: remove old crap 2020-11-02 19:16:23 -08:00
Leonardo de Moura
dfc346e76f chore: remove obsolete attribute 2020-11-02 06:47:20 -08:00
Leonardo de Moura
806e8784e7 chore: cleanup Quot/Quotient 2020-11-01 09:12:24 -08:00
Leonardo de Moura
6858cb5fb6 chore: cleanup 2020-10-29 10:24:16 -07:00
Leonardo de Moura
86cb5cbdfe chore: remove auxiliary definition for old frontend 2020-10-28 09:46:38 -07:00
Leonardo de Moura
898a08a0c1 chore: avoid Has prefix in type classes
closes #203
2020-10-27 18:29:19 -07:00
Leonardo de Moura
97c93ec557 chore: prepare to rename 2020-10-27 18:09:03 -07:00
Sebastian Ullrich
7696f71518 Revert "chore: avoid fun | ... => notation"
This reverts commit 8c6f536367.
2020-10-27 16:50:58 +01:00
Leonardo de Moura
f89d34e0dc chore: cleanup 2020-10-25 09:53:52 -07:00
Leonardo de Moura
8c6f536367 chore: avoid fun | ... => notation
@Kha the pretty printer fails when we use the `fun+match` macro. Example:
```
fun
 | PSum.inl a => 1 + sizeof a
 | PSum.inr b => 1 + sizeof b
```
The test `Reparen.lean` fails without this commit. Here is the error message
```
error: no known parenthesizer for kind 'Lean.Parser.Term.matchAlts'
```
2020-10-25 09:36:44 -07:00
Leonardo de Moura
1d338c4fc4 chore: move Core.lean to new frontend 2020-10-25 08:54:37 -07:00
Leonardo de Moura
0d99c92886 chore: use motive to name the motive of Eq.ndrec and friends 2020-10-23 05:34:26 -07:00
Leonardo de Moura
fac2849e50 feat: forIn for PersistentArray 2020-10-20 09:33:50 -07:00
Leonardo de Moura
7bfa39ae45 fix: for .. in .. do notation and universe constraints
We use `MProd` instead of `Prod` to group values when expanding the
`do` notation. `MProd` is a universe monomorphic product.
The motivation is to generate simpler universe constraints in code
that was not written by the user but generated by the `do` macro.
Note that we are not really restricting the macro power since the
`HasBind.bind` combinator already forces values computed by monadic
actions to be in the same universe.

The new test cannot be compiled without this modication.
2020-10-18 18:05:00 -07:00
Leonardo de Moura
0b81ffb569 refactor: factor out nested do term support and document code
We currently use the nested `do` terms for two combinators: `catch`
and `finally`. We may want to support more in the future.
2020-10-09 11:59:14 -07:00
Leonardo de Moura
8a6cb1842f feat: expand doTry
@Kha I did not implement support for reassignments and `continue`,
`break`, `return` inside the `finally` clause. It is doable, but it
feels like unnecessary complexity. We currently don't have any
instance in our code base where this would be useful.
2020-10-08 19:39:36 -07:00
Leonardo de Moura
5b76155318 feat: new return semantics
`return e` is not equivalent to `pure e` anymore.
Now, `return e` means "return value `e` as the result of the root `do` block".
2020-10-07 14:07:58 -07:00
Leonardo de Moura
b4289d5c5d feat: add DoResult 2020-10-03 15:38:30 -07:00