Commit graph

1472 commits

Author SHA1 Message Date
Leonardo de Moura
86b10ab184 feat(library/data): define perm as a special kind of equiv
This commit also proves the basic permutation lemmas in the nominal isabelle library.
2015-08-27 06:06:02 -10: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
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
Leonardo de Moura
a06b288deb fix(library/data/set/finite): the powerset notation has already been fixed 2015-08-16 18:47:20 -07:00
Leonardo de Moura
40ef589d8c fix(library/data/finset,library/data/list): fixes #799
Make sure standard library - theories folder can be compiled with --to_axiom
2015-08-15 09:49:40 -07:00
Jeremy Avigad
c83d592c17 feat(library/theories/number_theory/square_root_irrational): add proof that sqrt 2 is irrational 2015-08-14 18:49:57 -07: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
Jeremy Avigad
a56a7d2736 feat(library/data/rat/basic): prove numerator and denominator are coprime 2015-08-14 18:49:57 -07:00
Leonardo de Moura
49eb7166f0 refactor(library/data): rename fixed_list -> tuple 2015-08-13 16:45:34 -07:00
Leonardo de Moura
9bb778dc7c feat(library/data/hf): define head and tail for hf 2015-08-13 16:00:32 -07:00
Leonardo de Moura
a6b1c84874 feat(library/data/hf): add basic list functions to hf 2015-08-13 15:36:54 -07:00
Leonardo de Moura
50983c4573 feat(library/data/hf): prove that s₁ ⊆ s₂ → s₁ ≤ s₂ for hereditarily finite sets 2015-08-13 15:36:26 -07:00
Leonardo de Moura
aa2a417483 feat(library/data/hf): add induction and total order for hf 2015-08-13 14:11:44 -07:00
Leonardo de Moura
f4a81fdd73 fix(library/data): powerset notation 2015-08-13 09:04:00 -07:00
Leonardo de Moura
51c48277c8 feat(library/data/hf): add hf.powerset 2015-08-13 08:52:45 -07:00
Leonardo de Moura
6bec3ba58b feat(library/data/hf): add hf.image 2015-08-13 08:22:58 -07:00
Leonardo de Moura
bf65acb126 feat(library/data/rat): show that the rationals are encodable and countable 2015-08-12 21:31:24 -07:00
Leonardo de Moura
710b7b6e40 feat(library/data/int/countable): show that int is encodable, isomorphic to nat, and countable 2015-08-12 21:31:24 -07:00
Leonardo de Moura
52f902bc33 feat(library/data/encodable): show that the quotient A/R is encodable if A is encodable and R is decidable 2015-08-12 21:31:24 -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
840c1a3693 refactor(library/data): rename vec to fixed_list 2015-08-12 14:38:21 -07:00
Leonardo de Moura
cee9d6b092 feat(library/data/hf): define Hereditarily finite sets 2015-08-11 16:56:06 -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
Leonardo de Moura
1cacac2789 feat(library/data/nat/parity): add auxiliary lemma 2015-08-11 14:20:58 -07:00
Leonardo de Moura
a5615a6ea7 feat(library/data/finset/equiv): start bijection from (finset nat) to nat 2015-08-10 19:42:09 -07:00
Leonardo de Moura
0e98f10c96 feat(library/data/nat/div): add div_div_eq_div_mul theorem for nat 2015-08-10 19:30:00 -07:00
Leonardo de Moura
de3d0e4162 feat(library/data/list/comb): show that (list A) is isomorphic to A if A is isomorphic to nat 2015-08-10 16:04:02 -07:00
Leonardo de Moura
303e9031d6 feat(library/data/encodable): add encodable subtypes 2015-08-10 09:54:48 -07:00
Leonardo de Moura
56e2e0c0a5 feat(library/data/encodable): show that (finset A) is encodable when A is encodable 2015-08-10 07:47:00 -07:00
Leonardo de Moura
70bd95d931 feat(library/data/list): show that (sort R l1 = sort R l2) when R is a decidable total order and l1 is a permutation of l2 2015-08-09 23:36:08 -07:00
Leonardo de Moura
2a22c75e52 feat(library/data/list/sort): prove that (sort R l) is strongly_sorted 2015-08-09 23:36:07 -07:00
Leonardo de Moura
5ca37dace0 fix(library/data/nat/order): fixes #786 2015-08-09 23:36:07 -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
d17f72eb7c fix(library/data/set/filter): adapt to change in complete_lattice structure 2015-08-09 22:36:04 -04: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
244052b413 refactor(library/data/set/*): rename setext to ext 2015-08-09 22:14:25 -04:00
Jeremy Avigad
d77bdaabc2 refactor(library/logic/eq): rename two theorems 2015-08-09 22:13:18 -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
Jeremy Avigad
209d7b07aa feat(library/data/set/basic): add a few theorems 2015-08-09 22:13:18 -04:00
Leonardo de Moura
276771e6ca feat(library/data/list/sort): add sort for lists
TODO: prove the result is sorted, prove that l1 ~ l2 -> sort R l1 = sort R l2
2015-08-09 14:23:09 -07:00
Leonardo de Moura
b4828283fa feat(library/data/list/sorted): add locally_sorted, sorted and strongly_sorted predicates for lists 2015-08-09 10:28:41 -07:00
Leonardo de Moura
7ddcfa5225 feat(library/algebra/complete_lattice): add basic theorems for complete_lattices 2015-08-08 23:18:36 -07:00
Leonardo de Moura
b2415f7b4b feat(library/data/set/basic): add basic 'set' theorems 2015-08-08 23:18:20 -07:00
Jeremy Avigad
8f815cabc0 refactor(library/data/finset/comb,library/data/set/basic,library/*): rename 'filter' to 'sep' to free up 'set.filter' 2015-08-08 18:10:44 -04:00
Jeremy Avigad
4b39400439 feat(library/data/{int,rat,real}/bigops): add bigops for int, rat, real
Because migrate does not handle parameters, we have to migrate by hand.
2015-08-08 17:20:23 -04: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
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
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
Jeremy Avigad
31eed7faea feat(library/data/set,finset): finish porting properties of card to sets 2015-08-08 04:23:52 -07:00
Jeremy Avigad
1b0773b604 feat(library/data/set/basic,finite): add more finiteness facts 2015-08-08 04:23:52 -07:00
Leonardo de Moura
06f20694c8 fix(frontends/lean/builtin_exprs): fixes #768 2015-08-08 04:20:17 -07:00
Jeremy Avigad
7df59d8b12 feat(library/data/set/finite): add more finiteness facts 2015-08-07 13:45:16 -07:00
Jeremy Avigad
eb181485eb feat(library/data/set/finite): start the theory of finite sets 2015-08-07 13:45:16 -07:00
Jeremy Avigad
d6bde18b46 feat,refactor(library/data/{finset,set}/*,src/emacs/lean-input.el): add powerset and notation, and some tidying 2015-08-07 13:45:15 -07:00
Jeremy Avigad
7b4ebb9866 feat,refactor(library/data/finset/*): add priorities for finset notation, add some theorems 2015-08-07 13:45:15 -07:00
Floris van Doorn
e51ba09a27 feat(hott): add types.sum, greatly expand types.prod, minor changes in types.sigma and types.pi 2015-08-07 13:34:41 -07:00
Floris van Doorn
d111607890 feat(hott): add file which maps sections of the HoTT book to the HoTT library 2015-08-07 13:34:41 -07:00
Rob Lewis
00262e4e47 feat(library/algebra): finish adding one-directional versions of iff theorems 2015-08-07 13:30:23 -07:00
Rob Lewis
11bb342819 style(library/data/real): clean up proofs in basic.lean 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
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
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
78942a0689 fix(library/data/real): fix num -> rat -> real coercion chain 2015-08-03 16:38:42 -04:00
Rob Lewis
4dd4d7b3b8 style(library/data): clean up proofs in pnat and real 2015-08-03 15:02:03 -04:00
Rob Lewis
82a9bc757a feat(library/algebra): move theorems from real to algebra 2015-08-03 15:01:32 -04:00
Rob Lewis
5c2fe1c3af refactor(real/complete): put limit sequence construction in a section 2015-08-03 11:20:26 -04:00
Rob Lewis
ba2dda08d3 feat(library/data/real): prove infimum property" 2015-08-03 11:16:56 -04:00
Leonardo de Moura
60ba3d15ff feat(library/data/matrix): add basic matrix module 2015-08-01 19:33:31 +01:00
Jeremy Avigad
36c7aad6ee fix(library/data/rat/basic): define pow before migrate 2015-08-01 18:23:36 +01:00
François G. Dorais
343b9e62c7 feat(library/data/fin): add foldl and foldr 2015-08-01 18:17:08 +01: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
3b742c5d69 refactor(library/data/real/complete): use 'em' instead of 'decidable.em'
It is slightly faster since it avoids type class resolution.
It looks more readable too.
Note that em is not axiom anymore. It is a theorem based on choce.
2015-07-31 10:57:53 -07:00
Leonardo de Moura
381c3d5e35 feat(library/data/vec): transfer more theorems from list to vec 2015-07-31 09:59:58 -07:00
Leonardo de Moura
a53ac25ca8 chore(library): remove outdated comments 2015-07-31 08:37:24 -07:00
Rob Lewis
01af780b6e feat(library/data/real): clean up proof of supremum property 2015-07-31 08:28:37 -07:00
Rob Lewis
1693932c9f feat(library/algebra/group): add theorem to comm group 2015-07-31 08:28:37 -07:00
Rob Lewis
0c65468db3 feat(library/data/real): remove remaining sorrys from proof of supremum property 2015-07-31 08:28:36 -07:00
Rob Lewis
25aa5b3939 feat(library/data/nat): define least function for nat 2015-07-31 08:28:36 -07:00
Rob Lewis
7d6b595289 feat(library/data/real): complete proof of the supremum property pending two integer theorems 2015-07-31 08:28:36 -07:00
Rob Lewis
954e30b59a feat(library/data/real): add more theorems to reals 2015-07-31 08:28:36 -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
Rob Lewis
f88038c3e7 feat(library/algebra/field): add missing theorems to field 2015-07-31 08:28:36 -07:00
Rob Lewis
b4b08aca32 feat(library/data/real): more progress toward supremum property 2015-07-31 08:28:26 -07:00
Rob Lewis
2fdf1e599e feat(library/algebra/ordered_group): add missing theorems to ordered group 2015-07-31 09:10:57 -04:00
Rob Lewis
ebbad9e70d chore(library/data/real): fill in sorrys in supremum property proof 2015-07-31 09:10:57 -04:00
Rob Lewis
c9daf7cbb9 feat(library/algebra/ordered_field): add missing theorems to ordered field 2015-07-31 09:10:57 -04:00
Rob Lewis
7a4947cfe1 feat(library/algebra/real): significant progress toward supremum property 2015-07-31 09:10:57 -04:00
Rob Lewis
601f824baf feat(library/data/real): compare a real and a sequence pointwise to compare two reals 2015-07-31 09:10:57 -04:00
Rob Lewis
d63010b7df feat(library/data/real): prove more about embedding Q into R 2015-07-31 09:10:57 -04:00
Rob Lewis
a670f21e78 feat(library/data/real): begin proving supremum property 2015-07-31 09:10:57 -04:00
Rob Lewis
3a97079920 feat(library/data/real): finish coercions from rat to real 2015-07-31 09:10:56 -04:00
Leonardo de Moura
811bae5566 feat(library/data/vec): expand vec 2015-07-30 23:17:01 -07:00
Leonardo de Moura
8dc2246a83 refactor(library/theories/group_theory/action): improve compilation time 2015-07-30 20:58:38 -07:00
Leonardo de Moura
44518fcab1 refactor(library/theories/group_theory): move diff to nat 2015-07-30 20:14:48 -07:00
Leonardo de Moura
0a29581b0e feat(library/data/vec): add more theorems to vec (vectors as subtypes) 2015-07-30 18:09:10 -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
88c659c54e feaf(library): make sure basic standard library can be compiled with option "--to_axiom"
We use this option to erase proofs when generating the javascript
version. The proofs are erased to minimize the size of the file that
must be downloaded by users
2015-07-29 16:11:23 -07:00
Leonardo de Moura
82836fe9e0 feat(library/init/logic): make sure standard library can be compiled when proofs are erased 2015-07-29 15:00:50 -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
308af87b69 feat(library): add 'noncomputable' keyword for the standard library 2015-07-28 21:56:35 -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
Jeremy Avigad
d02b83b6d6 feat(library/theories/number_theory/prime_factorization): prove that n is equal to its prime factorization 2015-07-27 15:16:16 -07:00
Jeremy Avigad
6355670ac4 fix(library/data/nat/nat.md): add 'find' to markdown file 2015-07-27 07:46:59 -07:00
Jeremy Avigad
3fc74c2ba8 feat(library/theories/combinatorics/choose): show the number of subsets of s of size k is choose (card s) k 2015-07-27 07:46:59 -07:00
Jeremy Avigad
471c9058eb fix/feat(library/logic/connectives,library/data/{finset,set}): fix names or.left_distrib etc., fix implicit arguments, and make small additions 2015-07-27 07:46:59 -07:00
Leonardo de Moura
a124bc246a feat(library/data/fin): add equivalences between fin types 2015-07-26 15:42:39 -07:00
Leonardo de Moura
d95e3c1e1d feat(library/data/equiv): basic equivalences 2015-07-26 13:06:01 -07:00
Leonardo de Moura
72d6550a7a feat(library/data/bag): show that subbag predicate is decidable when A has decidable equality 2015-07-25 17:44:03 -07:00
Leonardo de Moura
31b1606658 feat(library/data/bag): add subbag predicate 2015-07-25 14:31:24 -07:00
Leonardo de Moura
a883b72a25 fix(library/data): 'choose' -> 'find' renaming problems 2015-07-25 11:25:04 -07:00
Jeremy Avigad
1cc6be6052 feat(library/data/finset/comb): define powerset 2015-07-25 14:02:44 -04:00
Jeremy Avigad
c9d6cc5255 feat(library/data/{finset,set}): various basic facts 2015-07-25 14:02:44 -04:00
Jeremy Avigad
9cd7db3fea fix(library/data/list/perm): fix typo in theorem names 2015-07-25 14:02:44 -04:00
Jeremy Avigad
d3cd0bb8ff refactor(library/data/nat/find): rename 'choose' to 'find' to avoid conflict with combinatorics 'choose' 2015-07-25 14:02:44 -04:00
Leonardo de Moura
43f5f70414 feat(library/data/bag): add basic properties for bag intersection and union 2015-07-25 08:37:30 -07:00
Leonardo de Moura
ebf8c7fbdb feat(library/data): define bag using quotients 2015-07-24 23:45:08 -07:00
Leonardo de Moura
8be82d7405 feat(data/list): add count for lists 2015-07-24 23:44:11 -07:00
Leonardo de Moura
99a9dec93f refactor(library/data/real/basic): declare 'real' in the toplevel like 'nat', 'int' and 'rat' 2015-07-24 11:59:46 -07:00
Leonardo de Moura
5c7a20e5bd fix(library/unifier): crash when unifying constraints of the form (pr t =?= s)
where pr is a projection and t is a stuck term

see issue #737
2015-07-24 11:52:46 -07:00
Leonardo de Moura
0f2c0b6512 feat(library/data/real/basic): replace 'have ... [visible]' with 'assert ...'
Remove comments about "sorry"s. Mario has fixed all of them.
2015-07-24 10:07:16 -07:00
Mario Carneiro
066b0fcdf9 feat(library): clean up "sorry"s in library
Breaking changes: pnat was redefined to use subtype instead of a custom inductive type, which affects the notation for pnat 2 and 3
2015-07-24 12:21:33 -04: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
946308b187 feat(frontends/lean): allow anonymous 'have'-expressions in tactic mode 2015-07-23 18:52:59 -07:00
Leonardo de Moura
86e9002b66 doc(library/logic/axioms/examples): add alternative proof for has_left_inverse_of_injective 2015-07-22 22:11:13 -07:00
Leonardo de Moura
18dd7c13f9 feat(frontends/lean): add '[congr]' attribute 2015-07-22 17:21:47 -07:00
Leonardo de Moura
cc396cba76 feat(frontends/lean): allow backticks in binder declarations 2015-07-22 13:54:47 -07:00
Leonardo de Moura
fbaa8b21f6 refactor(library/data/nat): cleanup for the tutorial 2015-07-22 13:41:50 -07:00
Leonardo de Moura
e969c7a8d6 refactor(library): remove 'simp' hack 2015-07-22 10:13:19 -07:00
Leonardo de Moura
092c8d05b9 feat(frontends/lean,library): rename '[rewrite]' to '[simp]' 2015-07-22 09:01:42 -07:00
Leonardo de Moura
0de715ae54 refactor(library/data): cleanup proofs using new features 2015-07-21 09:57:10 -07:00
Leonardo de Moura
3e3d37905c refactor(library/data): cleanup proofs using new features 2015-07-21 08:26:44 -07:00
Leonardo de Moura
ff425b66e7 feat(library/data/list): test type notation in the standard library 2015-07-20 22:00:05 -07:00
Leonardo de Moura
b9451549d1 feat(frontends/lean): add type notation for referencing hypotheses 2015-07-20 21:43:47 -07:00
Leonardo de Moura
10e5b182b5 refactor(library/data): use "suppose"-expressions to cleanup proofs 2015-07-20 19:45:54 -07:00
Leonardo de Moura
8ad6312764 feat(library/hlist): add helper eq.rec lemmas 2015-07-20 14:56:50 -07:00
Leonardo de Moura
0a8bab14ee feat(library/data/vector): add helper lemmas for proving v == w when v and w are vectors 2015-07-20 11:59:03 -07:00