Commit graph

353 commits

Author SHA1 Message Date
Leonardo de Moura
a41850227a refactor(library/logic): use new K-like reduction to simplify some proofs 2014-10-10 14:52:21 -07:00
Leonardo de Moura
052bc6ff20 fix(frontends/lean/elaborator): better specific universe detection 2014-10-09 14:43:07 -07:00
Leonardo de Moura
8f1b6178a7 chore(*): minimize the use of parameters 2014-10-09 07:13:06 -07:00
Leonardo de Moura
f9e8503005 chore(library/algebra/category): add workaround 2014-10-09 00:05:37 -07:00
Leonardo de Moura
8c5d3392c7 fix(library/algebra/category): minor fixes to reflect recent changes, and fix tests 2014-10-08 23:44:09 -07:00
Floris van Doorn
0a58e3d1ae feat(algebra/category/): minor additions, start on adjunction 2014-10-08 23:14:44 -07:00
Floris van Doorn
57bee2a659 feat(binary.lean): add helper theorem for associative functions 2014-10-08 23:14:44 -07:00
Floris van Doorn
8d376b93cd feat(category): split category.lean in different files; add more constructions and theorems about isos 2014-10-08 23:14:44 -07:00
Floris van Doorn
ae3419f82f feat(library): add definition of subsingleton and some other minor changes 2014-10-08 23:14:44 -07:00
Floris van Doorn
abee75c5e9 feat(quantifiers.lean): change exists_unique to a constructively stronger formulation
the previous formulation was constructively probably to weak to be useful
2014-10-08 23:14:44 -07:00
Leonardo de Moura
744cee8dd8 feat(frontends/lean): force 'classes' to be declared before instances are declared, closes #228 2014-10-07 18:02:15 -07:00
Leonardo de Moura
c9e5e40477 refactor(library/data/num): cleanup 2014-10-05 13:47:51 -07:00
Leonardo de Moura
86591c7272 refactor(library/data/prod): cleanup 2014-10-05 13:38:08 -07:00
Leonardo de Moura
d56266c524 refactor(data/sum): use sections 2014-10-05 13:20:04 -07:00
Leonardo de Moura
15779c5d1e refactor(data/list): use '!' operator, and new name convention for declaration names 2014-10-05 13:10:35 -07:00
Leonardo de Moura
efaeeb0726 refactor(data/nat/sub): use new policy for marking implicit arguments and '!' operator 2014-10-05 12:39:13 -07:00
Leonardo de Moura
fa96596bf7 refactor(data/int/order): use '!' operator 2014-10-05 11:44:18 -07:00
Leonardo de Moura
a0d4d82f3f refactor(data/nat/order): use new policy for marking implicit arguments and '!' operator 2014-10-05 11:36:39 -07:00
Leonardo de Moura
e91a64fb38 chore(library/logic): fix comments 2014-10-05 11:11:48 -07:00
Leonardo de Moura
73aa024c31 refactor(library/logic): remove 'core' subdirectory 2014-10-05 10:50:13 -07:00
Leonardo de Moura
0f90d10a13 refactor(logic/core/eq): use sections 2014-10-05 10:19:50 -07:00
Leonardo de Moura
317e910054 refactor(library/data/bool): use new style 2014-10-05 09:50:55 -07:00
Leonardo de Moura
5a927b6db4 refactor(library/logic/cast): define heq using inductive datatypes
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-10-03 21:40:51 -07:00
Leonardo de Moura
a52b21c92d refactor(library): using section variables 2014-10-02 18:25:00 -07:00
Leonardo de Moura
d5cad765a0 feat(frontends/lean): enforce new semantics for section 'variables'
The library file logic/core/connectives uses the new feature.
2014-10-02 17:55:34 -07:00
Leonardo de Moura
4946f55290 refactor(frontends/lean): constant/axiom are top-level commands, parameter/variable/hypothesis/conjecture are section/context-level commands
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-10-02 17:55:34 -07:00
Leonardo de Moura
f78d831de3 refactor(frontends/lean): remove hardcoded Type', and define it using notation 2014-10-02 14:29:51 -07:00
Leonardo de Moura
76d21900a2 feat(library): add aliases for some sorts 2014-10-02 14:29:51 -07:00
Leonardo de Moura
98e66586e9 feat(frontends/lean/elaborator): elaborator rejects 'Type' if the universe is explicit 2014-10-02 14:29:51 -07:00
Leonardo de Moura
d42fd657fe refactor(library): is_inhabited "theorems" should be "definitions", they are "data" 2014-10-02 09:00:34 -07:00
Leonardo de Moura
153e3927ac feat(frontends/lean/elaborator): modify '!' semantics: it stops consuming arguments as soon it finds an argument that does not occur in the rest of the type. 2014-10-01 18:50:17 -07:00
Leonardo de Moura
e64d5c4a4a refactor(library/data/nat): use new operator '!' 2014-10-01 18:39:47 -07:00
Leonardo de Moura
a978e30c81 refactor(library/data/nat): rename to_nat to of_num 2014-10-01 17:52:33 -07:00
Leonardo de Moura
716cd4d651 refactor(library): rename namespace eq_ops to eq.ops 2014-10-01 17:51:17 -07:00
Leonardo de Moura
bc6ebf34be feat(library/data/bool): do not use ! as notation for bnot, rename band/bor -> and/or 2014-10-01 17:00:03 -07:00
Leonardo de Moura
3657d4c3ab feat(frontends/lean): coercion num -> int even when nat is not open, closes #219
I also had to mark the coercions as reducible.
Otherwise, given the constraint

          ?M (int.of_num 0) =?= (int.of_nat (nat.to_nat 0))

