Commit graph

3976 commits

Author SHA1 Message Date
Leonardo de Moura
be52d950f0 fix(frontends/lean): improve error message, addresses issue #299 2014-11-06 12:19:40 -08:00
Leonardo de Moura
e499f8e20a feat(kernel/inductive): relax conditions for an inductive datatype in Prop to be able to eliminate into Type
The new relaxed version allows us to define the "accessability"
proposition and have an eliminator into Type.

See justification in the new comments at inductive.cpp
2014-11-06 09:36:54 -08:00
Leonardo de Moura
8723f5b613 fix(frontends/lean/inductive_cmd): inductive datatype elaborator was 'fixing' parameter mismatches.
Given a datatype C with parameters As, if the declaration contained
(C Bs), the elaborator would silently replace it with (C As).

This bug would confuse users and make them believe they define something
different.
2014-11-05 23:12:00 -08:00
Leonardo de Moura
b3ad8c704a feat(frontends/lean/structure_cmd): allow inheritance from two identical structures, closes #296 2014-11-05 15:01:05 -08:00
Leonardo de Moura
4650791108 feat(frontends/lean): add 'print fields' command 2014-11-05 14:06:54 -08:00
Leonardo de Moura
677e0aeef6 fix(frontends/lean/structure_cmd): accept ': Type' when universe levels are not specified 2014-11-05 12:02:52 -08:00
Leonardo de Moura
d6dc624ca8 fix(frontends/lean/structure_cmd): error parsing structure without parameters followed by ': Type' 2014-11-05 12:02:52 -08:00
Leonardo de Moura
defc2478b5 feat(frontends/lean): add 'record' as an alias for 'structure' command 2014-11-05 12:02:52 -08:00
Soonho Kong
e71db7109d fix(emacs/lean-mode.el): remove quotation marks in lean-execute
Close #294
2014-11-05 09:20:14 -05:00
Leonardo de Moura
5b87d060cf fix(frontends/lean/structure_cmd): universe level validation 2014-11-04 22:19:23 -08:00
Leonardo de Moura
6944c7d902 fix(frontends/lean/placeholder_elaborator): local context must be adjusted when performing class-instance resolution modulo Pi-abstraction, fixes #293 2014-11-04 18:41:27 -08:00
Leonardo de Moura
b5ad0fb504 refactor(frontends/lean/local_context): add 'const' modifier 2014-11-04 18:37:31 -08:00
Leonardo de Moura
3bfe5b0b7e fix(frontends/lean): type information for "atomic" notation declaration, fixes #292 2014-11-04 18:01:20 -08:00
Leonardo de Moura
fa405d7884 refactor(frontends/lean): combine info annotations in a single module 2014-11-04 18:01:20 -08:00
Leonardo de Moura
c6c090eda6 feat(src/emacs/lean-mode): add shortcut for restarting lean server 2014-11-04 18:01:20 -08:00
Soonho Kong
2273f75e9b fix(emacs/lean-mode): handle when there is spaces in filenames 2014-11-04 19:22:35 -05:00
Soonho Kong
53e18d0e39 chore(src/CMakeLists.txt): copy linja and ltag to bin when install 2014-11-04 18:16:04 -05:00
Leonardo de Moura
60eac0195d feat(frontends/lean/structure_cmd): generate projection over constructor theorems for structures 2014-11-04 09:10:25 -08:00
Leonardo de Moura
d58c3e498d feat(frontends/lean/builtin_cmds): add 'print prefix' command 2014-11-04 08:40:32 -08:00
Leonardo de Moura
3454e70017 fix(frontends/lean/inductive_cmd): bug in expression position propagation, fixes #289
Fix incorrect line/column number information in error messages produced
during inductive datatype elaboration.
2014-11-04 07:44:47 -08:00
Leonardo de Moura
b6722a5d33 feat(frontends/lean/structure_cmd): add 'private' modifier for parent structures
When it is used coercions/instances to parent structure are to registered
2014-11-03 23:16:49 -08:00
Leonardo de Moura
b24165dc7b feat(frontends/lean/structure_cmd): remove 'cases_on' for structures since it may confuse users, add 'destruct' as alternative name for 'rec_on' 2014-11-03 23:06:33 -08:00
Leonardo de Moura
7897e21a14 feat(frontends/lean/structure_cmd): allow fields to be suppresed, but constructor to be provided 2014-11-03 22:55:51 -08:00
Leonardo de Moura
08b4ce2db9 feat(frontends/lean/structure_cmd): use 'mk' as constructor name when it is not provided 2014-11-03 22:40:08 -08:00
Leonardo de Moura
8f3139231b feat(frontends/lean/structure_cmd): allow structure declarations that contains only a header 2014-11-03 22:17:43 -08:00
Leonardo de Moura
91749d2364 fix(frontends/lean/structure_cmd): modify coercion generation
The previous coercion was more efficient, but the computation was
getting stuck when processing algebraic structures
2014-11-03 19:37:11 -08:00
Leonardo de Moura
edd94c00df fix(library/definitional): add missing files 2014-11-03 18:36:25 -08:00
Leonardo de Moura
c306bfa83c feat(frontends/lean/structure_cmd): add 'eta' theorem for structures 2014-11-03 18:33:44 -08:00
Leonardo de Moura
101e9966fd fix(emacs/lean-syntax): bug in syntax highlight, examples do not have names 2014-11-03 18:32:18 -08:00
Leonardo de Moura
186d910d0b feat(frontends/lean/structure_cmd): mark coercion to parents as coercions and instances (when both structures as classes) 2014-11-03 17:55:59 -08:00
Leonardo de Moura
9531203d9d feat(frontends/lean/structure_cmd): mark structure as 'class' when [class] modifier is used 2014-11-03 17:47:08 -08:00
Leonardo de Moura
b112f3c582 feat(frontends/lean/structure_cmd): add coercions to parent structures 2014-11-03 17:39:52 -08:00
Leonardo de Moura
922e66c42f fix(frontends/lean/decl_cmds): do not save 'examples' in .ilean file 2014-11-03 16:13:46 -08:00
Leonardo de Moura
7afa69577e feat(frontends/lean/structure_cmd): add aliases for structure decls 2014-11-03 15:50:41 -08:00
Leonardo de Moura
efe1105eb9 fix(frontends/lean): alias generation for composite names was not working
This is an issue for declarations that generate composite names such as
the inductive datatype packacke.

