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