Commit graph

52 commits

Author SHA1 Message Date
Johannes Hölzl
bb4920fcbc feat(library/vm/vm_expr): export instantiate_univ_params 2017-02-17 20:08:18 -08:00
Sebastian Ullrich
e8fa54cc51 refactor(init/meta): move macro creation defs from expr to pexpr 2017-02-17 13:45:57 +01:00
Sebastian Ullrich
d15591a2d8 feat(library,frontends/lean): expose parser to Lean and use for parsing tactic parameters 2017-02-17 13:45:56 +01:00
Leonardo de Moura
edd5e97045 feat(frontends/lean/elaborator): coercion from (decidable) Prop to bool
This is a hard coded extra case. It is not an instance of has_coe.
Even if we change has_coe to accomodate this case, it will not be a
satisfactory solution because this coercion depends on the element and
not the type, and the element usually contains metavariables.

We should eventually write a tactic for synthesizing coercions.
2017-02-14 18:41:32 -08:00
Leonardo de Moura
5ca18b8d2e feat(library/init/meta): add helper functions 2017-02-11 16:52:06 -08:00
Leonardo de Moura
c5dc8e651a chore(library/init/meta): cleanup 2017-02-08 15:33:25 -08:00
Gabriel Ebner
95068e4e79 feat(library/sorry): make sorry a macro 2017-02-05 14:01:03 +01:00
Gabriel Ebner
952f444710 feat(init/meta/task): allow task creation from VM 2017-01-28 08:27:23 +01:00
Leonardo de Moura
b1d097e63a feat(library/init/meta): add 'delta' tactic for applying delta reduction
closes #1331
2017-01-26 19:04:07 -08:00
Leonardo de Moura
0c4c41ae54 feat(library/init/meta): produce nicer error message for overloaded simp/ematch lemma 2017-01-07 14:13:46 -08:00
Leonardo de Moura
d333c444cd test(tests/lean/run): add tactic examples 2017-01-06 18:48:03 -08:00
Leonardo de Moura
8eadaf51d8 feat(library/init/meta/smt): add helper tactics: get_facts, proof_for, refutation_for, add_lemmas_from_facts, ... 2017-01-05 12:59:11 -08:00
Gabriel Ebner
6b15f6cef9 feat(library/tools/super): add super prover 2016-12-16 18:18:13 -08:00
Daniel Selsam
f952dbc78e fix(init/meta/expr.lean): is_app_of can return true for constants as well 2016-12-08 11:23:53 -08:00
Jared Roesch
e65d90ac79 feat(*): C++ code generator
in progress move of Lean.native to init
2016-12-05 16:11:41 -08:00
Leonardo de Moura
242ad1bd65 feat(library/init/meta/comp_value_tactics): add comp_val tactic for testing 2016-11-22 17:03:21 -08:00
Leonardo de Moura
c816b80855 chore(*): don't use upper case letter for type variables, and camelCase for declarations 2016-11-17 14:54:08 -08:00
Leonardo de Moura
a7af70da2e feat(library/vm): add expr.copy_pos_info 2016-11-10 11:50:38 -08:00
Leonardo de Moura
0d74ad97a7 chore(library/init): definition => def 2016-10-06 16:04:12 -07:00
Gabriel Ebner
6883720cc7 fix(library/init/meta/expr): consistently compare expressions 2016-10-05 15:17:02 -07:00
Leonardo de Moura
990c414b86 feat(library/init/meta/converter): add 'congr' and 'depthfirst' conversionals 2016-10-05 15:05:22 -07:00
Leonardo de Moura
4a9a637ddf feat(library/init/meta/converter): add 'funext' converter and 'conversion' tactic 2016-10-05 15:05:07 -07:00
Leonardo de Moura
89703ce669 feat(library/vm/vm_expr): expose replace 2016-10-01 09:23:40 -07:00
Leonardo de Moura
719481588a feat(library/init/meta): add coercion from expr to (expr -> expr) 2016-10-01 09:03:43 -07:00
Leonardo de Moura
572751c56e feat(frontends/lean): force user to use meta keyword on meta inductive/structure/class
Before this commit, we were inferring whether an
inductive/structure/class were meta or not. This was bad since the user
had no clue whether the type was trusted (non meta) or not.
Moreover, users could get confused by this behavior and assume the
kernel was allowing trusted code to rely on untrusted one.
2016-09-29 17:56:35 -07:00
Leonardo de Moura
03e4fd1038 feat(frontends/lean,library): cleanup instance cmd, and use 'meta instance' 2016-09-24 12:33:25 -07:00
Leonardo de Moura
148da46481 feat(frontends/lean): 'mutual' and 'meta' are now keywords 2016-09-24 10:44:40 -07:00
Leonardo de Moura
9991d61610 chore(library/init): cleanup 2016-09-23 14:53:17 -07:00
Leonardo de Moura
001e06abdc chore(library/init): use 'instance' 2016-09-23 14:00:34 -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
e99eb6d47e feat(frontends/lean): revising inaccessible terms syntax again :( 2016-08-19 13:57:12 -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
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
de237fa6e4 chore(library/coercion): disable coercion attribute 2016-07-29 13:15:10 -07:00
Daniel Selsam
1b7f70dde9 feat(simplifier): expose simp_lemmas data structure 2016-07-29 10:44:44 -07:00
Leonardo de Moura
212d222047 feat(frontends/lean): quoted names 2016-07-22 19:06:57 -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
f0f927919d feat(library/init/meta/expr): add get_app_args 2016-07-20 19:28:36 -04: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
9e1c4b5c99 feat(library/init/meta): add helper functions, improve contradiction tactic 2016-07-05 18:34:48 -07:00
Leonardo de Moura
4d32a8a4f8 feat(library/init/meta): add helper functions 2016-06-27 17:19:22 +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
94905a5511 feat(library/vm/vm_expr): add expr.hash 2016-06-23 12:45:31 -07:00
Leonardo de Moura
f0ec88c1d3 refactor(library/init/meta): free_var ==> local_const
Use the same names used in the C++ version
2016-06-22 14:48:09 -07:00
Leonardo de Moura
82a604e3f5 fet(library/init/meta/expr): add auxiliary functions for expr 2016-06-18 14:29:11 -07:00
Leonardo de Moura
b24795b2b1 feat(library/init/meta/expr): mark expr.app as a coercion 2016-06-17 08:50:06 -07:00
Leonardo de Moura
84e33f6ae2 feat(library/init/meta/contradiction_tactic): improve contradiction tactic 2016-06-16 18:32:08 -07:00
Leonardo de Moura
67aa755a94 feat(library/init/meta): add helper functions 2016-06-16 18:16:35 -07:00
Leonardo de Moura
876793c21e feat(library/init/meta): add 'inhabited' instances 2016-06-09 13:19:49 -07:00