Commit graph

373 commits

Author SHA1 Message Date
Leonardo de Moura
54f2c0f254 feat(library/blast/forward): inst_simp should use the left-hand-side as a pattern (if none is provided by the user)
The motivation is to reduce the number of instances generated by ematching.

For example, given

   inv_inv:  forall a, (a⁻¹)⁻¹ = a

the new heuristic uses ((a⁻¹)⁻¹) as the pattern.
This matches the intuition that inv_inv should be used a simplification
rule.

The default pattern inference procedure would use (a⁻¹). This is bad
because it generates an infinite chain of instances whenever there is a
term (a⁻¹) in the proof state.
By using (a⁻¹), we get
   (a⁻¹)⁻¹ = a
Now that we have (a⁻¹)⁻¹, we can match again and generate
   ((a⁻¹)⁻¹)⁻¹ = a⁻¹
and so on
2015-12-31 20:20:39 -08:00
Jeremy Avigad
7f25dd6646 feat(library/data/nat/bigops): sums and products over intervals of natural numbers 2015-12-31 15:16:57 -08:00
Jeremy Avigad
a28ded641c refactor(library/algebra/interval): rename intervals to interval 2015-12-31 15:16:57 -08:00
Jeremy Avigad
86b64cf43b feat(library/data/set/*,library/algebra/group_bigops): better finiteness lemmas, reindexing for big operations 2015-12-31 15:16:57 -08:00
Leonardo de Moura
b35abcc6a8 refactor(library): rename strategy "msimp" ==> "inst_simp"
"inst_simp" means "instantiate simplification lemmas"
The idea is to make it clear that this strategy is *not* a simplifier.
2015-12-31 12:45:48 -08:00
Leonardo de Moura
dc6a3e30c0 refactor(library): test simp and msimp in the standard library 2015-12-30 11:22:58 -08:00
Leonardo de Moura
41a01bb606 feat(library/blast/forward/ematch): add option 'blast.ematch.max_instances' 2015-12-29 20:36:11 -08:00
Leonardo de Moura
0148bb08fd feat(library/blast): add 'ematch_simp' strategy for blast and msimp shortcut for it.
This strategy is based on ematching and congruence closure, but it uses
the [simp] lemmas instead of [forward] lemmas.
2015-12-29 20:04:31 -08:00
Leonardo de Moura
726867a8fb refactor(library/algebra/ring): minor cleanup 2015-12-29 11:16:18 -08:00
Leonardo de Moura
3557bd36e7 refactor(library/algebra/group): cleanup proofs using simp and add [simp] attribute 2015-12-29 10:48:47 -08:00
Jeremy Avigad
c52ffda0e0 feat(library/algebra/intervals): add notation for intervals 2015-12-26 10:45:53 -08:00
Jeremy Avigad
84cdf3d36d feat(library/theories/analysis/normed_space): start theory of normed spaces for analysis 2015-12-22 16:39:13 -05:00
Jeremy Avigad
5b3fbf1618 feat(library/algebra/module): make a start on modules and vector spaces (with material from Nathaniel Thomas) 2015-12-22 16:39:13 -05:00
Jeremy Avigad
baf11d0018 feat(library/algebra/ring_bigops): make start on file with more properties of sums and products 2015-12-22 16:39:13 -05:00
Jeremy Avigad
0e3b13f1a0 refactor(library/algebra): combine group_bigops and group_set_bigops 2015-12-22 16:39:13 -05:00
Soonho Kong
f1daf8f24e fix(algebra/group.lean): remove unnecessary use of add.assoc from theorem bit0_add_bit1_helper 2015-12-22 09:12:57 -05:00
Floris van Doorn
da5f10ce63 feat(hott): minor fixes. allow the usage of numerals for trunc_index 2015-12-17 12:46:16 -08:00
Leonardo de Moura
42eda36225 chore(library/algebra/ordered_ring): use 'note' 2015-12-15 09:33:57 -08:00
Leonardo de Moura
193a9d8cde refactor(library/norm_num): avoid manual constant name initialization
@rlewis1988 We group all Lean constants used in the C++ code at
src/library/constants.txt

Jeremy and Floris check this file before renaming constants in the
library. So, they can quickly decide whether C++ code will be affected
or not.

We also have a python script for initializing the C++ name objects.
To use the script:
   - go to src/library
   - execute
       python ../../script/gen_constants_cpp.py constants.txt

It will create the boring initialization and finalization code, and
declare a procedure get_<id>_name() for each constant in the file constants.txt.

I also move the norm_num1.lean to the set of unit tests that are
executed whenever we push a commit to the main branch.

I found an assertion violation at line 606. Could you take a look?

Best,
Leo
2015-12-13 21:38:59 -08:00
Leonardo de Moura
49eae56db4 test(library/theories/group_theory): test auto-include in the group theory library 2015-12-13 13:40:54 -08:00
Leonardo de Moura
ef546c5c5b refactor(library): use anonymous instance implicit arguments 2015-12-13 11:46:48 -08:00
Floris van Doorn
2325d23f68 feat(hott): port nat and int from the standard library 2015-12-09 12:36:11 -08:00
Floris van Doorn
46739c8b70 feat(hott/algebra): port abstract structures 2015-12-09 12:34:06 -08:00
Leonardo de Moura
b36ce49f2b fix(tests,doc): adjust tests to changes in the standard library 2015-12-05 23:52:16 -08:00
Leonardo de Moura
b94e31a72c refactor(library): remove algebra namespace 2015-12-05 23:50:01 -08:00
Leonardo de Moura
fa938bb94c feat(frontends/lean/decl_cmds): allow modifier to be provided after the 'attribute' keyword, test 'at' keyword 2015-12-05 11:50:08 -08:00
Daniel Selsam
934b502c6f refactor(algebra/numeral): prove lemmas incrementally 2015-12-05 08:56:56 -08:00
Daniel Selsam
2e4765482b fix(algebra/ring): fix names 2015-12-05 08:56:56 -08:00
Daniel Selsam
a04c28d4c9 refactor(library/algebra): construct simplifier sets incrementally 2015-12-04 18:28:56 -08:00
Leonardo de Moura
564e8f947d refactor(library): cleanup 2015-11-22 14:10:02 -08:00
Leonardo de Moura
5a98a2538c refactor(library): move basic simp/congr rules to init folder, delete some legacy files 2015-11-20 16:38:10 -08:00
Daniel Selsam
2eeab1c757 fix(algebra/simplifier): use export 2015-11-16 20:39:15 -08:00
Daniel Selsam
49ff8640d9 fix(library/blast/simplifier): use ac rules for numerals 2015-11-16 20:39:15 -08:00
Daniel Selsam
8ca5d87f0b feat(library/blast/simplifier): rely on norm_num for recursion 2015-11-16 20:33:22 -08:00
Leonardo de Moura
dfaf1c2ba3 refactor(library): move basic theorems to init, remove sorry's from algebra/simplifier.lean 2015-11-16 10:26:09 -08:00
Daniel Selsam
5e8068b2b2 feat(library/blast/simplifier): draft of fusion 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
0dc31227f8 feat(library/init/logic): mark ne reducible 2015-11-15 15:09:02 -08:00
Daniel Selsam
4ba6b4f3f1 fix(algebra/simplifier): reference norm_num namespace 2015-11-12 21:28:11 -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
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
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
Jeremy Avigad
697df0e68c refactor(library/*): use type classes for div and mod 2015-11-08 14:04:59 -08:00
Jeremy Avigad
da5bd03656 refactor(library/init/nat,library/data/nat/*): chagne dots to underscores in protected names 2015-11-08 14:04:59 -08:00
Jeremy Avigad
6dfaf1863c refactor(library/data/int/{basic,order}): protect theorem names 2015-11-08 14:04:59 -08:00
Jeremy Avigad
dc8858d764 refactor(library/init/nat,library/): protect more nat theorems 2015-11-08 14:04:59 -08:00
Jeremy Avigad
7bb2ffb79a refactor(library/data/nat/*): protect some theorems in nat 2015-11-08 14:04:59 -08:00
Leonardo de Moura
c2ed5d3f1f fix(library/algebra/category/constructions): make proof more robust 2015-11-08 14:04:58 -08:00
Leonardo de Moura
65d7c05737 fix(library/algebra/complete_lattice): avoid looping instances 2015-11-08 14:04:57 -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
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
26eb6fa849 feat(*): new numeral encoding 2015-11-08 14:04:55 -08:00
Leonardo de Moura
8ee214f133 checkpoint: new numeral encoding 2015-11-08 14:04:55 -08:00
Leonardo de Moura
07b33ec75e fix(library/data/int,library/data/rat): int and rat 2015-11-08 14:04:54 -08:00
Leonardo de Moura
744d1cba3d feat(library,hott,frontends/lean): avoid keywords with hyphen 2015-11-08 14:04:54 -08:00
Leonardo de Moura
3369152559 fix(library/data,library/theories): fin, bag, finset, hf, list, ... 2015-11-08 14:04:54 -08:00
Leonardo de Moura
e6d7e89419 fix(library/data/int,library/data/nat): nat and int 2015-11-08 14:04:54 -08:00
Leonardo de Moura
a618bd7d6c refactor(library): use type classes for encoding all arithmetic operations
Before this commit we were using overloading for concrete structures and
type classes for abstract ones.

This is the first of series of commits that implement this modification
2015-11-08 14:04:54 -08:00
Leonardo de Moura
06e35b4863 fix(library/algebra/numeral): remove redundant definitions 2015-11-08 14:04:54 -08:00
Leonardo de Moura
e4f0f6a9b4 feat(library): numeral normalization skeleton 2015-10-08 12:49:12 -07:00
Sebastian Ullrich
d1b5031dbd feat(library): add some spacing hints 2015-09-30 17:36:32 -07:00
Jeremy Avigad
aa8dfba5a5 feat/fix(library/algebra/*): add some useful theorems, fix implicit arguments 2015-09-20 20:47:30 -04:00
Rob Lewis
8fef4a95d4 chore(library/algebra/ordered_field): generalize theorem from reals 2015-09-17 16:23:22 -04:00
Rob Lewis
f5dcb1e0a9 feat(library/algebra): add missing theorems to algebra library 2015-09-16 08:28:11 -07:00
Jeremy Avigad
948cdee366 feat(library/algebra/ordered_group): add variant of triangle inequality 2015-09-12 21:46:09 -04:00
Jeremy Avigad
1affeec3c6 fix(library/algebra/ordered_filed): rename theorems 2015-09-12 21:46:09 -04:00
Rob Lewis
8d1f449491 refactor(library/data/real): move and rename theorems 2015-09-11 08:52:53 -07:00
Leonardo de Moura
3c1d6ec67a feat(library/algebra/algebra): add link to complete lattices module 2015-09-04 13:04:36 -07:00
Sebastian Reuße
f8a773be11 chore(library/algebra): remove obsolete link. 2015-09-04 09:41:34 +02:00
Jeremy Avigad
2ab7928257 refactor(library/data/set/basic): standardize intro and elim theorem names 2015-09-03 15:38:27 -07:00
Jeremy Avigad
51e0d31304 refactor(library/algebra/ordered_ring,ordered_field): move theorems from ordered_field to ordered_ring 2015-09-01 14:47:19 -07:00
Jeremy Avigad
7d72c9b6b5 refactor(library/algebra/{field,ordered_field}, library/*): more renaming, setting implicit arguments
Many theorems for division rings and fields have stronger versions for discrete fields, where we
assume x / 0 = 0. Before, we used primes to distinguish the versions, but that has the downside
that e.g. for rat and real, all the theorems are equally present. Now, I qualified the weaker ones
with division_ring.foo or field.foo. Maybe that is not ideal, but let's try it.

I also set implicit arguments with the following convention: an argument to a theorem should be
explicit unless it can be inferred from the other arguments and hypotheses.
2015-09-01 14:47:19 -07:00
Jeremy Avigad
93c2d1e9d0 refactor(library/algebra/ordered_field): rename theorems to maintain consistency with other parts of the library 2015-09-01 14:47:19 -07:00
Jeremy Avigad
7dda69fec7 feat/refactor(library/theories/number_theory/irrational_roots,library/*): show nth roots irrational, and add lots of missing theorems 2015-08-16 23:23:23 -04:00
Jeremy Avigad
e416291135 feat(library/algebra/*,library/data/*): small additions and changes 2015-08-14 18:49:57 -07:00
Jeremy Avigad
4a36f843f7 refactor(library/algebra/group_power,library/*): change definition of pow
I changed the definition of pow so that a^(succ n) reduces to a * a^n rather than a^n * a.

This has the nice effect that on nat and int, where multiplication is defined by recursion on the right,
a^1 reduces to a, and a^2 reduces to a * a.

The change was a pain in the neck, and in retrospect maybe not worth it, but oh, well.
2015-08-14 18:49:57 -07:00
Jeremy Avigad
f9f4cd2197 feat(library/algebra/ordered_field,library/data/int/div): prove sign a = a / abs a 2015-08-14 18:49:57 -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
f9b2b93f7a refactor(library/algebra/complete_lattice): add alternative definitions of complete_lattice and convertions between them 2015-08-09 20:40:07 -07:00
Jeremy Avigad
b130a144c8 feat(library/data/set/filter): add filters, show they form a complete lattice 2015-08-09 22:14:25 -04:00
Jeremy Avigad
eca3437388 refactor(library/algebra/ring): add alternate names for dvd.intro, dvd.intro_left 2015-08-09 22:13:18 -04:00
Leonardo de Moura
7ddcfa5225 feat(library/algebra/complete_lattice): add basic theorems for complete_lattices 2015-08-08 23:18:36 -07:00
Jeremy Avigad
f97298394b feat(library/data/nat/bigops,library/data/set/card,library/*): add set versions of bigops for nat
This required splitting data/set/card.lean from data/set/finite.lean, to avoid dependencies
2015-08-08 17:20:23 -04:00
Leonardo de Moura
ecf9c825ac feat(library/algebra/complete_lattice): add 'complete_lattice' structure 2015-08-08 07:38:49 -07:00
Jeremy Avigad
fce042ef79 feat(library/algebra/group_set_bigops.lean): add set versions of bigops 2015-08-08 04:23:52 -07:00
Jeremy Avigad
eaf886cb5a refactor(library/algebra/group_bigops,library/*): put group_bigops in 'finset' namespace, in preparation for set versions 2015-08-08 04:23:52 -07:00
Rob Lewis
00262e4e47 feat(library/algebra): finish adding one-directional versions of iff theorems 2015-08-07 13:30:23 -07:00
François G. Dorais
fc6b41ee0e fix(algebra/group_power): change notation suggested by @avigad 2015-08-04 16:23:31 -04:00
François G. Dorais
155e22c92c feat(library/algebra/group_power): add times (additive variant of power) 2015-08-04 16:23:31 -04:00
Jeremy Avigad
9ff0097223 refactor(library/algebra/{lattice,order},library/data/nat): split lattice from order, make nat an instance of discrete linear order 2015-08-03 22:41:56 -04:00
Jeremy Avigad
0def951efa refactor(library/data/nat/sub,*): get rid of diff, tidy some max and min theorems 2015-08-03 22:41:56 -04:00
François G. Dorais
131b344519 feat(library/algebra/group_power): add times (additive variant of power) 2015-08-04 01:58:57 +02:00
Rob Lewis
e004ed8cba feat(library/algebra): add one directional versions of iff theorems 2015-08-03 17:16:18 -04:00
Rob Lewis
82a9bc757a feat(library/algebra): move theorems from real to algebra 2015-08-03 15:01:32 -04:00
Leonardo de Moura
a53ac25ca8 chore(library): remove outdated comments 2015-07-31 08:37:24 -07:00
Rob Lewis
1693932c9f feat(library/algebra/group): add theorem to comm group 2015-07-31 08:28:37 -07:00
Rob Lewis
f929f82cb4 feat(library/data/real): fill in remaining sorrys in supremum property proof 2015-07-31 08:28:36 -07:00