Commit graph

1880 commits

Author SHA1 Message Date
Leonardo de Moura
77f742ae8e feat(library/relation_manager): add auxiliary functions 2015-05-27 12:07:06 -07:00
Leonardo de Moura
ea43f3ea80 fix(frontends/lean/builtin_cmds): fixes #630 2015-05-26 22:19:42 -07:00
Leonardo de Moura
ed01242bc1 chore(library/tactic/apply_tactic): remove dead code 2015-05-26 12:18:50 -07:00
Leonardo de Moura
7f0951b8e7 feat(library/tactic): improve assumption tactic performance 2015-05-25 20:22:37 -07:00
Leonardo de Moura
d0987eb3ac feat(library/tactic): add 'subtvars' tactic 2015-05-25 16:36:44 -07:00
Leonardo de Moura
a3f23d5233 feat(library/tactic): add improved 'subst' tactic 2015-05-25 15:03:59 -07:00
Leonardo de Moura
f13ca3cd9a feat(library/tactic/contradiction_tactic): handle (h1 : p) and (h2 : not p) hypotheses in the contradiction tactic 2015-05-25 10:29:51 -07:00
Leonardo de Moura
88975927e6 fix(library/tactic/relation_tactics): beta-reduce goal before trying to extract head symbol 2015-05-24 18:56:35 -07:00
Leonardo de Moura
004ea80e65 fix(library/tactic/rewrite_tactic): apply beta reduction when selecting patterns 2015-05-24 18:44:30 -07:00
Leonardo de Moura
b83b0c0017 fix(library/tactic/induction_tactic): fixes #619 2015-05-21 18:22:07 -07:00
Leonardo de Moura
f830bf54c2 refactor(*): clarify name_generator ownership 2015-05-21 14:32:36 -07:00
Leonardo de Moura
a7ead5fc14 fix(library/relation_manager): typo 2015-05-21 14:12:28 -07:00
Leonardo de Moura
e3250f0ffd feat(library/simplifier): add conditional equivalence detection 2015-05-21 13:55:23 -07:00
Leonardo de Moura
907d017cbf feat(library/relation_manager): cache information about binary relations 2015-05-21 13:04:33 -07:00
Leonardo de Moura
c2faa0fe98 refactor(library): rename equivalence_manager to relation_manager 2015-05-21 12:25:02 -07:00
Leonardo de Moura
2b4233ee8e fix(library/tactic/induction_tactic): exception handling 2015-05-21 10:15:49 -07:00
Leonardo de Moura
d6b72ef4d7 feat(library/tactic/induction_tactic): try available recursors until one works
closes #615
2015-05-20 23:23:05 -07:00
Leonardo de Moura
2164ba6f20 fix(library/tactic/induction_tactic): fixes #614 2015-05-20 23:14:11 -07:00
Leonardo de Moura
51d4644832 fix(library/tactic/induction_tactic): fixes #613 2015-05-20 22:26:50 -07:00
Leonardo de Moura
5508e4b132 feat(library/tactic/induction_tactic): type class inference for minor premises
closes #611
2015-05-20 20:48:33 -07:00
Leonardo de Moura
029f374a69 fix(library/tactic/induction_tactic): fixes #610 2015-05-20 20:28:02 -07:00
Leonardo de Moura
2d22bb8ea2 feat(frontends/lean/builtin_cmds): do not unfold proofs in the eval command
In the future, we should probably add an option for unfolding proofs.
2015-05-20 19:14:57 -07:00
Leonardo de Moura
3e87f09d78 feat(library/tactic/induction_tactic): add support for user-defined recursors that contain parameters that should be synthesized by type class resolution 2015-05-19 15:33:46 -07:00
Leonardo de Moura
78ee055de8 feat(library/tactic): add induction tactic with support for user defined recursors
closes #483
closes #492
2015-05-19 13:27:17 -07:00
Leonardo de Moura
5b1491bdbd feat(library/user_recursors): store number of arguments expected by recursor 2015-05-19 12:24:46 -07:00
Leonardo de Moura
1e4285cf41 fix(library/user_recursors): invalid recursor_info for builtin indexed families 2015-05-19 12:19:46 -07:00
Leonardo de Moura
6da2ba331f fix(library/user_recursors): memory access violation 2015-05-19 11:07:31 -07:00
Leonardo de Moura
4f12409c63 fix(library/unifier): assertion violation
This assertion violation was introduced when we added "projection
macros" to speedup the elaboration process.
2015-05-19 10:07:31 -07:00
Leonardo de Moura
937d6ac7b6 fix(frontends/lean/pp): print notation produces incorrect output
fixes #604
2015-05-19 09:57:13 -07:00
Leonardo de Moura
e1c2340db2 fix(frontends/lean): consistent behavior for protected declarations
see https://github.com/leanprover/lean/issues/604#issuecomment-103265608

closes #609
2015-05-18 22:35:18 -07:00
Leonardo de Moura
19361f0196 feat(library/unifier): do not fire type class resolution as last resort when type contains metavariables
see discussion at #604
2015-05-18 15:45:23 -07:00
Leonardo de Moura
c61c049152 feat(library/user_recursors): generalize acceptable use-defined recursors
see issue #492
2015-05-18 14:21:10 -07:00
Leonardo de Moura
62082c72a8 fix(library/user_recursors): remove unnecessary restriction on minor premises of user-defined recursors
see issue #492
2015-05-18 10:09:11 -07:00
Leonardo de Moura
830d0ce1a7 fix(library/user_recursors): make sure homotopy.rec_on is recognized as a valid user-defined recursor
see issue #492
2015-05-18 09:57:50 -07:00
Leonardo de Moura
b1ece388a6 feat(frontends/lean,library/tactic/induction_tactic): improve induction tactic notation, expand induction tactic implementation 2015-05-18 09:25:07 -07:00
Leonardo de Moura
4256984803 fix(library/tactic/inversion_tactic): incorrect check 2015-05-18 09:16:07 -07:00
Leonardo de Moura
d41bff8c43 feat(library): add helper function 2015-05-18 09:16:07 -07:00
Leonardo de Moura
84faef5d5d feat(library/tactic/rewrite_tactic): rewrite tactic with 'iff' lemmas 2015-05-14 18:27:13 -07:00
Leonardo de Moura
1dedd2829c fix(library/match): bug in higher-order matcher 2015-05-14 18:27:10 -07:00
Sebastian Ullrich
77c20e99ff feat(library/tactic/inversion_tactic): consistent orientation of generated equalities
Generated equalities in proof irrelevant environments were inverted
compared with the documentation and the proof relevant case, which
resulted in newly generated local vars replacing equivalent old ones
instead of the other way around.
2015-05-14 23:32:54 +02:00
Leonardo de Moura
163577c23a fix(library/normalize): fixes #599 2015-05-13 18:36:16 -07:00
Leonardo de Moura
d0582b2537 fix(library/user_recursors): warning 2015-05-13 10:04:38 -07:00
Leonardo de Moura
dd5b221d32 fix(library/user_recursors): warning message 2015-05-13 09:42:32 -07:00
Leonardo de Moura
065a1f7501 feat(library/tactic): add 'induction' tactic skeleton 2015-05-12 20:21:25 -07:00
Leonardo de Moura
99084dce1c chore(library/user_recursors): fix style 2015-05-12 15:48:24 -07:00
Leonardo de Moura
f403ea984b feat(frontends/lean): add 'print [recursor]' command for debugging purposes 2015-05-12 15:48:24 -07:00
Leonardo de Moura
750f6d5a43 feat(library,frontends/lean): validate user defined recursors and add attribute to mark them
see issue #492

The user-defined recursors will also be used to implement the blast tactic
2015-05-12 15:48:01 -07:00
Leonardo de Moura
fa70930ef4 feat(library/blast): add union-find datastructure 2015-05-11 16:19:51 -07:00
Leonardo de Moura
9649d540c0 fix(library/tactic/rewrite_tactic.cpp): memory leak 2015-05-11 16:19:17 -07:00
Leonardo de Moura
c5fb3ec6d0 fix(library/definitional/equations): fixes #541
This commit allows recursive applications to have less or more arguments
than the equation left-hand-side.
We add two tests
   - 541a.lean  recursive call with more arguments
   - 542b.lean  recursive call with less arguments
