Commit graph

4089 commits

Author SHA1 Message Date
Scott Morrison
832c38d3cb fix(library/vm/vm_environment) use is_structure rather than try to catch an assertion 2017-04-29 12:55:50 +02:00
Scott Morrison
41c648905e fix(library/tactic/smt/ematch.cpp) check if new_states is empty before pushing 2017-04-28 08:50:45 -07:00
Sebastian Ullrich
0ca6e2c96f refactor(library/{type_context,compiler/preprocess},frontends/lean/elaborator): use opaque, general type class instead of special app elaboration for eval_expr 2017-04-27 16:04:59 -07:00
Sebastian Ullrich
4479eebaf0 feat(init/meta/{environment,pexpr}): expose some structure APIs 2017-04-27 16:04:41 -07:00
Gabriel Ebner
3352c31029 fix(library/tactic/smt/ematch): fix compiler warning 2017-04-27 16:04:18 -07:00
Leonardo de Moura
d3eca9fa35 feat(library/type_context): improve unifier support for projections
We need this improvement to be able to finish Section "Other goodies" described at
https://github.com/leanprover/lean/wiki/Refactoring-structures

Before this commit, Lean would not be able to solve constraints such as

```lean
@has_add.add nat nat.has_add a b =?= @had_add.add ?A ?inst a b
```

The problem is that projections were being reduced eagerly, and the
constraint would be reduced to

```lean
nat.add a b =?= @had_add.add ?A ?inst a b
```

The new test proj_uniy.lean contains similar unification problems.
2017-04-27 15:55:09 -07:00
Sebastian Ullrich
8cf98d9974 fix(library/type_context): fix tmp_mode assertion error
Fixes #1543
2017-04-26 14:23:14 -07:00
Leonardo de Moura
cabb4350d9 feat(library): instances are not reducible by default anymore
Motivation: see "Other goodies" section at
https://github.com/leanprover/lean/wiki/Refactoring-structures

We had to add a new transparency mode: Instances at type_context.
In this mode, instances and reducible definitions are considered
transparent.

The new mode is used in the defeq_canonizer, code generator,
and sizeof lemma generation at inductive_compiler.

We also use the new mode in the unfold tactics.
2017-04-26 14:10:11 -07:00
Leonardo de Moura
bcf34f1b6f fix(library/inductive_compiler/nested): do not crash if we fail to unfold sizeof 2017-04-26 12:54:52 -07:00
Leonardo de Moura
e59fd2927a feat(library): process explicit arguments before implicit
Moreover, we process the implicit arguments using at least the Semireducible
transparency mode. The idea is to make sure to reduce counterintuitive
behavior in rw and simp where the user believes a lemma is applicable
but it does not work because the implicit part fails to unify.

The modification above fixes the simplifier issues found by @kha when proving the
monadic laws.

This commit also improves constraints of the form

          n =?= m

where n and m are big distinct numerals. The type_context fails quickly
for this kind of constraint even using transparency mode Semireducible.
We need this feature otherwise we timeout at

      @eq char a b =?= @eq unsigned ?x ?y

Recall that

       char     := fin char_sz
       unsigned := fin unsigned_sz
