Commit graph

262 commits

Author SHA1 Message Date
Sebastian Ullrich
5d68938a9c feat(frontends/lean): expr literals ```(...) 2017-03-05 08:37:16 -08:00
Leonardo de Moura
077176b82f feat(frontends/lean): add Haskell-like for converting infix notation into functions
Examples:

 qsort (<) [20, 5, 10, 3, 2, 14, 1]

 foldl (+) 0 [1, 2, 3]
2017-02-17 22:51:50 -08:00
Sebastian Ullrich
d15591a2d8 feat(library,frontends/lean): expose parser to Lean and use for parsing tactic parameters 2017-02-17 13:45:56 +01:00
Leonardo de Moura
f650a1b873 refactor(library/init/meta): avoid '_core' idiom using default parameters
I kept a few core methods (e.g., exact_core and apply_core). Reason:
if we use default parameters

    meta constant exact (e : expr) (md := semireducible) : tactic unit

then, we will not be able to write

    to_expr p >>= exact

The workaround is

    do t <- to_expr p, exact t

or
    to_expr p >>= (fun x, exact x)

One alternative is to change how we handle default parameters, and
eta-expand applications that involve default parameters.
We may also have an attribute [eta_expand]. Then

    attribute [eta_expand] foo

instructs the elaborator to automatically eta-expand foo-applications.
The attribute would give users more control, and avoid potential
performance problems. Without the attribute, then for every function
application the elaborator has to check the type and decide whether it
must be eta-expanded or not.

@gebner @kha What do you think?
2017-02-14 09:46:55 -08:00
Leonardo de Moura
77a9feaf70 refactor(frontends/lean): PType ==> Sort
see #1341
2017-01-30 11:54:00 -08:00
Leonardo de Moura
bf9f7560f7 feat(frontends/lean): (Type u) can't be a proposition
(Type u)  is the old (Type (u+1))
(PType u) is the old (Type u)
Type*     is the old (Type (_+1))
PType*    is the old Type*

The stdlib can be compiled, but we still have > 70 broken tests

See discussion at #1341
2017-01-30 11:54:00 -08:00
Gabriel Ebner
385ea13688 feat(kernel/declaration,*): all theorems are delayed, and are revealed on delta-reduction 2016-11-29 11:12:43 -08:00
Leonardo de Moura
97dd2f34d5 feat(library,frontends/lean): add basic doc string support 2016-11-25 18:52:56 -08:00
Leonardo de Moura
dfd2a23cd4 feat(frontends/lean): use #"c" instead of 'c' for character literals
The new notation is the same one used in Standard ML.
It will also allow us to use ' in the beginning of identifiers like Standard ML.
2016-11-17 11:35:54 -08:00
Leonardo de Moura
0bb155a427 chore(*): remove .clean support
In Lean2, we used to cache elaborated definitions in .clean files. The
main goal was to optimize each flycheck invocation produced by Emacs.

The Lean3 definition package was not updating this cache. Moreover, it
is not necessary because the new compilation server subsumes it.
2016-10-13 19:58:58 -07:00
Leonardo de Moura
3fbdb71f3e feat(library/tactic/simplifier): remove simp_extensions 2016-10-06 20:50:23 -07:00
Leonardo de Moura
73ed9db161 chore(frontends/lean/token_table): remove old keyword 2016-10-05 08:46:23 -07:00
Leonardo de Moura
c0022253a7 feat(frontends/lean/tactic_notation): allow lemmas to be removed 2016-09-30 19:53:51 -07:00
Leonardo de Moura
051b6bd026 feat(frontends/lean/tactic_notation): add notation for entering auto-quotation mode 2016-09-30 16:18:52 -07:00
Leonardo de Moura
c6ec659bf5 feat(frontends/lean): improve 'begin...end' blocks 2016-09-27 13:34:11 -07:00
Leonardo de Moura
70ca497654 feat(frontends/lean/token_table): add ASCII notation for anonymous constructor 2016-09-25 13:48:52 -07:00
Leonardo de Moura
d5a28f91cc refactor(library/init): reorganize files and cleanup notation 2016-09-25 13:37:45 -07:00
Leonardo de Moura
49cffc0b20 feat(frontends/lean): add compact notation for setting attributes suggested by Sebastian 2016-09-24 15:45:06 -07:00
Leonardo de Moura
5957022adb feat(frontends/lean): add 'class' keyword 2016-09-24 14:32:01 -07:00
Leonardo de Moura
148da46481 feat(frontends/lean): 'mutual' and 'meta' are now keywords 2016-09-24 10:44:40 -07:00
Leonardo de Moura
6bfd4eb9cf feat(frontends/lean): add 'instance' keyword 2016-09-23 12:19:05 -07:00
Leonardo de Moura
85e03da7db feat(frontends/lean): add 'def' as shorthand for 'definition' 2016-09-23 08:25:16 -07:00
Leonardo de Moura
7ae778e925 feat(frontends/lean): generalize '~>' notation, and add alias '^.' for '~>' 2016-09-23 08:18:19 -07:00
Leonardo de Moura
b7abd61579 feat(frontends/lean): change subtype notation (again)
We had conflicts with the set notation.
2016-09-21 17:02:18 -07:00
Leonardo de Moura
c0ff9967af feat(frontends/lean): add basic notation for collections 2016-09-21 16:20:57 -07:00
Leonardo de Moura
dde5f7ac70 feat(frontends/lean): add aliases such as: .1 for ~>1 2016-09-21 11:32:02 -07:00
Leonardo de Moura
8657230435 chore(frontends/lean): new token for projections, and cleanup 2016-09-21 10:18:49 -07:00
Leonardo de Moura
318ef761d3 feat(frontends/lean): lambda+anonymous_constructor+match notation 2016-09-21 08:49:05 -07:00
Leonardo de Moura
5e8f2add84 refactor(library/init): use universe variables 2016-09-17 12:25:02 -07:00
Leonardo de Moura
a74f02546b refactor(*): remove abbreviation command 2016-09-03 17:11:29 -07:00
Leonardo de Moura
cd77f7167e chore(frontends/lean): run_tactic ==> run_command
add `command` as alias for `tactic unit`
2016-08-18 12:53:21 -07:00
Leonardo de Moura
ddc3789929 feat(frontends/lean): add run_tactic command
This commit also adds the tactic `add_decl`.
2016-08-18 10:56:18 -07:00
Daniel Selsam
a9b01991c2 feat(frontends/lean/inductive_cmd): new frontend for the inductive cmd
Conflicts:
	src/frontends/lean/CMakeLists.txt
	src/frontends/lean/structure_cmd.h
2016-08-17 07:34:03 -07:00
Sebastian Ullrich
cb6a6b642e refactor(library/attribute_manager): remove attribute tokens and use name for attribute names 2016-08-16 13:49:03 -07:00
Leonardo de Moura
24bc999c77 feat(frontends/lean): add mutual_meta_definition 2016-08-12 20:00:10 -07:00
Sebastian Ullrich
e0e8a3aff2 refactor(library/abbreviation): make parsing_only a real attribute 2016-08-12 15:36:12 -07:00
Leonardo de Moura
80b6bb47f8 feat(frontends/lean): parse mutual_definition 2016-08-11 13:47:52 -07:00
Leonardo de Moura
11043bc888 chore(frontends/lean/builtin_cmds): remove dead code 2016-08-11 08:38:39 -07:00
Leonardo de Moura
f75de2e950 chore(library/definitional,frontends/lean): remove decreasing macro 2016-08-09 16:27:33 -07:00
Leonardo de Moura
139c15878d chore(frontends/lean/decl_cmds): change syntax for specifying custom well-founded relations 2016-08-08 13:30:09 -07:00
Leonardo de Moura
8993d0738a feat(frontends/lean): remove #elab command
The check command is now using the new elaborator.
2016-08-02 15:05:24 -07:00
Leonardo de Moura
7ddf1e817b chore(frontends/lean): coercions are disabled by default 2016-07-29 13:03:23 -07:00
Leonardo de Moura
477a137db9 feat(frontends/lean): remove 'using' expressions
Reason: we have include/omit commands
2016-07-28 09:53:27 -07:00
Leonardo de Moura
212d222047 feat(frontends/lean): quoted names 2016-07-22 19:06:57 -07:00
Leonardo de Moura
8cfe7fdeab chore(frontends/lean/token_table): remove old keywords 2016-07-17 14:34:01 -04:00
Leonardo de Moura
26177995c2 feat(library/tactic): add 'generalize' tactic 2016-07-16 15:41:32 -04:00
Leonardo de Moura
fbefda9b1c feat(frontends/lean): add commands 'add_key_equivalence' and 'print key_equivalences' 2016-07-16 15:41:32 -04:00
Daniel Selsam
9c3b7ad979 feat(simplifier/simp_extensions): basic bookkeeping 2016-07-04 17:13:19 -07:00
Leonardo de Moura
bd69aacfa8 chore(frontends/lean): remove old '#simplify' command
We can use the new tactic framework for testing the simplifier.
2016-06-28 11:55:02 +01:00
Leonardo de Moura
e16dbac0db feat(frontends/lean): add declare_trace command
It allows users to define their own tracing classes.
2016-06-28 11:45:56 +01:00