Rob Lewis
eb05741ce6
feat(data/set): add missing set membership theorems
2016-02-12 11:50:10 -08:00
Rob Lewis
685049988c
feat(theories/analysis): define metric topology
2016-02-12 11:50:10 -08:00
Rob Lewis
b8d86ffe48
feat(theories/topology): add theorem for proving sets open
2016-02-12 11:50:10 -08:00
Floris van Doorn
e14d4a4c0c
feat(init/wf): port from standard library to HoTT library
...
After this commit we need some more advanced theorems in init/wf, notably function extenstionality.
For this reason I had to refactor the init folder a little bit.
To keep the init folders in both libraries similar, I did the same refactorization in the standard library, even though that was not required for the standard library
2016-02-09 10:03:48 -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
Rob Lewis
87ec5ada07
fix(analysis/metric_space): unnecessary import, style, remove unnecessary lines
2016-02-04 11:03:28 -08:00
Rob Lewis
a675a5ede2
fix(algebra/ordered_field, analysis/real_limit): generalize theorem to ordered fields
2016-02-04 11:03:28 -08:00
Rob Lewis
f402f322aa
feat(theories/analysis): add theorems about convergent sequences, functions, and continuity
2016-02-04 11:03:28 -08:00
Rob Lewis
ffed988a34
feat(data/list): add missing theorems
2016-02-04 11:03:28 -08:00
Rob Lewis
dcfc496992
feat(algebra/ordered_field): ad missing theorem
2016-02-04 11:03:28 -08:00
Rob Lewis
40a1371cd0
feat(theories/analysis): define real square roots
2016-02-04 11:03:28 -08:00
Rob Lewis
796e16bdb7
feat(library/theories/analysis): add theorems about convergent functions in metric spaces
2016-02-04 11:03:28 -08:00
Rob Lewis
cb4f71b16c
feat(library/data/real): add more theorems concerning rationals embedded in reals
2016-02-04 11:03:28 -08:00
Rob Lewis
110036c4dc
feat(library/algebra/ordered_field): add missing theorems
2016-02-04 11:03:28 -08:00
Leonardo de Moura
790dbc53c3
refactor(library/algebra/ring): cleanup
2016-02-03 20:07:12 -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
Leonardo de Moura
c779590517
feat(library/algebra/ring): add lemma
2016-01-30 16:34:59 -08:00
Jeremy Avigad
b4d8b1db33
fix(library/library.md): update and correct information. Fixes #973 .
2016-01-24 16:26:58 -08:00
Jeremy Avigad
27865e1c8b
feat(library/algebra/order_bigops): add min and max over finsets and finite sets
2016-01-24 16:26:57 -08:00
Jeremy Avigad
53b2d90c90
feat(library/data/{set,finset}): add some useful facts
2016-01-24 16:26:57 -08:00
Jeremy Avigad
69d953126a
refactor(library/algebra/ordered_group,ordered_ring): add versions of classes with decidable linear order, for min and max
2016-01-24 16:26:57 -08:00
Jeremy Avigad
1980baf784
feat(library/algebra/group_bigops): add Prod_semigroup, for cases without a unit
2016-01-24 16:26:57 -08:00
Leonardo de Moura
dc5ca99afa
fix(library/data/real/basic): unnecessary level of indirection
...
At real.comm_ring, `add` is `@add real real_has_add`.
This is bad for any tactic (e.g., blast) that only unfolds reducible definitions.
`add` is not reducible. So, the tactic will not be able to establish
that `@add real real_has_add` is definitionally equal to `real.add`.
2016-01-24 13:37:15 -08:00
Jeremy Avigad
86fc326e08
refactor/feat(library/theories/analysis/*): reorganize analysis library and add some theorems
2016-01-16 10:53:56 -08:00
Leonardo de Moura
b975717875
feat(init/logic): add cast_heq
2016-01-13 14:18:01 -08:00
Leonardo de Moura
8f7b533ca1
refactor(library): move 'cast' to init folder
2016-01-13 11:17:42 -08:00
Leonardo de Moura
c646c3cacc
feat(library/init/logic): add subsingleton.helim with heterogeneous equality
2016-01-10 16:47:45 -08:00
Leonardo de Moura
d3242a2068
refactor(library): rename heq.of_eq heq.to_eq auxiliary lemmas
2016-01-09 12:32:18 -08:00
Johannes Hölzl
12571c92d8
refactor(library/algebra): explicit parameters also for fun instances
2016-01-06 10:58:14 -08:00
Johannes Hölzl
6d6a00f48b
refactor(library/algebra): fix theorem names
2016-01-06 10:57:55 -08:00
Johannes Hölzl
f7ea9a5f64
feat(library/algebra): add theory about Galois connections
...
Adds a small theory about Galois connections, i.e. order theoretic adjoints, and their relations to
least upper and greatest lower bounds.
2016-01-06 10:57:32 -08:00
Johannes Hölzl
9c28552afb
feat(library/algebra): add lattice instances for Prop, fun, and set
...
Adds weak_order, lattice and complete_lattice instances for Prop, fun, and set. Adds supporting
theorems to various other places.
2016-01-06 10:57:32 -08:00
Rob Lewis
458725e63f
feat(library/algebra): add missing theorems to group and ordered ring
2016-01-04 14:45:39 -05:00
Rob Lewis
031831f101
feat(library/tactic): add replace tactic
2016-01-04 14:43:31 -05:00
Jeremy Avigad
d9118ded76
feat(library/theories/topology/basic): show that generated topology is initial
2016-01-03 18:52:25 -08:00
Jeremy Avigad
4289daddcb
refactor(library/data/{set,finset}/basic,library/*): change notation for image to tick mark
2016-01-03 18:52:25 -08:00
Jeremy Avigad
17f6ab3a71
fix(library/data/set/basic): fix spacing in notation
2016-01-03 18:52:25 -08:00
Jeremy Avigad
7600d04533
library/algebra/complete_lattice): fix typo in comment
2016-01-03 18:52:25 -08:00
Jeremy Avigad
173368801b
fix(library/algebra/interval): rename namespace, and move a theorem
2016-01-03 18:52:25 -08:00
Jeremy Avigad
31aa256b99
feat(library/theories/measure_theory/sigma_algebra): start with definition and properties of sigma algebras
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
5feef27c2b
feat(frontends/lean/notation_cmd): relax restriction on user defined tokens
...
Before this commit, Lean would forbid new tokens containing '(' or ')'.
We relax this restriction. Now, we just forbid new tokens starting with '(' or ending with ')'.
2016-01-02 13:58:46 -08:00
Leonardo de Moura
0963ce336f
feat(library/blast): add 'grind' and 'grind_simp' blast strategies
...
The use [intro] [intro!] [elim] [simp] lemmas.
The [simp] lemmas are only used by grind_simp.
2016-01-01 17:32:13 -08:00
Leonardo de Moura
4f1415174e
refactor(library/data): "union." ==> "union_", "inter." ==> "inter_"
2016-01-01 16:13:44 -08:00
Leonardo de Moura
4e2494f12e
refactor(library/init/nat): minor cleanup
2016-01-01 15:56:46 -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
712e19e22a
fix(library/blast/forward/ematch): bug in the ematching procedure
2015-12-31 21:26:44 -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
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
c3dfabf741
feat(library/blast/strategies/portfolio): add 'rec_simp'
...
recursors followed by simplification
2015-12-31 15:00:38 -08:00
Leonardo de Moura
4134fdd925
feat(library/blast/strategies/rec_strategy): give priority to user defined recursors
2015-12-31 14:55:00 -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
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
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
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
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
c52ffda0e0
feat(library/algebra/intervals): add notation for intervals
2015-12-26 10:45:53 -08:00
Jeremy Avigad
395eab7c2c
feat(library/theories/topology/basic): start on topology (with Jacob Gross)
2015-12-26 10:29:58 -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
d83e5d25fc
feat(library/theories/measure_theory/extended_real): start on extended reals
2015-12-24 16:27:48 -05: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
08fbf127c6
feat(library/theories/analysis/metric_space,real_limit): define complete metric space, make real an instance
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
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
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
61ecf018e9
feat(frontends/lean,library/tactic): add easy tactic parsing support for at ...
and with ...
2015-12-17 12:18:32 -08:00
Leonardo de Moura
c824a0e050
chore(library,hott): enforce naming conventions
2015-12-17 11:36:58 -08:00
Leonardo de Moura
13419d1561
chore(hott/library): cleanup
2015-12-17 11:31:07 -08:00
Leonardo de Moura
42eda36225
chore(library/algebra/ordered_ring): use 'note'
2015-12-15 09:33:57 -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
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
e3a35ba4fd
feat(frontends/lean): add 'with_attributes' tactical
...
closes #494
2015-12-13 18:27:44 -08:00
Leonardo de Moura
d4e49a8434
feat(library/tactic/intros_tactic): intro without argument should introduce a single variable
...
see #695
2015-12-13 16:28:39 -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
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
50df6b5698
feat(frontends/lean): rename '[intro]' ==> '[intro!]' and '[backward]' ==> '[intro]'
2015-12-07 21:33:35 -08:00
Leonardo de Moura
041c1cbb17
feat(library/blast): add strategies "grind" and "core_grind"
2015-12-07 20:30:59 -08:00
Leonardo de Moura
48bc18d492
feat(library/blast/grinder/intro_elim_lemmas): add intro/elim lemmas validation
2015-12-07 18:43:15 -08:00
Leonardo de Moura
295b1d21f5
feat(frontends/lean): add '[intro]' and '[elim]' annotations
2015-12-07 18:43:15 -08:00