The commit also fix a bug in the generate of aliases for recursors
2014-11-03 15:43:58 -08:00
Leonardo de Moura
594e3ea8fc fix(frontends/lean/structure_cmd): 'rec' must be marked as protected 2014-11-03 14:50:12 -08:00
Leonardo de Moura
5872c93eaf feat(frontends/lean/structure_cmd): add structure_cmd core 2014-11-03 14:14:40 -08:00
Leonardo de Moura
a2e75159c8 fix(frontends/lean): process choice-exprs at check_constant_next 2014-11-02 19:42:30 -08:00
Leonardo de Moura
c7406d6ce8 fix(library/scoped_ext): bug when declaring nested namespaces 2014-11-02 15:35:49 -08:00
Leonardo de Moura
df008dc3c3 feat(frontends/lean/inductive_cmd): create a namespace for each declared datatype 2014-11-01 19:15:46 -07:00
Leonardo de Moura
ea55ec4090 feat(frontends/lean/decl_cmds): remove useless name from 'example' commad 2014-11-01 16:12:23 -07:00
Leonardo de Moura
1e6f7cdbb4 chore(frontends/lean/decl_cmds): add 'example' command
It is like a theorem, but it is discarded after checking
2014-11-01 11:37:39 -07:00
Leonardo de Moura
b1c2efecbb chore(frontends/lean/decl_cmds): add missing static 2014-11-01 11:18:10 -07:00
Leonardo de Moura
94cf10284a fix(frontends/lean/calc_proof_elaborator): bug when inserting symmetry proofs for heq, fixes #286
The problem was that heq type is
    Pi {A : Type} (a : A) {B : Type} (b : B), Prop

The calc_proof_elaborator was assuming that (a : A) (b : B) were the
last two arguments in any relation supported by calc.

The fix is to remove this assumption.
2014-11-01 07:30:04 -07:00
Leonardo de Moura
2688ca38bf feat(frontends/lean/inductive_cmd): notation for enumeration types 2014-10-31 19:01:32 -07:00
Leonardo de Moura
aaad9a3c43 feat(library/definitional/projection): add option for marking main premise as instance implicit (i.e., [] binder decorator) 2014-10-31 19:01:32 -07:00
Soonho Kong
cae543e665 chore(emacs): remove unnecessary requires 2014-10-31 16:01:10 -07:00
Soonho Kong
96f620adf6 doc(README.md): add Aquamacs case, ask to update lean-rootdir
[skip ci]
2014-10-31 09:58:15 -07:00
Leonardo de Moura
57b19b787b feat(frontends/lean/calc_proof_elaborator): when 'elaborator.calc_assistant' is on, generate same info that is generated if ! was used 2014-10-31 09:49:45 -07:00
Leonardo de Moura
dc7ab17d2a feat(frontends/lean/calc_proof_elaborator): add 'elaborator.calc_assistant' option 2014-10-31 09:49:45 -07:00
Leonardo de Moura
d7beabe91c fix(frontends/lean/calc_proof_elaborator): improve calc proof assistant 2014-10-31 09:49:45 -07:00
Leonardo de Moura
8a4d4409cd feat(frontends/lean/calc_proof_elaborator): add '{...⁻¹}' if needed in calc proofs, closes #268
This commit also simplifies library/data/nat/basic.lean
2014-10-31 01:02:49 -07:00
Leonardo de Moura
17df85f592 feat(frontends/lean/calc_proof_elaborator): add '{...}' if needed in calc proof steps
This is part of #268
2014-10-31 00:55:19 -07:00
Leonardo de Moura
42dba5cc98 feat(frontends/lean/calc): expose get_calc_subst_info and get_calc_refl_info APIs 2014-10-30 23:56:38 -07:00
Leonardo de Moura
591e566472 feat(frontends/lean): try to inject symmetry (if needed) in calc proofs, add calc_symm command for configuring the symmetry theorem for a given operator
This is part of #268
2014-10-30 23:24:09 -07:00
Leonardo de Moura
c5a62f8abb feat(frontends/lean): insert ! in calculational proofs when needed
This is part of #268
2014-10-30 22:22:04 -07:00
Leonardo de Moura
407e35692b feat(frontends/lean/calc): wrap calc proofs with 'proof-qed' annotation to identify places where proof influences what is being proved
Later, we will add a custom annotation and elaborator for calc proofs.
This is the first step for issue #268.

Remark: we don't wrap the proof if it is of the form

   - `by tactic`
   - `begin tactic-seq end`
   - `{ expr }`
