lean4-htt/library/init/meta
Leonardo de Moura 68629b2e5f feat(library/init/category/transformers): disable instance has_monad_lift_t ==> has_coe
It produces non-termination because it triggers sub-problems of the
form (has_monad_lift_t t ?M), and this kind of sub-problem is bad
for the transitive closure rule:

instance has_monad_lift_t_trans (m n o) [has_monad_lift n o] [has_monad_lift_t m n] : has_monad_lift_t m o

The trick above only behaves well for synthesis subproblems that do not
contain sub-variables.

Note that the sub-problem (has_monad_lift_t t ?M) is created by a
similar rule used at has_coe_t.

instance {a : Type u₁} {b : Type u₂} {c : Type u₃} [has_coe a b] [has_coe_t b c] : has_coe_t a c
AND
instance {m n} [has_monad_lift_t m n] {α} : has_coe (m α) (n α) :=

We workaround the issue by disabling

  instance {m n} [has_monad_lift_t m n] {α} : has_coe (m α) (n α)

and adding instances of it. Example:

  meta instance (α : Type) : has_coe (tactic α) (solver α) := ...
  meta instance (α : Type) : has_coe (tactic α) (prover α) := ...
  meta instance (α : Type) : has_coe (tactic α) (smt_tactic α) := ...
2017-01-01 09:15:25 -08:00
..
ac_tactics.lean feat(frontends/lean): 'mutual' and 'meta' are now keywords 2016-09-24 10:44:40 -07:00
attribute.lean chore(*): don't use upper case letter for type variables, and camelCase for declarations 2016-11-17 14:54:08 -08:00
backward.lean chore(library/init): definition => def 2016-10-06 16:04:12 -07:00
comp_value_tactics.lean feat(library): add mk_int_val_ne_proof 2016-12-24 15:22:31 -08:00
congr_lemma.lean fix(library/init/meta/congr_lemma): typo 2016-11-13 12:54:26 -08:00
congruence_tactics.lean feat(library/init/meta): smt_tactic skeleton 2016-12-31 18:22:23 -08:00
constructor_tactic.lean chore(library/init): definition => def 2016-10-06 16:04:12 -07:00
contradiction_tactic.lean chore(*): don't use upper case letter for type variables, and camelCase for declarations 2016-11-17 14:54:08 -08:00
converter.lean chore(*): don't use upper case letter for type variables, and camelCase for declarations 2016-11-17 14:54:08 -08:00
decl_cmds.lean feat(*): parallel compilation 2016-11-29 11:12:40 -08:00
declaration.lean feat(library/tools/super): add super prover 2016-12-16 18:18:13 -08:00
default.lean feat(library/init/meta): smt_tactic skeleton 2016-12-31 18:22:23 -08:00
environment.lean chore(*): don't use upper case letter for type variables, and camelCase for declarations 2016-11-17 14:54:08 -08:00
exceptional.lean feat(library): add pre_monad 2016-12-08 12:48:55 -08:00
expr.lean feat(library/tools/super): add super prover 2016-12-16 18:18:13 -08:00
format.lean feat(library/tools/super): add super prover 2016-12-16 18:18:13 -08:00
fun_info.lean chore(*): don't use upper case letter for type variables, and camelCase for declarations 2016-11-17 14:54:08 -08:00
injection_tactic.lean chore(*): don't use upper case letter for type variables, and camelCase for declarations 2016-11-17 14:54:08 -08:00
interactive.lean refactor(library/init/meta/interactive): tactic.interactive.types ==> interactive.types 2016-12-30 18:06:41 -08:00
level.lean chore(*): don't use upper case letter for type variables, and camelCase for declarations 2016-11-17 14:54:08 -08:00
match_tactic.lean chore(library/init): definition => def 2016-10-06 16:04:12 -07:00
mk_dec_eq_instance.lean fix(meta/mk_dec_eq_instance): handle indices and ginductives 2016-10-13 10:12:37 -07:00
mk_has_sizeof_instance.lean refactor(library/init): move combinator logic to core 2016-12-02 15:56:52 -08:00
mk_inhabited_instance.lean chore(library/init): definition => def 2016-10-06 16:04:12 -07:00
name.lean feat(*): C++ code generator 2016-12-05 16:11:41 -08:00
occurrences.lean refactor(library/init): create init.data folder 2016-12-02 14:23:06 -08:00
options.lean chore(*): don't use upper case letter for type variables, and camelCase for declarations 2016-11-17 14:54:08 -08:00
pexpr.lean chore(*): don't use upper case letter for type variables, and camelCase for declarations 2016-11-17 14:54:08 -08:00
rb_map.lean feat(library/tools/super): add super prover 2016-12-16 18:18:13 -08:00
rec_util.lean chore(library/init): definition => def 2016-10-06 16:04:12 -07:00
relation_tactics.lean feat(library/tactic): add "approximate" parameter to apply_core and rewrite_core 2016-12-10 10:24:05 -08:00
rewrite_tactic.lean feat(library/tactic): add "approximate" parameter to apply_core and rewrite_core 2016-12-10 10:24:05 -08:00
set_get_option_tactics.lean chore(library/init): definition => def 2016-10-06 16:04:12 -07:00
simp_tactic.lean feat(library/tactic): add norm_num_tactic 2016-12-17 16:48:40 -08:00
smt_tactic.lean feat(library/init/category/transformers): disable instance has_monad_lift_t ==> has_coe 2017-01-01 09:15:25 -08:00
tactic.lean feat(library/init/meta): smt_tactic skeleton 2016-12-31 18:22:23 -08:00
task.lean refactor(library/init): create init.category folder 2016-12-02 15:52:49 -08:00
vm.lean feat(library/vm): native closures that do not depend on vm_state 2016-12-14 18:51:24 -08:00