lean2/src/library
Leonardo de Moura 160a8379ef feat(library/elaborator): provide the metavar_env to instantiate and lift_free_vars in the elaborator, it will minimize the number of local_entries needed
The modifications started at commit 1852c86948 made a big difference. For example, before these changes test tests/lean/implicit7.lean generated complicated constraints such as:

[x : Type; a : ?M::29[inst:1 ?M::0[lift:0:1]] x] ⊢ Pi B : Type, (Pi _ : x, (Pi _ : (?M::35[inst:0 #0, inst:1 #2, inst:2 #4, inst:3 #6, inst:5 #5, inst:6 #7, inst:7 #9, inst:9 #9, inst:10 #11, inst:13 ?M::0[lift:0:13]] x a B _), (?M::36[inst:1 #1, inst:2 #3, inst:3 #5, inst:4 #7, inst:6 #6, inst:7 #8, inst:8 #10, inst:10 #10, inst:11 #12, inst:14 ?M::0[lift:0:14]] x a B _ _))) ≈
?M::22 x a

After the changes, only very simple constraints are generated. The most complicated one is:

[] ⊢ Pi a : ?M::0, (Pi B : Type, (Pi _ : ?M::0, (Pi _ : B, ?M::0))) ≈ Pi x : ?M::17, ?M::18

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-12-14 15:59:35 -08:00
..
all refactor(kernel/environment): add ro_environment 2013-12-12 16:48:34 -08:00
arith refactor(kernel/environment): add ro_environment 2013-12-12 16:48:34 -08:00
cast refactor(kernel/environment): add ro_environment 2013-12-12 16:48:34 -08:00
elaborator feat(library/elaborator): provide the metavar_env to instantiate and lift_free_vars in the elaborator, it will minimize the number of local_entries needed 2013-12-14 15:59:35 -08:00
rewriter chore(util/rc): remove unnecessary argument from LEAN_COPY_REF and LEAN_MOVE_REF macros 2013-12-13 15:01:24 -08:00
tactic refactor(kernel/metavar_env): use the same approach used in the class environment in the class metavar_env 2013-12-13 18:59:15 -08:00
basic_thms.cpp refactor(kernel/environment): add ro_environment 2013-12-12 16:48:34 -08:00
basic_thms.h refactor(kernel/environment): add ro_environment 2013-12-12 16:48:34 -08:00
CMakeLists.txt feat(library/fo_unify): first order unification 2013-12-03 12:21:21 -08:00
context_to_lambda.cpp feat(kernel/expr): add some_expr and none_expr for building values of type optional<expr> 2013-12-08 10:34:38 -08:00
context_to_lambda.h refactor(kernel/expr): remove 'null' expression, and operator bool for expression 2013-12-07 23:21:10 -08:00
deep_copy.cpp feat(kernel/expr): add some_expr and none_expr for building values of type optional<expr> 2013-12-08 10:34:38 -08:00
deep_copy.h Use fullpath in #include directives. 2013-09-12 20:04:10 -07:00
expr_lt.cpp refactor(kernel/expr): remove 'null' expression, and operator bool for expression 2013-12-07 23:21:10 -08:00
expr_lt.h feat(expr_lt): improve expr_lt performance by using hash codes, and add more tests 2013-09-25 21:59:58 -07:00
expr_pair.h feat(kernel/expr): add hash code based on allocation time 2013-11-14 02:43:11 -08:00
fo_unify.cpp refactor(kernel/expr): remove 'null' expression, and operator bool for expression 2013-12-07 23:21:10 -08:00
fo_unify.h feat(library/fo_unify): first order unification 2013-12-03 12:21:21 -08:00
hidden_defs.cpp refactor(kernel/environment): add ro_environment 2013-12-12 16:48:34 -08:00
hidden_defs.h refactor(kernel/environment): add ro_environment 2013-12-12 16:48:34 -08:00
io_state.cpp refactor(library/io_state): simplify regular/diagnostic 2013-12-10 13:09:35 -08:00
io_state.h refactor(library/io_state): simplify regular/diagnostic 2013-12-10 13:09:35 -08:00
kernel_bindings.cpp refactor(kernel/metavar_env): use the same approach used in the class environment in the class metavar_env 2013-12-13 18:59:15 -08:00
kernel_bindings.h refactor(kernel/environment): add ro_environment 2013-12-12 16:48:34 -08:00
max_sharing.cpp feat(kernel/expr): add some_expr and none_expr for building values of type optional<expr> 2013-12-08 10:34:38 -08:00
max_sharing.h Use consistent naming conventions 2013-09-17 14:43:07 -07:00
placeholder.cpp refactor(kernel/metavar_env): use the same approach used in the class environment in the class metavar_env 2013-12-13 18:59:15 -08:00
placeholder.h refactor(kernel/metavar_env): use the same approach used in the class environment in the class metavar_env 2013-12-13 18:59:15 -08:00
register_module.h feat(library/fo_unify): first order unification 2013-12-03 12:21:21 -08:00
substitution.cpp refactor(kernel/metavar_env): use the same approach used in the class environment in the class metavar_env 2013-12-13 18:59:15 -08:00
substitution.h refactor(kernel/metavar_env): use the same approach used in the class environment in the class metavar_env 2013-12-13 18:59:15 -08:00
type_inferer.cpp feat(library/type_inferer): provide the metavar_env to instantiate and lift_free_vars in the type_inferer, it will minimize the number of local_entries needed 2013-12-14 15:54:49 -08:00
type_inferer.h refactor(kernel/metavar_env): use the same approach used in the class environment in the class metavar_env 2013-12-13 18:59:15 -08:00
update_expr.cpp refactor(kernel/expr): remove 'null' expression, and operator bool for expression 2013-12-07 23:21:10 -08:00
update_expr.h refactor(kernel/expr): remove 'null' expression, and operator bool for expression 2013-12-07 23:21:10 -08:00