Commit graph

1812 commits

Author SHA1 Message Date
Jeremy Avigad
a22346e411 fix(lean/tests/lean/run/new_obtain{3,4}): adapt tests to new notation for image 2016-01-03 18:52:25 -08:00
Leonardo de Moura
19ebedd480 feat(library/type_context): improve type_context get_level_core, add virtual method for checking types whenever a metavariable is assigned
We add an example where app_builder fails without these new features.
That is, app_builder fails to solve the unification problem.
2016-01-03 17:58:27 -08:00
Leonardo de Moura
66a722ff5a feat(library/unifier): remove "eager delta hack", use is_def_eq when delta-constraint does not have metavariables anymore
The "eager-delta hack" was added to minimize problems in the interaction
between coercions and delta-constraints.
2016-01-03 12:39:32 -08:00
Leonardo de Moura
d02ead320a feat(library/unifier): remove unifier.computation option 2016-01-03 11:00:16 -08:00
Leonardo de Moura
9935cbc3d7 feat(library/blast/blast): communicate assigned metavariables back to tactic framework
We need this feature to be able to solve (input) goals containing
metavariables using blast.
See new test for example.
2016-01-02 20:05:44 -08:00
Leonardo de Moura
56d9b6b0d3 fix(library/blast/blast): convert uref and mref back into tactic metavariables 2016-01-02 19:23:04 -08:00
Leonardo de Moura
5feef27c2b feat(frontends/lean/notation_cmd): relax restriction on user defined tokens
Before this commit, Lean would forbid new tokens containing '(' or ')'.
We relax this restriction. Now, we just forbid new tokens starting with '(' or ending with ')'.
2016-01-02 13:58:46 -08:00
Leonardo de Moura
befe41e8f5 fix(tests/lean): adjust tests 2016-01-02 12:51:20 -08:00
Leonardo de Moura
17a2f1fe47 chore(tests/lean/run/blast_grind1): use 'core_grind'
Reason: we will change the semantics of 'grind'
2016-01-01 16:46:15 -08:00
Leonardo de Moura
ac9d6c2021 refactor(library/data/bool): cleanup bool proofs and fix bxor definition 2016-01-01 13:52:42 -08:00
Leonardo de Moura
54f2c0f254 feat(library/blast/forward): inst_simp should use the left-hand-side as a pattern (if none is provided by the user)
The motivation is to reduce the number of instances generated by ematching.

For example, given

   inv_inv:  forall a, (a⁻¹)⁻¹ = a

the new heuristic uses ((a⁻¹)⁻¹) as the pattern.
This matches the intuition that inv_inv should be used a simplification
rule.

The default pattern inference procedure would use (a⁻¹). This is bad
because it generates an infinite chain of instances whenever there is a
term (a⁻¹) in the proof state.
By using (a⁻¹), we get
   (a⁻¹)⁻¹ = a
Now that we have (a⁻¹)⁻¹, we can match again and generate
   ((a⁻¹)⁻¹)⁻¹ = a⁻¹
and so on
2015-12-31 20:20:39 -08:00
Leonardo de Moura
b117a10f82 refactor(library/blast/simplifier): use priority_queue to store simp/congr lemmas, use name convention used at forward/backward lemmas, normalize lemmas when blast starts, cache get_simp_lemmas 2015-12-28 17:52:57 -08:00
Leonardo de Moura
c8b9c98eb6 refactor(library/blast/backward): use priority_queue, make sure head is normalized when building index 2015-12-28 12:26:06 -08:00
Leonardo de Moura
f177082c3b refactor(*): normalize metaclass names
@avigad and @fpvandoorn, I changed the metaclasses names. They
were not uniform:
- The plural was used in some cases (e.g., [coercions]).
- In other cases a cryptic name was used (e.g., [brs]).

Now, I tried to use the attribute name as the metaclass name whenever
possible. For example, we write

   definition foo [coercion] ...
   definition bla [forward] ...

and

  open [coercion] nat
  open [forward] nat

It is easier to remember and is uniform.
2015-12-28 10:39:15 -08:00
Leonardo de Moura
96bec8b4f9 fix(frontends/lean/builtin_cmds): allow token and metaclass to have the same name 2015-12-28 09:57:45 -08:00
Leonardo de Moura
fe66e2aa4a fix(tests/lean): subtype notation is not in the top-level anymore 2015-12-28 09:04:11 -08:00
Leonardo de Moura
657b508cdf fix(tests/lean/simplifier_light): adjust test 2015-12-17 22:42:31 -08:00
Leonardo de Moura
d81b2d0f29 feat(library/attribute_manager, frontends/lean/builtin_cmds): use attribute manager information when pretty print definitions 2015-12-17 21:16:31 -08:00
Leonardo de Moura
2502039a5c fix(frontends/lean/parser): tactic notation that may take numerical parameters 2015-12-17 11:27:31 -08:00
Leonardo de Moura
73b28c91a6 fix(library/type_context): local constant management bug 2015-12-15 18:49:26 -08:00
Leonardo de Moura
1387cdfa0f feat(library/type_context): add eta-expansion to type_context 2015-12-15 17:24:53 -08:00
Leonardo de Moura
10273bf176 feat(library/blast/forward/pattern): improve pattern inference heuristic 2015-12-15 12:55:43 -08:00
Sebastian Ullrich
2185ee7e95 feat(library/tactic): make let tactic transparent, introduce new opaque note tactic
The new let tactic is semantically equivalent to let terms, while `note`
preserves its old opaque behavior.
2015-12-14 10:14:02 -08:00
Leonardo de Moura
193a9d8cde refactor(library/norm_num): avoid manual constant name initialization
@rlewis1988 We group all Lean constants used in the C++ code at
src/library/constants.txt

