Leonardo de Moura
4cdfc9ee84
feat(frontends/lean/pp): add pretty printing functions for debugging purposes
2015-05-06 07:50:56 -07:00
Leonardo de Moura
7cd444882c
feat(frontends/lean): add 'begin+' and 'by+' that enter tactic mode with the whole context visible
2015-05-05 18:47:25 -07:00
Leonardo de Moura
616f49c2e4
feat(frontends/lean): improved 'obtains' expression
2015-05-05 18:30:16 -07:00
Leonardo de Moura
8aefcc182e
feat(frontends/lean/parser): add 'parse_simple_binders'
2015-05-05 18:30:16 -07:00
Leonardo de Moura
6571c47353
feat(library/normalize): add '[unfold-m]' hint
...
See issue #496
2015-05-04 14:23:04 -07:00
Leonardo de Moura
87aaf373f4
fix(frontends/lean): fix '#' override notation on the left-hand-side of recursive equations (and match-expressions)
2015-05-03 21:08:09 -07:00
Leonardo de Moura
441f1f9fe2
feat(frontends/lean): import error message for "unknown" tactics when parsing
2015-05-02 18:57:58 -07:00
Leonardo de Moura
118189eaac
fix(frontends/lean/elaborator): bug in translation function
...
This commit fixes the bug reported in the lean discussion list:
https://groups.google.com/forum/#!topic/lean-discuss/oyzgIqdMyNc
2015-05-02 18:05:07 -07:00
Leonardo de Moura
8c107d6936
fix(frontends/lean/builtin_cmds): bug in export
command
...
Cause: we have two different tokes to represent declarations: [decls] and [declarations]
fixes #568
2015-05-02 16:01:25 -07:00
Leonardo de Moura
cd17618f4a
refactor(library): replace 'calc_trans', 'calc_symm', 'calc_refl' and 'calc_subst' commands with attributes '[symm]', '[refl]', '[trans]' and '[subst]'
...
These attributes are used by the calc command.
They will also be used by tactics such as 'reflexivity', 'symmetry' and
'transitivity'.
See issue #500
2015-05-02 15:15:35 -07:00
Leonardo de Moura
ce5ef5a6cc
feat(frontends/lean): improver parser for tactics of the form 'tac_name <expr> with <ids*>'
2015-05-01 13:06:11 -07:00
Leonardo de Moura
2d9c950144
feat(library/tactic/constructor_tactic): allow 'constructor' tactic without index
...
see issue #500
2015-04-30 21:15:07 -07:00
Leonardo de Moura
3233008039
feat(library/tactic): allow user to name generalized term in the 'generalize' tactic
...
closes #421
2015-04-30 11:57:40 -07:00
Leonardo de Moura
3912bc24c8
feat(frontends/lean): nicer syntax for 'intros' 'reverts' and 'clears'
2015-04-30 11:00:39 -07:00
Leonardo de Moura
d6d30f12c6
feat(frontends/lean): add "polymorphic" print command
...
closes #524
2015-04-29 16:17:33 -07:00
Leonardo de Moura
1a28a3c36f
feat(frontends/lean): add 'print inductive' command
2015-04-29 15:22:10 -07:00
Leonardo de Moura
d2c7b5c319
feat(library/tactic): add 'let' tactic
...
closes #555
2015-04-28 17:24:43 -07:00
Leonardo de Moura
1be72f1faa
feat(frontends/lean): parse argument of unary tactis with rbp=0, tokens may have a different precedence in expression and tactic modes
2015-04-28 13:43:05 -07:00
Leonardo de Moura
4283111198
fix(frontends/lean): missing files
2015-04-28 10:55:04 -07:00
Leonardo de Moura
a23118d357
feat(frontends/lean): add tactic_notation command
...
This addresses the first part of issue #461
We still need support for tactic definitions
2015-04-27 17:46:13 -07:00
Leonardo de Moura
bdef7aaf40
feat(frontends/lean/pp): add check_system at pretty printer
2015-04-27 14:21:53 -07:00
Leonardo de Moura
d41e055d1c
feat(frontends/lean/migrate_cmd): catch memory error in the migrate command
2015-04-27 12:58:11 -07:00
Leonardo de Moura
9d01868361
feat(frontends/lean): use rewrite tactic to implement unfold (it has a unfold step)
...
closes #502
2015-04-24 17:23:12 -07:00
Leonardo de Moura
6134c8822a
fix(frontends/lean/util): assertion violation
...
fixes #559
2015-04-24 15:09:23 -07:00
Leonardo de Moura
f723550d33
feat(frontends/lean/elaborator): decorates error message with free variables introduced by the left-hand-side of the equation
...
closes #528
2015-04-24 14:58:15 -07:00
Leonardo de Moura
8241863abe
feat(kernel/hits): add two builtin HITs: type_quotient and trunc
2015-04-23 15:32:31 -07:00
Leonardo de Moura
2613e7c444
fix(frontends/lean): bug when handling identifiers in tactics
...
This bug was reported by Jeremy in the Lean Google group:
https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/lean-discuss/ZKJ8WPPEVJA/n05x6rPRzvMJ
2015-04-22 16:03:22 -07:00
Leonardo de Moura
cdf929d178
fix(frontends/lean/local_decls): missing '{}' around macro
2015-04-22 12:54:42 -07:00
Leonardo de Moura
a526cd92ac
fix(frontends/lean): bug in pretty printer
...
this is related to issue #530
2015-04-22 12:44:08 -07:00
Leonardo de Moura
dc93603b4a
feat(frontends/lean): parameter and variable binder type update
...
see issue #532
2015-04-22 12:28:11 -07:00
Leonardo de Moura
91f21c007a
feat(frontends/lean): remove 'context' command
2015-04-22 11:32:02 -07:00
Leonardo de Moura
53653c3526
fix(frontends/lean): pretty printing in sections with parameters
...
fix #530
2015-04-21 22:44:09 -07:00
Leonardo de Moura
caf28f4053
fix(frontends/lean/decl_cmds): missing condition
2015-04-21 21:08:57 -07:00
Leonardo de Moura
22f6a95cc4
feat(frontends/lean): local notation override global one
2015-04-21 19:55:59 -07:00
Leonardo de Moura
fe9f4dd95f
fix(frontends/lean): another bug in sections with parameters
2015-04-21 19:50:21 -07:00
Leonardo de Moura
3df99e514b
fix(frontends/lean): problems with sections
2015-04-21 19:46:57 -07:00
Leonardo de Moura
52e9ad1a98
feat(frontends/lean): allow persistent notation declaration in sections (when they do not contain parameters)
...
see issue #554
2015-04-21 19:04:06 -07:00
Leonardo de Moura
bf8a7eb9b4
fix(library/scoped_ext): bug in local metadata in sections
...
The problem is described in issue #554
2015-04-21 18:56:28 -07:00
Leonardo de Moura
107763a506
fix(frontends/lean): better error message for 'proof ... qed' blocks containing unsolved placeholders
2015-04-20 15:50:37 -07:00
Leonardo de Moura
df05edf333
feat(frontends/lean): generate warning when 'exit' is used
...
closes #553
2015-04-20 14:45:39 -07:00
Leonardo de Moura
60e320fd79
feat(frontends/lean): protected constants and axioms
...
fixes #527
2015-04-19 17:45:58 -07:00
Leonardo de Moura
2bc13f6bfd
feat(library/tactic/exact): enforce goal type during elaboration when executing 'exact' tactic
...
Remark: this was the behavior of the 'sexact' tactic.
This commit also adds the 'rexact' (relaxed exact) tactic which does not
enforce the goal type.
closes #495
2015-04-06 13:23:38 -07:00
Leonardo de Moura
754276a660
feat(frontends/lean): round parenthesis for [tactic1 | tactic2]
...
This commit also replaces the notation for divides
`(` a `|` b `)`
with
a `∣` b
The character `∣` is entered by typing \|
closes #516
2015-04-06 09:24:09 -07:00
Leonardo de Moura
969d17fd12
fix(frontends/lean/elaborator): class inference in tactic mode with trunc
...
closes #477
2015-04-05 17:47:14 -07:00
Leonardo de Moura
d731a4ab13
feat(library/normalize): add '[unfold-f]' hint
...
closes #497
2015-04-05 03:00:13 -07:00
Leonardo de Moura
d591c63840
feat(frontends/lean/decl_cmds): allow local coercions in contexts
...
closes #525
2015-04-04 15:25:07 -07:00
Leonardo de Moura
8c59f17605
feat(frontends/lean): 'using' expression without 'show' or 'have'
...
closes #536
2015-04-04 15:25:07 -07:00
Leonardo de Moura
4ec0e1b07c
feat(frontends/lean): improve calc mode
...
Now, it automatically supports transitivity of the form
(R a b) -> (b = c) -> R a c
(a = b) -> (R b c) -> R a c
closes #507
2015-04-04 08:58:35 -07:00
Leonardo de Moura
1150b19598
perf(frontends/lean/elaborator): do not invoke recursive equation compiler when equations still contain metavariables
2015-04-02 23:37:33 -07:00
Leonardo de Moura
b960e123b1
feat(kernel): add experimental support for quotient types
2015-03-31 22:04:16 -07:00
Leonardo de Moura
4eb270a572
fix(frontends/lean/pp): extra space
2015-03-31 15:07:32 -07:00
Leonardo de Moura
26c914173c
feat(frontends/lean): add --profile option
2015-03-31 11:53:55 -07:00
Leonardo de Moura
46777fdd1d
fix(frontends/lean/migrate_cmd): bug when using migrate command with option --to_axiom
2015-03-30 16:22:06 -07:00
Leonardo de Moura
8c76419c60
fix(frontends/lean/decl_cmds): error localization problem for recursive equations
2015-03-30 13:30:29 -07:00
Leonardo de Moura
cb2a5eeb3c
feat(frontends/lean/inductive_cmd): local notation in inductive decls
2015-03-30 02:14:26 -07:00
Leonardo de Moura
033f3b630d
feat(frontends/lean/scanner): allow upper-case greek letters in identifiers but Pi and Sigma
2015-03-30 02:14:26 -07:00
Leonardo de Moura
75621df52b
feat(frontends/lean): uniform notation for lists in tactics
...
closes #504
2015-03-27 17:54:48 -07:00
Leonardo de Moura
242f8ba048
feat(frontends/lean/elaborator): include number of unsolved goals
...
See #509
2015-03-27 14:54:41 -07:00
Leonardo de Moura
a1c1fcb2f0
fix(frontends/lean/pp): bug in pretty printer new feature
2015-03-25 21:16:21 -07:00
Leonardo de Moura
0c3fd7427e
feat(frontends/lean): add syntax-sugar for fold
...
closes #503
2015-03-25 18:25:48 -07:00
Leonardo de Moura
f2b1752807
fix(frontends/lean/parser): add workaround for #461
2015-03-25 18:09:43 -07:00
Leonardo de Moura
49bc56ec07
feat(frontends/lean/pp): improve pretty printer for prefix and postfix notation
...
closes #491
2015-03-25 16:45:58 -07:00
Leonardo de Moura
a1f933886f
fix(frontends/lean/structure_cmd): explicit universe levels for structures
...
closes #490
2015-03-25 16:10:30 -07:00
Leonardo de Moura
5f1d827b26
fix(frontends/lean/decl_cmds): assertion violation
...
closes #506
2015-03-25 13:46:23 -07:00
Leonardo de Moura
76157ba392
fix(frontends/lean/pp): abbreviations with too much arguments
...
closes #480
2015-03-23 12:16:25 -07:00
Leonardo de Moura
b5acbb2228
fix(frontends/lean/pp): missing parenthesis around abbreviations
...
fixes #476
2015-03-16 17:12:03 -07:00
Leonardo de Moura
9b577a7b3e
feat(frontends/lean): add 'migrate' command
2015-03-14 21:48:00 -07:00
Leonardo de Moura
fc3a7bac59
feat(frontends/lean): improve error handling inside match-with expressions
2015-03-13 23:25:46 -07:00
Leonardo de Moura
bed0d6df6b
fix(frontends/lean/elaborator): inaccessible over coercion
2015-03-13 23:04:45 -07:00
Leonardo de Moura
cfeb426cd7
fix(frontends/lean): pretty print numeral notation from algebra
2015-03-13 18:58:34 -07:00
Leonardo de Moura
9438366e37
feat(frontends/lean/builtin_exprs): better error synchronization for 'begin...end' blocks
2015-03-13 15:22:57 -07:00
Leonardo de Moura
b88b98ac22
feat(frontends/lean): try to add definition/theorem as axiom when it fails to be processed
...
The idea is to avoid a "tsunami" of error messages when a heavily used
theorem breaks in the beginning of the file
2015-03-13 14:47:21 -07:00
Leonardo de Moura
f5811d6092
feat(frontends/lean): hide subterms that do not contain metavariables
...
when generating "unresolved metavariables" error message
closes #473
2015-03-13 12:42:57 -07:00
Leonardo de Moura
7ca882d69a
fix(frontends/lean/parse_rewrite_tactic): esimp error message position information
2015-03-12 17:05:41 -07:00
Leonardo de Moura
71ce207080
fix(frontends/lean/elaborator): potential memory access violation
...
Before this commit, the modified method would crash if caching in the
whnf procedure was disabled.
2015-03-11 15:54:50 -07:00
Leonardo de Moura
f966634910
feat(frontends/lean): nested dependent pattern matching
2015-03-06 19:18:08 -08:00
Leonardo de Moura
1490bdad49
feat(frontends/lean): add version of 'exact' tactic (sexact) that enforces goal type during term elaboration
2015-03-06 17:34:45 -08:00
Leonardo de Moura
bd8c4315f1
feat(frontends/lean): allow 'match-with' to be used in tactics without prefixing it with 'exact'
2015-03-06 15:49:31 -08:00
Leonardo de Moura
f24d9e84fe
feat(frontends/lean): add option 'max_memory'
...
Default value is 512Mb
2015-03-06 13:56:20 -08:00
Leonardo de Moura
3b721fe675
feat(frontends/lean): add missing 'help' command
2015-03-06 13:56:20 -08:00
Leonardo de Moura
daf36803c4
fix(frontends/lean/builtin_exprs): bug in 'using' construct
2015-03-06 13:56:20 -08:00
Leonardo de Moura
368f9d347e
refactor(frontends/lean): approach used to parse tactics
...
The previous approach was too fragile
TODO: we should add separate parsing tables for tactics
2015-03-05 18:11:21 -08:00
Leonardo de Moura
28487ede3b
feat(frontends/lean/decl_cmds): allow 'empty' set of pattern matching equations
2015-03-05 14:37:29 -08:00
Leonardo de Moura
8e9ccf8b6f
chore(frontends/lean): remove 'dead' tokens
2015-03-05 14:37:29 -08:00
Leonardo de Moura
b73a931c70
fix(frontends/lean/elaborator): missing case 'no-equation' annotation
2015-03-05 14:37:29 -08:00
Leonardo de Moura
e4060a5614
feat(frontends/lean): do not force user to type the function name in the left-hand-side of recursive equations
2015-03-05 12:08:36 -08:00
Leonardo de Moura
039afb4578
feat(frontends/lean): treat "proof t qed" as alias for "by exact t"
2015-03-05 11:12:39 -08:00
Leonardo de Moura
abd238aef0
feat(*): add [quasireducible] attribute
2015-03-04 22:12:49 -08:00
Leonardo de Moura
fa79b214b8
fix(frontends/lean): allow 'attribute <id> [priority ...]'
2015-03-03 16:17:32 -08:00
Leonardo de Moura
11aad4449b
feat(frontends/lean): add '[semireducible]' attribute
...
This commit also renames the elements of reducible_status.
The idea is to use in the C++ implementation the same names used in the
Lean front-end.
2015-03-03 10:48:36 -08:00
Leonardo de Moura
8240d7adcd
perf(frontends/lean/util): improve univ_metavars_to_params_fn
...
We moved to replace_visitor because it uses a more precise cache.
2015-03-02 18:25:00 -08:00
Leonardo de Moura
c81762970e
fix(frontends/lean/elaborator): revert commit ededf4fc6c
...
The instantiate_all are needed. See issue #457
2015-03-02 13:00:54 -08:00
Leonardo de Moura
ededf4fc6c
feat(frontends/lean): remove unnecessary instantiate_all's that were messing with error localization
2015-03-01 14:51:44 -08:00
Leonardo de Moura
c8ad5e9406
feat(frontends/lean/builtin_exprs): focus on have-tactic goal
2015-03-01 13:43:33 -08:00
Leonardo de Moura
c772d7bf84
fix(frontends/lean/elaborator): unassigned metavariable when using nested begin-end blocks
...
Closes #454
2015-02-28 09:03:56 -08:00
Leonardo de Moura
cf56935b01
feat(frontends/lean): improve support for user defined tactics
2015-02-27 16:58:25 -08:00
Leonardo de Moura
5b736a2268
feat(frontends/lean): add support for empty match-with expressions
2015-02-26 16:36:15 -08:00
Leonardo de Moura
68110faa4d
feat(frontends/lean/inductive_cmd): allow '|' in inductive datatype declarations
2015-02-25 17:00:10 -08:00
Leonardo de Moura
5ca52d81ec
feat(frontends/lean): ML-like notation for match and recursive equations
2015-02-25 16:20:44 -08:00
Leonardo de Moura
c04c610b7b
feat(frontends/lean): add 'assert H : A, ...' as notation for 'have H [visible] : A, ...'
2015-02-25 14:30:42 -08:00
Leonardo de Moura
96b54a8007
feat(frontends/lean/builtin_exprs): add 'have' notation in 'begin-end' blocks
...
It is notation for the assert tactic.
2015-02-25 14:04:17 -08:00
Leonardo de Moura
909ebfc5f1
feat(frontends/lean/elaborator): try coercions after each overload
...
We try only the easy cases since the more general case is too expensive.
closes #444
2015-02-24 17:41:20 -08:00
Leonardo de Moura
34c36648bb
fix(frontends/lean/decl_cmds): constants command
...
closes #445
2015-02-24 16:27:13 -08:00
Leonardo de Moura
4364b7f926
feat(frontends/lean): pp.beta is true by default
...
Remark: there is one exception (command: print definition). For this
command pp.beta is still false.
2015-02-24 12:27:53 -08:00
Leonardo de Moura
1ff6446a63
feat(frontends/lean): nested begin-end blocks
2015-02-24 11:59:27 -08:00
Leonardo de Moura
3197e6d403
feat(frontends/lean/parse_rewrite_tactic): improve rewrite tactic parser
2015-02-23 19:40:03 -08:00
Leonardo de Moura
7adecaf494
fix(frontends/lean/structure_cmd): include context/section parameteres/variables that are used in explicit structure parameters
2015-02-23 15:28:43 -08:00
Leonardo de Moura
923fed8612
fix(frontends/lean/structure_cmd): bug in alias generation in the structure command
...
This commit (and 75acb3bc66
) closes #443
2015-02-23 15:17:05 -08:00
Leonardo de Moura
75acb3bc66
fix(frontends/lean/structure_cmd): internal name of parameter/variable was being erased
2015-02-23 15:01:27 -08:00
Leonardo de Moura
33e562a7ce
fix(frontends/lean/structure_cmd): effect of "include" command in the structure command
...
closes #438
2015-02-19 22:44:51 -08:00
Leonardo de Moura
7fc216183e
feat(library/tactic): produce better error message when a tactic fails
...
closes #348
2015-02-16 18:42:15 -08:00
Leonardo de Moura
4248ad644d
fix(frontends/lean): priority expressions parser
2015-02-14 12:26:06 -08:00
Leonardo de Moura
c532a4a4b8
feat(frontends/lean/server): add option 'auto_completion.max_results'
...
Default value is 100
2015-02-13 12:58:11 -08:00
Leonardo de Moura
db71a29c81
feat(frontends/lean/parse_rewrite_tactic): improve esimp tactic
2015-02-13 12:22:17 -08:00
Leonardo de Moura
8ffadce4ab
feat(frontends/lean): add "premise" and "premises" command
...
It is just an alternative notation for "variable" and "variables"
closes #429
2015-02-11 18:46:03 -08:00
Leonardo de Moura
30d20e8029
chore(frontends/lean/parser): remove dead code
2015-02-11 16:29:58 -08:00
Leonardo de Moura
04e92e1e96
feat(frontends/lean/parser): reject explicit universe levels in variables and parameters
...
This modification was motivated by issue #427
2015-02-11 16:25:06 -08:00
Leonardo de Moura
a35cce38b3
feat(frontends/lean): new semantics for "protected" declarations
...
closes #426
2015-02-11 14:09:25 -08:00
Leonardo de Moura
eceed03044
feat(frontends/lean): add "except" notation for "open" command, allow multiple metaclasses to be opened in a single "open" command
2015-02-11 11:02:59 -08:00
Leonardo de Moura
1832fb6f54
feat(*): uniform metaclass names, metaclass validation at 'open' command
2015-02-11 10:35:04 -08:00
Leonardo de Moura
9d1cd073c5
feat(frontends/lean): add 'print metaclasses' command
2015-02-11 10:13:20 -08:00
Leonardo de Moura
60fca7575c
fix(frontends/lean/pp): bugs when pretty printing abbreviations
2015-02-10 19:06:09 -08:00
Leonardo de Moura
bd304e1911
chore(*): style
2015-02-10 18:31:17 -08:00
Leonardo de Moura
43f849bf95
feat(frontends/lean/pp): add support for abbreviations in the pretty printer
...
closes #365
2015-02-10 18:27:02 -08:00
Leonardo de Moura
565cd835af
feat(frontends/lean): add 'abbreviation' command
2015-02-10 17:31:40 -08:00
Leonardo de Moura
014271da8b
feat(frontends/lean): better error messages for ill-terminated declarations
2015-02-10 14:38:00 -08:00
Leonardo de Moura
666f697d24
fix(frontends/lean/builtin_exprs): 'using' expression should make local constant available for tactics
2015-02-08 17:27:22 -08:00
Leonardo de Moura
c04c0e8381
refactor(*): remove transparent_scope hack, replace [strict] with [all-transparent] annotation
2015-02-07 15:19:41 -08:00
Leonardo de Moura
1e8a975daa
feat(frontends/lean): extend parser: rewrite "fold" step
2015-02-06 15:22:34 -08:00
Leonardo de Moura
5b25da8c43
feat(frontends/lean): add esimp tactic based on rewrite tactic
...
closes #358
2015-02-06 14:13:32 -08:00
Leonardo de Moura
bc95f09828
feat(frontends/lean/decl_cmds): allow user to specify unfold-c hint
2015-02-06 12:56:52 -08:00
Leonardo de Moura
2e626b29fb
feat(library/tactic/rewrite_tactic): allow many constants to be provided in a single rewrite unfold step
2015-02-06 11:03:36 -08:00
Leonardo de Moura
56a46ae61e
feat(frontends/lean/parse_tactic_location): make rewrite notation more uniform
2015-02-06 10:31:50 -08:00
Leonardo de Moura
38ab4e7b3a
feat(frontends/lean/parse_rewrite_tactic): extend rewrite tactic parser
...
Add support for reduction steps.
2015-02-05 13:24:37 -08:00
Leonardo de Moura
5443609845
fix(frontends/lean/parse_rewrite_tactic): take namespaces into account when parsing constant to unfold
2015-02-05 12:41:11 -08:00
Leonardo de Moura
b6dd1269b9
feat(frontends/lean/builtin_exprs): make 'obtain' arguments visible by default
2015-02-05 10:38:45 -08:00
Leonardo de Moura
dfad24e3f5
feat(frontends/lean): polish rewrite tactic notation
2015-02-05 10:15:58 -08:00
Leonardo de Moura
15efadfbdc
feat(frontends/lean/parse_rewrite_tactic): cleanup rewrite tactic notation
...
Make a rewrite command sequence explicit.
2015-02-04 20:16:24 -08:00
Leonardo de Moura
08dcc9e2fc
feat(frontends/lean/parse_rewrite_tactic): polish rewrite tactic notation
2015-02-04 19:19:19 -08:00
Leonardo de Moura
599de0271b
feat(frontends/lean/parse_tactic_location): validate occurrence index
2015-02-04 14:04:56 -08:00
Leonardo de Moura
8912c759dd
fix(frontends/lean/parse_rewrite_tactic): corner case "rewrite ?(t)"
...
The token '?(' is used to represent inaccessible terms in recursive
equations. In the rewriter tactic, we want "rewrite ?(t)" to be parsed
as "? (t)".
2015-02-04 11:51:39 -08:00
Leonardo de Moura
991d29b7f6
fix(frontends/lean/parse_rewrite_tactic): bugs in rewrite tactic parser
2015-02-04 11:51:39 -08:00
Leonardo de Moura
b4dd2cc729
refactor(library/tactic/rewrite_tactic): more general rewrite step
...
The rule can be an arbitrary expression.
Allow user to provide a pattern that restricts the application of the rule.
2015-02-04 11:51:39 -08:00
Leonardo de Moura
461fd45efc
feat(frontends/lean): allow a different location for each rewrite element
2015-02-04 11:51:39 -08:00
Leonardo de Moura
c845e44777
feat(frontends/lean): parse rewrite tactic
2015-02-04 11:51:39 -08:00
Leonardo de Moura
87bcec2e5e
feat(frontends/lean): parse tactic location (i.e., scope of application)
2015-02-04 11:51:39 -08:00
Leonardo de Moura
0cea63651d
fix(frontends/lean): store line/col information at snapshots, save snapshot before 'end' scope, and before "closing" open namespaces
...
closes #422
2015-02-04 10:40:36 -08:00
Leonardo de Moura
1ee47dc063
feat(frontends/lean/server): suppress projections from autocompletion
...
closes #424
2015-02-04 07:18:47 -08:00
Leonardo de Moura
c92f3bec65
refactor(library/definitional/projection): move projection "database" to library/projection
2015-02-04 07:18:43 -08:00
Leonardo de Moura
15716c1471
feat(frontends/lean/calc_proof_elaborator): reject proofs with metavariables in the calc-assistant
2015-02-01 11:11:27 -08:00
Leonardo de Moura
d52af105d7
feat(frontends/lean/decl_cmds): allow many constants to be set in the same attribute command
2015-01-31 23:55:14 -08:00
Leonardo de Moura
855050e623
feat(frontends/lean/calc_proof_elaborator): try conservative alternatives first
2015-01-31 21:29:34 -08:00
Leonardo de Moura
dbc8e9e13a
refactor(*): add method get_num_univ_params
2015-01-28 17:22:18 -08:00
Leonardo de Moura
e4b5e07498
fix(frontends/lean/elaborator): apply substitution before compiling pre-tactics into tactics
...
closes #415
2015-01-28 13:32:56 -08:00
Leonardo de Moura
2a5658ebe2
fix(frontends/lean/elaborator_context): memory leak
2015-01-26 16:08:51 -08:00
Leonardo de Moura
e2c41fca75
feat(frontends/lean): modify syntax for local notation
...
The idea is to make it uniform with the syntax for defining local
attributes.
2015-01-26 11:51:17 -08:00
Leonardo de Moura
b4d6f6e3ed
feat(frontends/lean): 'attribute' command is persistent by default
2015-01-26 11:51:17 -08:00
Leonardo de Moura
4f2e0c6d7f
refactor(frontends/lean): add 'attribute' command
...
The new command provides a uniform way to set declaration attributes.
It replaces the commands: class, instance, coercion, multiple_instances,
reducible, irreducible
2015-01-24 20:23:21 -08:00
Leonardo de Moura
b5c4e603db
feat(frontends/lean): allow parameters to be used in sections
...
Restriction:
- coercions and notations cannot be defined in parametric sections
closes #401
2015-01-23 17:42:19 -08:00
Leonardo de Moura
27f6bfd3f0
refactor(*): add file constants.txt with all constants used by the Lean binary
2015-01-23 16:50:32 -08:00
Leonardo de Moura
880faf89e0
feat(frontends/lean/structure_cmd): add implicit_infer_kind annotation to structure command
...
closes #354
2015-01-21 18:12:29 -08:00
Leonardo de Moura
a53098385c
refactor(frontends/lean/type_util): move infer_implicit_params to library
2015-01-21 17:22:41 -08:00
Leonardo de Moura
12674114a4
feat(shell): set default behavior to "trusted"
...
closes #402
2015-01-21 16:25:09 -08:00
Leonardo de Moura
01ce57e52e
feat(library/definitional/projection): add projection macro
2015-01-20 16:21:50 -08:00
Leonardo de Moura
752b54085b
refactor(kernel/type_checker): type checker should not unfold macros, but sign an error if a untrusted macro is used
...
Now, we unfold untrusted macros outside of the Lean kernel.
2015-01-20 12:36:56 -08:00
Leonardo de Moura
260795f981
fix(frontends/lean/structure_cmd): collect universe levels that only occur in structure parameters
...
fixes #395
2015-01-19 22:18:09 -08:00
Leonardo de Moura
002050fa97
feat(frontends/lean): increase binding power of ! and @
...
Remark: I did not add the constant "app".
Reason: It would break the standard library in many places.
Moreover, the current "max" is not just the binding power of
application, but also the binding power of identifiers, (, [, ...
It would be weird to call it "app"
closes #388
2015-01-19 18:40:33 -08:00
Leonardo de Moura
dfbe6662be
feat(frontends/lean/elaborator): add option 'elaborator.fail_if_missing_field'
2015-01-19 17:47:39 -08:00
Leonardo de Moura
2717adde94
feat(library/unifier): add option 'unifier.conservative', use option by default in the calc_assistant
2015-01-19 16:23:29 -08:00
Leonardo de Moura
d0e9e0e21c
feat(library/definitional/projection): add auxiliary function for simplifying expressions containing projections and constructors
2015-01-18 20:58:40 -08:00
Leonardo de Moura
edcc92d9c7
feat(frontends/lean): remove 'using' from structure instance command
2015-01-17 09:38:10 -08:00
Leonardo de Moura
f9d7480f5c
feat(frontends/lean): notation for creating structure instances
2015-01-16 17:14:30 -08:00
Leonardo de Moura
bfd679d52d
feat(frontends/lean/structure_cmd): allow user to reference parent structures when defining new fields
...
See new test for an example.
closes #371
2015-01-16 13:04:48 -08:00
Leonardo de Moura
13660cfecd
feat(frontends/lean/parser): add parse_qualified_expr
2015-01-16 12:42:42 -08:00
Leonardo de Moura
8ab775bd6f
feat(*): distinguish between logical and runtime exceptions.
...
Now, we use throwable as the new base class for all Lean exceptions, and
exception is the subclass for "logical" exceptions.
2015-01-15 16:54:55 -08:00
Leonardo de Moura
e48df78938
feat(frontends/lean/elaborator): do not apply delayed_coercions on equation lhs
...
The variables in the equation lhs do not have type at preprocessing
time (i.e., their type is a metavariable). So, they may seem candidates
for delayed_coercions. If the coercions are injected, we will not be
able to pattern match. Thus, we disable coercions in this case.
2015-01-13 18:05:22 -08:00
Leonardo de Moura
37e852ba61
feat(frontends/lean/elaborator): improve error message for metavariable in inaccessible position on equation lhs
2015-01-13 14:38:25 -08:00
Leonardo de Moura
41935906a8
chore(frontends/lean): use update_if_undef
2015-01-13 13:02:14 -08:00
Leonardo de Moura
4f519be55e
fix(frontends/lean/elaborator): compilation problem
2015-01-11 20:58:41 -08:00
Leonardo de Moura
75d7e4ab9e
feat(frontends/lean): add 'end' token to match expressions
2015-01-10 12:35:29 -08:00
Leonardo de Moura
5796640392
fix(frontends/lean): do report unassigned metavariables in equation lhs
2015-01-10 10:39:47 -08:00
Leonardo de Moura
b172229a72
feat(frontends/lean): add 'match' expressions
...
We reuse the equations infrastructure to compile them.
2015-01-10 10:11:13 -08:00
Leonardo de Moura
6df9ffe5f6
fix(frontends/lean/elaborator): solve placeholders before invoking equantions compiler
2015-01-10 09:18:27 -08:00
Leonardo de Moura
87d41e90fc
fix(frontends/lean/decl_cmds): store equations positions
2015-01-07 18:50:56 -08:00
Leonardo de Moura
a9b6e20a22
fix(frontends/lean): save equations position
2015-01-06 15:55:04 -08:00
Leonardo de Moura
a3a6697f44
feat(library/definitional/equations): mutually recursive functions for mutually recursive datatypes
2015-01-06 14:07:17 -08:00
Leonardo de Moura
828ce3f8dc
feat(frontends/lean/decl_cmds): minor modifications for supporting mutually recursive functions
2015-01-05 19:23:50 -08:00
Leonardo de Moura
0aa7e4a9f9
fix(frontends/lean/pp): option 'pp.private_names' should also affect private declarations defined in the current file
2014-12-28 14:22:36 -08:00
Leonardo de Moura
d2958044fd
feat(frontends/lean): add multiple_instances command
...
After this commit, Lean "cuts" the search after the first instance is
computed. To obtain the previous behavior, we must use the new command
multiple_instances <class-name>
closes #370
2014-12-21 17:28:44 -08:00
Leonardo de Moura
4421069e34
refactor(library/tactic): rename placeholder_elaborator to class_instance_synth
2014-12-19 19:57:38 -08:00
Leonardo de Moura
ded869b7e0
refactor(frontends/lean): move placeholder_elaborator to library/tactic
2014-12-19 15:23:22 -08:00
Leonardo de Moura
a22dc773b7
refactor(frontends/lean): move some auxiliary procedures to library/tactic
2014-12-19 15:19:45 -08:00
Leonardo de Moura
07d7ea2f4e
refactor(frontends/lean/placeholder_elaborator): reduce coupling between placeholder_elaborator and frontends/lean
2014-12-19 15:08:21 -08:00
Leonardo de Moura
69750c50c6
refactor(frontends/lean): move pp_options to library
2014-12-19 15:00:05 -08:00
Leonardo de Moura
caf0a4bf15
refactor(frontends/lean): move type_checker_ptr typedef to library
2014-12-19 14:40:15 -08:00
Leonardo de Moura
02de288a51
refactor(frontends/lean): move choice_iterator to library
2014-12-19 14:29:32 -08:00
Leonardo de Moura
6f78315aa4
refactor(*): add uniform names for "meta-objects"
2014-12-17 11:42:14 -08:00
Leonardo de Moura
8939351903
refactor(library): add compile_equations function, generic_exception, and cleanup elaborator_exception
2014-12-15 19:22:17 -08:00
Leonardo de Moura
5cf8064269
refactor(library): rename exists_elim and exists_intro to exists.elim
...
and exists.intro
2014-12-15 19:07:38 -08:00
Leonardo de Moura
c291063f3a
fix(frontends/lean/structure_cmd): simplify structure names
2014-12-13 14:18:02 -08:00
Leonardo de Moura
ab873cfff9
feat(frontends/lean/elaborator): replace metavariables in the equation lhs with fresh local constants before invoking compiler
2014-12-11 19:51:49 -08:00
Leonardo de Moura
91ce99d921
feat(frontends/lean): type check 'decreasing' proofs in definition using well-founded recursion
2014-12-11 18:13:35 -08:00
Leonardo de Moura
3d199d275d
fix(frontends/lean/token_table): increase binding power of decreasing operator
2014-12-11 17:31:12 -08:00
Leonardo de Moura
287a444481
feat(frontends/lean/pp): add option 'pp.numerals'
2014-12-11 17:28:58 -08:00
Leonardo de Moura
b8f665e561
feat(frontends/lean): elaborate recursive equations
...
Remark: we are not compiling them yet.
2014-12-10 22:25:40 -08:00
Leonardo de Moura
756fae7c2a
refactor(frontends/lean): move local_context to library
2014-12-10 12:43:32 -08:00
Leonardo de Moura
bf875d5778
feat(library/definitional/equations): add support for inaccessible patterns
2014-12-10 12:35:08 -08:00
Leonardo de Moura
d98aabe9ab
refactor(library): move library/definitional/util module to library
2014-12-10 11:23:23 -08:00
Leonardo de Moura
ac664505e6
refactor(library): move class management to library module
2014-12-09 21:38:55 -08:00
Leonardo de Moura
05f27b8f0e
feat(frontends/lean/structure): add option for controlling whether we automatically generate eta and projection-over-intro theorems for structures
...
It seems most of the time these theorems are not used at all.
They are just polluting the namespace.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-12-09 12:40:09 -08:00
Leonardo de Moura
d67583df44
fix(frontends/lean/parser): do not generate error when 'exit' command is used
2014-12-09 10:14:14 -08:00
Leonardo de Moura
58432d0968
feat(library/definitional): add no_confusion construction that is compatible with the HoTT library
2014-12-08 22:11:48 -08:00
Leonardo de Moura
2bb51554d5
feat(library/definitional/util): add telescope equality for HoTT library
...
This is needed for implementing no_confusion for HoTT.
We can't use heterogeneous equality in HoTT.
2014-12-07 18:35:55 -08:00
Leonardo de Moura
ec7f90cb16
feat(hott/init): make sure eq is universe polymorphic
...
Jakob and Floris needed path equality to be universe polymorphic when
proving univalence.
2014-12-06 09:43:42 -08:00
Leonardo de Moura
53d6d76162
fix(frontends/lean/parser): generate error when 'exit' command is used
...
m_theorem_queue.join() method assumes there are no open namespaces/scopes
2014-12-05 16:12:23 -08:00
Leonardo de Moura
eb87c18693
feat(*): add support for separate HoTT library
2014-12-05 14:34:02 -08:00
Leonardo de Moura
e868ecce36
feat(frontends/lean): parse recursive equations
2014-12-04 17:03:21 -08:00
Leonardo de Moura
7a6d674b8e
refactor(frontends/lean/decl_cmds): cleanup definition_cmd
2014-12-04 16:03:29 -08:00
Leonardo de Moura
52334dca29
feat(frontends/lean): parse "decreasing" expressions
2014-12-04 15:11:23 -08:00
Leonardo de Moura
e72c4977f0
feat(frontends/lean): nicer notation for dependent if-then-else
2014-12-04 11:13:09 -08:00
Leonardo de Moura
0443c1e70c
fix(frontends/lean): intro tactic + universe variables, fixes #362
2014-12-03 12:56:30 -08:00
Leonardo de Moura
fca97d5bb2
feat(library/definitional): add brec_on construction, closes #272
2014-12-03 10:39:32 -08:00
Leonardo de Moura
5b2d17e4ab
feat(frontends/lean): add 'print notation' command
2014-12-02 12:04:18 -08:00
Leonardo de Moura
8c50048d1b
chore(frontends/lean/pp): fix style
2014-12-01 17:15:30 -08:00
Leonardo de Moura
320971832d
feat(frontends/lean/pp): add hard-coded pretty printer for nat numerals
2014-12-01 16:07:55 -08:00
Leonardo de Moura
8dfd22e66c
feat(frontends/lean): add 'prelude' command, and init directory
2014-11-30 17:03:08 -08:00
Leonardo de Moura
2281fb30c8
refactor(library): use "symbolic" precedences in the standard library
2014-11-29 19:08:37 -08:00
Leonardo de Moura
2c0472252e
feat(frontends/lean): allow expressions to be used to define precedence, closes #335
2014-11-29 18:29:48 -08:00
Leonardo de Moura
2487e3b83d
fix(frontends/lean/parser): user provided numeral notation should have precedence over the default based on 'num'
2014-11-29 17:29:03 -08:00
Leonardo de Moura
bc65aeb5e1
fix(frontends/lean/calc): add expected type for single-step calc expressions, fixes #357
...
This is not an issue for calc expressions containing multiple steps,
since the transitivity step will "force" the expected type for the proofs.
2014-11-29 15:35:09 -08:00
Leonardo de Moura
a97d7ffed7
feat(frontends/lean/builtin_cmds): display 'print' command output as flycheck information
2014-11-29 13:31:42 -08:00
Leonardo de Moura
366bf70ccd
fix(frontends/lean/elaborator): do not display flycheck related messages when --flycheck is not on
2014-11-28 21:20:25 -08:00
Leonardo de Moura
8b804f1d22
feat(frontends/lean): add option 'elaborator.flycheck_goals'
2014-11-28 16:34:02 -08:00
Leonardo de Moura
9516cd9ee3
feat(library/tactic): 'exact' tactic report unsolved placeholders in nested expression
...
Actually, the elaborator is the one reporting the unassigned
placeholders. The 'exact' tactic just makes the request.
To implement this feature we had to extend the elaboration interface
expected by the tactic framework.
2014-11-28 14:59:35 -08:00
Leonardo de Moura
4ec2101b06
feat(frontends/lean): add option 'pp.purify_locals'
2014-11-28 14:49:00 -08:00
Leonardo de Moura
db9fd53b80
fix(library/tactic): pretty printer for proof states
2014-11-27 09:43:58 -08:00
Leonardo de Moura
ffdeb0edc4
fix(frontends/lean/elaborator): unsolved metavariables, fix #329
2014-11-26 11:56:39 -08:00
Leonardo de Moura
24a15b6c46
fix(frontends/lean): disable class-instance resolution when executing find_decl, fixes #343
2014-11-24 21:33:52 -08:00
Leonardo de Moura
a005c8f4d0
feat(frontends/lean): display eval/check/find_decl results using flycheck
2014-11-24 08:35:49 -08:00
Leonardo de Moura
d81a6259e8
feat(frontends/lean/find_cmd): add options for controlling find_decl
2014-11-24 00:16:10 -08:00
Leonardo de Moura
f1e915a188
feat(frontends/lean): add 'find_decl' command
2014-11-23 23:00:59 -08:00
Leonardo de Moura
8c8bf41e39
feat(frontends/lean/server): do not unfold definitions in FINDG
2014-11-23 19:03:39 -08:00
Leonardo de Moura
44a2ef8f6f
fix(frontends/lean/parser_config): binder(s) rbp was not being saved in .olean file
2014-11-23 17:49:14 -08:00
Leonardo de Moura
64686c1278
feat(frontends/lean): allow user to associate precedence to binders, closes #323
2014-11-23 17:30:46 -08:00
Leonardo de Moura
cf3b0e1087
feat(frontends/lean/placeholder_elaborator): apply substitution before collecting local instances, closes #333
2014-11-23 17:30:46 -08:00
Leonardo de Moura
5d5fd2da50
fix(frontends/lean): tactic + section variables, fixes #332
2014-11-21 10:07:16 -08:00
Leonardo de Moura
28c63e685b
feat(frontends/lean): add '[local]' notation, closes #322
2014-11-16 21:15:04 -08:00
Leonardo de Moura
ea640257bf
feat(frontends/lean/structure_cmd): generate no_confusion for structures too
2014-11-15 16:00:09 -08:00
Leonardo de Moura
7685516d1e
feat(frontends/lean): better default for atomic notation
2014-11-14 16:25:13 -08:00
Leonardo de Moura
488f989c46
fix(frontends/lean/inductive_cmd): generate error for inductive datatype declarations that will produce an eliminator that can only eliminate to Prop
2014-11-14 13:57:42 -08:00