Leonardo de Moura
5e5285ee67
refactor(library): rename pr1/pr2 ==> fst/snd
2016-09-21 09:48:39 -07:00
Gabriel Ebner
3ef9149902
feat(library/tactic/tactic_state): add get_unused_name
2016-09-19 16:38:03 -07:00
Leonardo de Moura
24f1cb2726
chore(frontends/lean): new_elaborator is now the default
2016-09-19 16:34:06 -07:00
Leonardo de Moura
90bfd84a07
feat(frontends/lean): Type is now (Type 1)
...
In the standard library, we should use explicit universe variables for
universe polymorphic definitions.
Users that want to declare universe polymorphic definitions but do not
want to provide universe level parameters should use
Type _
or
Type*
2016-09-17 14:30:54 -07:00
Leonardo de Moura
5e8f2add84
refactor(library/init): use universe variables
2016-09-17 12:25:02 -07:00
Leonardo de Moura
7b1811ccd6
refactor(library/init): move more files to new elaborator
2016-09-15 14:58:52 -07:00
Leonardo de Moura
6c84a0a7b1
feat(frontends/lean): use new notation for declaring universes in constant and structure decls
2016-09-13 21:45:16 -07:00
Leonardo de Moura
20cce8a0f6
feat(frontends/lean/parser): nicer notation for providing universes
2016-09-13 20:41:00 -07:00
Leonardo de Moura
24049d8f40
refactor(library/init/logic): rename decidable.tt/ff to decidable.is_true/is_false
2016-09-13 13:40:02 -07:00
Sebastian Ullrich
5e3e54e208
feat(library/tactic/user_attribute): Support pure function caching for user-defined attributes
2016-09-12 10:38:48 -07:00
Leonardo de Moura
91994ff823
feat(frontends/lean/elaborator): switch to new let-decls
2016-09-10 13:00:53 -07:00
Leonardo de Moura
7747c83915
doc(library/init/meta/declaration): document reducibility_hints
2016-09-04 18:29:24 -07:00
Leonardo de Moura
d6d68cd70a
feat(library/vm): expose reducibility_hints
2016-09-04 18:09:10 -07:00
Leonardo de Moura
a862c6e89f
refactor(library/init/meta/declaration): def will be a keyword
2016-09-03 15:02:27 -07:00
Leonardo de Moura
39dc336310
feat(library/tactic/user_attribute): add set_basic_attribute and unset_attribute tactics
2016-09-01 14:17:05 -07:00
Leonardo de Moura
e18500dcd4
feat(frontends/lean/parser): _ is an anonymous variable again in patterns.
2016-08-23 14:06:24 -07:00
Leonardo de Moura
e4fd627ae2
feat(library/attribute_manager): fingerprints
...
The fingerprint changes whenever a new attribute is added.
2016-08-23 08:20:37 -07:00
Jeremy Avigad
345defded4
feat(library/init/meta/rb_map): a useful variant of red black maps
2016-08-21 22:31:54 -07:00
Jeremy Avigad
766f3f18ee
feat(library/init/meta/tactic): generalize first for any return type
2016-08-21 22:31:54 -07:00
Jeremy Avigad
4af0e0a2de
fix(library/init/meta/simp_tactic): fix typo
2016-08-21 22:31:54 -07:00
Daniel Selsam
4f8db64e23
refactor(simplifier): many fixes, extensions, and tests
...
fix(simplifier): missing simp rule in prop simplifier
fix(library/unfold_macros): do not look for untrusted macros when using sufficient trust level
2016-08-19 14:57:03 -07:00
Leonardo de Moura
e99eb6d47e
feat(frontends/lean): revising inaccessible terms syntax again :(
2016-08-19 13:57:12 -07:00
Sebastian Ullrich
21e8c23ed7
feat(library/vm/user_attribute): use command instead of attribute for registering
2016-08-18 15:51:41 -07:00
Sebastian Ullrich
ca8be3857c
feat(library/user_attribute): add user-defined attributes and make attribute_manager environment-aware
2016-08-18 12:56:44 -07:00
Leonardo de Moura
cd77f7167e
chore(frontends/lean): run_tactic ==> run_command
...
add `command` as alias for `tactic unit`
2016-08-18 12:53:21 -07:00
Leonardo de Moura
ddc3789929
feat(frontends/lean): add run_tactic command
...
This commit also adds the tactic `add_decl`.
2016-08-18 10:56:18 -07:00
Daniel Selsam
a9b01991c2
feat(frontends/lean/inductive_cmd): new frontend for the inductive cmd
...
Conflicts:
src/frontends/lean/CMakeLists.txt
src/frontends/lean/structure_cmd.h
2016-08-17 07:34:03 -07:00
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
Leonardo de Moura
1d6b1d381b
refactor(library/init): rename measurable to has_sizeof
2016-08-08 13:58:10 -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
e52cffd04d
feat(library/init/meta/match_tactic): add helper tactics on top of match tactic
2016-08-06 14:13:41 -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
5cc5880a77
refactor(library/init/meta/base_tactic): remove unnecessary option
2016-08-04 19:17:08 -07:00
Daniel Selsam
70a1e53ba8
feat(simplifier/simp_lemmas): take arbitrary list of attributes and cache
2016-08-03 18:04:28 -07:00
Leonardo de Moura
53da866935
feat(library/init/meta/simp_tactic): add tactic for creating empty simp_lemmas
2016-08-02 09:00:49 -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
Leonardo de Moura
2ad5c2ab73
feat(library/init): add has_lift has_coe has_coe_to_fun type classes
2016-07-30 10:11:30 -07:00
Sebastian Ullrich
e090326f98
fix(library): remove classical instances from global scope
2016-07-29 23:44:23 -04:00
Leonardo de Moura
de237fa6e4
chore(library/coercion): disable coercion attribute
2016-07-29 13:15:10 -07:00
Leonardo de Moura
7ddf1e817b
chore(frontends/lean): coercions are disabled by default
2016-07-29 13:03:23 -07:00
Daniel Selsam
1b7f70dde9
feat(simplifier): expose simp_lemmas data structure
2016-07-29 10:44:44 -07:00
Leonardo de Moura
14ac5fb25a
fix(library/init/meta/mk_measurable_instance) : add 1 for each constructor
2016-07-23 13:01:09 -07:00