2015-05-10 20:37:44 -07:00
Leonardo de Moura
207e8e86da fix(library/definitional/equations): do not clear eliminated hypotheses when invoking 'cases' tactic from definitional package 2015-05-10 11:08:02 -07:00
Leonardo de Moura
bd28396be0 feat(kernel): transparent theorems
closes #576
2015-05-09 11:42:29 -07:00
Leonardo de Moura
f8e2f68ce0 feat(frontends/lean): add 'wait' command
This commit also fixes several problems with -j option (parallel
compilation). The .olean files were not missing data when -j was used

see issue #576
2015-05-08 20:05:21 -07:00
Leonardo de Moura
cf7e60e5a6 refactor(kernel): remove "opaque" field from kernel declarations
see issue #576
2015-05-08 16:06:16 -07:00
Leonardo de Moura
6c958a25e7 refactor(library/tactic/expr_to_tactic): make sure builtin tactics don't need to be marked opaque
This modification is needed since we will remove opaque definitions from
the kernel.

see issue #576
2015-05-08 16:06:16 -07:00
Leonardo de Moura
57ea660963 refactor(*): start process for eliminating of opaque definitions from the kernel
see issue #576
2015-05-08 16:06:04 -07:00
Leonardo de Moura
061e26157e fix(kernel,library): make sure macros check relevant arguments when kernel is performing full type checking 2015-05-08 12:41:23 -07:00
Leonardo de Moura
72663e8a06 feat(library/tactic/rewrite_tactic): take hypotheses into account when checking rewrite step 2015-05-08 11:34:50 -07:00
Leonardo de Moura
12bad8794b feat(frontends/lean/pp): use 'assert' instead of 'have ... [visible]' 2015-05-08 10:02:15 -07:00
Leonardo de Moura
0b57f7d00a refactor(library/tactic): refine interface between tactic and proof-term modes
Some constraints were being lost with the previous interface.
This is why we had a workaround in fintype.lean.

We can also remove some hacks we have used in the past.
2015-05-07 18:02:51 -07:00
Leonardo de Moura
12b818b7d3 fix(library/util): "empty" is not universe polymorphic anymore 2015-05-07 16:43:58 -07:00
Leonardo de Moura
eb3a236119 fix(library/unifier): typo
fixes #588
2015-05-07 16:30:02 -07:00
Leonardo de Moura
88cd6e9a63 chore(library/unifier): remove dead code 2015-05-07 15:49:33 -07:00
Leonardo de Moura
aff9257c72 feat(frontends/lean): allow → to be used in calc proofs
see issue #586
2015-05-07 12:28:47 -07:00
Leonardo de Moura
b03266be70 feat(library/normalize,frontends/lean): rename '[unfold-m]' hint to '[constructor]', and allow it to be attached to constants
closes #587
2015-05-07 12:00:34 -07:00
Leonardo de Moura
ac24f19210 fix(library/tactic/rewrite_tactic): use relaxed type checker when processing rewrite "proof step"
That is, the restricted type checker should only be used in the
matching/unification step.

fixes #583
2015-05-07 09:57:23 -07:00
Leonardo de Moura
e0b7017435 feat(frontends/lean): make sure the proof state bit "report errors" is
set in the beginning of each begin-end element

see discussion at #583
2015-05-07 09:43:39 -07:00
Leonardo de Moura
e841852be4 feat(library/max_sharing): maximize sharing in universe level expressions 2015-05-06 14:26:12 -07:00
Leonardo de Moura
210cae7d6c fix(library/tactic): we must unfold untrusted macros when type checking intermediate results
Example: before this commit, the file librata/data/list/perm.lean would
not type check if the option -t 0 (trust level zero) was provided.
Reason: the intermediate term contained a macro, and macros are not
allowed at trust level zero.
2015-05-06 14:23:58 -07:00
Leonardo de Moura
b5619c2109 fix(library/export): remove workaround from 'export' procedure
The workaround was needed due to a bug in the max_sharing procedure
2015-05-06 14:00:57 -07:00
Leonardo de Moura
2ca16a099b fix(library/max_sharing): conflict with the kernel approximate caching 2015-05-06 13:57:36 -07:00
Leonardo de Moura
84deddcca9 feat(library/tactic/rewrite_tactic): apply 'reflexivity' tactic after 'rewrite' instead of hard coded solution 2015-05-05 20:23:49 -07:00
Leonardo de Moura
c7a20644c0 fix(library/tactic/rewrite_tactic): bug in rewrite tactic (HoTT mode)
closes #580
2015-05-05 19:25:15 -07:00
Leonardo de Moura
a4efefb6ff feat(library/tactic/rewrite_tactic): display type error message when
rewrite tactic fails
2015-05-05 19:23:41 -07:00
Leonardo de Moura
616f49c2e4 feat(frontends/lean): improved 'obtains' expression 2015-05-05 18:30:16 -07:00
Leonardo de Moura
c0c0490db3 feat(library/export): simplify format 2015-05-04 18:22:12 -07:00
Leonardo de Moura
701b0ae66f feat(library): export environment in textual format
closes #577
2015-05-04 18:05:00 -07:00
Leonardo de Moura
6571c47353 feat(library/normalize): add '[unfold-m]' hint
See issue #496
2015-05-04 14:23:04 -07:00
Leonardo de Moura
3c8c75470f fix(library/tactic/exact_tactic): do not report unassigned metavariables in the 'refine' tactic 2015-05-03 21:08:09 -07:00
Leonardo de Moura
326048df54 feat(library/tactic/inversion_tactic): clear variables that have been eliminated by cases tactic
see discussion at:
https://groups.google.com/forum/#!topic/lean-discuss/oyzgIqdMyNc
2015-05-02 19:33:59 -07:00
Leonardo de Moura
e1dc18f6b6 fix(library/tactic/inversion_tactic): check whether eliminator can only eliminate to Prop
fixes #571
2015-05-02 17:48:08 -07:00
Leonardo de Moura
e379034b95 feat(library/tactic): improve 'assumption' tactic
- It uses the unifier in "conservative" mode
- It only affects the current goal

closes #570
2015-05-02 17:33:54 -07:00
Leonardo de Moura
b39fe17dee feat(library/tactic): add 'transitiviy', 'reflexivity' and 'symmetry' tactics
closes #500
2015-05-02 15:48:25 -07:00
Leonardo de Moura
cd17618f4a refactor(library): replace 'calc_trans', 'calc_symm', 'calc_refl' and 'calc_subst' commands with attributes '[symm]', '[refl]', '[trans]' and '[subst]'
These attributes are used by the calc command.
They will also be used by tactics such as 'reflexivity', 'symmetry' and
'transitivity'.

See issue #500
2015-05-02 15:15:35 -07:00
Leonardo de Moura
415ca2b93f feat(library/tactic): add 'congruence' tactic
It is the f_equal described at issue #500.
2015-05-02 12:58:46 -07:00
Leonardo de Moura
2054d67483 chore(library/tactic/rewrite_tactic): fix style 2015-05-01 19:49:48 -07:00
Leonardo de Moura
9dc0388022 fix(library/tactic/rewrite_tactic): bug when rewriting hypotheses 2015-05-01 19:45:23 -07:00
Leonardo de Moura
ac8ba6a3cf feat(library/tactic): add 'subst' tactic
see issue #500
2015-05-01 19:31:24 -07:00
Leonardo de Moura
b0759f3986 fix(library/tactic/rewrite_tactic): bug when rewriting multiple hypotheses 2015-05-01 19:03:43 -07:00
Leonardo de Moura
de369a0a0a feat(library/tactic/injection_tactic): improve 'injection' tactic
see issue #500
2015-05-01 15:49:56 -07:00
Leonardo de Moura
9ba8b284a1 fix(library/tactic/apply_tactic): add eapply, and fix issue #361 2015-05-01 15:08:00 -07:00
Leonardo de Moura
63eb155c7e feat(library/tactic): add 'injection' tactic
see issue #500
2015-05-01 12:45:21 -07:00
Leonardo de Moura
7e9f574ef3 fix(library/tactic/apply_tactic): use internally 'apply' instead of 'fapply' as the default "apply" tactic
This changes improves the 'constructor' tactic
2015-04-30 21:58:35 -07:00
Leonardo de Moura
2d9c950144 feat(library/tactic/constructor_tactic): allow 'constructor' tactic without index
see issue #500
2015-04-30 21:15:07 -07:00
Leonardo de Moura
15e52b06df fix(library/tactic/constructor_tactic): bug in constructor tactic
see example (constr_tac2.lean) in comment at issue #500
2015-04-30 20:18:24 -07:00
Leonardo de Moura
d18f9c7607 fix(library/tactic/constructor_tactic): use 1 (instead of 0) to reference the first constructor
see comment at issue #500
2015-04-30 20:08:00 -07:00
Leonardo de Moura
0b995c4fe3 fix(library/tactic/rewrite_tactic): relax reducibility constraints in some parts of the rewrite tactic
fixes #567
2015-04-30 18:22:58 -07:00
Leonardo de Moura
d152f38518 feat(library/tactic): add 'constructor', 'split', 'left', 'right' and 'existsi' tactics
see issue #500
2015-04-30 17:52:29 -07:00
Leonardo de Moura
1c6067bac2 feat(library/tactic): add 'exfalso' tactic
see issue #500
2015-04-30 15:43:07 -07:00
Leonardo de Moura
d546b019fb fix(library/tactic/rewrite_tactic): assertion violation when checking
dependencies at rewrite tactic
2015-04-30 15:41:57 -07:00
Leonardo de Moura
936e024128 fix(library/tactic/rewrite_tactic): bug in rewrite hypothesis in HoTT mode 2015-04-30 15:30:25 -07:00
Leonardo de Moura
9c8a63caec feat(library/tactic): add 'contradiction' tactic
see issue #500