2014-10-30 18:33:47 -07:00
Leonardo de Moura
e79c7d9852 feat(frontends/lean): make set_option affect fingerprints 2014-10-30 14:45:35 -07:00
Leonardo de Moura
498b2f681e feat(frontends/lean/placeholder_elaborator): better error message for ambiguous class-instance resolution 2014-10-30 14:44:58 -07:00
Leonardo de Moura
79f73c44dc feat(frontends/lean/placeholder_elaborator): add 'elaborator.unique_class_instances' flag, closes #265
By default, it is false.
When it is true, class instance resolution generates an error if there
is more than one solution.
2014-10-30 14:21:24 -07:00
Leonardo de Moura
64c3ba7b74 feat(frontends/lean): display metavariable application arguments in check command
The idea is to "fix" counter-intuitive output like the ones were
produced in the tests check.lean and check2.lean
2014-10-30 13:28:25 -07:00
Leonardo de Moura
dcd7e53fa7 feat(frontends/lean/builtin_cmds): remove workaround for getting nice metavariable names in the check command
We don't need it anymore after previous commit 2a16050
2014-10-30 13:12:45 -07:00
Leonardo de Moura
2a160508c3 feat(frontends/lean): lean --server should display meta-variables using the approach used in check command, closes #280 2014-10-30 12:45:41 -07:00
Leonardo de Moura
a1ea087f8e fix(frontends/lean/info_manager): std::set insert is a noop if set already contains an equivalent element 2014-10-30 10:35:45 -07:00
Soonho Kong
b7d805a145 feat(emacs/lean-settings): add 'lean-follow-changes' option 2014-10-29 23:58:50 -07:00
Leonardo de Moura
84b516994c fix(library/tactic): type check generalization result, fixes #273 2014-10-29 20:34:01 -07:00
Leonardo de Moura
61f333d2c2 chore(library/tactic/expr_to_tactic): fix compilation warning 2014-10-29 19:47:47 -07:00
Leonardo de Moura
6107da05db fix(frontends/lean): universe variable is treated as parameter inside section, fixes #283 2014-10-29 19:47:14 -07:00
Leonardo de Moura
9547e2d077 feat(library/tactic): add rotate_left/rotate_right tactics, closes #278 2014-10-29 19:13:55 -07:00
Leonardo de Moura
8e9f97e95e fix(frontends/lean): do not save identifier info 2014-10-29 17:38:59 -07:00
Leonardo de Moura
c1653a9fb4 feat(frontends/lean): only valid proof states should be displayed, closes #275 2014-10-29 17:29:40 -07:00
Soonho Kong
5ad312f6ce test(emacs/lean-info-test): add test cases for goal visualization
[skip ci]
2014-10-29 17:09:08 -07:00
Soonho Kong
6973d3e7aa feat(emacs/lean-info): add goal visualization options 'lean-proofstate-display-style'
lean-proofstate-display-style:

 - 'show-all: Show all goals
        a : Prop,
        b : Prop,
        c : Prop,
        H_1 : a,
        H_2 : b,
        H_3 : c
        ⊢ id a

        a : Prop,
        b : Prop,
        c : Prop,
        H_1 : a,
        H_2 : b,
        H_3 : c
        ⊢ b ∧ c

 - 'show-first: Show only the first
        a : Prop,
        b : Prop,
        c : Prop,
        H_1 : a,
        H_2 : b,
        H_3 : c
        ⊢ id a

 - 'show-first-and-other-conclusions: Show the first goal, and the
   conclusions of all other goals (DEFAULT OPTION)
        a : Prop,
        b : Prop,
        c : Prop,
        H_1 : a,
        H_2 : b,
        H_3 : c
        ⊢ id a

        ⊢ b ∧ c

Close #279
2014-10-29 17:08:55 -07:00
Leonardo de Moura
a98b12f067 fix(frontends/lean/elaborator): incorrect error position in begin-end block, fixes #276 2014-10-29 16:51:06 -07:00
Leonardo de Moura
95e843e8ed feat(library/tactic/proof_state): add empty line between goals, closes #281 2014-10-29 16:51:06 -07:00
Leonardo de Moura
b0a7888346 fix(emacs/lean-flycheck): should accept error messages with empty lines 2014-10-29 16:51:06 -07:00
Leonardo de Moura
1c9992800f fix(frontends/lean/info_manager): suppress useless tactic type information, closes #277 2014-10-29 16:51:06 -07:00
Leonardo de Moura
88d55bfef0 fix(library/definitional/projection): remove redundant 'error in' 2014-10-29 16:51:06 -07:00
Soonho Kong
854e7ba1be fix(emacs/lean-type): improve displaying proof state messages
- Do not repeat the same message
 - Do not display the empty message
 - Do not display "[stale]" for proof states
