Commit graph

918 commits

Author SHA1 Message Date
Jeremy Avigad
173368801b fix(library/algebra/interval): rename namespace, and move a theorem 2016-01-03 18:52:25 -08:00
Jeremy Avigad
721f6c87bf feat(library/data/set/basic): add some theorems 2016-01-03 18:52:25 -08:00
Leonardo de Moura
66a722ff5a feat(library/unifier): remove "eager delta hack", use is_def_eq when delta-constraint does not have metavariables anymore
The "eager-delta hack" was added to minimize problems in the interaction
between coercions and delta-constraints.
2016-01-03 12:39:32 -08:00
Leonardo de Moura
4f1415174e refactor(library/data): "union." ==> "union_", "inter." ==> "inter_" 2016-01-01 16:13:44 -08:00
Leonardo de Moura
ac9d6c2021 refactor(library/data/bool): cleanup bool proofs and fix bxor definition 2016-01-01 13:52:42 -08:00
Leonardo de Moura
52ec7e6d57 feat(library/blast/recursor): add 'blast.recursor.max_rounds' options and iterative deepening for recursor_strategy 2016-01-01 13:09:37 -08:00
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
0fb398c217 fix(library/data/nat/bigops): delete some blank lines 2015-12-31 15:16:57 -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
12a69bad04 refactor(library/data/finset/basic,library/*): get rid of finset singleton 2015-12-31 15:16:57 -08:00
Jeremy Avigad
8a00a431e8 refactor(library/data/finset/basic): rename theorem 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
c3dfabf741 feat(library/blast/strategies/portfolio): add 'rec_simp'
recursors followed by simplification
2015-12-31 15:00:38 -08:00
Leonardo de Moura
bd03619b5c refactor(library/data/list/basic): test 'rec_inst_simp' blast strategy
recursor + instantiate [simp] lemmas + congruence closure
2015-12-31 13:03:47 -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
7462874a4a refactor(library): cleanup nat/int proofs 2015-12-29 12:39:53 -08:00
Leonardo de Moura
a307a0691b refactor(library/data/nat/basic): cleanup some of the nat proofs 2015-12-29 11:43:56 -08:00
Leonardo de Moura
b117a10f82 refactor(library/blast/simplifier): use priority_queue to store simp/congr lemmas, use name convention used at forward/backward lemmas, normalize lemmas when blast starts, cache get_simp_lemmas 2015-12-28 17:52:57 -08:00
Leonardo de Moura
f177082c3b refactor(*): normalize metaclass names
@avigad and @fpvandoorn, I changed the metaclasses names. They
were not uniform:
- The plural was used in some cases (e.g., [coercions]).
- In other cases a cryptic name was used (e.g., [brs]).

Now, I tried to use the attribute name as the metaclass name whenever
possible. For example, we write

   definition foo [coercion] ...
   definition bla [forward] ...

and

  open [coercion] nat
  open [forward] nat

It is easier to remember and is uniform.
2015-12-28 10:39:15 -08:00
Jeremy Avigad
549feb5d7f feat(library/data/set/basic): add notation and theorems for large unions and intersections 2015-12-26 08:02:04 -08:00
Jeremy Avigad
6913eb0c76 refactor(library/init/subtype.lean): put subtype notation in the namespace
The notation { x : A | P x } is overloaded in set, and is ambiguous.
2015-12-22 16:39:13 -05:00
Jeremy Avigad
8ccafc4267 fix(library/init/function): fix typo 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
Floris van Doorn
da5f10ce63 feat(hott): minor fixes. allow the usage of numerals for trunc_index 2015-12-17 12:46:16 -08:00
Sebastian Ullrich
2185ee7e95 feat(library/tactic): make let tactic transparent, introduce new opaque note tactic
The new let tactic is semantically equivalent to let terms, while `note`
preserves its old opaque behavior.
2015-12-14 10:14:02 -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
Leonardo de Moura
1b80dc0df6 feat(library/data/real/basic): improve performance 2015-12-09 10:57:16 -08:00
Jacob Gross
ab91f8dd5f feat(library/data/set/basic): add sInter_insert
add sInter supporting lemma
2015-12-07 21:39:30 -08:00
Leonardo de Moura
b94e31a72c refactor(library): remove algebra namespace 2015-12-05 23:50:01 -08:00
Jacob Gross
dd6bed371a feat(library/data/set/basic): Added a supporting lemma for sUnion, which will be essential for proofs by induction on finite sets 2015-12-02 23:05:59 -08:00
Joe Hendrix
719a78d541 style(library/data/bv): Use syntax for dite 2015-12-02 23:01:26 -08:00
Joe Hendrix
3574ad1f11 style(library/data/bv): Simplify from_bv and bv_mul 2015-12-02 23:01:26 -08:00
Joe Hendrix
fd1999a97f feat(library/data/bv): Add signed/unsigned comparisons. 2015-12-02 23:01:26 -08:00
Joe Hendrix
5cf6e18af0 refactor(library/data/bv): Cleanup formatting inconsistencies 2015-12-02 23:01:26 -08:00
Joe Hendrix
3fddca81b5 feat(library/data/bv): Add preliminary bitvector ops. 2015-12-02 23:01:26 -08:00
Joe Hendrix
e4c839f362 feat(library/data/tuple): Add tuple combinators 2015-12-02 23:01:26 -08:00
Joe Hendrix
42afd89583 feat(library/data/list): Add additonal list combinators. 2015-12-02 23:01:26 -08:00
Joe Hendrix
63a17a3f48 feat(library/data/bool): Add bxor definition 2015-12-02 23:01:26 -08:00
Floris van Doorn
0537ef2bd9 chore(*): add me as author to files where I made nontrivial contributions 2015-11-22 14:21:26 -08:00
Floris van Doorn
482c68b387 feat(*/list): add some computation rules for lists in both libraries 2015-11-22 14:21:26 -08:00
Floris van Doorn
5abc450fad feat(list): port list.basic from the standard library 2015-11-22 14:21:26 -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
Jeremy Avigad
98ddc62f6c feat(library/data/complex): add complex numbers 2015-11-12 21:05:38 -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
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
eea4e4ec55 fix(tests/lean/*): fix tests 2015-11-08 14:04:59 -08:00
Jeremy Avigad
2beb0030d6 refactor(library/*): protect sub in nat, div in nat and int 2015-11-08 14:04:59 -08:00
Jeremy Avigad
b1719c3823 refactor(library/real/*): protect theorems 2015-11-08 14:04:59 -08:00
Jeremy Avigad
9e5a27dc77 refactor(library/{pnat,rat,real}/*): protect theorems in pnat and rat 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
4eafcfe945 chore(library/data/fintype/function): fix indentation 2015-11-08 14:04:58 -08:00
Leonardo de Moura
a10aef0792 fix(library/data/tuple): modify definition to make sure we can compile it using new type class resolution procedure
The issue are universe level constraints that cannot be solved by the
new procedure.
2015-11-08 14:04:58 -08:00
Leonardo de Moura
5468076400 refactor(library/data): cleanup proofs 2015-11-08 14:04:58 -08:00
Leonardo de Moura
bd41b6ea13 refactor(library/data/rat/basic): cleanup proof 2015-11-08 14:04:58 -08:00
Leonardo de Moura
ac01e9e352 refactor(library/data/int/basic): cleanup proof 2015-11-08 14:04:58 -08:00
Leonardo de Moura
bceac9ece5 refactor(library/data/nat/sub): cleanup nasty proofs 2015-11-08 14:04:58 -08:00
Leonardo de Moura
13ccbaa0d9 refactor(library/data/encodable): mark auxiliary theorems as private 2015-11-08 14:04:56 -08:00
Leonardo de Moura
f14d0523ec refactor(library/data/set/filter): add missing [instance] attribute 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
6779cb4fc6 refactor(library/data/real/division): make sure \sy and / notation for reals is available even when we do not open the namespace algebra 2015-11-08 14:04:56 -08:00
Leonardo de Moura
fa937395d9 fix(library/data/real): minor adjustments 2015-11-08 14:04:55 -08:00
Rob Lewis
670ac6ae19 fix(real/order): remove sorry 2015-11-08 14:04:55 -08:00
Rob Lewis
06c1a97259 feat(library/real): fix real.complete 2015-11-08 14:04:55 -08:00
Rob Lewis
0d0df0417d fix(library/real): fix real.division 2015-11-08 14:04:55 -08:00
Rob Lewis
f4e1f3bb1b feat(library/data/real): fix real.order 2015-11-08 14:04:55 -08:00
Leonardo de Moura
fbe80d48dc chore(library): remove "set_option pp.*" commands 2015-11-08 14:04:55 -08:00
Leonardo de Moura
ce21996635 feat(library): define custom recursors for nat, and minimize the use of krewrite 2015-11-08 14:04:55 -08:00
Leonardo de Moura
6e44a42779 refactor(library/data/int,library/data/rat): rename theorems: of_nat_zero, of_nat_one, of_int_zero, of_int_one 2015-11-08 14:04:55 -08:00
Leonardo de Moura
e8454fad26 fix(library/data/real/basic): remove obsolete notation declarations 2015-11-08 14:04:55 -08:00
Jeremy Avigad
7f88e9ad33 fix(library/data/real,library/theories/group_theory): group theory and real/basic 2015-11-08 14:04:55 -08:00
Leonardo de Moura
0eec984485 fix(library/data/equiv): minor adjustment 2015-11-08 14:04:55 -08:00
Leonardo de Moura
724aacb2c1 fix(library): remove "-[notations]" hack at "open -[notations] algebra" 2015-11-08 14:04:55 -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
8657ccfc04 fix(library/data/int/gcd): remove sorry 2015-11-08 14:04:55 -08:00
Leonardo de Moura
a9f5735bb5 fix(library/data/int/basic): remove sorry's 2015-11-08 14:04:55 -08:00
Leonardo de Moura
843e95ade6 fix(library/data/real/basic): some real theorems 2015-11-08 14:04:55 -08:00
Leonardo de Moura
c0990d1902 fix(library/data/pnat): pnat with type classes 2015-11-08 14:04:55 -08:00
Leonardo de Moura
a23c05549e fix(library/data/int/div): int div 2015-11-08 14:04:54 -08:00
Jeremy Avigad
1ffe62341b fix(library/data/int): more int problems 2015-11-08 14:04:54 -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
27b4eb2058 fix(library/data): hf, int, nat, pnat 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
5f967f40b2 fix(library/data/nat/basic): simplify two lemmas 2015-10-07 10:32:20 -07:00
Leonardo de Moura
ede23a3267 feat(hott,library): add additional spacing hints 2015-09-30 17:41:44 -07:00
Sebastian Ullrich
d1b5031dbd feat(library): add some spacing hints 2015-09-30 17:36:32 -07:00
Jeremy Avigad
719e9043cd feat(library/data/set/equinumerosity): add Cantor's theorem, Schroeder-Bernstein theorem 2015-09-25 09:32:28 -07:00
Jeremy Avigad
2c7526e1fc feat(library/*): add various theorems 2015-09-25 09:32:28 -07:00
Jeremy Avigad
9561e379c7 fix(library/data/set/basic): make set_of reducible 2015-09-20 19:54:46 -04:00
Rob Lewis
ee257a7c6c chore(library/data/{nat,real}): rename and move iterate function 2015-09-16 08:28:11 -07:00