Remark: this tactic also applies no_confusion to take care of a contradiction
2015-04-30 13:47:40 -07:00
Leonardo de Moura
3233008039 feat(library/tactic): allow user to name generalized term in the 'generalize' tactic
closes #421
2015-04-30 11:57:40 -07:00
Leonardo de Moura
3912bc24c8 feat(frontends/lean): nicer syntax for 'intros' 'reverts' and 'clears' 2015-04-30 11:00:39 -07:00
Leonardo de Moura
dce7177382 feat(library/tactic/change_tactic): improve 'change' tactic
- Better error messages
- Try to solve unification constraints produced during is_def_eq test

addresses comment on issue #531
2015-04-29 13:31:09 -07:00
Leonardo de Moura
d055947243 feat(library/tactic/rewrite_tactic): ignore implicit argument when matching at rewrite tactic 2015-04-29 12:51:33 -07:00
Leonardo de Moura
182a8a542e feat(library/tactic/rewrite_tactic): store exception "what" message in rewrite trace 2015-04-29 12:46:41 -07:00
Leonardo de Moura
b790ca9806 fix(library/tactic/rewrite_tactic): type check rewriting steps
closes #550
2015-04-29 12:16:37 -07:00
Leonardo de Moura
91abba3c3d refactor(kernel): rename method 2015-04-29 11:46:27 -07:00
Leonardo de Moura
d2c7b5c319 feat(library/tactic): add 'let' tactic
closes #555
2015-04-28 17:24:43 -07:00
Leonardo de Moura
ca8943f45b feat(library,hott): remove rapply tactic 2015-04-27 15:06:16 -07:00
Leonardo de Moura
9d01868361 feat(frontends/lean): use rewrite tactic to implement unfold (it has a unfold step)
closes #502
2015-04-24 17:23:12 -07:00
Leonardo de Moura
28404fe16d fix(library/tactic/rewrite_tactic): second problem reported at issue #548
closes #548
2015-04-24 16:49:32 -07:00
Leonardo de Moura
4148d6b8cc fix(library/tactic/rewrite_tactic): first two problems at issue #548 2015-04-24 16:07:00 -07:00
Leonardo de Moura
8241863abe feat(kernel/hits): add two builtin HITs: type_quotient and trunc 2015-04-23 15:32:31 -07:00
Leonardo de Moura
2613e7c444 fix(frontends/lean): bug when handling identifiers in tactics
This bug was reported by Jeremy in the Lean Google group:
https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/lean-discuss/ZKJ8WPPEVJA/n05x6rPRzvMJ
2015-04-22 16:03:22 -07:00
Leonardo de Moura
91f21c007a feat(frontends/lean): remove 'context' command 2015-04-22 11:32:02 -07:00
Leonardo de Moura
bf8a7eb9b4 fix(library/scoped_ext): bug in local metadata in sections
The problem is described in issue #554
2015-04-21 18:56:28 -07:00
Leonardo de Moura
697a536d9e fix(library/tactic/inversion_tactic): type incorrect term being built by 'cases' tactic
fixes #545
2015-04-20 19:24:52 -07:00
Leonardo de Moura
eb23a30626 feat(library/unifier): additional memory checks 2015-04-20 17:41:08 -07:00
Leonardo de Moura
28dad944c5 fix(library/unifier): cyclic assignment (?M <- ?M)
This was producing nonterminating behavior on example described at issue #489
2015-04-20 17:35:37 -07:00
Leonardo de Moura
431eade894 fix(library/tactic/inversion_tactic): incorrect use of optimization 2015-04-20 16:21:44 -07:00
Leonardo de Moura
6f6d106a10 feat(library/tactic): add "check_expr" tactic
closes #486
2015-04-19 19:00:05 -07:00
Leonardo de Moura
b7ca2a0ec9 fix(library/tactic/exact_tactic): exact and or_else
fixes #543
2015-04-19 17:23:09 -07:00
Leonardo de Moura
5d95cb0979 feat(library/tactic): add 'refine' tactic
closes #482
2015-04-06 18:36:56 -07:00
Leonardo de Moura
412f03b08b feat(library/tactic/exact_tactic): generate error if 'exact' tactic produces a term containing metavariables 2015-04-06 13:38:53 -07:00
Leonardo de Moura
2bc13f6bfd feat(library/tactic/exact): enforce goal type during elaboration when executing 'exact' tactic
Remark: this was the behavior of the 'sexact' tactic.

This commit also adds the 'rexact' (relaxed exact) tactic which does not
enforce the goal type.

closes #495
2015-04-06 13:23:38 -07:00
Leonardo de Moura
969d17fd12 fix(frontends/lean/elaborator): class inference in tactic mode with trunc
closes #477
2015-04-05 17:47:14 -07:00
Leonardo de Moura
d731a4ab13 feat(library/normalize): add '[unfold-f]' hint
closes #497
2015-04-05 03:00:13 -07:00
Leonardo de Moura
4ec0e1b07c feat(frontends/lean): improve calc mode
Now, it automatically supports transitivity of the form
    (R a b) -> (b = c) -> R a c
    (a = b) -> (R b c) -> R a c

closes #507
2015-04-04 08:58:35 -07:00
Leonardo de Moura
b960e123b1 feat(kernel): add experimental support for quotient types 2015-03-31 22:04:16 -07:00
Leonardo de Moura
26c914173c feat(frontends/lean): add --profile option 2015-03-31 11:53:55 -07:00
Leonardo de Moura
ea3407d06d fix(library/tactic): valgrind warnings for still reachable memory 2015-03-28 12:32:57 -07:00
Leonardo de Moura
1b15036dba feat(library/definitional): automatically add attribute [unfold-c] to cases_on, brec_on and rec_on
see #496
2015-03-27 19:12:17 -07:00
Leonardo de Moura
b9e3c474c9 feat(library/tactic): add all_goals tactic
closes #501
2015-03-25 17:42:34 -07:00
Leonardo de Moura
49bc56ec07 feat(frontends/lean/pp): improve pretty printer for prefix and postfix notation
closes #491
2015-03-25 16:45:58 -07:00
Leonardo de Moura
38a63a8a58 fix(library/tactic/exact_tactic): segfault when accessing head of empty list
closes #485
2015-03-23 19:00:01 -07:00
Leonardo de Moura
ac30052a29 fix(library/tactic/rewrite_tactic): apply substitution before trying to rewrite
closes #487
2015-03-23 18:32:52 -07:00
Leonardo de Moura
5bf46d1226 fix(library/tactic/inversion_tactic): improve 'cases' tactic for HoTT mode
closes #481
2015-03-23 18:06:11 -07:00
Leonardo de Moura
98cc325695 refactor(library/tactic/inversion_tactic): cleanup 2015-03-23 17:15:47 -07:00
Leonardo de Moura
0814e76298 fix(library/tactic/clear_tactic): unexpected failure
This commit also improves the error message produced by the 'clear' tactic.

