Commit graph

1045 commits

Author SHA1 Message Date
Leonardo de Moura
ed1acd9fb0 feat(library/init): move propext to init/quot, add Jeremy's funext theorem 2015-04-01 12:36:33 -07:00
Leonardo de Moura
b960e123b1 feat(kernel): add experimental support for quotient types 2015-03-31 22:04:16 -07:00
Leonardo de Moura
88495f9d59 fix(*): remove unnecessary null pointer checks
closes #514
2015-03-28 12:16:39 -07:00
Leonardo de Moura
223ef58db9 fix(kernel/equiv_manager): typo 2015-03-27 10:44:09 -07:00
Leonardo de Moura
f33ad9d6f4 feat(kernel): add equivalence manager for speeding up is_def_eq 2015-03-27 10:34:54 -07:00
Leonardo de Moura
d69f829337 perf(kernel/justification): avoid redundant justification objects 2015-03-25 19:09:01 -07:00
Leonardo de Moura
f5811d6092 feat(frontends/lean): hide subterms that do not contain metavariables
when generating "unresolved metavariables" error message

closes #473
2015-03-13 12:42:57 -07:00
Leonardo de Moura
026622a790 refactor(src/kernel/replace_fn): remove stack-less replace_fn it is slower than the simple one 2015-03-12 16:22:49 -07:00
Leonardo de Moura
4ea323a2b2 refactor(library/tactic): cleanup common pattern 2015-03-12 14:52:41 -07:00
Leonardo de Moura
3e4d849a4a refactor(kernel/metavar.h): simplify API 2015-03-12 12:50:53 -07:00
Leonardo de Moura
1042bbc06f fix(kernel/metavar): improve error messages by propagating the tag when we execute instantiate_all
This is the real fix for commit ededf4fc6c
2015-03-02 13:01:50 -08:00
Leonardo de Moura
a8554b6ed9 fix(kernel/default_converter): avoid assertion violation when normalizing type incorrect expressions 2015-02-22 16:17:43 -08:00
Leonardo de Moura
fcd67649ed refactor(kernel): expose may_reduce_later method 2015-02-07 20:36:26 -08:00
Leonardo de Moura
b57f93bad5 refactor(kernel): remove unnecessary procedures 2015-02-07 20:14:19 -08:00
Leonardo de Moura
1bdf7ae55a feat(kernel/default_converter): make norm_ext virtual 2015-02-07 19:25:56 -08:00
Leonardo de Moura
4c2277fccf feat(kernel/converter): more cleanup 2015-02-07 19:19:01 -08:00
Leonardo de Moura
73acaca21e refactor(kernel/default_converter): remove extra_opaque_pred 2015-02-07 19:05:46 -08:00
Leonardo de Moura
a11d1efb42 refactor(kernel/converter): remove mk_default_converter procedures 2015-02-07 19:03:58 -08:00
Leonardo de Moura
a47615009f refactor(kernel/type_checker): replace mk_default_converter with default_converter 2015-02-07 19:01:59 -08:00
Leonardo de Moura
7823905fc1 fix(kernel/default_converter): use is_opaque at is_delta 2015-02-07 17:30:36 -08:00
Leonardo de Moura
e04250f0d8 refactor(library/tactic/rewrite_tactic): use default_converter 2015-02-07 16:44:51 -08:00
Leonardo de Moura
c04c0e8381 refactor(*): remove transparent_scope hack, replace [strict] with [all-transparent] annotation 2015-02-07 15:19:41 -08:00
Leonardo de Moura
7945b8adab refactor(kernel/type_checker): remove useless procedures 2015-02-07 14:55:36 -08:00
Leonardo de Moura
12d320fa19 refactor(kernel/default_converter): avoid carrying type_checker and delayed_justification around in the default_converter 2015-02-07 14:10:56 -08:00
Leonardo de Moura
71b9215a70 refactor(kernel/default_converter): cleanup 2015-02-07 13:49:42 -08:00
Leonardo de Moura
3f06f7b6fd refactor(kernel): move default_converter to its own module 2015-02-07 11:33:37 -08:00
Leonardo de Moura
bc8bb1dbd3 feat(kernel/replace_fn): add use_cache flag to replace function 2015-02-05 10:49:18 -08:00
Leonardo de Moura
fc6d9878c9 refactor(kernel): add expr_cache
It is the old instantiate_metavars_cache.
2015-02-03 14:59:55 -08:00
Leonardo de Moura
dbc8e9e13a refactor(*): add method get_num_univ_params 2015-01-28 17:22:18 -08:00
Leonardo de Moura
ad4c7c20f9 fix(kernel/inductive/inductive): fix assertion violation when K is applied to type incorrect term 2015-01-27 11:22:14 -08:00
Leonardo de Moura
1dbe4b8fb7 feat(kernel/extension_context): add auxiliary method is_def_eq 2015-01-27 11:17:54 -08:00
Leonardo de Moura
c51e2ac428 feat(kernel/type_checker): expose get_arity function 2015-01-20 14:25:07 -08:00
Leonardo de Moura
c43b2c8640 feat(kernel/extension_context): add auxiliary methods 2015-01-20 14:23:10 -08:00
Leonardo de Moura
752b54085b refactor(kernel/type_checker): type checker should not unfold macros, but sign an error if a untrusted macro is used
Now, we unfold untrusted macros outside of the Lean kernel.
2015-01-20 12:36:56 -08:00
Leonardo de Moura
c6290f01d0 perf(kernel/free_vars): improve has_free_var 2015-01-15 18:42:56 -08:00
Leonardo de Moura
f397da111a perf(kernel/error_msgs): avoid unnecessary work 2015-01-15 18:32:52 -08:00
Leonardo de Moura
ce0b1d17a2 perf(kernel/free_vars): improve has_free_var 2015-01-15 18:31:43 -08:00
Leonardo de Moura
907f90096e feat(kernel): add memory consumption checks at replace_fn and for_each_fn 2015-01-15 16:54:55 -08:00
Leonardo de Moura
8ab775bd6f feat(*): distinguish between logical and runtime exceptions.
Now, we use throwable as the new base class for all Lean exceptions, and
exception is the subclass for "logical" exceptions.
2015-01-15 16:54:55 -08:00
Leonardo de Moura
7a75325416 feat(kernel/abstract): add new abstract_local procedure
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-12-20 11:31:48 -08:00
Leonardo de Moura
8b3e97d285 feat(kernel/type_checker): add ensure_type variant 2014-12-11 17:32:17 -08:00
Leonardo de Moura
bc7ee2958f fix(library/tactic/inversion_tactic): bug in mutually recursive case 2014-12-01 18:32:38 -08:00
Leonardo de Moura
4e572fac4e feat(kernel/inductive): store whether an inductive datatype supports dependent elimination or not 2014-11-27 10:36:15 -08:00
Leonardo de Moura
5fff3113a9 refactor(library/tactic/inversion_tactic): add 'cases_on' step to inversion_tactic 2014-11-27 00:06:26 -08:00
Leonardo de Moura
ffdeb0edc4 fix(frontends/lean/elaborator): unsolved metavariables, fix #329 2014-11-26 11:56:39 -08:00
Leonardo de Moura
ef75cac1c0 feat(kernel/expr): change the rules for inferring implicit arguments, closes #344 2014-11-25 12:54:07 -08:00
Leonardo de Moura
e81d9c9184 perf(kernel/level): apply two simple normalization rules at mk_max
They are variations of:
max l1 (max l1 l2) == (max l1 l2)
2014-11-16 18:16:57 -08:00
Leonardo de Moura
67de3b06f3 feat(kernel/level): improve universe level pretty printer
Example: produce `l+2` instead of `succ (succ l)`.
2014-11-14 14:51:03 -08:00
Leonardo de Moura
ffffabad95 feat(kernel/level): improve is_geq procedure for universe levels
Now, it also returns true for

          (succ^k1 a)  =?=  k2

where k1 >= k2
2014-11-14 14:20:35 -08:00
Leonardo de Moura
51719145f9 feat(library/unifier): solved universe constraints of the form succ^k1 a = max k2 ?m (when k1 >= k2) 2014-11-12 17:28:33 -08:00