Commit graph

99 commits

Author SHA1 Message Date
Sebastian Ullrich
793f0baee8 feat(library/tactic/vm_monitor): use attribute for registering VM monitors 2017-03-22 07:34:27 -07:00
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
156e5603d6 feat(library/init/category/combinators): put list combinators in the namespace list
In this way we can use them with the ^. notation
2017-03-05 21:30:30 -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
Leonardo de Moura
5a924699d0 feat(library/tools/mini_crush): add nano crush 2017-02-24 23:14:05 -08:00
Leonardo de Moura
52221cdbd1 fix(frontends/lean/elaborator): {} elaboration issue 2017-02-24 21:20:39 -08:00
Gabriel Ebner
c6ccda0f98 chore(library/tools/super/factoring): use modern syntactic sugar 2017-02-24 21:08:46 +01: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
Sebastian Ullrich
a443a5b7a6 chore(init/meta,tools/super): remove obsolete set_option eqn_compiler.max_steps 2017-02-23 01:52:13 +01:00
Sebastian Ullrich
a053175714 refactor(init/meta,library/vm): use structure for position information 2017-02-21 11:06:39 -08:00
Leonardo de Moura
f5cbdff893 feat(library/tools/mini_crush/default): provide equational lemmas for "relevant" functions to rsimp; make sure we do not get stuck in ematching loop by using try_for 2017-02-19 20:56:13 -08:00
Leonardo de Moura
f140095d7b feat(library/tools/mini_crush/default): improve mini_crush 2017-02-19 20:26:30 -08:00
Leonardo de Moura
1ca5c78cf8 feat(library/tools/mini_crush): improve mini_crush 2017-02-19 18:33:12 -08:00
Leonardo de Moura
a41aac0e6a feat(library/tools/mini_crush): add tracing messages, and more examples 2017-02-19 17:27:09 -08:00
Leonardo de Moura
0fb5a01f17 feat(library/tools): add mini_crush 2017-02-19 16:21:12 -08:00
Leonardo de Moura
d20319693d feat(library/init/meta): cleanup interface using default parameters 2017-02-19 12:12:34 -08:00
Sebastian Ullrich
b9424975b3 refactor(init/meta): replace dynamically-checked quotes where possible 2017-02-17 19:59:57 -08:00
Sebastian Ullrich
84f3e2a492 refacotr(init/meta/interactive): clean up parameter gadgets 2017-02-17 15:41:58 +01:00
Sebastian Ullrich
d15591a2d8 feat(library,frontends/lean): expose parser to Lean and use for parsing tactic parameters 2017-02-17 13:45:56 +01: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
11d5773560 refactor(library/init/meta): remove whnf_core 2017-02-14 18:39:57 -08:00
Leonardo de Moura
f650a1b873 refactor(library/init/meta): avoid '_core' idiom using default parameters
I kept a few core methods (e.g., exact_core and apply_core). Reason:
if we use default parameters

    meta constant exact (e : expr) (md := semireducible) : tactic unit

then, we will not be able to write

    to_expr p >>= exact

The workaround is

    do t <- to_expr p, exact t

or
    to_expr p >>= (fun x, exact x)

One alternative is to change how we handle default parameters, and
eta-expand applications that involve default parameters.
We may also have an attribute [eta_expand]. Then

    attribute [eta_expand] foo

instructs the elaborator to automatically eta-expand foo-applications.
The attribute would give users more control, and avoid potential
performance problems. Without the attribute, then for every function
application the elaborator has to check the type and decide whether it
must be eta-expanded or not.

@gebner @kha What do you think?
2017-02-14 09:46:55 -08:00
Leonardo de Moura
32e6442d0a feat(frontends/lean): no global universes in the frontend 2017-02-08 17:23:04 -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
3b38f71f11 fix(library,tests/lean): fix run/interactive tests, and problems in the standard library due to the new interpretation for Type
We had to change subtype to use Sort since the axiom
strong_indefinite_description uses it.

see #1341
2017-01-30 11:54:00 -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
Leonardo de Moura
778d5382f6 refactor(library/init/meta/simp_tactic): use default field values at simplify_config 2017-01-23 10:22:48 -08:00
Jeremy Avigad
7496522830 fix(library/tools/super/clausifier): add rule for new iff 2017-01-22 14:19:11 -08:00
Leonardo de Moura
4de71cadfa feat(library/init/meta): expose additional app_builder tactics 2017-01-20 20:27:07 -08:00
Gabriel Ebner
51924eb726 refactor(tools/super/lpo): add mk_lpo function 2017-01-12 21:47:46 +01:00
Gabriel Ebner
f8caacfcb3 fix(tools/super/superposition): use none transparency to remove beta-redex 2017-01-12 21:47:46 +01:00
Gabriel Ebner
b6a25f8074 feat(tools/super/defs): unfold definitions using dunfold_expr_core 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
020cb5b271 fix(tools/super/clause): fix universal closure of clauses with dependent types 2017-01-12 21:47:46 +01:00
Gabriel Ebner
8319a4c927 perf(tools/super/trim): make trim much cheaper 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
42eb3ef497 feat(tools/super/inhabited): look in the local context as well 2017-01-12 21:47:46 +01:00
Leonardo de Moura
3967cd28fa fix(library/vm/vm): curr_fn() may not be available 2017-01-12 11:47:45 -08:00
Leonardo de Moura
dc7e39887b refactor(library/tools/super/simp): reorganize simplify lemmas API 2017-01-11 13:47:49 -08:00
Gabriel Ebner
d6a70b4aa3 chore(library/tools/super/clause_ops): remove unnecessary type annotations 2017-01-10 09:07:37 -08: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
beb355f798 feat(tools/super): clausify during preprocessing
Some inference produce terms with large useless redexes such as
(prod.fst (prod.mk _ _)).  Since we do normalization during
preprocessing, we can avoid ever even looking at these terms.
2017-01-10 09:07:37 -08:00
Gabriel Ebner
38c311c47a feat(tools/super/clausifier): fully normalize terms 2017-01-10 09:07:37 -08:00
Gabriel Ebner
244e061f76 refactor(tools/super/simp): do not enable simp by default
simp interacts badly with super's term ordering.  I believe a better
approach is to pick the term ordering according to the available simp
rules, as in "More SPASS with Isabelle".
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