2014-10-29 16:02:48 -07:00
Soonho Kong
99f85c8dbc fix(emacs/lean-info): proofstate display problem 2014-10-29 14:33:05 -07:00
Soonho Kong
fe710ac6d0 test(emacs/lean-info-test): add test for proofstate info 2014-10-29 14:33:05 -07:00
Soonho Kong
17455d191b feat(emacs/lean-mode): add lean-info-mode for "*lean-info*" buffer 2014-10-29 14:33:05 -07:00
Soonho Kong
12824c3e27 fix(emacs/lean-syntax): fix Type1, Type2 highlight 2014-10-29 14:33:05 -07:00
Soonho Kong
b0e249ce63 feat(emacs/lean-type): output INFO to *lean-info* buffer in addition to minibuffer
Close #260
2014-10-29 14:33:05 -07:00
Soonho Kong
0d8658d762 feat(emacs/lean-settings): add lean-show-proofstate-in-minibuffer option 2014-10-29 14:33:05 -07:00
Soonho Kong
53f79ec9c2 feat(emacs): extract proof state information attached to "," 2014-10-29 14:33:05 -07:00
Soonho Kong
fdf5f3ff8a feat(emacs/lean-info): add PROOF_STATE info
Close #259
2014-10-29 14:33:05 -07:00
Soonho Kong
cb83eca2f3 feat(emacs/lean-input): add lean-input-export-translations 2014-10-29 14:33:05 -07:00
Leonardo de Moura
30571ce418 fix(library/definitional/projection): error messages for projection generation 2014-10-29 13:39:17 -07:00
Leonardo de Moura
fe4ea48381 feat(library/definitional/projection): add projection generator, closes #257 2014-10-29 13:13:05 -07:00
Leonardo de Moura
0c185fc4ab fix(library/tactic): add relax_main_opaque flag to proof_state objects, closes #274 2014-10-29 08:57:34 -07:00
Leonardo de Moura
a2ef835809 fix(frontends/lean): squiggle position for unary begin-end block 2014-10-28 23:26:24 -07:00
Leonardo de Moura
e22eb3543c feat(library/tactic): add whnf tactic, closes #270 2014-10-28 23:18:49 -07:00
Leonardo de Moura
83e4c0fcec feat(frontends/lean): hide tactic "types"
it is not very useful to display the type of tactics (e.g., apply,
intros, ...)
2014-10-28 22:38:10 -07:00
Leonardo de Moura
eeb6c72508 feat(frontends/lean): modify begin-end semantics, closes #258 2014-10-28 22:15:38 -07:00
Leonardo de Moura
1c2bbcfebc feat(frontends/lean/info_manager): add separator -- when displaying PROOF_STATE info
This feature was implemented to address issue #259
2014-10-28 16:39:21 -07:00
Leonardo de Moura
186e598bf8 feat(library/tactic/goal): add option pp.compact_goals 2014-10-28 16:30:37 -07:00
Leonardo de Moura
a3801e84d4 fix(library/tactic/goal): avoid unnecessary line break when possible 2014-10-28 16:17:33 -07:00
Leonardo de Moura
ea739100b3 fix(library/unifier): broken optimization in the unifier
See new comments and tests for details.
2014-10-28 16:09:41 -07:00
Leonardo de Moura
777aa63660 fix(kernel/inductive): relax eliminator generation rules for empty types
This commit also removes the workaround false.rec_type. It is not needed anymore
2014-10-28 10:31:00 -07:00
Leonardo de Moura
60f32fa709 fix(frontends/lean): begin-end automatic tactic notation bug, fixes #262 2014-10-27 17:12:25 -07:00
Leonardo de Moura
78bc3ef7e4 feat(library/unifier): improve FailLocal/FailCircular failures in the unifier by using normalization
This improvements was marked as TODO, and was preventing us from
elaborating the example in the new test vector3.lean
2014-10-27 16:49:29 -07:00
Leonardo de Moura
bca2be56ec feat(library/normalize): add new flavors of normalize procedure 2014-10-27 16:25:30 -07:00
Leonardo de Moura
7516fcad97 feat(kernel/type_checker): add is_stuck method, and improve ensure_pi method, closes #261 2014-10-27 13:16:50 -07:00
Leonardo de Moura
2e5ad274a5 fix(frontends/lean/elaborator): remove invalid assertions
These assertions became invalid when we changed the behavior of undef
indentifiers at

8e6de93394
2014-10-27 10:31:09 -07:00
Leonardo de Moura
ee5a982c01 feat(shell/lean): add '--server-trace' flag, closes #264 2014-10-27 10:26:29 -07:00
Leonardo de Moura
d66e5a6c41 fix(frontends/lean/builtin_cmds): bug (name clashing) in 'check' command new meta-variable naming 2014-10-26 19:19:45 -07:00
Leonardo de Moura
81dc201bab fix(frontends/lean/elaborator): nested begin-end bug 2014-10-26 18:23:30 -07:00
Leonardo de Moura
a544d32fcf fix(frontends/lean/elaborator): missing information when displaying unsolved placeholders 2014-10-26 16:11:58 -07:00
Leonardo de Moura
cc6a96e8ba fix(frontends/lean): improve begin-end construct 2014-10-26 15:47:29 -07:00
Leonardo de Moura
08e8161243 feat(emacs/lean-syntax): add 'eassumption' highlight 2014-10-26 15:45:26 -07:00
Leonardo de Moura
fd60cf6a79 feat(library/tactic/exact_tactic): modify 'exact' tactic semantics, use higher-order unification
See new node.inj4 theorem, we need the extra power to be able to avoid type information at
    exact (assume e₁ e₂, e₁)
