lean4-htt/src/kernel
Leonardo de Moura 6e18afac8c
feat: kernel hint for proof-by-reflection (#9865)
This PR adds improved support for proof-by-reflection to the kernel type
checker. It addresses the performance issue exposed by #9854. With this
PR, whenever the kernel type-checks an argument of the form `eagerReduce
_`, it enters "eager-reduction" mode. In this mode, the kernel is more
eager to reduce terms. The new `eagerReduce _` hint is often used to
wrap `Eq.refl true`. The new hint should not negatively impact any
existing Lean package.

---------

Co-authored-by: Joachim Breitner <mail@joachim-breitner.de>
2025-08-12 19:24:47 +00:00
..
abstract.cpp feat: generalize Expr.abstractRange 2022-03-08 18:19:17 -08:00
abstract.h chore: remove Expr.localE constructor 2020-11-01 09:37:48 -08:00
CMakeLists.txt perf: add lean_instantiate_level_mvars (#4910) 2024-08-04 18:31:44 +00:00
declaration.cpp fix: RecursorVal.getInduct to return name of major argument’s type (#5679) 2024-10-21 08:45:18 +00:00
declaration.h fix: RecursorVal.getInduct to return name of major argument’s type (#5679) 2024-10-21 08:45:18 +00:00
environment.cpp feat: split Lean.Kernel.Environment from Lean.Environment (#5145) 2025-01-18 18:42:57 +00:00
environment.h perf: add missing std::moves (#9107) 2025-07-01 12:39:12 +00:00
equiv_manager.cpp chore: reduce src/include/lean 2021-09-07 08:24:54 -07:00
equiv_manager.h
expr.cpp feat: add the nondep field of Expr.letE to the C++ data model (#8751) 2025-06-14 23:10:27 +00:00
expr.h feat: add the nondep field of Expr.letE to the C++ data model (#8751) 2025-06-14 23:10:27 +00:00
expr_cache.cpp
expr_cache.h
expr_eq_fn.cpp feat: add the nondep field of Expr.letE to the C++ data model (#8751) 2025-06-14 23:10:27 +00:00
expr_eq_fn.h
expr_maps.h
expr_sets.h chore: reduce src/include/lean 2021-09-07 08:24:54 -07:00
find_fn.h
for_each_fn.cpp perf: optimize sorry detection in unused variables linter (#7129) 2025-02-22 16:43:39 +00:00
for_each_fn.h perf: for_each with precise cache (#4794) 2024-07-20 00:18:55 +00:00
inductive.cpp refactor: InductiveVal.numNested instead of .isNested 2024-07-08 21:18:50 +02:00
inductive.h fix: RecursorVal.getInduct to return name of major argument’s type (#5679) 2024-10-21 08:45:18 +00:00
init_module.cpp fix: Windows needs more LEAN_EXPORTs 2024-08-12 14:14:42 +02:00
init_module.h fix: Windows needs more LEAN_EXPORTs 2024-08-12 14:14:42 +02:00
instantiate.cpp perf: instantiateExprMVars (#4915) 2024-08-05 17:15:22 +00:00
instantiate.h perf: instantiateExprMVars (#4915) 2024-08-05 17:15:22 +00:00
instantiate_mvars.cpp chore: fix spelling mistakes in non-Lean files (#5430) 2024-09-23 21:11:20 +00:00
kernel_exception.h feat: split Lean.Kernel.Environment from Lean.Environment (#5145) 2025-01-18 18:42:57 +00:00
level.cpp fix: block potential adversarial exploit of non-aborting assert! (#8560) 2025-05-31 03:14:01 +00:00
level.h perf: add lean_instantiate_level_mvars (#4910) 2024-08-04 18:31:44 +00:00
local_ctx.cpp chore: reduce src/include/lean 2021-09-07 08:24:54 -07:00
local_ctx.h perf: fix implementation of move constructors and move assignment ope… (#4700) 2024-08-02 17:55:03 +00:00
quot.cpp fix: binder name 2021-08-26 11:11:37 -07:00
quot.h fix: quot reduction bug 2023-10-11 21:25:34 -07:00
replace_fn.cpp perf: use mimalloc with important C++ hash maps (#7868) 2025-04-11 16:23:33 +00:00
replace_fn.h chore: reduce src/include/lean 2021-09-07 08:24:54 -07:00
trace.cpp feat: split Lean.Kernel.Environment from Lean.Environment (#5145) 2025-01-18 18:42:57 +00:00
trace.h feat: split Lean.Kernel.Environment from Lean.Environment (#5145) 2025-01-18 18:42:57 +00:00
type_checker.cpp feat: kernel hint for proof-by-reflection (#9865) 2025-08-12 19:24:47 +00:00
type_checker.h feat: kernel hint for proof-by-reflection (#9865) 2025-08-12 19:24:47 +00:00