the unifier will not generate the solution

          ?M := fun x, x
2014-10-01 11:09:10 -07:00
Leonardo de Moura
3ca1264f61 refactor(library): mark 'decidable' theorems as definitions
If we don't do that, then any 'if' term that uses one of these theorems
will get "stuck". That is, the kernel will not be able to reduce them
because theorems are always opaque
2014-09-30 09:02:37 -07:00
Leonardo de Moura
21be308884 feat(frontends/lean/inductive_cmd): infer implicit argument annotation after elaboration, allow user to disable it by using '()' annotation, closes #210 2014-09-29 11:11:17 -07:00
Leonardo de Moura
9c55bbb871 feat(frontends/lean/elaborator): report an error when Type becomes a Prop after elaboration, closes #208 2014-09-29 08:18:10 -07:00
Leonardo de Moura
397395bbc9 feat(frontends/lean): allow user to associate priorities to class-instances, closes #180 2014-09-28 12:20:42 -07:00
Floris van Doorn
3a95734fae feat(library): changes in eq.lean sigma.lean and category.lean
in eq.lean, make rec_on depend on the proof, and add congruence theorems for n-ary functions with n between 2 and 5
in sigma.lean, finish proving equality of triples
in category.lean, define the functor category, and make the proofs of the arrow and slice categories easier for the elaborator
2014-09-26 19:45:23 -04:00
Floris van Doorn
05fb3aa060 feat(library/data/int): remove duplicate theorem, fix one sorry 2014-09-26 19:45:23 -04:00
Floris van Doorn
5396e422d2 feat(library): add constructions of categories, some changes in eq, sigma and path
in eq, add theorem for proof irrelevance and congruence for binary functions
in sigma, add some support for triplets
in path, comment out two unneccesary definitions
in category, add Cat, slice, coslice, product and arrow categories, also add fully bundled approach
2014-09-26 19:45:23 -04:00
Leonardo de Moura
86f06a54ea refactor(library/data/vector): rename 'vec' to 'vector' 2014-09-19 16:20:50 -07:00
Leonardo de Moura
e430dc8bab feat(frontends/lean): add 'irreducible' as syntax sugar for 'reducible [off]' 2014-09-19 15:54:32 -07:00
Leonardo de Moura
4e2377ddfc refactor(frontends/lean): replace '[protected]' modifier with 'protected definition' and 'protected theorem', '[protected]' is not a hint.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-19 15:54:32 -07:00
Leonardo de Moura
5d8c7fbdf1 refactor(frontends/lean): replace '[private]' modifier with 'private
definition' and 'private theorem', '[private]' is not a hint.
2014-09-19 15:54:32 -07:00
Leonardo de Moura
97b1998def refactor(frontends/lean): replace '[opaque]' modifier with 'opaque
definition', '[opaque]' is not a hint, but a kind of definition
2014-09-19 15:54:32 -07:00
Leonardo de Moura
08ccd58eb6 feat(frontends/lean): add 'reducible' modifier for controlling which
definitions are unfolded during elaboration

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-19 15:54:32 -07:00
Leonardo de Moura
baf4c01de8 feat(frontends/lean): definitions are opaque by default 2014-09-19 15:54:32 -07:00
Leonardo de Moura
48dbd13eef feat(frontends/lean): allow transient classes/instances, i.e.,
classes/instances that are not saved in .olean files
2014-09-19 15:54:32 -07:00
Leonardo de Moura
93c2c30310 feat(frontends/lean): allow transient coercions, i.e., coercions that
are not saved in .olean files
2014-09-19 15:54:32 -07:00
Leonardo de Moura
e3e2370a38 feat(frontends/lean): split 'opaque_hint' command into 'opaque' and 'transparent'
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-16 18:03:40 -07:00
Leonardo de Moura
4b51d50ad4 fix(frontends/lean/elaborator): coercion overloading 2014-09-16 15:12:20 -07:00
Jeremy Avigad
74cb289d48 refactor(library): rename algebra directory to struc, move categories.lean to algebra 2014-09-16 13:13:01 -07:00
Jeremy Avigad
9988914189 refactor(library/logic): move files in classes directory to core 2014-09-16 13:13:01 -07:00
Leonardo de Moura
7ea6a17ae8 feat(library/data/num): add 'mul' and 'add' for binary numerals 2014-09-16 08:05:00 -07:00
Leonardo de Moura
8e52c478b1 refactor(library/data/num): add 'succ', 'pred' and 'size' (aka number of bits),
rename is_inhabited theorems
2014-09-15 16:05:17 -07:00
Leonardo de Moura
b7023ce1d8 fix(frontends/lean/placeholder_elaborator): do not truncate stream of
solutions during class-instance resolution, closes #183

