Leonardo de Moura
5e14b4ebe8
fix(library,hott): avoid rewrite with patterns of the form (?M ...)
2016-03-09 15:39:17 -08:00
Floris van Doorn
bf403e124a
feat(nat/div): port to HoTT library
2016-03-03 10:13:20 -08:00
Jeremy Avigad
ebb3e60096
feat(library/algebra/monotone): add properties of monotone functions
2016-03-02 22:01:35 -05:00
Leonardo de Moura
fbe5188480
refactor(frontends/lean): remove 'by+' and 'begin+' tokens
2016-02-29 13:45:43 -08:00
Leonardo de Moura
faa0031d4e
refactor(library,hott): remove 'by+' and 'begin+'
2016-02-29 13:15:48 -08:00
Leonardo de Moura
deb1b3dc79
refactor(library): replace assert
-exprs with have
-exprs
2016-02-29 11:53:26 -08:00
Leonardo de Moura
101cf1ec4c
feat(frontends/lean): remove difference between 'have' and 'assert'
2016-02-29 11:28:20 -08:00
Leonardo de Moura
768ba1c363
refactor(library/hott): remove more unnecessary annotations
2016-02-25 14:30:00 -08:00
Leonardo de Moura
510168a387
refactor(library,hott): remove unnecessary annotations
2016-02-25 12:26:20 -08:00
Leonardo de Moura
146edde5b3
feat(library/class): mark instances as quasireducible by default
...
quasireducible are also known as lazyreducible.
There is a lot of work to be done.
We still need to revise blast, and add a normalizer for type class
instances. This commit worksaround that by eagerly unfolding
quasireducible.
2016-02-25 12:11:29 -08:00
Leonardo de Moura
42fbc63bb6
fix(library/tc_multigraph): avoid name collisions
...
@avigad, @fpvandoorn, @rlewis1988, @dselsam
I changed how transitive instances are named.
The motivation is to avoid a naming collision problem found by Daniel.
Before this commit, we were getting an error on the following file
tests/lean/run/collision_bug.lean.
Now, transitive instances contain the prefix "_trans_".
It makes it clear this is an internal definition and it should not be used
by users.
This change also demonstrates (again) how the `rewrite` tactic is
fragile. The problem is that the matching procedure used by it has
very little support for solving matching constraints that involving type
class instances. Eventually, we will need to reimplement `rewrite`
using the new unification procedure used in blast.
In the meantime, the workaround is to use `krewrite` (as usual).
2016-02-04 13:15:42 -08:00
Leonardo de Moura
cb12b9b876
refactor(library): cleanup proofs
...
Fixed proofs that broke when we tried to implement a "checkpoint" have.
2016-02-03 19:52:23 -08:00
Jeremy Avigad
173368801b
fix(library/algebra/interval): rename namespace, and move a theorem
2016-01-03 18:52:25 -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
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
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
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
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
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
b94e31a72c
refactor(library): remove algebra namespace
2015-12-05 23:50:01 -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
697df0e68c
refactor(library/*): use type classes for div and mod
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
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
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
bceac9ece5
refactor(library/data/nat/sub): cleanup nasty proofs
2015-11-08 14:04:58 -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
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
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
07b33ec75e
fix(library/data/int,library/data/rat): int and rat
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
Sebastian Ullrich
d1b5031dbd
feat(library): add some spacing hints
2015-09-30 17:36:32 -07:00
Rob Lewis
ee257a7c6c
chore(library/data/{nat,real}): rename and move iterate function
2015-09-16 08:28:11 -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
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
6fd3affeb1
feat(library/data/finset/equiv): show that (finset nat) is isomorphic to nat
2015-08-11 15:54:14 -07:00