lean4-htt/src/library/vm
Leonardo de Moura cd8c154bcd feat(library/compiler/vm_compiler): clear runtime cost model
The equation compiler uses different strategies for processing
recursive equations. Some of them may produce unclear runtime cost
model. For example, the following fibonacci functions was running in
linear time instead of exponential time because the equation compiler
used the brec_on recursor.

def fib : nat → nat
| 0     := 1
| 1     := 1
| (n+2) := fib (n+1) + fib n

@dselsam and @jroesch have reported examples were the equation compiler
produces a negative performance impact. The new test (`eval` function)
captures the problem reported by @jroesch. In this example, the runtime
should not depend on the "amount of fuel".

This commit addresses this issue.
2017-11-01 14:11:09 -07:00
..
CMakeLists.txt refactor(init/meta,library/vm): use structure for position information 2017-02-21 11:06:39 -08:00
init_module.cpp feat(library/vm/vm_string): provide native implementation of type string in the VM 2017-10-23 10:55:26 -07:00
init_module.h
interaction_state.h feat(library/tactic): add tactic::ref 2017-06-02 15:19:03 -07:00
interaction_state_imp.h feat(frontends/lean,shell/server): "hole" command 2017-06-14 21:56:17 -07:00
optimize.cpp feat(frontends/lean): expr literals ```(...) 2017-03-05 08:37:16 -08:00
optimize.h
vm.cpp feat(library/compiler/vm_compiler): clear runtime cost model 2017-11-01 14:11:09 -07:00
vm.h feat(library/compiler/vm_compiler): clear runtime cost model 2017-11-01 14:11:09 -07:00
vm_array.cpp fix(library/compiler/simp_inductive): array^.data should not be treated as a regular projection 2017-03-09 19:11:51 -08:00
vm_array.h feat(library/vm/process): add basic process support 2017-03-28 18:08:06 -07:00
vm_aux.cpp refactor(library/init): provide more general try_for, and implement tactic.try_for using it 2017-02-12 12:15:19 -08:00
vm_aux.h
vm_declaration.cpp fix(library/vm): enable bounds checks 2017-02-15 13:39:00 -08:00
vm_declaration.h
vm_environment.cpp feat(library/init/meta/environment): expose function to unfold all macros 2017-07-18 19:49:53 +01:00
vm_environment.h
vm_exceptional.cpp fix(library/vm): enable bounds checks 2017-02-15 13:39:00 -08:00
vm_exceptional.h
vm_expr.cpp feat(kernel/expr): allow metavariables to have user-facing names 2017-07-16 07:16:41 -07:00
vm_expr.h refactor(init/meta/expr): unify expr and pexpr 2017-05-17 10:38:12 -07:00
vm_format.cpp chore(*): remove smt2 bindings from standard libary 2017-04-23 11:32:11 -07:00
vm_format.h
vm_int.cpp fix(library/vm/vm_int): tons of fixes for int.shiftl 2017-07-11 22:54:26 +01:00
vm_int.h
vm_io.cpp refactor(*): wrap string in a structure 2017-06-07 17:30:49 -07:00
vm_io.h feat(library/system/io,shell/lean): add --run switch 2017-04-11 16:41:30 -07:00
vm_level.cpp fix(library): expr, level, hash_map, rb_map has_repr instances should be has_to_string since they do not produce results that can be parsed by Lean 2017-06-18 18:33:27 -07:00
vm_level.h
vm_list.cpp fix(library/vm): enable bounds checks 2017-02-15 13:39:00 -08:00
vm_list.h feat(src/library/tactic): tactic.induction_core returns for each new goal the list of introduced hypotheses and substitutions for dependent hypotheses 2017-02-10 16:07:33 -08:00
vm_name.cpp fix(library/vm): enable bounds checks 2017-02-15 13:39:00 -08:00
vm_name.h
vm_nat.cpp feat(library/vm/vm_string): provide native implementation of type string in the VM 2017-10-23 10:55:26 -07:00
vm_nat.h feat(library/vm/vm_string): provide native implementation of type string in the VM 2017-10-23 10:55:26 -07:00
vm_native.cpp
vm_native.h
vm_option.h feat(init/meta/{interactive_base,parser}): decl_attributes, decl_meta_info, parser.set_env 2017-06-19 11:27:12 -07:00
vm_options.cpp fix(library/vm): enable bounds checks 2017-02-15 13:39:00 -08:00
vm_options.h
vm_ordering.h
vm_parser.cpp feat(library/vm/vm_parser): expose parse_command_like to the vm 2017-08-14 11:41:48 +02:00
vm_parser.h feat(frontends/lean/user_command): add user-defined commands 2017-06-19 11:27:12 -07:00
vm_pexpr.cpp feat(init/meta/pexpr): allow creating structure instance pre-terms 2017-10-11 16:13:34 +02:00
vm_pexpr.h
vm_pos_info.cpp refactor(init/meta,library/vm): use structure for position information 2017-02-21 11:06:39 -08:00
vm_pos_info.h refactor(init/meta,library/vm): use structure for position information 2017-02-21 11:06:39 -08:00
vm_rb_map.cpp feat(library/init/meta/expr): add expr.has_local_in 2017-07-01 20:23:37 -07:00
vm_rb_map.h feat(library/class): add attribute for tracking symbols occurring in instances of type classes 2017-05-01 18:02:30 -07:00
vm_string.cpp feat(library/vm/vm_string): add builtin VM implementation for string.cmp 2017-10-23 10:55:26 -07:00
vm_string.h feat(library/vm/vm_string): provide native implementation of type string in the VM 2017-10-23 10:55:26 -07:00
vm_task.cpp refactor(util/task): remove needs_separate_thread option 2017-03-23 08:57:56 +01:00
vm_task.h refactor(*): task<T>, log_tree, cancellation_token 2017-03-23 08:57:52 +01:00