fixes #488
2015-03-23 12:08:15 -07:00
Leonardo de Moura
f6f2c499ae fix(library/tactic/rewrite_tactic): rewrite macros did not implement operator==
This problem was affecting the cache
2015-03-13 19:24:09 -07:00
Leonardo de Moura
cfeb426cd7 fix(frontends/lean): pretty print numeral notation from algebra 2015-03-13 18:58:34 -07:00
Leonardo de Moura
aba158dbd4 feat(library/tactic/inversion_tactic): improve error message for unknown hypothesis 2015-03-13 15:19:19 -07:00
Leonardo de Moura
cda19f5aa6 feat(library/tactic/rewrite_tactic): improve rewrite tactic error messages
closes #471
2015-03-12 20:49:53 -07:00
Leonardo de Moura
7accd0f1e6 feat(library/tactic/rewrite_tactic): allow rewrite with terms that contains binders
see discussion at #470
2015-03-12 18:07:55 -07:00
Leonardo de Moura
9fe2d5c74c refactor(library/unifier): use new assign method in the unifier 2015-03-12 15:01:40 -07:00
Leonardo de Moura
4ea323a2b2 refactor(library/tactic): cleanup common pattern 2015-03-12 14:52:41 -07:00
Leonardo de Moura
8f004671a2 fix(library/unifier): typo 2015-03-12 13:15:23 -07:00
Leonardo de Moura
3e4d849a4a refactor(kernel/metavar.h): simplify API 2015-03-12 12:50:53 -07:00
Leonardo de Moura
6a78ae7b46 fix(library/tactic/class_instance_synth): enforce consistent behavior in type class resolution
Auxiliary procedure mk_class_instance was not discarding partial solutions.
This procedure is used by the apply and inversion (aka cases) tactics
2015-03-12 10:27:05 -07:00
Leonardo de Moura
b38c943086 fix(library/tactic/class_instance_synth): discard partial solutions even when option class.unique_instances = true is used 2015-03-12 10:13:16 -07:00
Leonardo de Moura
47a350d888 fix(library/tactic/inversion_tactic): missing condition for applying optimization 2015-03-12 09:11:36 -07:00
Leonardo de Moura
7de3d5771d feat(library/tactic/rewrite_tactic): add eta-reduction support at esimp
closes #469
2015-03-12 00:32:31 -07:00
Leonardo de Moura
a9fa0fead9 feat(library/match): match modulo eta 2015-03-12 00:30:44 -07:00
Leonardo de Moura
a7af8e7c71 feat(library/tactic/inversion_tactic): remove dummy hypotheses of the form (H : a = a)
closes #468
2015-03-11 20:50:06 -07:00
Leonardo de Moura
b5fb7c734e feat(library/tactic/inversion_tactic): remove hypothesis being destructed
addresses second issue in #468
2015-03-11 20:42:50 -07:00
Leonardo de Moura
0a5340aa22 feat(library/tactic/goal): add auxiliary method 2015-03-11 20:39:41 -07:00
Leonardo de Moura
ebdda67812 fix(library/tactic/inversion_tactic.cpp): remove unnecessary hypothesis in HoTT mode
partial solution for #468
2015-03-11 19:30:34 -07:00
Leonardo de Moura
737faecc65 feat(library/tactic/inversion_tactic): fail if is_hset type class synthesis produced term containing meta-variables, improve error messages
fixes #467
2015-03-11 15:54:50 -07:00
Leonardo de Moura
4c6b0dc0e5 fix(library/tactic/expr_to_tactic): tactic_expr_to_id did not take as_atomic annotation into account
fixes #466
2015-03-11 08:49:59 -07:00
Leonardo de Moura
1244f01518 chore(library/unifier): remove dead code 2015-03-09 14:07:14 -07:00
Leonardo de Moura
9a6c675908 feat(library/unifier): add option to disable nonchronological backtracking 2015-03-09 12:08:58 -07:00
Leonardo de Moura
1490bdad49 feat(frontends/lean): add version of 'exact' tactic (sexact) that enforces goal type during term elaboration 2015-03-06 17:34:45 -08:00
Leonardo de Moura
4edd7b9099 fix(library/definitional/equations): allow a function to be the result of a match-with term or recursive definition 2015-03-06 15:08:52 -08:00
Leonardo de Moura
368f9d347e refactor(frontends/lean): approach used to parse tactics
The previous approach was too fragile

TODO: we should add separate parsing tables for tactics
2015-03-05 18:11:21 -08:00
Leonardo de Moura
039afb4578 feat(frontends/lean): treat "proof t qed" as alias for "by exact t" 2015-03-05 11:12:39 -08:00
Leonardo de Moura
bd0f209659 feat(library/tactic/exact_tactic): do not force 'exact' tactic expression to be fully elaborated (i.e., metavariable free) 2015-03-05 11:12:39 -08:00
Leonardo de Moura
8295ef4e57 fix(library/tactic/class_instance_synth): constraint execution order at type class resolution
We could not fix this problem before because we did not have the
[quasireducible] annotation.

Without this annotation, the fixed TC would loop in some HoTT files.
2015-03-04 22:20:20 -08:00
Leonardo de Moura
abd238aef0 feat(*): add [quasireducible] attribute 2015-03-04 22:12:49 -08:00
Leonardo de Moura
51504a1872 feat(library/tactic/class_instance_synth): restrict higher-order unification even more during type class resolution 2015-03-03 20:26:49 -08:00
Leonardo de Moura
7db6ed7c14 refactor(library/unifier): move m_pattern configuration option to unifier_config 2015-03-03 20:24:18 -08:00
Leonardo de Moura
341a9a2010 refactor(library/unifier): remove dead code 2015-03-03 20:14:17 -08:00
Leonardo de Moura
fa79b214b8 fix(frontends/lean): allow 'attribute <id> [priority ...]' 2015-03-03 16:17:32 -08:00
Leonardo de Moura
11aad4449b feat(frontends/lean): add '[semireducible]' attribute
This commit also renames the elements of reducible_status.
The idea is to use in the C++ implementation the same names used in the
Lean front-end.
2015-03-03 10:48:36 -08:00
Leonardo de Moura
7e2f0f9a36 fix(library/unifier): in the context_check, we should not consider local constants that occur in the type of other constants
This was a performance bug.
We were missing higher-order pattern constraints due to this bug.
2015-03-02 17:28:56 -08:00
Leonardo de Moura
fdb169b8f3 feat(library/tactic): improve error localization when compiling tactics 2015-03-02 12:21:02 -08:00
Leonardo de Moura
ededf4fc6c feat(frontends/lean): remove unnecessary instantiate_all's that were messing with error localization 2015-03-01 14:51:44 -08:00
Leonardo de Moura
ca57b43698 feat(library/tactic): add 'change' tactic 2015-03-01 14:15:39 -08:00
Leonardo de Moura
e07c6675b3 feat(library/tactic/elaborate): better error message for tactics using elaborate_with_respect_to 2015-03-01 13:42:53 -08:00
Leonardo de Moura
cf56935b01 feat(frontends/lean): improve support for user defined tactics 2015-02-27 16:58:25 -08:00
Leonardo de Moura
7d827a14c9 feat(library/module): expand 'failed to import' error message
see issue #448
2015-02-27 08:00:30 -08:00
Leonardo de Moura
5b736a2268 feat(frontends/lean): add support for empty match-with expressions 2015-02-26 16:36:15 -08:00
Leonardo de Moura
72eed42ac8 feat(library/unifier): ignore irrelevant branches when solving flex-rigid constraints 2015-02-26 13:43:54 -08:00
Leonardo de Moura
96b54a8007 feat(frontends/lean/builtin_exprs): add 'have' notation in 'begin-end' blocks
It is notation for the assert tactic.
2015-02-25 14:04:17 -08:00
Leonardo de Moura
425aba9aa9 feat(library/pp_options): reduce default limits in the pretty printer
The goal is to avoid problems like the one described in issue #428
2015-02-25 14:04:17 -08:00
Leonardo de Moura
42289d4334 feat(library/tactic/class_instance_synth): create class instance synthesis subproblems only for arguments marked with the [] binder annotation 2015-02-24 16:12:39 -08:00
Leonardo de Moura
1cd44e894b feat(library/tactic/class_instance_synth): conservative class-instance resolution: expand only definitions marked as reducible
closes #442
2015-02-24 16:12:35 -08:00
Leonardo de Moura
4364b7f926 feat(frontends/lean): pp.beta is true by default
Remark: there is one exception (command: print definition). For this
command pp.beta is still false.
2015-02-24 12:27:53 -08:00
Leonardo de Moura
dc2ac92846 fix(library/definitional/equations): use whnf on recursive definition arguments
The idea is to expose "hidden" datatypes.
2015-02-23 22:27:30 -08:00
Leonardo de Moura
787fed95aa fix(library/tactic/inversion_tactic): bug in simpler case (hypotheses were being lost) 2015-02-23 16:10:49 -08:00
Leonardo de Moura
7d35d18cad fix(library/tactic/rewrite_tactic): bug when matching terms that expanded into projections 2015-02-22 18:23:10 -08:00
Leonardo de Moura
af787d9b7f fix(library/constants): regenerate constants.cpp and fix affected files 2015-02-22 09:22:51 -08:00
Floris van Doorn
61901cff81 feat(hott): rename definition and cleanup in HoTT library
also add more definitions in types.pi, types.path, algebra.precategory