2017-04-25 17:16:06 -07:00
Leonardo de Moura
e51ff591f7 chore(library/type_context): disable all trace messages inside type class resolution if trace.class_instances is not set to true 2017-04-25 14:16:10 -07:00
Leonardo de Moura
d0dede53f5 chore(library/tactic): make sure "pattern" is the first argument of is_def_eq 2017-04-25 09:59:04 -07:00
Sebastian Ullrich
e9a6c544af refactor(frontends/lean/{elaborator,structure_cmd}): compile structure inheritance to nested fields 2017-04-24 19:35:15 +02:00
Jared Roesch
4704b68035 chore(*): remove smt2 bindings from standard libary 2017-04-23 11:32:11 -07:00
Sebastian Ullrich
6ab0a008f9 feat(frontends/lean/{builtin_cmds,interactive}): complete namespace/section after end 2017-04-23 11:26:31 -07:00
Gabriel Ebner
9424e6fa24 refactor(frontends/lean/definition_cmds): make profiling threshold configurable 2017-04-23 11:22:41 -07:00
Gabriel Ebner
d1e8a83212 fix(library/vm/interaction_state): do not show empty lines if profiling data is missing 2017-04-23 11:22:33 -07:00
Leonardo de Moura
0d97700c60 feat(library/compiler): add support for and.rec in the code generator 2017-04-16 13:31:37 -07:00
Leonardo de Moura
470f2bc547 feat(library/compiler, library/vm): remove additional irrelevant information 2017-04-16 12:46:14 -07:00
Sebastian Ullrich
26ac6d31f2 fix(library/metavar_util): do not compress mvar assignments in tmp mode 2017-04-16 09:35:49 -07:00
Leonardo de Moura
210b7c8fb7 fix(library/tactic): fixes #1513
Implement rename tactic in Lean using revert/intro
2017-04-15 11:34:24 -07:00
Leonardo de Moura
fe0b694a06 feat(library/type_context): do not cache whnf in tmp_mode if term contains metavariables 2017-04-13 18:15:34 -07:00
Leonardo de Moura
7cc68130b3 feat(library/type_context): remove assign regular uvars hack 2017-04-13 18:15:29 -07:00
Sebastian Ullrich
17204f9629 feat(library/vm/interaction_state): capture tactic profile data if enabled 2017-04-11 17:07:28 -07:00
Sebastian Ullrich
026c5ee509 fix(library/init/meta/expr,library/vm/vm_expr): fix macro args 2017-04-11 17:07:28 -07:00
Gabriel Ebner
cefc26d9cb refactor(library/system/process): add exit status and working directory 2017-04-11 16:42:17 -07:00
Gabriel Ebner
acf75bd69b fix(library/handle): handle double close 2017-04-11 16:42:17 -07:00
Gabriel Ebner
e2fa363423 feat(library/system/io,shell/lean): add --run switch 2017-04-11 16:41:30 -07:00
Gabriel Ebner
e1fae7b761 fix(library/module): correctly print kernel exceptions 2017-04-10 15:59:31 +02:00
Gabriel Ebner
01a7efc007 fix(library/module_mgr): do not crash on missing imports
Fixes #1506.
2017-04-04 19:56:33 +02:00
Gabriel Ebner
c06bef0505 fix(library/aux_definition): also zeta expand the local context
@leodemoura The forced zeta-expansion in mk_aux_definition might
cause problems if we use tactic.abstract without zeta-reduction.
However, we never use the non-zeta mode, and it already fails right now
if you accidentally use zeta-expansion in the proof we want to abstract.
2017-04-04 09:04:37 +02:00
Leonardo de Moura
a007c93280 feat(library/tactic/dsimplify): replace assigned metavariables 2017-04-02 12:49:29 -07:00
Leonardo de Moura
6dbf53f195 fix(library/type_context): fixes #1502 2017-04-02 12:49:06 -07:00
Leonardo de Moura
b42ae2cf54 fix(library/type_context): fixes #1500 2017-03-31 19:19:44 -07:00
Leonardo de Moura
6c68aeee01 feat(library/system/io): add io.iterate primitive 2017-03-31 11:34:09 -07:00
Sebastian Ullrich
3f98eb84c5 fix(library/print): consider constant roots in is_used_name 2017-03-31 09:40:49 -07:00
Sebastian Ullrich
3f87755a2a fix(frontends/lean/pp): qualify constant shadowed by local 2017-03-31 09:40:49 -07:00
Sebastian Ullrich
cd013f22c0 chore(*): replace "'^.' notation" with "field notation", pretty print using "." 2017-03-31 09:40:49 -07:00
Sebastian Ullrich
b2dfae8a67 chore(tests/lean/caching_user_attribute): fix flaky test 2017-03-30 06:04:00 +02:00
Sebastian Ullrich
4a33045b84 chore(tests/lean,shell/lean): run leantests and leanruntests in parallel 2017-03-30 06:04:00 +02:00
Jared Roesch
dc4086d0ed feat(library/vm/process): add basic process support 2017-03-28 18:08:06 -07:00
Leonardo de Moura
07c29c0779 chore(library/abstract_parser,frontends/lean/parser): remove dead code 2017-03-28 11:51:50 -07:00
Leonardo de Moura
36c7d46c34 feat(library/tactic): add options trace.rewrite and trace.kabstract for debugging rewrite tactic
See #1480

@semorrison We can now use the following commands to trace the rewrite
tactic
```lean
set_option trace.rewrite true
set_option trace.kabstract true
```

When these options are used, Lean will pretty print the subterm selected
by the rewrite tactic. That is, the subterm that will be rewritten.
This option may help you diagnose what is going on.
2017-03-27 18:18:20 -07:00
Leonardo de Moura
09867fcfe0 fix(library/tactic/simplify): assertion violation 2017-03-27 18:04:57 -07:00
Leonardo de Moura
1cef8af1be feat(library/tactic/simplify): add eta := tt to simp 2017-03-27 17:38:40 -07:00
Leonardo de Moura
eea46610ea fix(library/tactic/simplify): missing projection reduction, add proj := tt to simp 2017-03-27 17:38:40 -07:00
Leonardo de Moura
b09968a37b feat(library/tactic/simplify): add beta := tt to simp 2017-03-27 17:38:31 -07:00
Leonardo de Moura
34f6a92e24 fix(library/tactic/simplify): simp default behavior should eliminate annotations 2017-03-27 15:10:47 -07:00
Gabriel Ebner
8c1136c1b6 fix(library/module_mgr): get_first_diff_pos: handle newlines correctly 2017-03-27 14:01:04 -07:00
Gabriel Ebner
318910f99b refactor(frontends/lean/parser): store snapshots in a lazy async list 2017-03-27 14:00:53 -07:00