Commit graph

23 commits

Author SHA1 Message Date
Sebastian Ullrich
e3b9190fe2 refactor(library/tactic/user_attribute): use attribute for registering attributes. naturally. 2017-03-15 14:06:34 -07:00
Sebastian Ullrich
763097dbd2 refactor(library): revise the monadic hierarchy 2017-03-09 20:30:03 -08:00
Leonardo de Moura
9d3c0497cb chore(frontends/lean): rename transient commands
See issue #1432
2017-03-09 18:41:19 -08:00
Leonardo de Moura
59c0cbd2e4 chore(library): test new '^.' notation in the standard library, and cleanup definitions using it 2017-03-05 21:21:50 -08:00
Sebastian Ullrich
5d68938a9c feat(frontends/lean): expr literals ```(...) 2017-03-05 08:37:16 -08:00
Gabriel Ebner
d27ff2e68b refactor(library/tools/super/prover_state): derived_clause.update_proof 2017-02-24 20:21:52 +01:00
Leonardo de Moura
552a185e6a feat(frontends/lean): 'let' in 'do' blocks 2017-02-24 09:10:36 -08:00
Leonardo de Moura
edd5e97045 feat(frontends/lean/elaborator): coercion from (decidable) Prop to bool
This is a hard coded extra case. It is not an instance of has_coe.
Even if we change has_coe to accomodate this case, it will not be a
satisfactory solution because this coercion depends on the element and
not the type, and the element usually contains metavariables.

We should eventually write a tactic for synthesizing coercions.
2017-02-14 18:41:32 -08:00
Leonardo de Moura
b28ed2453e feat(frontends/lean/definition_cmds): allow meta recursive definitions without recursive equations 2017-02-04 13:44:05 -08:00
Leonardo de Moura
6d12de6339 refactor(library/init/meta/smt): use default value for config structures 2017-01-23 14:18:06 -08:00
Gabriel Ebner
51924eb726 refactor(tools/super/lpo): add mk_lpo function 2017-01-12 21:47:46 +01:00
Gabriel Ebner
17bc32e41b chore(tools/super/prover_state): clean up prover monad definition 2017-01-12 21:47:46 +01:00
Gabriel Ebner
f2b3c7ae30 fix(tools/super/misc_preprocessing): normalize clauses during preprocessing 2017-01-12 21:47:46 +01:00
Gabriel Ebner
890ba702e6 feat(tools/super/demod): demodulation 2017-01-10 09:07:37 -08:00
Gabriel Ebner
e0dd8326c8 feat(tools/super/clause): more compact formatting 2017-01-10 09:07:37 -08:00
Gabriel Ebner
4e1106ffb5 feat(tools/super): use congruence closure 2017-01-10 09:07:37 -08:00
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
Leonardo de Moura
66bc3c796a feat(frontends/lean/elaborator): add extra coercion resolution rule for monads
We also removed the notation (♯tac) since it is not needed anymore.

@gebner, the comment at elaborator.cpp explains why you had to use the ♯
notation. The workaround is a little bit hackish, but I think it is
worth it. We will use monad lifts in many different places.
2016-12-31 13:50:15 -08:00
Leonardo de Moura
85f88c4174 refactor(library/data/monad/transformers): move transformers to init 2016-12-31 11:37:13 -08:00
Gabriel Ebner
f8331a0dfe fix(library/tools/super/prover_state): correctly detect sos lemmas 2016-12-27 11:21:52 -08:00
Leonardo de Moura
63ec7cd6cf chore(library/tools/super): replace ↣ with ^.
The plan is to delete the funny arrow ↣ notation and keep only ^.
2016-12-16 19:14:05 -08:00
Leonardo de Moura
85ae8ce307 chore(tools/super): add copyright 2016-12-16 19:06:50 -08:00
Gabriel Ebner
6b15f6cef9 feat(library/tools/super): add super prover 2016-12-16 18:18:13 -08:00