lean4-htt/src/kernel
Joachim Breitner 8f899bf5bd
doc: code comments about reflection support (#5235)
I found that the kernel has special support for `e =?= true`, and will
in this case aggressively whnf `e`. This explains the following behavior
(for a `sqrt` function with fuel):

```lean
theorem foo : sqrt 100000000000000000002 == 10000000000 := rfl       -- fast
theorem foo : sqrt 100000000000000000002 =  10000000000 := rfl       -- slow
theorem foo : sqrt 100000000000000000002 =  10000000000 := by decide -- fast
```

The special support in the kernel only applies for closed `e` and `true`
on the RHS. It could be generlized (also open terms, also `false`, other
data type's constructors, different orientation). But maybe I should
wait for evidence that this generaziation really matters, or whether
all applications (proof by reflection) can be made to have this form.
2024-09-10 06:36:38 +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 perf: for_each with precise cache (#4794) 2024-07-20 00:18:55 +00:00
declaration.h perf: fix implementation of move constructors and move assignment ope… (#4700) 2024-08-02 17:55:03 +00:00
environment.cpp perf: precise cache for expr_eq_fn (#4890) 2024-08-01 02:56:41 +00:00
environment.h fix: Windows needs more LEAN_EXPORTs 2024-08-12 14:14:42 +02:00
equiv_manager.cpp chore: reduce src/include/lean 2021-09-07 08:24:54 -07:00
equiv_manager.h
expr.cpp perf: for_each with precise cache (#4794) 2024-07-20 00:18:55 +00:00
expr.h perf: fix implementation of move constructors and move assignment ope… (#4700) 2024-08-02 17:55:03 +00:00
expr_cache.cpp
expr_cache.h
expr_eq_fn.cpp chore: fix typo in hash code for Expr equality test (#4990) 2024-08-12 00:47:08 +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 chore: use Expr.numObjs instead of lean_expr_size_shared (#5239) 2024-09-02 21:26:00 +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: do not apply eta for structures in Prop 2022-03-01 09:00:46 -08: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 fix: regular mvar assignments take precedence over delayed ones (#4987) 2024-08-12 00:14:38 +00:00
kernel_exception.h feat: type of theorems must be propositions 2024-03-13 12:37:58 -07:00
level.cpp chore: remove remnants of C++ format 2022-11-18 06:11:24 -08: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: avoid expr copies in replace_rec_fn::apply (#4702) 2024-08-02 18:32:36 +00:00
replace_fn.h chore: reduce src/include/lean 2021-09-07 08:24:54 -07:00
trace.cpp chore: move trace.cpp to kernel (#4014) 2024-04-28 17:24:48 +00:00
trace.h chore: move trace.cpp to kernel (#4014) 2024-04-28 17:24:48 +00:00
type_checker.cpp doc: code comments about reflection support (#5235) 2024-09-10 06:36:38 +00:00
type_checker.h feat: safe exponentiation (#4637) 2024-07-03 05:12:53 +00:00