Commit graph

9091 commits

Author SHA1 Message Date
Gabriel Ebner
53898d47b0 fix(library/tactic/smt/congruence_tactics): fix cc_state.add 2017-07-20 09:17:23 +01:00
Gabriel Ebner
776b440d55 fix(library/constructions/projection): fix macro expansion
Thanks to @fpvandoorn for noticing this issue in Lean 2!  We encountered
this situation when the inferred type of the projection argument did not
reduce to the structure type with the current transparency setting of
the type context.
2017-07-18 19:56:20 +01:00
Gabriel Ebner
ba2718a89d feat(library/init/meta/environment): expose function to unfold all macros 2017-07-18 19:49:53 +01:00
Gabriel Ebner
e94095cdf3 chore(library/tactic/cases_tactic): add a bit more information to error message 2017-07-18 09:07:09 +01:00
Gabriel Ebner
317319ded3 chore(library/tactic/cases_tactic): improve error message for unsupported equalities
@leodemoura Should we add a flag to introduce the equalities as
hypotheses in this case?
2017-07-18 08:55:36 +01:00
Sebastian Ullrich
9c2d42b269 fix(frontends/lean/parser): to_pattern_fn: replace invalid choice pattern with sorry
Fixes #1749
2017-07-17 14:59:07 +02:00
Gabriel Ebner
573525fb9f fix(library/kernel_serializer): fix build error 2017-07-16 16:29:30 +01:00
Leonardo de Moura
9afb53fad5 feat(kernel/expr): allow metavariables to have user-facing names
We need this feature for:
1) Defining nonlinear search patterns. Example: (?m <= ?m + 1)
2) Preprocessing recursive equations and support the pattern
refinement approach used in Agda. Example: in Agda, they accept
```
def append {A : Type} : Π (m n : nat), Vec A m -> Vec A n -> Vec A (m + n)
| m n nil            ys := ys
| m n (cons m' x xs) ys := cons x (append m' n xs ys)
```
These equations have to be refined. For example, `m` has to be
replaced with `0` (in the first equation), and `succ m'` in the
second. To implement this kind of refinement, we need to convert
the pattern variables (local constants) into metavariables during
elaboration. Then, the unassigned metavariables become local constants
again. This preprocessing step will fix some of the issues on #1594.
To completely fix #1594, we will need yet another preprocessing step
which will implement "complete transition" used in the equation
compiler before we start elim_match.cpp
2017-07-16 07:16:41 -07:00
Gabriel Ebner
246d71f3ff feat(library/equations_compiler): error recovery 2017-07-16 05:17:38 -07:00
Gabriel Ebner
9367e94900 fix(frontends/lean/pp): hide proof terms in non-proofs by default
This is mainly to reduce clutter.  Proof term printing can still be
forced using the `pp.proofs` option.
2017-07-15 22:21:22 +01:00
Gabriel Ebner
37d9e03cc1 feat(frontends/lean/pp): show substituted expressions for delayed abstractions
@leodemoura I tried to look up the unique names in the local context,
but this pretty much always fails.  AFAICT we never remember the local
context when pretty-printing expression texts.
2017-07-15 21:34:05 +01:00
Gabriel Ebner
68ee9396c6 fix(frontends/lean/parser): support backtracking from empty expressions
Fixes #1745.
2017-07-15 11:12:09 +01:00
Gabriel Ebner
1d6716d1fb fix(kernel/type_checker): eagerly check for proof irrelevant definitional equality
Fixes #1716.  @leodemoura I did not observe any performance effect on
the standard library.
2017-07-14 21:46:04 +01:00
Gabriel Ebner
2fd50bf460 fix(checker/checker): set the printing function 2017-07-14 21:45:39 +01:00
Gabriel Ebner
0579e68ab8 feat(library/export): add option to only export a single declaration 2017-07-14 09:49:24 +01:00
Gabriel Ebner
3392aa90b5 fix(frontends/lean/definition_cmds): support parameters in mutual defs 2017-07-13 15:14:46 +01:00
Gabriel Ebner
80ec86d230 fix(library/vm/vm_int): tons of fixes for int.shiftl 2017-07-11 22:54:26 +01:00
Gabriel Ebner
138c427bcb fix(library/vm_int): correct mpz implementation for int.rem 2017-07-11 22:53:59 +01:00
Gabriel Ebner
d0245c4c2f fix(library/vm/vm_int): unformly unbox small ints 2017-07-11 22:53:18 +01:00
Gabriel Ebner
27a39c4a2d fix(library/tactic/eval): do not catch exceptions 2017-07-11 22:52:31 +01:00
Mario Carneiro
ced436a707 fix(library/vm/vm_nat): fix VM definition of nat.shiftr
fixes #1723
2017-07-11 20:53:15 +01:00
Josh Pollock
ee55a03205 fix(src/library/vm,tests/lean): fixes #1723 2017-07-09 08:05:05 +02:00
Leonardo de Moura
8dcccd3bfc fix(frontends/lean/parser): make sure imax and max level arguments are parsed using the same precendence we use to parse application arguments
This commit addresses an issue raised by @digama0 on the Lean slack channel.
2017-07-07 12:43:07 -07:00
Sebastian Ullrich
ac8de2472e feat(library/tactic/induction_tactic): clear hypothesis before introducing new ones 2017-07-07 10:06:30 -07:00
Leonardo de Moura
91f4fd9507 fix(library/equations_compiler/elim_match): undo bcf44f7
See issue #1739

