lean4-htt/src/kernel
Leonardo de Moura 235b8975d2 feat(kernel/inductive): K-like reduction in the kernel
Given (H_1 : a = a), we have that
      eq.rec H_2 H_1
reduces to H_2

This is not exclusive to equality.
It applies to any inductive datatype in Prop, containing only one
constructor with zero "arguments" (we say they are nullary).

BTW, the restriction to only one constructor is not needed, but it is
does not buy much to support multiple nullary constructors since Prop is
proof irrelevant.
2014-10-10 14:37:45 -07:00
..
inductive feat(kernel/inductive): K-like reduction in the kernel 2014-10-10 14:37:45 -07:00
abstract.cpp fix(frontends/lean): missing type information for INFO, fixes #218 2014-10-01 14:29:07 -07:00
abstract.h fix(frontends/lean): missing type information for INFO, fixes #218 2014-10-01 14:29:07 -07:00
cache_stack.h perf(kernel/for_each_fn): use cache stack trick at for_each_fn 2014-07-23 19:32:11 -07:00
CMakeLists.txt refactor(*): explicit initialization/finalization for serialization 2014-09-22 15:26:41 -07:00
constraint.cpp feat(library/unifier): add 'on-demand' choice constraints, they are processed as soon as their type does not contain meta-variables anymore 2014-09-27 21:50:39 -07:00
constraint.h feat(library/unifier): add 'on-demand' choice constraints, they are processed as soon as their type does not contain meta-variables anymore 2014-09-27 21:50:39 -07:00
converter.cpp feat(kernel/type_checker): expose is_opaque 2014-09-25 11:19:54 -07:00
converter.h feat(kernel/type_checker): expose is_opaque 2014-09-25 11:19:54 -07:00
declaration.cpp refactor(kernel): rename var_decl to constant_assumption 2014-10-02 17:55:34 -07:00
declaration.h refactor(kernel): rename var_decl to constant_assumption 2014-10-02 17:55:34 -07:00
environment.cpp refactor(*): explicit initialization/finalization for environment extensions 2014-09-22 17:30:29 -07:00
environment.h refactor(*): use name_map 2014-09-28 10:23:11 -07:00
error_msgs.cpp chore(kernel/error_msgs): change type mismatch error messages, closes #33 2014-08-07 16:18:40 -07:00
error_msgs.h feat(kernel/error_msgs): improve application type mismatch error messages 2014-07-28 07:08:12 -07:00
expr.cpp feat(kernel/expr): add hash_bi function that takes binder information into account 2014-09-29 16:44:55 -07:00
expr.h refactor(kernel/macro_definition_cell): improve macro get_type API 2014-10-07 16:38:31 -07:00
expr_eq_fn.cpp fix(kernel/expr_eq_fn): typo 2014-07-10 23:21:24 +01:00
expr_eq_fn.h perf(kernel/expr_eq_fn): delay cache allocation 2014-06-03 17:03:09 -07:00
expr_maps.h feat(kernel/expr): add optional expression caching (aka "partial" hash-consing) 2014-06-03 15:35:47 -07:00
expr_sets.h chore(*): create alias for std::pair 2014-08-20 16:46:19 -07:00
extension_context.h refactor(kernel/type_checker): remove "global" constraint buffer from type_checker, and use constraint_seq instead 2014-08-20 16:46:19 -07:00
find_fn.h refactor(kernel/find_fn): simplify find_fn module 2014-07-23 18:09:58 -07:00
for_each_fn.cpp chore(*): create alias for std::pair 2014-08-20 16:46:19 -07:00
for_each_fn.h refactor(kernel/for_each_fn): simplify module interface 2014-07-23 18:16:41 -07:00
formatter.cpp refactor(kernel): explicit initialization/finalization 2014-09-24 10:12:28 -07:00
formatter.h refactor(kernel): explicit initialization/finalization 2014-09-24 10:12:28 -07:00
free_vars.cpp refactor(kernel): remove 'let'-expressions 2014-06-24 16:27:27 -07:00
free_vars.h feat(kernel): store free variable range in composite expressions 2014-04-17 11:31:48 -07:00
init_module.cpp refactor(kernel): explicit initialization/finalization 2014-09-24 10:12:28 -07:00
init_module.h refactor(*): explicit initialization/finalization for serialization 2014-09-22 15:26:41 -07:00
instantiate.cpp perf(kernel/instantiate): cache result of instantiate_type_univ_params 2014-09-25 13:24:43 -07:00
instantiate.h refactor(kernel/instantiate): add functions instantiate_value_univ_params and instantiate_type_univ_params 2014-08-12 17:40:30 -07:00
justification.cpp refactor(*): remove dependency to thread_local C++11 keyword, the 2014-09-24 12:51:04 -07:00
justification.h refactor(kernel/formatter): add formatter_factory, and simplify formatter interface 2014-07-10 18:32:00 +01:00
kernel_exception.cpp refactor(kernel/formatter): add formatter_factory, and simplify formatter interface 2014-07-10 18:32:00 +01:00
kernel_exception.h refactor(kernel/formatter): add formatter_factory, and simplify formatter interface 2014-07-10 18:32:00 +01:00
level.cpp feat(kernel/level): add missing normalization rule 2014-10-08 22:23:19 -07:00
level.h feat(frontends/lean/elaborator): elaborator rejects 'Type' if the universe is explicit 2014-10-02 14:29:51 -07:00
metavar.cpp chore(*): create alias for std::pair 2014-08-20 16:46:19 -07:00
metavar.h refactor(*): use name_map 2014-09-28 10:23:11 -07:00
normalizer_extension.cpp refactor(kernel/type_checker): remove "global" constraint buffer from type_checker, and use constraint_seq instead 2014-08-20 16:46:19 -07:00
normalizer_extension.h refactor(kernel/type_checker): remove "global" constraint buffer from type_checker, and use constraint_seq instead 2014-08-20 16:46:19 -07:00
pos_info_provider.cpp refactor(*): use + for concatenating format objects 2014-08-24 09:35:25 -07:00
pos_info_provider.h chore(*): create alias for std::pair 2014-08-20 16:46:19 -07:00
replace_fn.cpp perf(kernel/for_each_fn): use cache stack trick at for_each_fn 2014-07-23 19:32:11 -07:00
replace_fn.h chore(kernel/replace_fn): add syntax sugar for replace function 2014-07-19 12:53:37 +01:00
replace_visitor.cpp refactor(kernel): remove 'let'-expressions 2014-06-24 16:27:27 -07:00
replace_visitor.h perf(kernel/replace_visitor): use more expensive/precise cache 2014-09-24 10:12:29 -07:00
type_checker.cpp refactor(kernel/macro_definition_cell): improve macro get_type API 2014-10-07 16:38:31 -07:00
type_checker.h fix(frontends/lean): add 'eval' command 2014-09-26 20:16:03 -07:00