2014-10-26 10:27:33 -07:00
Leonardo de Moura
aed9a88b38 fix(frontends/lean/parser): save identifier info for undef local 2014-10-26 10:19:44 -07:00
Leonardo de Moura
8e6de93394 fix(frontends/lean/parser): add two kinds of no_undef_id behavior: to (global) constant; to local constant 2014-10-26 09:47:11 -07:00
Leonardo de Moura
50948be66b fix(emacs/lean-syntax): syntax highlight for composite names in declarations 2014-10-26 09:27:17 -07:00
Leonardo de Moura
707584376a fix(frontends/lean/inductive_cmd): include 'induction_on', 'cases_on', and 'rec_on' into .ilean index file 2014-10-25 17:56:22 -07:00
Leonardo de Moura
c7f6a6b94e feat(library/definitional/cases_on): automatically add 'cases_on' 2014-10-25 17:22:02 -07:00
Leonardo de Moura
c751bdd9e6 chore(library/definitional): remove dead code 2014-10-25 15:11:48 -07:00
Leonardo de Moura
fa1bf40d0f fix(library/definitional): make sure argument is an inductive datatype 2014-10-25 15:09:24 -07:00
Leonardo de Moura
cdcde661ef feat(library/definitional/induction_on): automatically add 'induction_on' 2014-10-25 13:37:04 -07:00
Leonardo de Moura
a7a06ab0f8 feat(library/definitional/rec_on): automatically generate rec_on function for inductive datatypes 2014-10-25 13:08:59 -07:00
Leonardo de Moura
7240a1a640 feat(kernel/inductive): add get_num_minor_premises and get_num_type_formers APIs 2014-10-25 11:17:29 -07:00
Leonardo de Moura
2bc034da2c feat(kernel/inductive): expose 'get_elim_name' API 2014-10-25 10:47:12 -07:00
Leonardo de Moura
9e69a95b26 feat(kernel/inductive): add API for retrieving the number of indices in an inductive datatype 2014-10-25 10:42:05 -07:00
Leonardo de Moura
c30c0fa3b8 fix(kernel/metavar): avoid crash due to stack overflow, closes #253 2014-10-25 00:20:59 -07:00
Leonardo de Moura
096c67b2e5 fix(library/unifier): occurs-check bug 2014-10-25 00:16:02 -07:00
Leonardo de Moura
5830da9e2d fix(frontends/lean/tokens): typo 2014-10-24 14:44:59 -07:00
Leonardo de Moura
aaad9633fb fix(library/tactic/expr_to_tactic): memory leak 2014-10-24 14:40:36 -07:00
Leonardo de Moura
7a033ac07e feat(frontends/lean): add 'print axioms' command, close #251 2014-10-24 14:35:03 -07:00
Leonardo de Moura
db25f933b0 feat(frontends/lean): use nice names for meta-variables when executing check c and c is a constant 2014-10-24 08:23:26 -07:00
Leonardo de Moura
79d0347721 feat(library/tactic): add generalize tactic, closes #34
Remark: the intros tactic has been added in a different commit: 7d0100a340
2014-10-23 22:40:15 -07:00
Leonardo de Moura
b83b065d00 feat(library/tactic/apply_tactic): modify heuristic for adding arguments to apply tactic. 2014-10-23 22:36:32 -07:00
Leonardo de Moura
f9aa1a1b84 refactor(library/tactic/goal): remove unnecessary parameter 2014-10-23 21:22:52 -07:00
Leonardo de Moura
ab4c292872 fix(build): do not disable unicode chars on Windows 2014-10-23 20:58:23 -07:00
Leonardo de Moura
f027acb5cb fix(frontends/lean): missing type info in expressions nested in tactics 2014-10-23 18:31:05 -07:00
Leonardo de Moura
a6571c3273 feat(frontends/lean): add 'print definition' command 2014-10-23 14:54:15 -07:00
Soonho Kong
04b4e36701 doc(emacs/README.md): fix typo
[skip ci]
2014-10-23 14:32:36 -07:00
Leonardo de Moura
22ae42d3af fix(frontends/lean/info_manager): use fresh formatter displaying each info object
The formatter may cache results.
2014-10-23 14:29:17 -07:00
Leonardo de Moura
20ab59c740 fix(frontends/lean/pp): avoid unnecessary parentheses when pretty printing delimited notation 2014-10-23 14:14:08 -07:00
Leonardo de Moura
43cfd5c26a fix(library/tactic): add missing file 2014-10-23 14:04:12 -07:00
Leonardo de Moura
212ae0b61c feat(frontends/lean): automatically add 'info' tactic in begin-end blocks
Actually, the tactic is only added when Lean is in collect-info mode.
2014-10-23 13:30:04 -07:00
Leonardo de Moura
e750c9b67a feat(frontends/lean): add 'info' tactic for producing PROOF_STATE info for emacs mode 2014-10-23 13:18:30 -07:00
Leonardo de Moura
40235c6af0 fix(kernel/type_checker): propagate 'memoize' flag to default_converter 2014-10-23 13:15:53 -07:00
Leonardo de Moura
8e3ac023bb feat(library/reducible): expose 'memoize' flag 2014-10-23 13:09:59 -07:00
Leonardo de Moura
cadc9b3ff3 feat(frontends/lean/info_manager): add proof_state info 2014-10-23 10:40:07 -07:00
Leonardo de Moura
38a9aa2a98 feat(frontends/lean): automatically open 'tactic' namespace (if it is not already open) in 'by' and 'begin-end' expressions 2014-10-23 10:26:19 -07:00
Leonardo de Moura
00f9a10e82 refactor(library/tactic/unfold_tactic): use new 'tactic.expr' to implement 'unfold' tactic
This change also enabled us to remove hacks used in the tests modified
by this commit.
2014-10-23 10:26:19 -07:00
Leonardo de Moura
2c330e704e fix(frontends/lean/elaborator): error localization for 'expr_to_tactic' failures 2014-10-23 10:26:19 -07:00
Leonardo de Moura
6fcba192b2 refactor(library/tactic): move 'unfold' tactic to separate module 2014-10-23 10:26:19 -07:00
Leonardo de Moura
96d7d9c8d9 feat(library/tactic/elaborate): do not invoke unifier if no constraints were generated during elaboration 2014-10-23 10:26:19 -07:00
Leonardo de Moura
f3fdc70400 refactor(library/tactic): add auxiliary module 'library/tactic/elaborate' 2014-10-23 10:26:11 -07:00
Leonardo de Moura
3aec70b92c feat(library/tactic): elaborate 'exact' tactic argument at tactic execution time 2014-10-22 22:13:37 -07:00
Leonardo de Moura
c50227ea6e feat(library/tactic): change apply tactic semantics: goals are not reversed; and dependent arguments are not included
This commit also adds the tactic rapply that corresponds to the previous
semantics we have been using.
2014-10-22 18:11:09 -07:00
Leonardo de Moura
60132912a4 refactor(library/tactic): remove unnecessary hack
It is not needed anymore.
We had to use this hack when we had tactic_macro_definition_cell.
2014-10-22 17:41:19 -07:00
Leonardo de Moura
7c62446023 refactor(frontends/lean): remove dead code 2014-10-22 17:39:06 -07:00
Leonardo de Moura
eb2b59ce4f refactor(frontends/lean): remove unnecessary files 2014-10-22 17:33:16 -07:00
Leonardo de Moura
e95c7c5f70 refactor(library/tactic/rename_tactic): use new 'tactic.expr' to implement 'intro/intros' tactic
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-10-22 17:29:50 -07:00
Leonardo de Moura
9a316092d1 refactor(library/tactic/rename_tactic): use new 'tactic.expr' to implement rename tactic 2014-10-22 17:29:50 -07:00
Leonardo de Moura
5e15ac0c92 feat(library/tactic): add new approach for embedding non-elaborated expressions into tactics 2014-10-22 17:29:50 -07:00
Leonardo de Moura
7c617955d0 refactor(library/tactic): move 'exact' tactic to separate module 2014-10-22 17:29:44 -07:00
Leonardo de Moura
323715e951 refactor(library/tactic): move 'tracing' tactics to separate module 2014-10-22 14:12:45 -07:00
Soonho Kong
ef60e6abd2 fix(shell/lean.cpp): use temp ios 2014-10-21 17:23:02 -07:00
Leonardo de Moura
33f18b9454 fix(kernel/converter): remove buggy eta-reduction and rely only on eta-expansion
The bug is exposed by new unit test
2014-10-21 16:54:25 -07:00
Leonardo de Moura
6b89080b1a feat(frontends/lean): do not allow user to define notation using tokens ! and @, closes #248 2014-10-21 16:28:36 -07:00
Leonardo de Moura
e24225fabf feat(frontends/lean): validate infixl/infixr/postfix/prefix declarations against reserved notations 2014-10-21 15:39:47 -07:00
Leonardo de Moura
1896e6e273 feat(frontends/lean): allow 'reserve' inside namespaces 2014-10-21 15:39:47 -07:00
Leonardo de Moura
bb953b80aa feat(frontends/lean): reserve notation, closes #95 2014-10-21 15:39:47 -07:00
Soonho Kong
ba9d0a2b7f fix(shell/CMakeLists.txt): merge into a single lean.js file 2014-10-21 16:18:12 -04:00
Soonho Kong
ec43ad51ca feat(shell/lean.cpp): use trust_lvl=10000, flycheck for EMSCRIPTEN 2014-10-21 00:43:26 -07:00
Leonardo de Moura
2f62a5e887 fix(frontends/lean/info_manager): disable notation pretty printer when displaying OVERLOAD information
We need that otherwise the Lean emacs mode will display useless overload
information such as:

            [+] int.add : ℤ → ℤ → ℤ
            overloaded with #1 + #0, #1 + #0

