Leonardo de Moura
c9475774f4
feat(library/tactic/tactic_state): add is_def_eq and is_def_eq_core tactics
2016-08-16 11:08:03 -07:00
Leonardo de Moura
f8e5753a13
feat(library/type_context, library/tactic): add eta-expansion method and tactic
2016-08-14 16:15:12 -07:00
Leonardo de Moura
2354b63099
feat(library/tactic/tactic_state): add whnf_core
2016-08-14 16:02:40 -07:00
Sebastian Ullrich
fd2c42a8bf
chore(library, tests): switch to new attribute declaration syntax
...
sed -Ei 's/^(\s*)((private |protected )?(noncomputable )?(abbreviation|definition|meta_definition|theorem|lemma|proposition|corollary)\s+\S+\s*)((\s*\[(\S+(\s+[0-9]+)*|priority.*)\])+)\s*/\1attribute \6\n\1\2/' library/**/*.lean tests/**/*.lean
sed -Ei 's/\s+$//' library/**/*.lean # remove trailing whitespace
2016-08-12 15:36:12 -07:00
Sebastian Ullrich
82657b3b64
refactor(library/compiler/inliner, library): replace inline command with attribute
...
sed -Ei 's/inline (protected )?(meta_)?definition (\S+)/\1\2definition \3 [inline]/' library/**/*.lean
2016-08-08 12:45:22 -07:00
Leonardo de Moura
1602a53336
feat(frontends/lean): nary match
2016-08-08 10:04:58 -07:00
Leonardo de Moura
1e6b3614ab
feat(frontends/lean): new pattern matching validation
...
@Kha, we now support variable/constant shadowing in patterns.
A constant may occur in a pattern if it is a constructor or tagged with
the new [pattern] attribute. In the standard library, I have tagged
'add', 'zero', 'one', 'bit0', 'bit1' and 'rfl' with this new attribute.
BTW, arbitrary constants and variables may occur nested in type ascriptions and
inaccessible terms.
Here is an example:
meta_definition tactic_result_to_string {A : Type} : tactic_result A → string
| (success a s) := to_string a
| (exception ⌞A⌟ e s) := "Exception: " ++ to_string (e ())
I had to use the inaccessible ⌞A⌟ in the example above, otherwise, we would be shadowing the parameter
{A : Type}, and we would get a type error.
The new validation is performed at to_pattern_fn (parser.cpp).
2016-08-07 11:31:11 -07:00
Leonardo de Moura
7bb6ccc089
refactor(library/init/meta): qexpr ==> pexpr
2016-08-05 17:04:36 -07:00
Leonardo de Moura
38b81f2656
refactor(library/init/meta): remove base_tactic
...
We don't need it.
2016-08-04 19:17:08 -07:00
Leonardo de Moura
c1793cd620
feat(library/init/meta/tactic): add 'refine' tactic
2016-07-31 21:17:19 -07:00
Leonardo de Moura
6d0fa806d8
feat(library/tactic/elaborate): convert unassigned metavars into new goals
2016-07-31 20:38:57 -07:00
Leonardo de Moura
12fa52c77d
feat(library/tactic, frontends/lean/elaborator): add to_expr tactic
2016-07-31 20:21:17 -07:00
Sebastian Ullrich
e090326f98
fix(library): remove classical instances from global scope
2016-07-29 23:44:23 -04:00
Leonardo de Moura
7ddf1e817b
chore(frontends/lean): coercions are disabled by default
2016-07-29 13:03:23 -07:00
Leonardo de Moura
0db1f3a9d1
feat(library/init/meta): add helper functions
2016-07-23 11:39:11 -07:00
Leonardo de Moura
212d222047
feat(frontends/lean): quoted names
2016-07-22 19:06:57 -07:00
Leonardo de Moura
fa04e5f36f
refactor(library/init/meta): move set/get option tactics to separate file
2016-07-21 17:10:38 -07:00
Leonardo de Moura
ada260309e
refactor(library/init/meta): move defeq simplifier related tactics to separate file
2016-07-21 17:07:09 -07:00
Leonardo de Moura
d70bf2f04e
refactor(library/init/meta): move simplifier related tactics to separate file
2016-07-21 17:03:19 -07:00
Leonardo de Moura
1b55507971
refactor(library/init/meta): rename C++ intro to intro_core, and define smarter intro in C++
2016-07-21 16:54:23 -07:00
Leonardo de Moura
2580b40dc1
feat(library/init/meta/tactic): add helper tactic whnf_target
2016-07-20 19:29:22 -04:00
Leonardo de Moura
7f0276f592
feat(library/tactic): add 'rewrite' tactic and variants
2016-07-17 16:08:11 -04:00
Leonardo de Moura
26177995c2
feat(library/tactic): add 'generalize' tactic
2016-07-16 15:41:32 -04:00
Leonardo de Moura
a5307a34bc
feat(library/tactic): add 'cases' tactic skeleton
2016-07-12 14:05:03 -04:00
Leonardo de Moura
e48fa15b71
feat(library/tactic/backward/backward_chaining): add 'pre_tactic' to backward_chaining_core
2016-07-10 16:11:13 -07:00
Leonardo de Moura
7c8d0f444f
feat(library/tactic/backward): finish backward chaining tactic
2016-07-10 13:49:28 -07:00
Leonardo de Moura
af9c7148b3
feat(library/tactic/backward): add backward_chaining skeleton tactic
2016-07-10 11:45:25 -07:00
Leonardo de Moura
aacd812cc8
feat(library/init/meta/tactic): add 'by_contradiction' tactic
2016-07-09 19:14:36 -07:00
Leonardo de Moura
f81daab596
feat(library/init): add 'has_andthen' type class, and ';' notation
2016-07-09 18:39:27 -07:00
Leonardo de Moura
6b30b89c89
feat(library/init/meta/tactic): add 'simp_at' tactics
2016-07-09 17:23:45 -07:00
Leonardo de Moura
d5a648a12a
feat(library/init/meta/tactic): add 'simp_using' and 'simp_using_hs', add 'try triv' after 'simp'
2016-07-09 16:37:55 -07:00
Daniel Selsam
c3d44249bc
feat(simplifier): take list of lemmas and tactic as args to simplify
2016-07-09 10:10:59 -07:00
Leonardo de Moura
9e1c4b5c99
feat(library/init/meta): add helper functions, improve contradiction tactic
2016-07-05 18:34:48 -07:00
Leonardo de Moura
7bbd43ba5e
chore(library/init/meta/tactic): cleanup mk_eq_simp_ext
2016-07-04 17:32:16 -07:00
Daniel Selsam
ba756eec4b
chore(library/meta/tactic): remove duplicate todo
2016-07-04 17:14:14 -07:00
Daniel Selsam
ac57795871
feat(init/meta/tactic): mk_eq_simp_ext helper
2016-07-04 17:13:41 -07:00
Leonardo de Moura
3b6b487e43
feat(library/init/meta/tactic): add 'focus', 'first', 'solve' and LCF-style AND_THEN tactical
2016-06-29 01:07:41 +01:00
Daniel Selsam
f273ccb077
feat(meta/lean/tactic): dsimp_at
2016-06-28 23:52:45 +01:00
Leonardo de Moura
f64db53751
refactor(library/init/meta/tactic): simplify 'simp' tactic
2016-06-28 17:51:22 +01:00
Leonardo de Moura
f1986b57e9
feat(library/init/meta/tactic): 'revert' tactic returns the number of actually reverted hypothesis
2016-06-28 15:36:50 +01:00
Leonardo de Moura
48d6319c1c
feat(library/init/meta/tactic): add 'when_tracing' tactical
2016-06-28 11:29:39 +01:00
Leonardo de Moura
dbeb0fec16
feat(library/init/meta): export reducible and semireducible to tactic namespace
2016-06-28 10:31:01 +01:00
Leonardo de Moura
d524ab013f
refactor(library/init/meta): make sure 'transparency' is the first argument
2016-06-28 10:25:38 +01:00
Leonardo de Moura
669f8fc9df
feat(library/init/meta/tactic): make sure to_format ==> to_tactic_format has higher priority
2016-06-27 14:34:55 +01:00
Leonardo de Moura
dea0374055
feat(library/init/meta/tactic): add has_to_tactic_format instance for list
2016-06-27 14:06:18 +01:00
Leonardo de Moura
583a55c7c3
refactor(library): move 'none', 'some', 'tt', 'ff' to top-level
2016-06-25 12:39:19 -07:00
Leonardo de Moura
9e60d553e0
feat(library/init/meta): add match_eq and match_heq
2016-06-25 08:07:48 -07:00
Daniel Selsam
e1bc0a68e6
refactor(simplifier): port skeleton to new tactic framework
...
Conflicts:
library/init/meta/tactic.lean
src/library/tactic/tactic_state.cpp
2016-06-24 15:20:40 -07:00
Leonardo de Moura
085c52938e
feat(library/tactic/defeq_simplifier): add transparency parameter to defeq_simp
2016-06-24 13:31:32 -07:00
Leonardo de Moura
c8c23adb4d
feat(library/abstract_expr): add abstract_eq
2016-06-23 15:17:25 -07:00