Leonardo de Moura
d5aae42b7c
feat(frontends/lean): use new elaborator to elaborate examples when set_option new_elaborator true
2016-09-05 09:52:01 -07:00
Leonardo de Moura
f7df7dc9a7
refactor(kernel): add reducibility_hints
2016-09-04 16:30:02 -07:00
Leonardo de Moura
a74f02546b
refactor(*): remove abbreviation command
2016-09-03 17:11:29 -07:00
Leonardo de Moura
48786b6afe
feat(frontends/lean/decl_cmds): register attributes after bytecode has been generated
2016-08-17 08:46:26 -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
Leonardo de Moura
7d9cf74007
feat(frontends/lean/definition_cmds): basic xdefinition_cmd_core
2016-08-13 15:08:32 -07:00
Leonardo de Moura
24bc999c77
feat(frontends/lean): add mutual_meta_definition
2016-08-12 20:00:10 -07:00
Sebastian Ullrich
f0b3bd3c85
chore(frontends/lean/decl_cmds): disable old attribute declaration syntax
2016-08-12 15:36:12 -07:00
Sebastian Ullrich
47e104311c
feat(frontentds/lean/decl_attributes): implement attribute [...] definition ... syntax
2016-08-12 15:36:12 -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
a641f9dfc0
feat(frontends/lean): add new definition command skeleton
2016-08-11 14:38:35 -07:00
Leonardo de Moura
fc4e304b27
refactor(library): move equations to equations_compiler
2016-08-11 10:08:30 -07:00
Leonardo de Moura
f056f0f2cb
refactor(library): definitional ==> constructions
2016-08-11 10:08:22 -07:00
Leonardo de Moura
fd0b593fba
feat(frontends/lean): add definition_cmds files
2016-08-11 09:40:24 -07:00
Leonardo de Moura
8f33269286
feat(frontends/lean): add decl_util module for definition/inductive commands
2016-08-10 17:04:12 -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
Sebastian Ullrich
82657b3b64
refactor(library/compiler/inliner, library): replace inline command with attribute
...
sed -Ei 's/inline (protected )?(meta_)?definition (\S+)/\1\2definition \3 [inline]/' library/**/*.lean
2016-08-08 12:45:22 -07:00
Sebastian Ullrich
c3ea0c1852
refactor(frontends/decl_cmds): simplify definition parsing logic
...
Also restrict syntax to `inline? (private|protected)? noncomputable?`
2016-08-08 12:44:37 -07:00
Leonardo de Moura
371dd9d1e1
refactor(frontends/lean): move match-expr parser to different module
2016-08-08 09:05:22 -07:00
Leonardo de Moura
1e6b3614ab
feat(frontends/lean): new pattern matching validation
...
@Kha, we now support variable/constant shadowing in patterns.
A constant may occur in a pattern if it is a constructor or tagged with
the new [pattern] attribute. In the standard library, I have tagged
'add', 'zero', 'one', 'bit0', 'bit1' and 'rfl' with this new attribute.
BTW, arbitrary constants and variables may occur nested in type ascriptions and
inaccessible terms.
Here is an example:
meta_definition tactic_result_to_string {A : Type} : tactic_result A → string
| (success a s) := to_string a
| (exception ⌞A⌟ e s) := "Exception: " ++ to_string (e ())
I had to use the inaccessible ⌞A⌟ in the example above, otherwise, we would be shadowing the parameter
{A : Type}, and we would get a type error.
The new validation is performed at to_pattern_fn (parser.cpp).
2016-08-07 11:31:11 -07:00
Leonardo de Moura
1041f6d9d8
feat(frontends/lean/structure_cmd): private structures
2016-08-06 00:03:06 -07:00
Leonardo de Moura
f4e1e92807
feat(frontends/lean/decl_cmds): use new elaborator for variable, parameter and constant commands
2016-08-03 17:10:45 -07:00
Sebastian Ullrich
c4edad0372
feat(frontends/lean, library): remove attribute and metaclass scoping
...
All data is now part of either a global, permanent scope or a local,
temporary one
2016-07-29 23:44:21 -04:00
Leonardo de Moura
6234d0d830
fix(frontends/lean/decl_cmds): the function name does not need to be atomic
2016-06-29 07:55:11 +01:00
Leonardo de Moura
e433417e49
feat(frontends/lean/decl_cmds): pattern variables must be atomic
2016-06-29 07:34:36 +01:00
Leonardo de Moura
5d225b7056
feat(frontends/lean): 'example's don't need to be trusted
2016-06-28 10:06:15 +01:00
Leonardo de Moura
c624c2d932
feat(frontends/lean): allow patterns in 'do' notation
2016-06-24 19:28:48 -07:00
Leonardo de Moura
51b3ddb274
chore(frontends/lean/decl_cmds): use 'pattern' instead of recursive equation
2016-06-24 16:31:06 -07:00
Leonardo de Moura
5459e9ad8a
chore(frontends/lean): remove dead code
2016-06-13 10:42:38 -07:00
Leonardo de Moura
09255e9a4c
fix(frontends/lean/decl_cmds): generate code for inline definitions
...
Reason: we only unfold inline definitions when they are fully applied.
2016-06-03 16:08:13 -07:00
Leonardo de Moura
2c4935148c
fix(frontends/lean/decl_cmds): recursive equations for meta-definitions
2016-06-02 17:12:21 -07:00
Leonardo de Moura
5382a5a556
feat(frontends/lean): allow unbounded recursion in meta_definitions
2016-06-01 09:55:07 -07:00
Leonardo de Moura
e7b47a504e
feat(frontends/lean): add meta_definition and meta_constant commands
2016-06-01 09:12:41 -07:00
Leonardo de Moura
af1908be94
feat(frontends/lean/decl_cmds): do not generate warning for definitions that are implemented in the VM
2016-05-13 18:17:20 -07:00
Leonardo de Moura
65b9cab9b4
feat(frontends/lean/decl_cmds): generate bytecode when adding definitions
...
Remark: when the code generator fails we just generate a warning.
Reason: code generator does not support wellfounded recursion yet.
2016-05-13 18:05:47 -07:00
Leonardo de Moura
de9df69ef6
refactor(src): move compiler folder to library
2016-05-09 13:28:00 -07:00
Leonardo de Moura
a4ec6a3a17
feat(compiler, frontends/lean): add 'inline' definitions, and add compiler preprocessing step for unfolding them
2016-05-04 16:53:25 -07:00
Leonardo de Moura
c4f25cf15b
refactor(frontends/lean): rename elaborate methods
2016-03-30 15:05:24 -07:00
Leonardo de Moura
7d61f640f6
refactor(*): add abstract_type_context class
2016-02-26 14:17:34 -08:00
Leonardo de Moura
c9e9fee76a
refactor(*): remove name_generator and use simpler mk_fresh_name
2016-02-11 18:05:57 -08:00
Leonardo de Moura
ba392f504f
feat(kernel/expr,library/blast/blast,frontends/lean/decl_cmds): add workaround for allowing users to use blast inside of recursive equations
2016-01-03 21:53:31 -08:00
Leonardo de Moura
b92416d66c
refactor(library/error_handling): move error_handling to library main dir
2015-12-29 15:31:40 -08:00
Leonardo de Moura
20de22a8ad
feat(frontends/lean): automatically include anonymous instance implicit variables/parameters (whenever their parameters have been included)
2015-12-13 13:20:54 -08:00
Leonardo de Moura
cf61adc5d5
feat(frontends/lean): identifiers starting with '_' are now reserved
2015-12-10 22:32:03 -08:00
Leonardo de Moura
1abaa9eb71
fix(frontends/lean/parser): fixes #858
2015-12-10 10:31:14 -08:00
Leonardo de Moura
cbc3c0cf4f
feat(frontends/lean): suppress profiling information for declarations that take less than 0.01 secs to be processed
2015-12-09 10:48:36 -08:00
Leonardo de Moura
fa938bb94c
feat(frontends/lean/decl_cmds): allow modifier to be provided after the 'attribute' keyword, test 'at' keyword
2015-12-05 11:50:08 -08:00
Leonardo de Moura
e5aab3fd63
feat(library/scoped_ext,frontends/lean): add support for setting attributes into different namespaces
2015-12-05 11:15:02 -08:00
Leonardo de Moura
491c7c55e1
feat(library/simplifier/simp_rule_set): add priorities for simp and congr rules
2015-11-16 22:34:06 -08:00
Leonardo de Moura
0b8f57841a
feat(frontends/lean/decl_cmds): closes #791
2015-08-11 17:53:33 -07:00