For example, in theorem inverse_unique at category.lean, implicit
arguments are synthesized for inverse_compose. The first solution H' is
not good, and produces a type incorrect solution
2014-09-12 16:12:23 -07:00
Leonardo de Moura
a305012ce5 fix(library/data/category): mark definitions as abbreviations 2014-09-12 09:28:33 -07:00
Leonardo de Moura
c8e20ff3c0 fix(library/data/category): minor problem that was being masked by bug #182, fixes #183 2014-09-11 16:58:32 -07:00
Floris van Doorn
7f1977694f feat(library/data/category.lean) the definition of category doesn't depend on 'mor' anymore; make iso a class; add theorems 2014-09-11 16:39:47 -07:00
Leonardo de Moura
7ffe73b8ca fix(frontends/lean): name clash inside section, fixes #181 2014-09-11 16:37:23 -07:00
Leonardo de Moura
8c11dc1ecd chore(library/data/quotient): rename aux.lean to util.lean (fix problem with cloning lean repository on Windows machine)
See
http://stackoverflow.com/questions/3689137/error-git-checkout-index-unable-to-create-file
for additional details
2014-09-11 14:57:15 -07:00
Leonardo de Moura
746f5bff0d refactor(library/data/list/basic): cleanup
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-10 16:42:49 -07:00
Leonardo de Moura
1a896a670c refactor(library/data/list): cleanup, rename concat to assoc 2014-09-10 08:02:18 -07:00
Leonardo de Moura
9ac5f28b03 refactor(library/logic/core/eq): cleanup 2014-09-09 19:15:11 -07:00
Leonardo de Moura
b4d765ff2e refactor(library/logic/core/cast): cleanup 2014-09-09 19:11:03 -07:00
Leonardo de Moura
9b9adf8831 refactor(library): replace decidable_eq with abbreviation 2014-09-09 16:09:05 -07:00
Leonardo de Moura
bd1bc336fb feat(library/coercion): add simple trick for defining coercions to function-class in a convenient way, closes #31 2014-09-09 14:36:36 -07:00
Leonardo de Moura
38a4852e7d feat(library/hott): add 'path' namespace 2014-09-09 14:03:45 -07:00
Leonardo de Moura
ff9a07500d feat(library/data/int/basic): create alias for int.int 2014-09-09 14:03:44 -07:00
Leonardo de Moura
5087f03889 refactor(library/logic/classes/decidable): rename 'decidable_eq_to_decidable' theorem to 'of_decidable_eq' 2014-09-09 09:27:26 -07:00
Leonardo de Moura
b4793df653 feat(frontends/lean): rename '[fact]' to '[visible]'
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-08 07:47:42 -07:00
Leonardo de Moura
35e68fea76 feat(library/logic/classes/decidable): generalize 'by_cases' theorem 2014-09-08 00:16:20 -07:00
Leonardo de Moura
fa25ddc8e6 chore(library/data/int/basic): remove unnecessary 'hinding' clause
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-07 22:50:43 -07:00
Leonardo de Moura
559dd586f2 feat(library): add 'decidable_eq' class
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-07 22:23:36 -07:00
Leonardo de Moura
c446327ec3 feat(library/data/list): add mem_is_decidable and not_mem_find theorems 2014-09-07 21:22:07 -07:00
Leonardo de Moura
f9b62c53e6 feat(library/data/nat): add nat.is_inhabited theorem 2014-09-07 19:59:34 -07:00
Leonardo de Moura
48e5a2b6ad feat(library/classes/inhabited): add dfun_inhabited theorem 2014-09-07 19:08:31 -07:00
Leonardo de Moura
4e2f5572f3 feat(library/data/vector): add vec.is_inhabited theorem 2014-09-07 19:08:31 -07:00
Leonardo de Moura
fea516af24 feat(frontends/lean/elaborator): allow Pi/forall local instances 2014-09-07 18:16:33 -07:00
Leonardo de Moura
c378a58cc2 feat(frontends/lean): add [class] modifier for inductive datatypes as a shortcut for 'class' command. 2014-09-07 18:16:33 -07:00
Leonardo de Moura
bbff564a1c feat(frontends/lean): persistent notation in sections
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-06 11:14:20 -07:00
Floris van Doorn
02d72e4c40 feat(library/data/category): add vector
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-05 09:57:04 -07:00
Floris van Doorn
e9fc4f14a0 feat(library/data/category): add category theory
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-05 09:56:57 -07:00
Floris van Doorn
d2a4bb8a27 feat(library/data/empty): add false.to_empty and false.rec_type theorems
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-05 09:31:27 -07:00
Leonardo de Moura
561753e7f1 refactor(library/data/sigma): cleanup module 2014-09-05 08:01:24 -07:00
Leonardo de Moura
28f025c6d7 refactor(library/logic/core): use subscripts
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-04 22:43:30 -07:00
Leonardo de Moura
9412e604c8 refactor(library/data): cleanup datatypes
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-04 22:31:52 -07:00
Leonardo de Moura
6632a50015 refactor(library): add namespaces 'or', 'and' and 'iff'
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-04 21:25:21 -07:00
Leonardo de Moura
68d9bef860 refactor(library): add 'eq' and 'ne' namespaces
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-04 18:41:06 -07:00
Leonardo de Moura
2bc6f92d33 refactor(library): add 'and' namespace
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-04 17:44:53 -07:00
Leonardo de Moura
364bba2129 feat(frontends/lean/inductive_cmd): prefix introduction rules with the name of the inductive datatype
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-04 17:26:36 -07:00
Leonardo de Moura
8743394627 refactor(kernel/inductive): replace recursor name, use '.rec' instead of '_rec'
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-04 15:04:57 -07:00
Leonardo de Moura
7500761114 refactor(library/data/nat/basic): remove unnecessary nat_
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-03 16:14:29 -07:00
Leonardo de Moura
e51c4ad2e9 feat(frontends/lean): rename 'using' command to 'open'
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-03 16:00:38 -07:00
Leonardo de Moura
f891485a26 refactor(library): use '[protected]' modifier
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-03 15:13:03 -07:00
Leonardo de Moura
6077b3158c fix(library): remove unnecessary [fact] modifier
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-02 16:06:55 -07:00
Leonardo de Moura
8dec18018c refactor(library/data/list): avoid placeholders '_', make first argument of false_elim implicit
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-09-01 19:44:04 -07:00