Main problem with this commit: the counter-examples for non-exhaustive matches will be
cryptic when using nested inductive types.
2017-07-07 09:16:07 -07:00
Sebastian Ullrich
aaa59085b3 fix(emacs/lean-mode): lean-execute: don't clobber compile-command 2017-07-07 17:19:23 +02:00
Leonardo de Moura
38c2c7dae8 feat(library/equations_compiler/elim_match): extend is_value_transition trick to other infinite types 2017-07-06 22:10:23 -07:00
Gabriel Ebner
820286c02c fix(library/equations_compiler/elim_match): check for forward dependencies with string literal matches 2017-07-06 22:04:58 -07:00
Gabriel Ebner
bcf44f7020 fix(library/equations_compiler): do not unfold generalized inductives 2017-07-06 22:04:58 -07:00
Gabriel Ebner
5e94ecc841 chore(library/equations_compiler): style 2017-07-06 22:04:58 -07:00
Gabriel Ebner
de587f938c fix(library/equations_compiler): always use ite for string literals 2017-07-06 22:04:58 -07:00
Gabriel Ebner
50821c9fac feat(library/equations_compiler): unpack counter-examples in wf recursion 2017-07-06 22:04:58 -07:00
Gabriel Ebner
4286adf868 feat(library/equations_compiler): use underscores for variables in missing cases 2017-07-06 22:04:58 -07:00
Gabriel Ebner
4fee7eaa70 feat(library/equations_compiler/elim_match): provide counter-examples for non-exhaustive matches 2017-07-06 22:04:58 -07:00
Leonardo de Moura
0cfb48c095 fix(library/equations_compiler/util): PR #1731 2017-07-06 21:29:23 -07:00
Sebastian Ullrich
c209cdc8be fix(kernel/inductive/inductive): identify indices modulo whnf 2017-07-06 20:59:58 -07:00
Sebastian Ullrich
d386e65775 fix(library/equations_compiler/util): noequation: guess arity modulo whnf 2017-07-06 20:59:58 -07:00
Gabriel Ebner
d610709a53 fix(frontends/lean/print_cmd): report error on unknown identifier 2017-07-06 19:58:30 +02:00
Gabriel Ebner
c7928c16b3 fix(shell/server): do not cancel hole commands
Nonterminating hole commands are caught by the timeout anyway.
Fixes #1729.
2017-07-06 16:29:57 +02:00
Gabriel Ebner
adfa713dea fix(shell/server): report interrupted exception 2017-07-06 16:28:41 +02:00
Leonardo de Moura
514c1e30c9 fix(library/tactic/dsimplify): issue reported by @semorrison at gitter
`dsimp` option `unfold_reducible` was not working correctly.
2017-07-05 21:48:44 -07:00
Leonardo de Moura
1da0bb8f79 chore(library/tactic/smt/smt_state): remove unnecessary include 2017-07-05 21:03:49 -07:00
Leonardo de Moura
e7ffdb5125 chore(emacs/lean-syntax): remove old keywords 2017-07-05 17:28:11 -07:00
Leonardo de Moura
cfab344bcc fix(library/delayed_abstraction): fixes #1728 2017-07-05 17:10:18 -07:00
Leonardo de Moura
1bfaf19277 chore(library/delayed_abstraction): clarify delayed_abstraction API 2017-07-05 16:40:45 -07:00
Leonardo de Moura
c631a4cd4a chore(CMakeLists.txt): trying to fix Windows build 2017-07-05 11:48:04 -07:00
Sebastian Ullrich
8ac1ea6b18 feat(frontends/lean/tactic_notation): ignore by keyword in interactive tactic mode 2017-07-05 11:20:10 -07:00
Sebastian Ullrich
c8d6b40991 refactor(frontends/lean/builtin_exprs,library): suppose ~> assume : 2017-07-05 11:20:10 -07:00
Sebastian Ullrich
f024ccd75d refactor(frontends/lean/token_table,library): take ~> assume 2017-07-05 11:20:10 -07:00
Sebastian Ullrich
f95f70fe56 feat(frontends/lean/builtin_exprs): support have ... := ... in term mode 2017-07-05 11:20:10 -07:00