the (pre)category library still needs cleanup
authors of this commit: @avigad, @javra, @fpvandoorn
2015-02-20 21:40:42 -05:00
Leonardo de Moura
7fc216183e feat(library/tactic): produce better error message when a tactic fails
closes #348
2015-02-16 18:42:15 -08:00
Leonardo de Moura
3a67ddb7c5 feat(library/locals): use optional<expr> instead of bool at depends_on (for arrays) 2015-02-16 18:42:05 -08:00
Leonardo de Moura
5cbdd77ad0 feat(library/tactic/rewrite_tactic): improve matcher in rewrite_tactic
closes #433
2015-02-13 12:40:55 -08:00
Leonardo de Moura
98960cbeda fix(library/tactic/rewrite_tactic): bug in HoTT mode 2015-02-13 10:09:18 -08:00
Leonardo de Moura
eceed03044 feat(frontends/lean): add "except" notation for "open" command, allow multiple metaclasses to be opened in a single "open" command 2015-02-11 11:02:59 -08:00
Leonardo de Moura
1832fb6f54 feat(*): uniform metaclass names, metaclass validation at 'open' command 2015-02-11 10:35:04 -08:00
Leonardo de Moura
2cbaf1bbe3 feat(library/scoped_ext): add get_metaclasses API 2015-02-11 10:12:28 -08:00
Leonardo de Moura
9398b887cc fix(library/abbreviation): missing condition 2015-02-10 18:34:45 -08:00
Leonardo de Moura
bd304e1911 chore(*): style 2015-02-10 18:31:17 -08:00
Leonardo de Moura
43f849bf95 feat(frontends/lean/pp): add support for abbreviations in the pretty printer
closes #365
2015-02-10 18:27:02 -08:00
Leonardo de Moura
13748b9347 feat(library/abbreviation): simplify expand_abbreviations 2015-02-10 18:26:39 -08:00
Leonardo de Moura
f47e1bed01 feat(library/abbreviation): store inverse map ignoring universe level parameters 2015-02-10 18:21:32 -08:00
Leonardo de Moura
0d96b6b4cb feat(library/expr_lt): add expression comparison operator that ignores treat level parameters as wildcards 2015-02-10 18:20:10 -08:00
Leonardo de Moura
64ac3fa4ee feat(library): add 'abbreviation' management module 2015-02-10 17:25:11 -08:00
Leonardo de Moura
058377c8c6 feat(library/tactic/rewrite_tactic): treat iff.refl as trivial step in the rewrite tactic 2015-02-08 17:27:59 -08:00
Leonardo de Moura
fcd67649ed refactor(kernel): expose may_reduce_later method 2015-02-07 20:36:26 -08:00
Leonardo de Moura
b57f93bad5 refactor(kernel): remove unnecessary procedures 2015-02-07 20:14:19 -08:00
Leonardo de Moura
f018fdabb9 refactor(library/kernel_bindings): remove unnecessary procedure 2015-02-07 18:57:46 -08:00
Leonardo de Moura
1640568f6a refactor(library/reducible): use default_converter in reducible, and converters based on reducible hints 2015-02-07 17:31:53 -08:00
Leonardo de Moura
b4f1029318 refactor(library/reducible): define opaque_type_checker using default_converter 2015-02-07 17:05:29 -08:00
Leonardo de Moura
e04250f0d8 refactor(library/tactic/rewrite_tactic): use default_converter 2015-02-07 16:44:51 -08:00
Leonardo de Moura
c04c0e8381 refactor(*): remove transparent_scope hack, replace [strict] with [all-transparent] annotation 2015-02-07 15:19:41 -08:00
Leonardo de Moura
7945b8adab refactor(kernel/type_checker): remove useless procedures 2015-02-07 14:55:36 -08:00
Leonardo de Moura
c2a296b1de feat(library/tactic/apply_tactic): add flag for disabling class instance resolution in the apply tactic 2015-02-06 17:27:24 -08:00
Leonardo de Moura
1557a579ed feat(library/tactic/proof_state): add report_failure flag to proof state
tactic can use the flag to produce nice error messages
2015-02-06 16:29:04 -08:00
Leonardo de Moura
2126b8ec9a feat(library/tactic/apply_tactic): perform class-instance resolution in the apply tactic
closes #360
2015-02-06 16:14:03 -08:00
Leonardo de Moura
18808d133e refactor(library/tactic/goal): move goal => local_context conversion to goal class 2015-02-06 16:09:59 -08:00
Leonardo de Moura
f10424d729 fix(library/tactic/rewrite_tactic): memory leak 2015-02-06 15:24:09 -08:00
Leonardo de Moura
aa70334f8d feat(library/tactic/rewrite_tactic): add "fold" step 2015-02-06 15:21:49 -08:00
Leonardo de Moura
47bd5e53e2 fix(library/tactic/rewrite_tactic): memory leak 2015-02-06 14:24:10 -08:00
Leonardo de Moura
7aac9f1fdb feat(library/tactic/rewrite_tactic): use expensive convertability checker at reduce_to steps and trivial goal 2015-02-06 13:53:03 -08:00
Leonardo de Moura
5b2a9dacc2 fix(library/tactic/rewrite_tactic): matcher should unfold only reducible constants 2015-02-06 13:44:04 -08:00
Leonardo de Moura
b4139627e5 feat(library/tactic/rewrite_tactic): add option to prevent any kind of constant unfolding when perfoming pattern matching in the rewrite tactic 2015-02-06 13:27:33 -08:00
Leonardo de Moura
62daf73dd0 chore(library/normalize): fix style 2015-02-06 13:27:10 -08:00
Leonardo de Moura
ba9557bb94 fix(library/tactic/rewrite_tactic): incorrect assertion 2015-02-06 13:02:50 -08:00
Leonardo de Moura
ba641d7c58 feat(library/normalize): validate unfold-c hints 2015-02-06 12:42:53 -08:00
Leonardo de Moura
7205382f8c feat(library/definitional/projection): add "unfold-c" hint to projections 2015-02-06 12:39:57 -08:00
Leonardo de Moura
1bd1f94542 feat(library/normalize): add "unfold-c" hint to normalizer
This hint will also be used in the simplifier
2015-02-06 12:39:49 -08:00
Leonardo de Moura
39446a7215 refactor(library/projection): move is_constructor_app to util 2015-02-06 12:12:25 -08:00
Leonardo de Moura
2e626b29fb feat(library/tactic/rewrite_tactic): allow many constants to be provided in a single rewrite unfold step 2015-02-06 11:03:36 -08:00
Leonardo de Moura
264cedb3a6 fix(frontends/lean/rewrite_tactic): incorrect assertion 2015-02-05 20:02:49 -08:00
Leonardo de Moura
e17ba27596 fix(library/tactic/rewrite_tactic): adjust the behavior of class resolution in rewriter
The solution is not very satisfactory. I should investigate it more.
2015-02-05 19:08:47 -08:00
Leonardo de Moura
ffe0d1186e feat(library/tactic/rewrite_tactic): add "reduce_to" step at rewrite tactic 2015-02-05 13:59:55 -08:00
Leonardo de Moura
116c65bff5 feat(library/tactic/rewrite_tactic): add reduction step to rewrite tactic 2015-02-05 13:42:50 -08:00
Leonardo de Moura
7cdc88701d feat(library/tactic/rewrite_tactic): add "reduction" step to rewrite tactic 2015-02-05 13:16:05 -08:00
Leonardo de Moura
808521223b feat(library/tactic/rewrite_tactic): support constant unfolding in rewrite tactic 2015-02-05 12:58:30 -08:00
Leonardo de Moura
d6958be7e7 fix(library/tactic/location): replace cache must not be used when only a subset of all occurrences should be replaced at replace_occurrences 2015-02-05 10:50:40 -08:00
Leonardo de Moura
941b493835 chore(library/tactic/rewrite_tactic): modify param name 2015-02-05 10:04:03 -08:00
Leonardo de Moura
0abfa30ead fix(library/tactic/rewrite_tactic): elaboration bug in the rewrite tactic steps/elements 2015-02-05 10:01:18 -08:00
Leonardo de Moura
14c72e82f6 feat(library/tactic/rewrite_tactic): add support for rewriting hypotheses 2015-02-04 20:04:19 -08:00
Leonardo de Moura
55fb678db2 fix(library/tactic/location): clang++ 3.3 compilation problem 2015-02-04 18:48:23 -08:00
Leonardo de Moura
42c2f7eb11 fix(library/tactic/rewrite_tactic): memory leak 2015-02-04 18:40:11 -08:00
Leonardo de Moura
89fde9d829 feat(library/tactic/rewrite_tactic): add maximum number of iterations threshold to rewrite tactic
The idea is to avoid nontermination.
2015-02-04 16:13:15 -08:00
Leonardo de Moura
dc297865d4 chore(library/tactic/rewrite_tactic): fix compilation warnings 2015-02-04 15:34:02 -08:00
Leonardo de Moura
ee079d12f4 feat(library/tactic/rewrite_tactic): remove trivial goal in rewrite_tactic 2015-02-04 15:29:52 -08:00
Leonardo de Moura
f0fac1ae0e feat(library/constants): add eq.intro 2015-02-04 15:27:18 -08:00
Leonardo de Moura
e5381679d6 feat(library/tactic/rewrite_tactic): rewrite goal 2015-02-04 15:17:58 -08:00
Leonardo de Moura
09818adf90 feat(library/tactic/rewrite_tactic): elaborate rewrite rule using unifier 2015-02-04 13:51:32 -08:00
Leonardo de Moura
49323ab598 feat(library/util): add mk_symm 2015-02-04 13:44:55 -08:00
Leonardo de Moura
ccae014ef9 feat(library/tactic/rewrite_tactic): ignore inst_implicit arguments when matching applications of declarations which contain them 2015-02-04 12:14:47 -08:00
Leonardo de Moura
0e05c239a5 feat(library/tactic/rewrite_tactic): add custom matcher pluging for rewriter 2015-02-04 11:51:39 -08:00
Leonardo de Moura
d6a7ec4621 chore(library/tactic/rewrite_tactic): fix style 2015-02-04 11:51:39 -08:00
Leonardo de Moura
b4dd2cc729 refactor(library/tactic/rewrite_tactic): more general rewrite step
The rule can be an arbitrary expression.
Allow user to provide a pattern that restricts the application of the rule.
2015-02-04 11:51:39 -08:00
Leonardo de Moura
461fd45efc feat(frontends/lean): allow a different location for each rewrite element 2015-02-04 11:51:39 -08:00
Leonardo de Moura
c845e44777 feat(frontends/lean): parse rewrite tactic 2015-02-04 11:51:39 -08:00
Leonardo de Moura
180cda304e feat(library/tactic): add rewrite tactic skeleton
The tactic has not been implemented yet, but this commit adds all the
support for storing arguments, serializing and deserializing them.
2015-02-04 11:51:39 -08:00
Leonardo de Moura
8a78adc9af feat(library/tactic): add auxiliary object "location"
This object will used to specify the scope of application of tactics
2015-02-04 11:51:39 -08:00
Leonardo de Moura
420da8fd3f feat(library/projection): store bit saying whether a projection is for a class or not. 2015-02-04 08:54:20 -08:00
Leonardo de Moura
c92f3bec65 refactor(library/definitional/projection): move projection "database" to library/projection 2015-02-04 07:18:43 -08:00
Leonardo de Moura
0e06f4aedc feat(library/match): extend match_plugin interface 2015-02-03 18:10:38 -08:00
Leonardo de Moura
44e575c895 feat(library/match): improve match_app_core 2015-02-03 17:37:22 -08:00
Leonardo de Moura
790fd9c24b chore(library/match): remove unused procedure 2015-02-03 15:20:26 -08:00
Leonardo de Moura
f79f43c702 refactor(library/match): use "special" meta-variables instead of free variables to represent placholders in the higher-order matcher 2015-02-03 15:15:04 -08:00
Leonardo de Moura
45e62031e2 fix(library/match): bug in matcher 2015-02-03 13:46:19 -08:00
Leonardo de Moura
4c7a17cc4a refactor(library/tactic/class_instance_synth): move has_expr_metavar_relaxed to util 2015-02-01 10:59:27 -08:00
Leonardo de Moura
c311e0aba6 chore(library/tactic/inversion_tactic): cleanup 2015-02-01 10:47:32 -08:00
Leonardo de Moura
143143e94c fix(library/tactic/inversion_tactic): missing normalization step in the inversion_tactic 2015-02-01 10:38:30 -08:00
Leonardo de Moura
e9e1f86b7f fix(library/app_builder): many bugs, add use_cache option, add tests 2015-01-29 15:30:31 -08:00
Leonardo de Moura
e6f022e3f2 fix(library/match): index out of bounds 2015-01-29 14:41:38 -08:00
Leonardo de Moura
b5d1f4e54c feat(library/match): add low-level match API 2015-01-29 14:09:09 -08:00
Leonardo de Moura
f587cc3e1d feat(library/app_builder): expose app_builder API in Lua 2015-01-29 11:38:56 -08:00
Leonardo de Moura
5efd91e435 fix(library/app_builder): missing initialization 2015-01-29 11:38:28 -08:00
Leonardo de Moura
5bb2a41c64 feat(library/reducible): expose Lua API for reducible hints 2015-01-29 10:37:15 -08:00
Leonardo de Moura
4cf2dcaa7e feat(library/app_builder): add helper class for creating applications efficiently using type inference
The idea is to use this class in the simplifier.
For example, we will use to create: symmetry, reflexivity, transitivity
and congruence proof steps.
2015-01-28 18:40:21 -08:00
Leonardo de Moura
4e08cc0659 feat(library/match): add flag for tracking whether matcher assigned anything 2015-01-28 18:39:50 -08:00
Leonardo de Moura
dbc8e9e13a refactor(*): add method get_num_univ_params 2015-01-28 17:22:18 -08:00
Leonardo de Moura
5aaade47d8 feat(library/match): add new API 2015-01-28 16:42:42 -08:00
Leonardo de Moura
a1eeb0a6a1 fix(library/print): typo in is_used_name
closes #408
2015-01-25 08:58:08 -08:00
Leonardo de Moura
27f6bfd3f0 refactor(*): add file constants.txt with all constants used by the Lean binary 2015-01-23 16:50:32 -08:00
Leonardo de Moura
880faf89e0 feat(frontends/lean/structure_cmd): add implicit_infer_kind annotation to structure command
closes #354
2015-01-21 18:12:29 -08:00
Leonardo de Moura
a53098385c refactor(frontends/lean/type_util): move infer_implicit_params to library 2015-01-21 17:22:41 -08:00
Leonardo de Moura
1d6ff5f761 feat(library/definitional/projection): throw exception if unsupported case occurs
The user can workaround it by using trust-level 0 (i.e., no option -t num or -T)
2015-01-20 17:42:34 -08:00
Leonardo de Moura
01ce57e52e feat(library/definitional/projection): add projection macro 2015-01-20 16:21:50 -08:00
Leonardo de Moura
b6750e9d29 feat(library/util): add auxiliary functions 2015-01-20 15:44:58 -08:00
Leonardo de Moura
8355ed55d7 refactor(library/definitional/projection): remove dead code 2015-01-20 13:40:09 -08:00
Leonardo de Moura
752b54085b refactor(kernel/type_checker): type checker should not unfold macros, but sign an error if a untrusted macro is used
Now, we unfold untrusted macros outside of the Lean kernel.
2015-01-20 12:36:56 -08:00
Leonardo de Moura
2717adde94 feat(library/unifier): add option 'unifier.conservative', use option by default in the calc_assistant 2015-01-19 16:23:29 -08:00
Leonardo de Moura
d0e9e0e21c feat(library/definitional/projection): add auxiliary function for simplifying expressions containing projections and constructors 2015-01-18 20:58:40 -08:00
Leonardo de Moura
858d21f20b feat(library/definitional/projection): store projection information 2015-01-18 16:26:56 -08:00
Leonardo de Moura
6c07ca5d41 perf(library/print): improve is_used_name 2015-01-15 19:01:13 -08:00
Leonardo de Moura
8ab775bd6f feat(*): distinguish between logical and runtime exceptions.
Now, we use throwable as the new base class for all Lean exceptions, and
exception is the subclass for "logical" exceptions.
2015-01-15 16:54:55 -08:00
Leonardo de Moura
ef529c660f fix(library/definitional/no_confusion): mark no_confusion as reducible
Auxiliary definitions should be marked as reducible
2015-01-13 18:44:47 -08:00
Leonardo de Moura
e9338669dc feat(library/definitional/equations): show implicit arguments (by default) in equations compiler error messages 2015-01-13 13:30:12 -08:00
Leonardo de Moura
41935906a8 chore(frontends/lean): use update_if_undef 2015-01-13 13:02:14 -08:00
Leonardo de Moura
e5a8c67d22 fix(library/definitional/equations): assertion violation 2015-01-13 11:57:14 -08:00
Leonardo de Moura
1fbfe59a9a feat(library/tactic/goal): when listing context/goal variables, collect vars of same type in one line
closes #391
2015-01-13 11:14:44 -08:00
Leonardo de Moura
a3bc1b0cd5 fix(library/definitional/equations): add more equation validation to avoid obscure error message 2015-01-09 18:52:21 -08:00
Leonardo de Moura
2e4a2451e6 refactor(library/reducible): simplify reducible/irreducible semantics 2015-01-08 18:52:18 -08:00
Leonardo de Moura
698754b2bb feat(library/definitional/equations): display elaborated equation lhs's when there are missing cases 2015-01-08 12:00:47 -08:00
Leonardo de Moura
f344dd75c4 feat(library/pp_options): add get_pp_purify_locals_name 2015-01-08 11:55:08 -08:00
Leonardo de Moura
5c118127ae fix(library/definitional/equations): memory access violation 2015-01-07 17:06:41 -08:00
Leonardo de Moura
597f7385e8 fix(library/unifier): incorrect fix 2015-01-07 16:57:02 -08:00
Leonardo de Moura
15b5344626 feat(library/definitional/equations): copy tags 2015-01-07 14:00:46 -08:00
Leonardo de Moura
2990a6d029 fix(library/unifier): missing "set_conflict" in process_delta 2015-01-07 12:41:01 -08:00
Leonardo de Moura
760dc2162a chore(library/definitional/equations): cleanup 2015-01-06 14:53:21 -08:00
Leonardo de Moura
a3a6697f44 feat(library/definitional/equations): mutually recursive functions for mutually recursive datatypes 2015-01-06 14:07:17 -08:00
Leonardo de Moura
c33928f202 fix(library/pp_options): memory leak 2015-01-06 10:22:23 -08:00
Leonardo de Moura
322cdb8a98 feat(library/definitional/equations): add 'equations_result' macro used to wrap multiple functions being defined by recursive equations
This is only useful when compiling "mutually recursive" functions.
2015-01-05 19:09:20 -08:00
Leonardo de Moura
3325d791de fix(library/definitional/equations): bug in recursive application elimination 2015-01-05 17:17:14 -08:00
Leonardo de Moura
eedc31f7e9 fix(library/definitional/equations): bug in "complete" transition 2015-01-05 16:27:29 -08:00
Leonardo de Moura
3889b60152 feat(library/definitional/equations): allow inductive datatype parameters in recursive equations 2015-01-05 15:56:28 -08:00
Leonardo de Moura
6eba4b4ac1 chore(library/definitional/equations): cleanup 2015-01-05 13:57:13 -08:00
Leonardo de Moura
b46c377aa2 feat(library/definitional/equations): add "complete" transition for overlapping patterns 2015-01-05 11:49:27 -08:00
Leonardo de Moura
fdef3e5407 feat(library/definitional/equations): add support for reflexive datatypes in the definitional package 2015-01-05 11:13:35 -08:00
Leonardo de Moura
5e228d92d2 fix(library/definitional/equations): missing case 2015-01-04 20:49:53 -08:00
Leonardo de Moura
576c053c25 fix(library/tactic/inversion_tactic): bug at implementation_list update 2015-01-04 19:56:10 -08:00
Leonardo de Moura
faf78ce3e6 feat(library/definitional/equations): brec_on compilation 2015-01-04 17:45:13 -08:00
Leonardo de Moura
98a856373d feat(library/util): add dec_level auxiliary procedure 2015-01-04 13:25:58 -08:00
Leonardo de Moura
926c140e17 fix(library/definitional/equations): fix clang compilation problems 2015-01-04 10:18:19 -08:00
Leonardo de Moura
bdfa919098 feat(library/definitional/equations): add brec_on based compilation 2015-01-03 22:23:37 -08:00
Leonardo de Moura
42354cd4fa feat(library/locals): add auxiliary templates 2015-01-03 22:23:08 -08:00
Leonardo de Moura
376126241e fix(library/definitional/equations): typo and bug 2015-01-03 15:29:34 -08:00
Leonardo de Moura
21a9cd58a3 fix(library/definitional/equations): bug when compiling in proof relevant kernels 2015-01-02 23:17:33 -08:00
Leonardo de Moura
7f7d318b22 feat(library/definitional/equations): add dependent pattern matching compilation 2015-01-02 22:06:40 -08:00
Leonardo de Moura
762a515a5b feat(library/tactic/inversion_tactic): mark new arguments that have been "unified" into terms 2015-01-02 22:02:15 -08:00
Leonardo de Moura
3fb2d8bbc0 feat(library/tactic/inversion_tactic): use the "simpler" compilation approach in more cases
The approach implemented in the commit 8974d70c11ef7b9b2c5d can be
extended to indexed inductive families. See comments in the code.
2015-01-01 19:33:15 -08:00
Leonardo de Moura
be9e2500ce feat(library/tactic/inversion_tactic): add more efficient "compilation" for non-indexed inductive datatypes 2015-01-01 19:33:14 -08:00
Leonardo de Moura
57490a6431 feat(library/tactic/inversion_tactic): avoid unnecessary eq.rec's 2015-01-01 19:33:14 -08:00
Leonardo de Moura
58f052b1bb fix(library/normalize): unitialized variable 2015-01-01 19:33:14 -08:00
Leonardo de Moura
761810f350 feat(library/tactic/inversion_tactic): generate auxiliary information 2015-01-01 19:33:14 -08:00
Leonardo de Moura
1f13bfa4f7 feat(library/tactic/inversion_tactic): add inversion::apply procedure
The new procedure is essentially a "customized" version of the
inversion (aka cases) tactic for the equations package
2015-01-01 19:33:14 -08:00
Leonardo de Moura
1d79cb9c07 fix(library/tactic/inversion_tactic): fix bug in 'cases' tactic for HoTT library 2014-12-22 09:40:15 -08:00
Leonardo de Moura
d2958044fd feat(frontends/lean): add multiple_instances command
After this commit, Lean "cuts" the search after the first instance is
computed. To obtain the previous behavior, we must use the new command

          multiple_instances <class-name>