Note that this only became an issue after we implemented the new pretty printer
2014-10-20 22:06:33 -07:00
Leonardo de Moura
92acd9affc chore(emacs): do not highlight arbitrary types 2014-10-20 19:17:02 -07:00
Leonardo de Moura
815dc9b63d chore(library/tactic/expr_to_tactic): remove dead code 2014-10-20 18:59:57 -07:00
Leonardo de Moura
8a44dfc1df fix(frontends/lean/pp): bug in pretty printer notation match procedure 2014-10-20 18:58:27 -07:00
Leonardo de Moura
40fb66bf07 feat(frontends/lean): change default precedence to 1 2014-10-20 18:40:55 -07:00
Leonardo de Moura
e2fa981e89 fix(frontends/lean/pp): avoid parentheses around atomic notation 2014-10-20 18:08:13 -07:00
Leonardo de Moura
53a64ac767 refactor(library/tactic): move intros_tactic initialization to intros_tactic module 2014-10-20 17:47:52 -07:00
Leonardo de Moura
3c4419ff23 refactor(library/tactic): move rename_tactic to separate module 2014-10-20 17:41:40 -07:00
Leonardo de Moura
ac9397816f refactor(library/tactic): move apply_tactic initialization to apply_tactic module 2014-10-20 17:32:32 -07:00
Leonardo de Moura
e68007a727 fix(frontends/lean/builtin_tactics): adjust tactics precedence 2014-10-20 17:10:16 -07:00
Leonardo de Moura
9b8f60b739 feat(frontends/lean/builtin_exprs): tolerate dangling ',' in begin-end block
This is useful when debugging proofs.
2014-10-20 15:59:49 -07:00
Leonardo de Moura
a3aca96cb9 fix(frontends/lean/builtin_exprs): error position 2014-10-20 15:56:58 -07:00
Leonardo de Moura
fd40999909 feat(frontends/lean): uniform unsolved goals "error" position 2014-10-20 15:52:06 -07:00
Leonardo de Moura
7d0100a340 feat(library/tactic): add 'intros' tactic 2014-10-20 15:26:16 -07:00
Leonardo de Moura
5cba7244ce fix(library/tactic/expr_to_tactic): argument evaluation order is not part of the standard 2014-10-20 15:16:38 -07:00
Leonardo de Moura
33c4715f4c fix(frontends/lean/pp): suppress unnecessary '[annotation]' marks 2014-10-20 11:16:21 -07:00
Leonardo de Moura
f0cc17af87 fix(frontends/lean/elaborator): missing type information when ! operator (aka consume_args) is used 2014-10-20 08:31:36 -07:00
Leonardo de Moura
a1006073d4 feat(frontends/lean/notation_cmd): do not allow user to define new tokes containing '(', ')', ',' or change their precedence 2014-10-19 13:39:06 -07:00
Leonardo de Moura
469368f090 refactor(frontends/lean/scanner): move basic UTF8 procedures to separate module 2014-10-19 13:29:15 -07:00
Leonardo de Moura
4d4bc0551f feat(frontends/lean/pp): minimize number of spaces when pretty printing notation 2014-10-19 13:08:15 -07:00
Leonardo de Moura
ed1afe26bd feat(frontends/lean/pp): support scopedexpr notation in the pretty printer 2014-10-19 12:50:40 -07:00
Leonardo de Moura
f63d47fef3 feat(frontends/lean/pp): support foldl/foldr notation in the pretty printer 2014-10-19 11:16:24 -07:00
Leonardo de Moura
100b3abf1d fix(frontends/lean/pp): bug in notation matching procedure 2014-10-19 10:48:41 -07:00
Leonardo de Moura
d7cc7cbd8c refactor(frontends/lean/pp): remove 'reverse' hack 2014-10-19 09:56:18 -07:00
Leonardo de Moura
eef1cc4ac2 fix(frontends/lean/pp): implicit arguments in notation 2014-10-19 09:04:43 -07:00
Leonardo de Moura
555d26aa61 feat(frontends/lean/pp): take notation declarations into account when pretty printing
TODO: support foldl/foldr and binders
2014-10-19 08:41:29 -07:00
Leonardo de Moura
8cfb3ae687 fix(library/module): bug in import_module 2014-10-18 21:03:22 -07:00
Leonardo de Moura
6a31a79265 refactor(frontends/lean/inductive_cmd): move auxiliary method to expr.h 2014-10-18 15:11:26 -07:00
Leonardo de Moura
eb79af98ba feat(frontends/lean/parse_config): add get_notation_entries auxiliary function for returning the list of notation declarations that start with a given head symbol
This API is need to take notation declarations into account when pretty
printing expressions.
2014-10-18 11:49:27 -07:00
Leonardo de Moura
f17e67efcb feat(frontends/lean/parse_table): add get_head_index auxiliary function for indexing notation declarations 2014-10-18 10:55:39 -07:00
Leonardo de Moura
f76c5bbde9 fix(init): initialization problem 2014-10-18 09:01:24 -07:00
Leonardo de Moura
2369388629 refactor(kernel/instantiate): cleanup beta-reduce 2014-10-17 20:19:51 -07:00
Leonardo de Moura
1ce3b83d79 fix(kernel/metavar): compilation error in some compilers 2014-10-17 17:22:25 -07:00
Leonardo de Moura
6285c3a217 perf(util/list): use memory pool for list cells 2014-10-17 17:08:39 -07:00
Leonardo de Moura
58aff5b4af perf(kernel/metavar): used thread local cache for instantiate_metavars 2014-10-17 17:08:35 -07:00
Leonardo de Moura
6d64da2981 perf(kernel/expr_eq_fn): use thread local cache, and avoid memory allocation/deallocation 2014-10-17 16:44:20 -07:00
Leonardo de Moura
7cc3dd0b4d chore(kernel/replace_fn): "name" constant 2014-10-17 14:20:35 -07:00
Leonardo de Moura
b6afbcb7f5 perf(kernel/replace_fn): use 'recursive' replace_fn for "small" terms 2014-10-17 14:15:09 -07:00
Leonardo de Moura
c21c8c582f feat(util/buffer): expose capacity method 2014-10-17 14:05:36 -07:00
Leonardo de Moura
10b880ce3b perf(kernel/metavar): improve occurs_expr and occurs performance 2014-10-17 14:05:22 -07:00
Leonardo de Moura
50e4c6f252 feat(util/rb_tree): add find_if method 2014-10-17 12:53:43 -07:00
Leonardo de Moura
d2cbd25985 refactor(kernel): replace_visitor doesn't need to be in the kernel anymore 2014-10-17 10:23:35 -07:00
Leonardo de Moura
14ebbda8cb perf(kernel/metavar): minor improvement 2014-10-16 21:43:54 -07:00
Leonardo de Moura
8974b52f7b perf(library/unifier): avoid unnecessary wasteful computation 2014-10-16 17:16:49 -07:00
Leonardo de Moura
fe484b26f3 refactor(kernel/expr): remove dead code 2014-10-16 13:45:36 -07:00
Leonardo de Moura
3b6b23c921 refactor(kernel/expr): remove silly overloads 2014-10-16 13:37:55 -07:00
Leonardo de Moura
c4f02bd16a refactor(kernel/expr): remove dead code 2014-10-16 13:09:26 -07:00
Leonardo de Moura
97a7dae12a refactor(kernel/expr): remove code duplication 2014-10-16 12:48:49 -07:00
Leonardo de Moura
28128e0330 fix(frontends/lean): EXTRA_TYPE info 2014-10-16 12:25:18 -07:00
Leonardo de Moura
8907dd5b91 refactor(frontends/lean): minimize the use of 'set_tag' 2014-10-15 13:17:09 -07:00
Leonardo de Moura
814778abb1 refactor(kernel/expr): tag expressions at "creation" time 2014-10-15 13:12:09 -07:00
Leonardo de Moura
d960c1994e refactor(library/tactic/apply_tactic): reuse type_checker object 2014-10-15 09:28:01 -07:00
Leonardo de Moura
bbe4017790 refactor(library/tactic/apply_tactic): remove dead code 2014-10-15 09:15:11 -07:00
Leonardo de Moura
b94d121580 refactor(library): move flycheck "helper" classes to separate module 2014-10-15 09:08:04 -07:00
Soonho Kong
9a6e18ad2a fix(style): remove "using namespace emscripten" 2014-10-14 21:09:33 -07:00
Soonho Kong
4143716311 fix(emacs/lean-util): fix lean-path-list to only include existing dirs
Fix #246
2014-10-14 20:48:56 -07:00
Soonho Kong
1915674b4d feat(CMakeLists.txt): support emscripten 2014-10-14 18:59:15 -07:00
Soonho Kong
e75c9fe9fc feat(shell/lean.cpp): expose functions to javascript side
lean_init, lean_import_module, lean_process_file
2014-10-14 18:59:15 -07:00
Soonho Kong
e99463980a feat(util/lean_path.cpp): use '/library' as LEAN_PATH for emscripten 2014-10-14 18:59:15 -07:00
Leonardo de Moura
e6606ef2ac feat(library/tactic): add 'rename' hypothesis tactic 2014-10-14 18:19:34 -07:00
Leonardo de Moura
fc01edee4d fix(frontends/lean/elaborator): perform translation using "user-level" names 2014-10-14 17:53:24 -07:00
Leonardo de Moura
90dba868e3 feat(library/tactic/proof_state): apply substitutions when pretty printing state 2014-10-14 17:37:20 -07:00
Leonardo de Moura
58c9421bab refactor(library/tactic): elaborate expressions nested in tactics with respect to current goal, save postponed constraints (e.g., flex-flex constraints) closes #44, fixes #70 2014-10-14 17:18:40 -07:00
Soonho Kong
0f5d88517d chore(library/rewriter): remove lean-0.1 files 2014-10-14 16:03:34 -07:00
Leonardo de Moura
5ff200c516 chore(library/simplifier): delete old simplifier
This was the simplifier used in Lean 0.1.
2014-10-14 15:56:09 -07:00
Leonardo de Moura
de7c850782 feat(kernel/converter): relax is_def_eq test for local constants and meta-variables 2014-10-14 15:31:57 -07:00
Leonardo de Moura
940092a975 fix(kernel/constraint): bug in operator<< 2014-10-14 15:22:03 -07:00
Leonardo de Moura
a30232b99a fix(library/module): race condition on m_imported 2014-10-14 15:19:50 -07:00
Soonho Kong
343a9a690e feat(emacs/lean-type): add lean-show-type-add-to-kill-ring option
If a customization option 'lean-show-type-add-to-kill-ring' is non-nil
and a user runs 'lean-show-type' by explicitly typing 'C-c C-t',
lean-mode saves the displayed type information message into kill-ring
, which can be pasted by yank (C-y) command.

