Commit graph

105 commits

Author SHA1 Message Date
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