closes #370
2014-12-21 17:28:44 -08:00
Leonardo de Moura
5efadb09cc feat(library/tactic/inversion_tactic): improve 'cases' tactic for HoTT library
This commit adds support for hypotheses (h : C As idxs) where the indices idxs
are just local constants. Before this commit the indices idxs had to be hsets.
Now, they can be hsets or local constants.

The new tests demonstrate new examples that can be handled by the
improved tactic in the HoTT library
2014-12-21 15:19:25 -08:00
Leonardo de Moura
677ec2a2fe feat(library/tactic/inversion_tactic): adjust inversion tactic to HoTT lib 2014-12-20 11:32:27 -08:00
Leonardo de Moura
2070ac849c feat(library/util): add get_intro_rule_names
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-12-20 11:31:48 -08:00
Leonardo de Moura
d9d822baa7 feat(library/tactic/class_instance_synth): add mk_hset_instance procedure 2014-12-19 22:00:25 -08:00
Leonardo de Moura
8c63045492 feat(library/util): add more auxiliary procedures 2014-12-19 22:00:25 -08:00
Leonardo de Moura
d6f79423e9 feat(library/tactic/class_instance_synth): add mk_class_instance procedures 2014-12-19 20:09:09 -08:00
Leonardo de Moura
4421069e34 refactor(library/tactic): rename placeholder_elaborator to class_instance_synth 2014-12-19 19:57:38 -08:00
Leonardo de Moura
ded869b7e0 refactor(frontends/lean): move placeholder_elaborator to library/tactic 2014-12-19 15:23:22 -08:00
Leonardo de Moura
a22dc773b7 refactor(frontends/lean): move some auxiliary procedures to library/tactic 2014-12-19 15:19:45 -08:00
Leonardo de Moura
69750c50c6 refactor(frontends/lean): move pp_options to library 2014-12-19 15:00:05 -08:00
Leonardo de Moura
caf0a4bf15 refactor(frontends/lean): move type_checker_ptr typedef to library 2014-12-19 14:40:15 -08:00
Leonardo de Moura
02de288a51 refactor(frontends/lean): move choice_iterator to library 2014-12-19 14:29:32 -08:00
Leonardo de Moura
9bd74689be feat(library/util): add mk_refl 2014-12-19 13:54:12 -08:00
Leonardo de Moura
a97bef7df2 feat(library/util): add mk_heq 2014-12-19 13:54:12 -08:00
Leonardo de Moura
1ca8723c54 refactor(library/util): allow mk_telescopic_eq to be used with (terms, locals) 2014-12-19 13:54:12 -08:00
Leonardo de Moura
6f78315aa4 refactor(*): add uniform names for "meta-objects" 2014-12-17 11:42:14 -08:00
Leonardo de Moura
8939351903 refactor(library): add compile_equations function, generic_exception, and cleanup elaborator_exception 2014-12-15 19:22:17 -08:00
Leonardo de Moura
5a9cd9eed4 fix(library/normalize): bug in the "eval" command 2014-12-15 19:22:17 -08:00
Leonardo de Moura
f0b002d5a7 fix(library/aliases): aliases in sections and contexts 2014-12-13 14:57:15 -08:00
Leonardo de Moura
e897bbdeb9 feat(library/util): add auxiliary functions for creating tuples (using sigma types) 2014-12-11 17:31:47 -08:00
Leonardo de Moura
b8f665e561 feat(frontends/lean): elaborate recursive equations
Remark: we are not compiling them yet.
2014-12-10 22:25:40 -08:00
Leonardo de Moura
2867789bec fix(library/unifier): handle missing first-order flex-flex case 2014-12-10 22:11:30 -08:00
Leonardo de Moura
756fae7c2a refactor(frontends/lean): move local_context to library 2014-12-10 12:43:32 -08:00
Leonardo de Moura
bf875d5778 feat(library/definitional/equations): add support for inaccessible patterns 2014-12-10 12:35:08 -08:00
Leonardo de Moura
d98aabe9ab refactor(library): move library/definitional/util module to library 2014-12-10 11:23:23 -08:00
Leonardo de Moura
ac664505e6 refactor(library): move class management to library module 2014-12-09 21:38:55 -08:00
Leonardo de Moura
d67583df44 fix(frontends/lean/parser): do not generate error when 'exit' command is used 2014-12-09 10:14:14 -08:00
Leonardo de Moura
58432d0968 feat(library/definitional): add no_confusion construction that is compatible with the HoTT library 2014-12-08 22:11:48 -08:00
Leonardo de Moura
2bb51554d5 feat(library/definitional/util): add telescope equality for HoTT library
This is needed for implementing no_confusion for HoTT.
We can't use heterogeneous equality in HoTT.
2014-12-07 18:35:55 -08:00
Leonardo de Moura
6736f58548 refactor(library/definitional/util): cleanup 2014-12-07 16:41:28 -08:00
Leonardo de Moura
eb87c18693 feat(*): add support for separate HoTT library 2014-12-05 14:34:02 -08:00
Leonardo de Moura
c8d8e7ac93 chore(library/definitional/equations): fix style 2014-12-04 16:00:33 -08:00
Leonardo de Moura
e267b2d120 feat(library/definitional/equations): add support for serializing equations 2014-12-04 15:11:18 -08:00
Leonardo de Moura
1d401ad862 feat(library/definitional): add "datastructure" for storing recursive equations 2014-12-04 12:39:59 -08:00
Leonardo de Moura
ebda057499 fix(library/tactic/intros_tactic): seg fault at intros tactic, fixes #366 2014-12-04 09:26:10 -08:00
Leonardo de Moura
59d403f7d8 fix(library/tactic/inversion_tactic): warning on clang++ 2014-12-03 21:14:10 -08:00
Leonardo de Moura
d10bb92a7d feat(library/aliases): protected definitions in nested namespaces, closes #331 2014-12-03 14:25:02 -08:00
Leonardo de Moura
0443c1e70c fix(frontends/lean): intro tactic + universe variables, fixes #362 2014-12-03 12:56:30 -08:00
Leonardo de Moura
fca97d5bb2 feat(library/definitional): add brec_on construction, closes #272 2014-12-03 10:39:32 -08:00
Leonardo de Moura
f948241bb9 feat(library/definitional): add auxiliary functions 2014-12-03 10:28:55 -08:00
Leonardo de Moura
050104cdfd fix(library/unifier): assertion violation 2014-12-02 12:17:59 -08:00
Leonardo de Moura
1b13562591 fix(library/flycheck): crash when io_state_stream is destroyed before flycheck_scope 2014-12-02 12:11:20 -08:00
Leonardo de Moura
06f436840f fix(library/unifier): postpone class-instance constraints whose type could not be inferred 2014-12-01 22:27:23 -08:00
Leonardo de Moura
19d14678ef refactor(library/unifier): remove dead code 2014-12-01 21:57:34 -08:00
Leonardo de Moura
e6672b958f fix(library/tactic/inversion_tactic): add missing case 2014-12-01 19:11:44 -08:00
Leonardo de Moura
bc7ee2958f fix(library/tactic/inversion_tactic): bug in mutually recursive case 2014-12-01 18:32:38 -08:00
Leonardo de Moura
6640fbf11b feat(library/definitional/brec_on): simplify universe level constraints for non-reflexive recursive datatypes 2014-12-01 17:11:06 -08:00
Leonardo de Moura
193fed7061 fix(library/tactic/inversion_tactic): uninitialized variable 2014-11-30 22:41:22 -08:00
Leonardo de Moura
c08f4672e4 feat(library/tactic): add 'assert' tactic, closes #349 2014-11-29 21:34:49 -08:00
Leonardo de Moura
f51fa93292 feat(library/tactic): add 'fapply' tactic, closes #356 2014-11-29 19:20:41 -08:00
Leonardo de Moura
2c0472252e feat(frontends/lean): allow expressions to be used to define precedence, closes #335 2014-11-29 18:29:48 -08:00
Leonardo de Moura
a0d650d9cc fix(library/tactic/inversion_tactic): complete 'deletion' transition 2014-11-29 09:36:41 -08:00
Leonardo de Moura
e0debca771 feat(library/tactic/inversion_tactic): add 'case ... with ...' variant that allows user to specify names for new hypotheses 2014-11-28 22:25:37 -08:00
Leonardo de Moura
22b2f3c78c fix(library/tactic/inversion_tactic): bug in injectivity transition 2014-11-28 22:07:35 -08:00
Leonardo de Moura
a6be460166 feat(library/tactic/inversion_tactic): basic 'inversion' tactic 2014-11-28 21:56:13 -08:00
Leonardo de Moura
6768c76b52 feat(library/tactic): refine 'get_unused_name' 2014-11-28 19:39:07 -08:00
Leonardo de Moura
9516cd9ee3 feat(library/tactic): 'exact' tactic report unsolved placeholders in nested expression
Actually, the elaborator is the one reporting the unassigned
placeholders. The 'exact' tactic just makes the request.
To implement this feature we had to extend the elaboration interface
expected by the tactic framework.
2014-11-28 14:59:35 -08:00
Leonardo de Moura
04dfda99ab fix(library/tactic/inversion_tactic): bug in name generation 2014-11-28 14:51:12 -08:00
Leonardo de Moura
13405b2bb0 fix(library/tactic/inversion_tactic): inversion tactic for datatypes with dependent elimination 2014-11-27 10:37:22 -08:00
Leonardo de Moura
db9fd53b80 fix(library/tactic): pretty printer for proof states 2014-11-27 09:43:58 -08:00
Leonardo de Moura
976e907c8a chore(library/tactic/tactic.h): cleanup 2014-11-27 09:15:49 -08:00
Leonardo de Moura
5fff3113a9 refactor(library/tactic/inversion_tactic): add 'cases_on' step to inversion_tactic 2014-11-27 00:06:26 -08:00
Leonardo de Moura
ebd320a6b3 feat(library/tactic): add first step of 'inversion' tactic 2014-11-26 21:28:00 -08:00