lean4-htt/library/tools/super
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
..
cdcl.lean feat(tools/super): use congruence closure 2017-01-10 09:07:37 -08:00
cdcl_solver.lean feat(tools/super): use congruence closure 2017-01-10 09:07:37 -08:00
clause.lean refactor(library/init/meta): avoid '_core' idiom using default parameters 2017-02-14 09:46:55 -08:00
clause_ops.lean chore(library/tools/super/clause_ops): remove unnecessary type annotations 2017-01-10 09:07:37 -08:00
clausifier.lean refactor(library/init/meta): avoid '_core' idiom using default parameters 2017-02-14 09:46:55 -08:00
datatypes.lean feat(frontends/lean/elaborator): add extra coercion resolution rule for monads 2016-12-31 13:50:15 -08:00
default.lean chore(tools/super): add copyright 2016-12-16 19:06:50 -08:00
defs.lean feat(tools/super/defs): unfold definitions using dunfold_expr_core 2017-01-12 21:47:46 +01:00
demod.lean feat(tools/super/demod): demodulation 2017-01-10 09:07:37 -08:00
equality.lean chore(library/tools/super): replace ↣ with ^. 2016-12-16 19:14:05 -08:00
factoring.lean feat(frontends/lean/elaborator): add extra coercion resolution rule for monads 2016-12-31 13:50:15 -08:00
inhabited.lean feat(tools/super/inhabited): look in the local context as well 2017-01-12 21:47:46 +01:00
lpo.lean refactor(tools/super/lpo): add mk_lpo function 2017-01-12 21:47:46 +01:00
misc_preprocessing.lean fix(tools/super/misc_preprocessing): normalize clauses during preprocessing 2017-01-12 21:47:46 +01:00
prover.lean feat(frontends/lean/definition_cmds): allow meta recursive definitions without recursive equations 2017-02-04 13:44:05 -08:00
prover_state.lean feat(frontends/lean/definition_cmds): allow meta recursive definitions without recursive equations 2017-02-04 13:44:05 -08:00
resolution.lean refactor(library/init/meta): avoid '_core' idiom using default parameters 2017-02-14 09:46:55 -08:00
selection.lean chore(library/tools/super): replace ↣ with ^. 2016-12-16 19:14:05 -08:00
simp.lean refactor(library/init/meta/simp_tactic): use default field values at simplify_config 2017-01-23 10:22:48 -08:00
splitting.lean feat(frontends/lean/elaborator): add extra coercion resolution rule for monads 2016-12-31 13:50:15 -08:00
subsumption.lean feat(frontends/lean/elaborator): add extra coercion resolution rule for monads 2016-12-31 13:50:15 -08:00
superposition.lean refactor(library/init/meta): avoid '_core' idiom using default parameters 2017-02-14 09:46:55 -08:00
trim.lean perf(tools/super/trim): make trim much cheaper 2017-01-12 21:47:46 +01:00
utils.lean chore(library/tools/super): replace ↣ with ^. 2016-12-16 19:14:05 -08:00