Daniel Selsam
6290919170
test(tests/lean/simplifier_norm_num): add moderate sized test
2015-11-16 09:13:07 -08:00
Daniel Selsam
30b1b79c4e
fix(algebra/simplifier): update numeral simp rules
2015-11-16 09:12:29 -08:00
Leonardo de Moura
db59c6829c
feat(library/blast): add basic support for non-recursive recursors/eliminators in the simple_strategy, fix bug at recursor_action
2015-11-15 18:39:12 -08:00
Leonardo de Moura
a545860aa1
feat(library/blast/intros_action): apply head_beta_reduce at intros
2015-11-15 18:14:12 -08:00
Leonardo de Moura
24ed427c2f
feat(library/blast): add "recursor" (aka elimination/induction) action
2015-11-15 18:00:32 -08:00
Leonardo de Moura
0dc31227f8
feat(library/init/logic): mark ne reducible
2015-11-15 15:09:02 -08:00
Leonardo de Moura
60434b3487
fix(tests/lean/urec): adjust test to recent changes
2015-11-15 15:06:05 -08:00
Leonardo de Moura
1308c7c4e2
feat(library/blast): add action for not(a ~ a) when ~ is a reflexive relation
2015-11-15 15:00:25 -08:00
Leonardo de Moura
ff73fb22fb
feat(library/user_recursors): store whether recursor is recursive or not
2015-11-15 12:37:35 -08:00
Leonardo de Moura
676ffb77f9
test(tests/lean/run): test for simp action
2015-11-15 11:36:24 -08:00
Leonardo de Moura
fd41a4f76d
feat(library/blast): add simplify_target action
2015-11-14 16:18:12 -08:00
Leonardo de Moura
b5db77961d
feat(library/blast): add "trivial" action
2015-11-14 15:02:14 -08:00
Leonardo de Moura
0f4e59a84f
feat(library/blast): add "no_confusion" action
2015-11-13 18:19:05 -08:00
Leonardo de Moura
29d472788f
feat(library/blast/subst): avoid unnecessary proof step
2015-11-13 16:31:07 -08:00
Leonardo de Moura
3849aff674
fix(library/blast/subst): bug in subst action, add hypothesis_idx_buffer_set (helper class), refine revert_action interface
2015-11-13 16:10:25 -08:00
Leonardo de Moura
65b962dabd
test(tests/lean/run): add basic tests for subst action
2015-11-13 15:27:54 -08:00
Leonardo de Moura
0316412992
test(tests/lean/simplifier_norm_num): disable test that is taking a long time
2015-11-13 09:25:39 -08:00
Daniel Selsam
00a5cd519e
feat(algebra/simplifier): simp rule set for units
2015-11-12 21:23:28 -08:00
Daniel Selsam
e7890fb456
feat(algebra/simplifier): useful simp rule sets
2015-11-12 21:23:28 -08:00
Daniel Selsam
f17320eccf
fix(library/abstract_expr_manager): remove weight and lt
2015-11-12 21:21:52 -08:00
Daniel Selsam
3703938e55
feat(library/abstract_expr_manager): compare exprs ignoring subsingletons
2015-11-12 21:21:51 -08:00
Leonardo de Moura
182085b366
fix(tests/lean/simplifier_norm_num): adjust tests to recent changes
2015-11-12 20:59:26 -08:00
Rob Lewis
44a099f6f1
feat(norm_num): performance and style fixes
2015-11-12 20:53:37 -08:00
Rob Lewis
4bf0519843
feat(norm_num): numeral normalizer works for +, -, *, /
2015-11-12 20:53:37 -08:00
Rob Lewis
616450be64
feat(library/norm_num): extend norm_num to handle subtraction
2015-11-12 20:53:37 -08:00
Leonardo de Moura
e1f81cfdcd
feat(library/type_context): add normalizer for type_context
2015-11-12 20:31:36 -08:00
Leonardo de Moura
9aaa2d0991
feat(frontends/lean): add new command for testing new congruence lemmas
...
Remark: #congr_simp is the old command, and #congr is the new one.
2015-11-12 18:55:25 -08:00
Leonardo de Moura
5ceac83b6a
feat(frontends/lean/elaborator): restrict the number of places where coercions are considered
...
We do not consider coercions around meta-variables anymore.
2015-11-11 12:37:19 -08:00
Leonardo de Moura
296a4ab940
test(tests/lean/run): add coercion test issue
2015-11-11 12:12:15 -08:00
Leonardo de Moura
fa3baed701
feat(frontends/lean): add new option (elaborator.coercions) for disabling coercions
2015-11-11 11:57:44 -08:00
Leonardo de Moura
9bedbbb739
refactor(library,hott): remove coercions between algebraic structures
...
They are classes, and mixing coercion with type class resolution is a
recipe for disaster (aka counterintuitive behavior).
2015-11-11 11:57:44 -08:00
Leonardo de Moura
fee0cff295
feat(library/blast): add simple indexing data-structure for active hypotheses
2015-11-11 00:02:47 -08:00
Leonardo de Moura
f8f3f9402e
feat(library/blast): major reorg and basic backward chaining action
2015-11-10 17:00:16 -08:00
Leonardo de Moura
fb7a47cf2b
refactor(library/blast): avoid auxiliary local when creating hypothesis for intros
2015-11-09 14:40:39 -08:00
Leonardo de Moura
623d677215
test(tests/lean/run): add missing test
2015-11-08 19:23:33 -08:00
Leonardo de Moura
78f1679b03
feat(library/blast): add basic assumption action
2015-11-08 18:16:34 -08:00
Leonardo de Moura
1027d052cb
test(tests/lean/simplifier1): add HoTT test for simplifier
2015-11-08 14:05:03 -08:00
Daniel Selsam
0061d595d0
feat(library/blast/simplifier): use generated congruence lemmas
2015-11-08 14:05:03 -08:00
Daniel Selsam
30b2bcbea6
test(library/blast/simplifier): simplify zeros and ones
2015-11-08 14:05:03 -08:00
Leonardo de Moura
2dd092069f
test(tests/lean/congr1): add test for congruence lemma generator
2015-11-08 14:05:03 -08:00
Daniel Selsam
049f52bfe9
test(library/simplifier): fix name in test
2015-11-08 14:05:03 -08:00
Daniel Selsam
bacb9f99aa
fix(logic/quantifiers): restore original
2015-11-08 14:05:03 -08:00
Daniel Selsam
6c2c82f47c
feat(library/blast/simplifier): conditional rewriting
2015-11-08 14:05:03 -08:00
Daniel Selsam
b727d5810a
feat(library/blast/simplifier): rewrite with tmp locals
2015-11-08 14:05:02 -08:00
Daniel Selsam
25f507e46f
test(library/simplifier): add compute intensive test case
2015-11-08 14:05:02 -08:00
Daniel Selsam
cbddd81a9e
test(library/simplifier): add tests for numeral normalization
2015-11-08 14:05:02 -08:00
Daniel Selsam
8e5e8e6540
feat(library/blast/simplifier): basic infrastructure
2015-11-08 14:05:02 -08:00
Leonardo de Moura
ba477a0e98
feat(library/congr_lemma_manager): handle simple congruence lemmas
2015-11-08 14:05:02 -08:00
Leonardo de Moura
809168c05b
test(tests/lean/extra): add temp test for congruence manager
2015-11-08 14:05:02 -08:00
Leonardo de Moura
2482c49729
test(frontends/lean): add #replace command for debugging purposes
2015-11-08 14:05:01 -08:00
Leonardo de Moura
fb7efa9337
feat(library/type_context): new tmp local_constant policy
2015-11-08 14:05:01 -08:00
Leonardo de Moura
333ba83087
feat(library/type_context): add mk_tmp_local that allows us to specify the pretty printing name
...
We also modify the type inference procedure to preserve the binder names.
2015-11-08 14:05:01 -08:00
Leonardo de Moura
dc203b28db
test(tests/lean/run): add more tests
2015-11-08 14:05:01 -08:00
Leonardo de Moura
d1fa547335
feat(frontends/lean/builtin_cmds): change mask notation at #app_builder command
2015-11-08 14:05:01 -08:00
Leonardo de Moura
f21102a725
feat(frontends/lean): add test commands for new app_builder features
2015-11-08 14:05:01 -08:00
Leonardo de Moura
ee0974650a
feat(library/app_builder): new app_builder on top of type_context
...
The new version is more robust, and invokes type class resolution if needed.
2015-11-08 14:05:00 -08:00
Leonardo de Moura
a26ea2a249
feat(frontends/lean/builtin_cmds): add command for testing app_builder
2015-11-08 14:05:00 -08:00
Leonardo de Moura
3804281919
refactor(library/app_builder): remove app_builder Lua API
2015-11-08 14:05:00 -08:00
Leonardo de Moura
2f06a480fe
test(tests/lean/run/partial_explicit): add test for '@@' operator
2015-11-08 14:05:00 -08:00
Leonardo de Moura
c361fc1f6f
fix(frontends/lean/parser): method for parsing decimals
...
"division" has been renamed to "div"
2015-11-08 14:04:59 -08:00
Jeremy Avigad
697df0e68c
refactor(library/*): use type classes for div and mod
2015-11-08 14:04:59 -08:00
Jeremy Avigad
eea4e4ec55
fix(tests/lean/*): fix tests
2015-11-08 14:04:59 -08:00
Leonardo de Moura
54c5d2ca99
fix(tests/lean/run/univ_bug2): old test
2015-11-08 14:04:58 -08:00
Leonardo de Moura
20539d698f
fix(tests/lean): tests affected by new type class resolution procedure
2015-11-08 14:04:58 -08:00
Leonardo de Moura
abcfe0d805
feat(library/class_instance_resolution): add support for attribute [multiple-instances] in the new type class resolution procedure
2015-11-08 14:04:57 -08:00
Rob Lewis
ce1cbcc205
feat(library/norm_num): give better error message when norm_num fails
2015-11-08 14:04:56 -08:00
Rob Lewis
958add9ef8
feat(library/norm_num): fix numeral normalization to work on new numeral structure; add support for multiplication
2015-11-08 14:04:56 -08:00
Leonardo de Moura
08c061e1fa
refactor(library/data/set): remove [reducible]
annotation from set operations
2015-11-08 14:04:56 -08:00
Leonardo de Moura
6df31d3406
refactor(library/data/nat/basic): mark some theorems as protected to avoid overloading
2015-11-08 14:04:56 -08:00
Leonardo de Moura
4e78e35f77
fix(tests/lean): adjust remaining tests to changes in the standard library
2015-11-08 14:04:56 -08:00
Leonardo de Moura
29763190ad
fix(tests/lean): adjust some tests to changes in the standard library
2015-11-08 14:04:56 -08:00
Leonardo de Moura
81618e30f3
fix(tests/lean/run): adjust some tests to changes in the standard library
2015-11-08 14:04:56 -08:00
Leonardo de Moura
b3c89070e3
fix(tests/lean): test output
2015-10-13 09:57:58 -07:00
Sebastian Ullrich
dbfebd5409
feat(frontends/lean/scanner): add more checks to read_quoted_symbol
2015-10-13 09:52:35 -07:00
Leonardo de Moura
e4f0f6a9b4
feat(library): numeral normalization skeleton
2015-10-08 12:49:12 -07:00
Leonardo de Moura
1c4dea9941
fix(tests/lean): adjust tests to reflect changes in the pretty printer
2015-09-30 17:42:07 -07:00
Leonardo de Moura
542a998f0e
fix(tests/lean): adjust tests to reflect changes in the HoTT library
2015-09-25 09:46:51 -07:00
Leonardo de Moura
28a5ca5809
fix(frontends/lean): fixes #830
2015-09-18 07:51:02 -07:00
Leonardo de Moura
68dc39c106
fix(tests/lean/run/rewriter12): broken test, now ^[
is a token
2015-09-16 08:37:43 -07:00
Leonardo de Moura
df3100d2cd
fix(library/local_context): bug in abstract_locals procedure
2015-09-12 17:17:13 -07:00
Leonardo de Moura
1fdbd681cc
feat(frontends/lean/builtin_exprs): name hypothesis in suffices
...
closes #817
2015-09-03 16:09:39 -07:00
Leonardo de Moura
1dc1574ad4
fix(frontends/lean/parse_table): do not add 'no_info' annotation in tactic expressions
2015-09-02 20:51:06 -07:00
Leonardo de Moura
634c0b5e9d
feat(library/tactic,frontends/lean): propagate new options back to elaborator
2015-09-02 20:34:14 -07:00
Leonardo de Moura
44c6e92a64
fix(tests/lean): notation ℕ is now defined in the top-level
2015-09-01 14:58:14 -07:00
Leonardo de Moura
c84e886c7b
fix(frontends/lean/notation_cmd): fixes #808
...
This commit and 2b1d2c fixes #808
2015-08-31 18:05:58 -10:00
Leonardo de Moura
08169c5ac2
fix(library/unifier): fixes #809
...
Daniel is correct when he says the interaction between choice
case-splits, delta case-splits, and coercions can be subtle.
I believe the following condition
https://github.com/leanprover/lean/blob/master/src/frontends/lean/elaborator.cpp#L111
reduces counter-intuitive behavior. Example, the coercion should not
influence the resulting type.
BTW, by removing this condition, many files in the library broke when I
tried to compile from scratch
make clean-olean
make
I used the following workaround. Given a delta-delta constraint
f a =?= f b
If the terms are types, and no case-split will be performed, then
the delta-delta constraint is eagerly solved.
In principle, we don't need the condition that the terms are types.
However, many files break if we remove it. The problem is that many files in the standard
library are abusing the higher-order unification procedure. The
elaboration problems are quite tricky to solve.
I use the extra condition "the terms are types" because usually if they
are, "f" is morally injective, and we don't really want to unfold it.
Note that the following two cases do not work
check '{1, 2, 3}
check insert 1 (insert 2 (insert 3 empty))
Well, they work if we the num namespace is open, and they are
interpreted as having type (finset num)
2015-08-31 17:59:30 -10:00
Leonardo de Moura
2b1d2c21ad
fix(frontends/lean/util): bug when parsing priorities and numerals are overloaded
2015-08-31 15:08:21 -10:00
Leonardo de Moura
a3c404ac3b
feat(library/tactic/apply_tactic): do not report elaboration failure in apply tactic when proof_state.report_failure() is false
2015-08-21 15:45:52 -07:00
Leonardo de Moura
87349dc355
feat(frontends/lean/token_table): add 'proposition' keyword
2015-08-19 08:05:31 -07:00
Leonardo de Moura
3a72cd9621
fix(frontends/lean): rename multiword keyword "suffices to show" to "suffices"
2015-08-18 17:57:53 -07:00
Leonardo de Moura
3ce8c5d6f7
feat(frontends/lean): add "suffices to show A, from B, C" construct
2015-08-18 17:04:38 -07:00
Leonardo de Moura
9fcf3d4675
fix(tests/lean/extra): discrepancy between tests output when compiling Lean with IGNORE_SORRY
2015-08-18 12:42:22 -07:00
Leonardo de Moura
21c41f50ea
fix(frontends/lean/elaborator): fixes #803
2015-08-17 14:56:41 -07:00
Leonardo de Moura
b07a364d2f
feat(frontends/lean/parser): process multiple parsing actions
...
closes #800
2015-08-17 09:42:10 -07:00
Leonardo de Moura
b0dbc31d4b
test(tests/lean/list_vect_numerals): add test mixing nat,int,real,list,vector
2015-08-16 18:54:14 -07:00
Leonardo de Moura
ea04414058
feat(frontends/lean): allow user to overload notation containing foldr/foldl and/or scoped expressions
...
see new tests for a summary of new features
see issue #800
2015-08-16 18:24:30 -07:00
Leonardo de Moura
eb8f586dba
fix(library/normalize): fixes #801
2015-08-16 14:22:02 -07:00
Leonardo de Moura
5a6a4b45c1
fix(library/definitional/equations): fixes #796
2015-08-14 14:39:23 -07:00
Leonardo de Moura
d2eb99bf11
refactor(library/logic): move logic/choice.lean to init/classical.lean
...
choice axiom is now in the classical namespace.
2015-08-12 18:37:33 -07:00
Leonardo de Moura
cb9830beaf
refactor(library/logic/choice): move prop_decidable instance into namespace 'classical'
2015-08-12 17:06:15 -07:00
Leonardo de Moura
b4024982a2
refactor(library/data): move vector as indexed family to examples folder
2015-08-12 15:05:14 -07:00
Leonardo de Moura
602626803b
fix(frontends/lean/builtin_cmds): 'print axioms' and theorem queue
2015-08-11 21:08:45 -07:00
Leonardo de Moura
5d8d226640
fix(frontends/lean/parser): add support for decimals
...
Decimal numbers are notation for rationals.
If rat.of_num is not available, then an error is generated.
closes #793
2015-08-11 18:44:48 -07:00
Leonardo de Moura
66a59d5b51
feat(frontends/lean/util): remove hack that overrides priority namespace
...
closes #789
2015-08-11 18:01:40 -07:00
Leonardo de Moura
0b8f57841a
feat(frontends/lean/decl_cmds): closes #791
2015-08-11 17:53:33 -07:00
Jeremy Avigad
305f72bf4f
fix(tests/lean): fix three tests broken by setext renaming
2015-08-09 22:14:25 -04:00
Leonardo de Moura
582dbecfd0
feat(library,hott): add notation T1 : T2
as syntax sugar for (focus (T1; all_goals T2))
...
closes #775
2015-08-08 10:16:25 -07:00
Leonardo de Moura
1f34c72192
fix(frontends/lean/parser): fixes #770
2015-08-08 09:48:31 -07:00
Leonardo de Moura
dc2e702373
feat(library/unifier): generate approximate solution for universe constraints of the form (max u ?m =?= max u v)
...
closes #777
2015-08-08 09:29:59 -07:00
Leonardo de Moura
6c5832a564
feat(frontends/lean/decl_cmds): allow recursive examples
...
closes #774
2015-08-08 08:26:25 -07:00
Leonardo de Moura
06f20694c8
fix(frontends/lean/builtin_exprs): fixes #768
2015-08-08 04:20:17 -07:00
Leonardo de Moura
d46dbce86e
feat(library/tactic/tactic): apply substitution in 'then' combinator
...
closes #778
2015-08-08 03:42:21 -07:00
Floris van Doorn
7f76d7e648
fix(tests): update test
2015-08-07 13:34:41 -07:00
Leonardo de Moura
5568085ab9
fix(frontends/lean/elaborator): closes #771
...
Produce nicer error message when type/goal is a metavariable and
universe metavariables have already been instantiated with universe
parameters.
2015-08-07 13:29:22 -07:00
Leonardo de Moura
6a079fdd2d
fix(library/tactic/exact_tactic): fixes #779
2015-08-07 13:29:22 -07:00
Leonardo de Moura
f21647899f
feat(frontends/lean/builtin_exprs): rename 'show' hidden name to 'this'
...
This is useful if 'show' is recursive
2015-08-07 13:29:21 -07:00
Floris van Doorn
11b1f416f6
feat(nat): add unfold attributes to add, mul, sub and of_num in namespace nat_esimp in both libraries
2015-08-04 13:23:20 +02:00
Floris van Doorn
7a780b1b60
feat(hott): various minor changes in the HoTT library
2015-08-04 13:01:11 +02:00
Leonardo de Moura
0309a1e131
fix(tests/lean/extra/show_goal_bag): adjust test to recent changes in the standard library
2015-08-04 06:52:20 +02:00
Leonardo de Moura
1f304ad4b9
fix(frontends/lean/pp): pretty printing 'binder'
...
This commit also replaces many occurrences of 'binders' with 'binder'.
2015-07-31 11:27:38 -07:00
Leonardo de Moura
656b642c4a
fix(frontends/lean): identifier size when using unicode
...
see issue #756
2015-07-30 11:32:24 -07:00
Leonardo de Moura
cc4f18c062
feat(frontends/lean): add "--info" command line option for extracting identifier/keyword information
...
see issue #756
2015-07-30 10:18:03 -07:00
Leonardo de Moura
be61fb0566
feat(frontends/lean/elaborator): add "noncomputable theory" command, display "noncomputable" when printing definitions
...
When the command "noncomputable theory" is used, Lean will not sign an
error when a noncomputable definition is not marked as noncomputable
2015-07-29 17:54:35 -07:00
Leonardo de Moura
b3707ab54a
feat(library/tactic/unfold_rec): fixes #753
2015-07-29 17:13:02 -07:00
Leonardo de Moura
ed41a01a51
fix(frontends/lean/elaborator): fixes #755
2015-07-29 16:41:30 -07:00
Leonardo de Moura
bbd6946a15
refactor(library/logic/axioms): we have only one extra axiom
2015-07-29 13:36:23 -07:00
Leonardo de Moura
6dbcf86fd4
feat(library/logic/axioms): use diaconescu to prove em
...
With the new "noncomputable" feature we can use Hilbert's choice without
being concerned it may accidentaly "leak" inside definitions we don't
want to use it.
2015-07-29 13:01:07 -07:00
Leonardo de Moura
0bda39c8ac
feat(frontends/lean): check for noncomputability when moving theorems from theorem_queue to environment
2015-07-29 13:01:07 -07:00
Leonardo de Moura
69ead0ddd8
feat(frontends/lean/decl_cmds): reject unnecessary "noncomputable" annotations
2015-07-29 13:01:07 -07:00
Leonardo de Moura
74be3031b1
feat(frontends/lean/decl_cmds): sign an error if "noncomputable" keyword is used in the HoTT library or with non-definitions
2015-07-29 13:01:06 -07:00
Leonardo de Moura
308af87b69
feat(library): add 'noncomputable' keyword for the standard library
2015-07-28 21:56:35 -07:00
Leonardo de Moura
7e8a394caf
chore(tests/lean): fix style and adjust tests
2015-07-28 18:15:25 -07:00
Leonardo de Moura
b81d4d50f1
feat(frontends/lean/bultin_cmds): add 'print axioms <declname>' command that prints axioms a giving declaration depends on
2015-07-28 18:15:25 -07:00
Leonardo de Moura
80e3da0526
fix(library/util): fixes #751
2015-07-28 16:30:20 -07:00
Leonardo de Moura
8ee1d35bed
fix(tests/lean/unfold_crash): fixed regression test for bug reported by Rob
2015-07-28 12:51:42 -07:00
Leonardo de Moura
cfa9412f96
fix(frontends/lean): "show goal" localization, add "position", support "by tactic"
2015-07-28 12:48:12 -07:00
Leonardo de Moura
0dc8dc999e
fix(library/tactic/rewrite_tactic): crash when trying to unfold constructor
2015-07-28 12:43:56 -07:00
Leonardo de Moura
08b23d8b4f
test(tests/lean/extra): add test for "show goal" feature
2015-07-27 21:03:16 -07:00
Leonardo de Moura
a3b570c852
test(tests/lean/extra): test for Soonho
2015-07-27 19:32:27 -07:00
Leonardo de Moura
8c06803f54
test(tests/lean): add regression for issue #737
2015-07-27 07:59:18 -07:00
Leonardo de Moura
f7440ff068
fix(tests/lean): adjust tests to reflect changes in the standard library
2015-07-24 09:59:49 -07:00
Leonardo de Moura
bcf057f4f3
feat(frontends/lean): display '[congr]' attribute when printing theorems
2015-07-23 18:52:59 -07:00
Leonardo de Moura
3e6b80d38c
feat(library/util): disable local constant purification when pretty printing goals
...
This feature generates confusion.
2015-07-23 18:52:59 -07:00
Leonardo de Moura
f1a19a10c4
fix(library/util): incorrect hypothesis renaming when pretty printing goals
2015-07-23 18:52:59 -07:00
Leonardo de Moura
e221d38790
feat(library/tactic/assert_tactic): allow duplicate names for hypotheses in assert tactic
2015-07-23 18:52:59 -07:00
Leonardo de Moura
e0209a1532
feat(frontends/lean): better error localization for 'have'-expressions in tactic mode
2015-07-23 18:52:59 -07:00
Leonardo de Moura
faab1e449f
fix(tests/lean/rw_set3): update test to reflect changes in the standard library
2015-07-23 18:52:59 -07:00
Leonardo de Moura
5f4576a7f7
test(tests/lean): add test for '[congr]' attribute validation
2015-07-23 18:52:59 -07:00
Leonardo de Moura
844caf32e4
feat(frontends/lean/bultin_cmds): add 'print [congr]' command for displaying active congruence rules
2015-07-23 18:52:59 -07:00
Leonardo de Moura
933f056fff
feat(library/simplifier): add API for extracting simplification rules defined in a given namespace
2015-07-22 18:47:56 -07:00