Close #245
2014-10-14 09:27:25 -07:00
Leonardo de Moura
7231aa0d73 fix(library/module): allow multiple calls to import_modules with the same modules
The idea is to store a set of already imported files.
This feature is useful when using the import_modules API directly (e.g.,
from javascript).
2014-10-14 08:13:41 -07:00
Leonardo de Moura
d75a9c840c fix(frontends/lean/parser): segfault when ending scope without opening, fixes #244 2014-10-13 21:08:36 -07:00
Leonardo de Moura
b7c1b348d1 feat(frontends/lean/inductive_cmd): don't force user to repeat argument declarations in every datatype in a mutually recursive datatype declaration 2014-10-13 20:53:09 -07:00
Leonardo de Moura
9edf780a00 feat(frontends/lean): elaborate inductive datatypes and introduction rules as a single elaboration problem 2014-10-13 18:35:11 -07:00
Leonardo de Moura
2431de542f refactor(frontends/lean/parser): add missing 'const' 2014-10-13 13:07:42 -07:00
Leonardo de Moura
7d0db4cc60 feat(library/kernel_serializer): compress binder modifier annotations when saving .olean file 2014-10-13 10:14:56 -07:00
Leonardo de Moura
bc70e7244d feat(frontends/lean): add option '-X': discard all proofs after theorems are checked
This option is useful for generating compact .olean files for web demos
2014-10-13 10:05:38 -07:00
Leonardo de Moura
698dc0472d fix(frontends/lean/decl_cmds): error messages 2014-10-13 07:17:33 -07:00
Leonardo de Moura
ab90a350b3 fix(emacs/lean-syntax): syntax highlight for declarations with explicit universes 2014-10-13 06:52:36 -07:00
Leonardo de Moura
a26618e0f2 feat(frontends/lean): add '[]' notation for marking arguments where class-instance resolution should be applied 2014-10-12 13:06:00 -07:00
Leonardo de Moura
549f24335e feat(frontends/lean): do not allow coercion definition in sections 2014-10-11 18:41:17 -07:00
Leonardo de Moura
78b8a67015 refactor(library/scoped_ext): sections are just "nameless" namespaces 2014-10-11 17:36:46 -07:00