lean2/src/library
Leonardo de Moura 812c1a2960 feat(library/elaborator): only expand definitions that are not marked as hidden
The elaborator produces better proof terms. This is particularly important when we have to prove the remaining holes using tactics.
For example, in one of the tests, the elaborator was producing the sub-expression

 (λ x : N, if ((λ x::1 : N, if (P a x x::1) ⊥ ⊤) == (λ x : N, ⊤)) ⊥ ⊤)

After, this commit it produces

 (λ x : N, ¬ ∀ x::1 : N, ¬ P a x x::1)

The expressions above are definitionally equal, but the second is easier to work with.

Question: do we really need hidden definitions?
Perhaps, we can use only the opaque flag.

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2013-12-20 02:16:49 -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): only expand definitions that are not marked as hidden 2013-12-20 02:16:49 -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 feat(kernel/replace_fn): non-recursive replace_fn 2013-12-17 16:35:39 -08:00
basic_thms.cpp feat(library/basic_thms): simplify DoubleNegElim 2013-12-16 13:19:19 -08:00
basic_thms.h chore(library/basic_thms): fix typo in comment 2013-12-19 12:22:05 -08:00
CMakeLists.txt feat(kernel/replace_fn): non-recursive replace_fn 2013-12-17 16:35:39 -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
expr_pair_maps.h refactor(*): uses aliases for unordered_map and unordered_set 2013-12-18 12:30:45 -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 feat(library/elaborator): only expand definitions that are not marked as hidden 2013-12-20 02:16:49 -08:00
hidden_defs.h refactor(kernel/environment): add ro_environment 2013-12-12 16:48:34 -08:00
io_state.cpp fix(library/io_state): bug in the io_state Lua bindings 2013-12-19 16:39:42 -08:00
io_state.h feat(frontends/lean): hide 'explicit' version of objects with implicit arguments 2013-12-19 13:12:39 -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 fix(frontends/lean/parser): fix deadlock in macro parser 2013-12-19 21:40:00 -08:00
placeholder.h fix(frontends/lean/parser): fix deadlock in macro parser 2013-12-19 21:40:00 -08:00
register_module.h fix(frontends/lean/parser): fix deadlock in macro parser 2013-12-19 21:40:00 -08:00
substitution.cpp feat(kernel/replace_fn): add template replace that captures commonly used pattern 2013-12-17 18:31:59 -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(frontends/lean): Scopes in the default Lean frontend 2013-12-18 17:40:21 -08:00
type_inferer.h feat(frontends/lean): Scopes in the default Lean frontend 2013-12-18 17:40:21 -08:00