Leonardo de Moura
|
5d515a06f7
|
test(tests/lean/run): add test showing that "proof ... qed" can access the whole context
|
2015-05-05 18:32:47 -07:00 |
|
Leonardo de Moura
|
616f49c2e4
|
feat(frontends/lean): improved 'obtains' expression
|
2015-05-05 18:30:16 -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
|
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
|
e379034b95
|
feat(library/tactic): improve 'assumption' tactic
- It uses the unifier in "conservative" mode
- It only affects the current goal
closes #570
|
2015-05-02 17:33:54 -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
|
b39fe17dee
|
feat(library/tactic): add 'transitiviy', 'reflexivity' and 'symmetry' tactics
closes #500
|
2015-05-02 15:48: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
|
efc33a2f1d
|
fix(tests/lean): adjusts tests
|
2015-05-02 13:01:37 -07:00 |
|
Leonardo de Moura
|
415ca2b93f
|
feat(library/tactic): add 'congruence' tactic
It is the f_equal described at issue #500.
|
2015-05-02 12:58:46 -07:00 |
|
Leonardo de Moura
|
9dc0388022
|
fix(library/tactic/rewrite_tactic): bug when rewriting hypotheses
|
2015-05-01 19:45:23 -07:00 |
|
Leonardo de Moura
|
ac8ba6a3cf
|
feat(library/tactic): add 'subst' tactic
see issue #500
|
2015-05-01 19:31:24 -07:00 |
|
Leonardo de Moura
|
b0759f3986
|
fix(library/tactic/rewrite_tactic): bug when rewriting multiple hypotheses
|
2015-05-01 19:03:43 -07:00 |
|
Leonardo de Moura
|
de369a0a0a
|
feat(library/tactic/injection_tactic): improve 'injection' tactic
see issue #500
|
2015-05-01 15:49:56 -07:00 |
|
Leonardo de Moura
|
9ba8b284a1
|
fix(library/tactic/apply_tactic): add eapply, and fix issue #361
|
2015-05-01 15:08:00 -07:00 |
|
Leonardo de Moura
|
63eb155c7e
|
feat(library/tactic): add 'injection' tactic
see issue #500
|
2015-05-01 12:45:21 -07:00 |
|
Leonardo de Moura
|
7e9f574ef3
|
fix(library/tactic/apply_tactic): use internally 'apply' instead of 'fapply' as the default "apply" tactic
This changes improves the 'constructor' tactic
|
2015-04-30 21:58:35 -07:00 |
|
Leonardo de Moura
|
4f7f66de3f
|
test(tests/lean/run): add new test
|
2015-04-30 21:38:33 -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
|
15e52b06df
|
fix(library/tactic/constructor_tactic): bug in constructor tactic
see example (constr_tac2.lean) in comment at issue #500
|
2015-04-30 20:18:24 -07:00 |
|
Leonardo de Moura
|
d18f9c7607
|
fix(library/tactic/constructor_tactic): use 1 (instead of 0) to reference the first constructor
see comment at issue #500
|
2015-04-30 20:08:00 -07:00 |
|
Leonardo de Moura
|
0b995c4fe3
|
fix(library/tactic/rewrite_tactic): relax reducibility constraints in some parts of the rewrite tactic
fixes #567
|
2015-04-30 18:22:58 -07:00 |
|
Leonardo de Moura
|
d152f38518
|
feat(library/tactic): add 'constructor', 'split', 'left', 'right' and 'existsi' tactics
see issue #500
|
2015-04-30 17:52:29 -07:00 |
|
Leonardo de Moura
|
1c6067bac2
|
feat(library/tactic): add 'exfalso' tactic
see issue #500
|
2015-04-30 15:43:07 -07:00 |
|
Leonardo de Moura
|
9c8a63caec
|
feat(library/tactic): add 'contradiction' tactic
see issue #500
Remark: this tactic also applies no_confusion to take care of a contradiction
|
2015-04-30 13:47:40 -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
|
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
|
ca8943f45b
|
feat(library,hott): remove rapply tactic
|
2015-04-27 15:06:16 -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
|
28404fe16d
|
fix(library/tactic/rewrite_tactic): second problem reported at issue #548
closes #548
|
2015-04-24 16:49:32 -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
|
9fb7aa9f1c
|
chore(tests): remove most occurrences of 'context' command from the test suite
|
2015-04-21 19:33:21 -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
|
b7ca2a0ec9
|
fix(library/tactic/exact_tactic): exact and or_else
fixes #543
|
2015-04-19 17:23:09 -07:00 |
|
Leonardo de Moura
|
306087b5d3
|
refactor(library/data): rename 'countable' to 'encodable', define countable in the usual way, and prove all 'encodable' type is 'countable'
|
2015-04-19 14:20:47 -07:00 |
|
Leonardo de Moura
|
cc63a40a01
|
feat(library): enforce name conventions on old nat declarations
|
2015-04-18 10:50:30 -07:00 |
|
Leonardo de Moura
|
f16eaf8f0f
|
test(tests/lean/run/pickle1): add unpickle/pickle test
|
2015-04-14 21:32:07 -07:00 |
|
Leonardo de Moura
|
795acc70a6
|
refactor(library/data/finset): move finset to its own directory
|
2015-04-09 19:30:09 -07:00 |
|
Leonardo de Moura
|
4416d9b2c5
|
test(tests/lean/run): add basic tests for finset module
|
2015-04-09 15:56:41 -07:00 |
|
Leonardo de Moura
|
5d95cb0979
|
feat(library/tactic): add 'refine' tactic
closes #482
|
2015-04-06 18:36:56 -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
|
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
|
f8023403af
|
test(tests/lean/run): add another simple test
|
2015-04-01 15:49:01 -07:00 |
|
Leonardo de Moura
|
0d66d19ba3
|
feat(tests/lean/run/finset): show that if A has decidable equality, then (finset A) also has it.
|
2015-04-01 13:19:16 -07:00 |
|
Leonardo de Moura
|
b960e123b1
|
feat(kernel): add experimental support for quotient types
|
2015-03-31 22:04:16 -07:00 |
|
Soonho Kong
|
8243ed6339
|
fix(test*.sh): allow spaces in filename
fix #515
|
2015-03-28 23:29:52 -04: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
|
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
|
b9e3c474c9
|
feat(library/tactic): add all_goals tactic
closes #501
|
2015-03-25 17:42:34 -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
|
33d2e8d9d3
|
test(tests/lean/run): workaround for issue #505
|
2015-03-25 15:53:50 -07:00 |
|
Leonardo de Moura
|
bed0d6df6b
|
fix(frontends/lean/elaborator): inaccessible over coercion
|
2015-03-13 23:04:45 -07:00 |
|
Leonardo de Moura
|
47a350d888
|
fix(library/tactic/inversion_tactic): missing condition for applying optimization
|
2015-03-12 09:11:36 -07:00 |
|
Leonardo de Moura
|
4c6b0dc0e5
|
fix(library/tactic/expr_to_tactic): tactic_expr_to_id did not take as_atomic annotation into account
fixes #466
|
2015-03-11 08:49:59 -07:00 |
|
Leonardo de Moura
|
4904f7657f
|
test(tests/lean/run): add definition package tests
|
2015-03-09 08:42:21 -07:00 |
|
Leonardo de Moura
|
f966634910
|
feat(frontends/lean): nested dependent pattern matching
|
2015-03-06 19:18:08 -08:00 |
|
Leonardo de Moura
|
14ca2d407d
|
test(tests/lean/run): add match-with nested in tactic test
|
2015-03-06 17:47:01 -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
|
4edd7b9099
|
fix(library/definitional/equations): allow a function to be the result of a match-with term or recursive definition
|
2015-03-06 15:08:52 -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
|
b73a931c70
|
fix(frontends/lean/elaborator): missing case 'no-equation' annotation
|
2015-03-05 14:37:29 -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
|
3b73e100dc
|
test(tests/lean/run): add [priority] test using num.sub
|
2015-03-03 15:59:17 -08:00 |
|
Leonardo de Moura
|
efd096e85c
|
feat(library/init/num): define sub and le for binary numerals
|
2015-03-03 15:55:16 -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
|
3c24461e51
|
refactor(*): modify '|' binding power, use 'abs a' instead of '|a|', and '(a | b)' instead of 'a | b'
|
2015-02-25 15:18:21 -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 |
|
Jeremy Avigad
|
e555531eb6
|
feat(library/data/int/div): start on div for integers
|
2015-02-25 14:05:07 -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
|
42289d4334
|
feat(library/tactic/class_instance_synth): create class instance synthesis subproblems only for arguments marked with the [] binder annotation
|
2015-02-24 16:12:39 -08:00 |
|
Leonardo de Moura
|
1cd44e894b
|
feat(library/tactic/class_instance_synth): conservative class-instance resolution: expand only definitions marked as reducible
closes #442
|
2015-02-24 16:12:35 -08:00 |
|
Leonardo de Moura
|
1ff6446a63
|
feat(frontends/lean): nested begin-end blocks
|
2015-02-24 11:59:27 -08:00 |
|
Leonardo de Moura
|
dc2ac92846
|
fix(library/definitional/equations): use whnf on recursive definition arguments
The idea is to expose "hidden" datatypes.
|
2015-02-23 22:27:30 -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
|
7d35d18cad
|
fix(library/tactic/rewrite_tactic): bug when matching terms that expanded into projections
|
2015-02-22 18:23:10 -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
|
4248ad644d
|
fix(frontends/lean): priority expressions parser
|
2015-02-14 12:26:06 -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
|
a35cce38b3
|
feat(frontends/lean): new semantics for "protected" declarations
closes #426
|
2015-02-11 14:09:25 -08:00 |
|