Jeremy and Floris check this file before renaming constants in the
library. So, they can quickly decide whether C++ code will be affected
or not.

We also have a python script for initializing the C++ name objects.
To use the script:
   - go to src/library
   - execute
       python ../../script/gen_constants_cpp.py constants.txt

It will create the boring initialization and finalization code, and
declare a procedure get_<id>_name() for each constant in the file constants.txt.

I also move the norm_num1.lean to the set of unit tests that are
executed whenever we push a commit to the main branch.

I found an assertion violation at line 606. Could you take a look?

Best,
Leo
2015-12-13 21:38:59 -08:00
Leonardo de Moura
e3a35ba4fd feat(frontends/lean): add 'with_attributes' tactical
closes #494
2015-12-13 18:27:44 -08:00
Leonardo de Moura
727a4f5a3a feat(library/tactic/intros_tactic): use '_' to say that some names are irrelevant in the intro tactic
See #695
2015-12-13 16:47:31 -08:00
Leonardo de Moura
d4e49a8434 feat(library/tactic/intros_tactic): intro without argument should introduce a single variable
see #695
2015-12-13 16:28:39 -08:00
Leonardo de Moura
999f23cbc0 feat(kernel/expr_eq_fn): take names into account when CompareBinderInfo is true
This is the correct fix for the id declaration pretty printing
discrepancy reported by Daniel.

TODO: decide whether we need another eq-mode where names are ignored.
For example, in blast, it makes sense to increase sharing by ignoring
binder names.
2015-12-13 14:47:11 -08:00
Leonardo de Moura
ce622e9179 feat(frontends/lean): add auto-include for structures and inductive decls 2015-12-13 13:39:34 -08:00
Leonardo de Moura
20de22a8ad feat(frontends/lean): automatically include anonymous instance implicit variables/parameters (whenever their parameters have been included) 2015-12-13 13:20:54 -08:00
Leonardo de Moura
b6bac2e542 chore(tests/lean/run): adjust tests 2015-12-13 12:23:44 -08:00
Leonardo de Moura
ef546c5c5b refactor(library): use anonymous instance implicit arguments 2015-12-13 11:46:48 -08:00
Leonardo de Moura
b7de10a6d2 feat(library/trace): allow user to disable subclasses of a trace class
Example:

set_option trace.blast true         -- enables trace.blast class and all subclasses
set_option trace.blast.action false -- disables the given subclass

Result: all blast classes are traced but blast.action
2015-12-11 11:03:16 -08:00
Leonardo de Moura
7f1800962a feat(frontends/lean/pp): allow user to override pp.all setting
see #922
2015-12-11 10:40:48 -08:00
Leonardo de Moura
a35fd06a33 test(tests/lean/run/blast_simp4): add simp test 2015-12-11 10:23:58 -08:00
Leonardo de Moura
ac0bd539b0 feat(frontends/lean/notation_cmd): allow 'abstract ... end' to be used in notation declarations
helps #825
2015-12-11 09:55:27 -08:00
Daniel Selsam
2b1e7e7759 feat(frontends/lean/pp): all disables numerals 2015-12-10 23:31:40 -08:00
Leonardo de Moura
3057dde885 fix(library/class,library/coercion): fixes #852 2015-12-10 22:52:02 -08:00
Leonardo de Moura
cf61adc5d5 feat(frontends/lean): identifiers starting with '_' are now reserved 2015-12-10 22:32:03 -08:00
Leonardo de Moura
13f9d8dd6c fix(tests/lean): move hott tests 2015-12-10 10:55:27 -08:00
Leonardo de Moura
7b29ee1666 fix(library/tactic/induction_tactic): fixes #892 2015-12-10 10:52:57 -08:00
Leonardo de Moura
8094ca1c70 fix(library/blast/backward): crash when pretty printing backward rule set
We make sure it doesn't depend on the blast state.
2015-12-10 10:38:53 -08:00
Leonardo de Moura
1abaa9eb71 fix(frontends/lean/parser): fixes #858 2015-12-10 10:31:14 -08:00
Leonardo de Moura
8b3cbb8fdd fix(library/tactic/induction_tactic): apply substitution to hypothesis type (it may contain metavars)
closes #876
2015-12-10 10:11:55 -08:00
Leonardo de Moura
a507ac8594 test(tests/lean/interactive/findp): remove test that breaks whenever we revise init/logic.lean
closes #888
2015-12-10 10:11:55 -08:00
Leonardo de Moura
c9ff175cf4 fix(library/tactic/induction_tactic): fixes #893 2015-12-10 10:11:55 -08:00
Floris van Doorn
f495fa04c8 fix(tests): fix tests after port 2015-12-09 12:36:11 -08:00
Leonardo de Moura
50323e5b14 fix(tests/lean/run/simplifier1): option name 2015-12-09 12:30:20 -08:00
Leonardo de Moura
bed03272f5 fix(tests/lean/run/blast_cc1): option name 2015-12-09 12:23:00 -08:00
Leonardo de Moura
3f9549485f feat(frontends/lean/parser): restore config options in the end of sections/namespaces 2015-12-09 11:24:37 -08:00