Commit graph

339 commits

Author SHA1 Message Date
Leonardo de Moura
8241863abe feat(kernel/hits): add two builtin HITs: type_quotient and trunc 2015-04-23 15:32:31 -07:00
Floris van Doorn
591a563be3 feat(hit): For all hits, add the elimination to the universe (using ua) 2015-04-23 14:29:04 -07:00
Floris van Doorn
f41d92199a feat(hit): make type quotient primitive instead of colimit 2015-04-23 14:29:04 -07:00
Floris van Doorn
1d9c17342a feat(hit): define mapping cylinder, coequalizer and quotient in terms of colimit 2015-04-23 14:29:04 -07:00
Floris van Doorn
51e87213d0 feat(hit): define nondependent recursors for all hits, sequential colimit, and elaborate on spheres
squash
2015-04-23 14:29:04 -07:00
Floris van Doorn
ffe158f785 feat(hit.suspension): add definition of spheres and the circle 2015-04-23 14:29:04 -07:00
Floris van Doorn
2469b8a2f8 feat(hott): add primitive hits 2015-04-23 14:29:04 -07:00
Floris van Doorn
cb5b07093f fix(arity): remove unnecessary implicit arguments 2015-04-23 14:29:04 -07:00
Leonardo de Moura
2613e7c444 fix(frontends/lean): bug when handling identifiers in tactics
This bug was reported by Jeremy in the Lean Google group:
https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/lean-discuss/ZKJ8WPPEVJA/n05x6rPRzvMJ
2015-04-22 16:03:22 -07:00
Floris van Doorn
9d805437f0 fix(reserved_notation): lower binding power of 'iff' 2015-04-22 13:06:11 -07:00
Floris van Doorn
b86ee9dfa6 feat(precategory): add composition of nat. trans. with functor 2015-04-22 13:06:11 -07:00
Floris van Doorn
a79a3043ed feat(hott/types): a bit of cleanup 2015-04-22 13:06:11 -07:00
Floris van Doorn
ee4cba4e0b style(hott): a bit of cleanup 2015-04-22 13:06:11 -07:00
Floris van Doorn
17f3ac6ec2 fix(hott): fix binding power of 2 notations 2015-04-22 13:06:11 -07:00
Leonardo de Moura
22f6a95cc4 feat(frontends/lean): local notation override global one 2015-04-21 19:55:59 -07:00
Leonardo de Moura
3df99e514b fix(frontends/lean): problems with sections 2015-04-21 19:46:57 -07:00
Leonardo de Moura
76bf8de91a refactor(hott): remove most 'context' commands from the HoTT library 2015-04-21 19:17:59 -07:00
Leonardo de Moura
bf8a7eb9b4 fix(library/scoped_ext): bug in local metadata in sections
The problem is described in issue #554
2015-04-21 18:56:28 -07:00
Leonardo de Moura
6f6d106a10 feat(library/tactic): add "check_expr" tactic
closes #486
2015-04-19 19:00:05 -07:00
Floris van Doorn
60ae9f627c feat(hott): add core.hlean and types/default.hlean 2015-04-10 06:35:24 -07:00
Floris van Doorn
d1b98b6919 fix(reserved_notation): make is_typeof an abbreviation 2015-04-10 06:35:15 -07:00
Leonardo de Moura
2bc13f6bfd feat(library/tactic/exact): enforce goal type during elaboration when executing 'exact' tactic
Remark: this was the behavior of the 'sexact' tactic.

This commit also adds the 'rexact' (relaxed exact) tactic which does not
enforce the goal type.

closes #495
2015-04-06 13:23:38 -07:00
Leonardo de Moura
754276a660 feat(frontends/lean): round parenthesis for [tactic1 | tactic2]
This commit also replaces the notation for divides
     `(` a `|` b `)`
with
      a `∣` b

The character `∣` is entered by typing \|

closes #516
2015-04-06 09:24:09 -07:00
Leonardo de Moura
4ec0e1b07c feat(frontends/lean): improve calc mode
Now, it automatically supports transitivity of the form
    (R a b) -> (b = c) -> R a c
    (a = b) -> (R b c) -> R a c

closes #507
2015-04-04 08:58:35 -07:00
Soonho Kong
0d1da89cf1 chore(.gitignore): update 2015-03-28 23:29:41 -04:00
Leonardo de Moura
75621df52b feat(frontends/lean): uniform notation for lists in tactics
closes #504
2015-03-27 17:54:48 -07:00
Leonardo de Moura
b9e3c474c9 feat(library/tactic): add all_goals tactic
closes #501
2015-03-25 17:42:34 -07:00
Leonardo de Moura
74b28f6ad9 feat(library,hott): new notation for typeof 2015-03-24 18:35:21 -07:00
Leonardo de Moura
c0b4a47f63 refactor(hott/algebra/precategory/functor): remove unnecessary annotation 2015-03-24 12:06:16 -07:00
Leonardo de Moura
4817f2a18b refactor(hott/algebra/precategory/basic): improve basic.hlean compilation time 2015-03-24 12:06:16 -07:00
Leonardo de Moura
30e3049c56 feat(hott/algebra/precategory/nat_trans): reduce compilation time using rewrite tactic 2015-03-23 19:55:01 -07:00
Leonardo de Moura
5bf46d1226 fix(library/tactic/inversion_tactic): improve 'cases' tactic for HoTT mode
closes #481
2015-03-23 18:06:11 -07:00
Leonardo de Moura
227de07758 fix(hott/algebra/category/constructions): avoid type class resolution loop 2015-03-23 11:32:20 -07:00
Jakob von Raumer
024ce8012f fix(hott/algebra) make previously added lemma more applicable to groupoids 2015-03-23 11:17:57 -07:00
Jakob von Raumer
97a1cc8edb feat(hott/algebra) show that functors preserve inverses and isos 2015-03-23 11:17:56 -07:00
Jakob von Raumer
74824078a8 fix(hott/algebra) fix previous commit by importing 'arity' 2015-03-23 11:17:56 -07:00
Jakob von Raumer
36a102bad2 feat(hott/algebra) add another equality lemma for precategories 2015-03-23 11:17:56 -07:00
Jakob von Raumer
4e790057b3 feat(hott/algebra) add structure for strict precategories 2015-03-23 11:17:56 -07:00
Jakob von Raumer
10c0b3a3ca feat(hott/algebra) add characterization of paths between precategories 2015-03-23 11:17:56 -07:00
Jakob von Raumer
f480d67881 chore(hott/algebra) make carrier hset witness an instance 2015-03-23 11:17:56 -07:00
Floris van Doorn
8948926a07 style(hott/algebra/precategory): some cleanup 2015-03-16 17:15:51 -07:00
Floris van Doorn
57514244b1 feat(hott/algebra/precategory): add todo-file for adjoint functors, equivalences and isomorphisms 2015-03-16 17:15:51 -07:00
Floris van Doorn
c914b79341 feat(hott/algebra/category): show that functor category is univalent if codomain is 2015-03-16 17:15:51 -07:00
Floris van Doorn
ebba33057c feat(hott): add arity.hlean, about multivariate functions 2015-03-16 17:15:51 -07:00
Floris van Doorn
71f9a5d1d2 feat(hott/algebra/precategory): do lots of stuff with categories 2015-03-16 17:15:51 -07:00
Jakob von Raumer
7083f2fccd fix(hott/algebra) correct the name of a groupoid constructor 2015-03-13 15:45:46 -07:00
Jakob von Raumer
25abecaa26 chore(hott/algebra) cmall changes in category files 2015-03-13 15:45:02 -07:00
Leonardo de Moura
a24f8dce67 refactor(hott/algebra/precategory): minor cleanup 2015-03-12 20:52:00 -07:00
Leonardo de Moura
14aeac180a refactor(library/algebra/category/constructions): more rewrite tactic tests 2015-03-12 20:27:11 -07:00
Leonardo de Moura
adae95cf68 refactor(hott/algebra/precategory/functor): remove unnecessary annotations 2015-03-12 20:13:40 -07:00
Leonardo de Moura
265316a9f5 refactor(hott/algebra/precategory/basic): remove unnecessary set_option commands 2015-03-12 20:10:47 -07:00
Leonardo de Moura
0118ecf3cd refactor(hott/algebra/precategory/yoneda): remove unnecessary annotations 2015-03-12 20:06:25 -07:00
Leonardo de Moura
7accd0f1e6 feat(library/tactic/rewrite_tactic): allow rewrite with terms that contains binders
see discussion at #470
2015-03-12 18:07:55 -07:00
Leonardo de Moura
d7c6028a3e refactor(hott,library): use/test the rewrite tactic in more places
The performance also improved.
2015-03-12 17:25:31 -07:00
Leonardo de Moura
55586dcb2d refactor(hott/algebra/precategory/yoneda): reduce compilation time to 1sec using rewrite tactic
After the latest improvements, the rewrite tactic "works" more often
at yoneda.hlean
2015-03-12 17:07:27 -07:00
Leonardo de Moura
1490bdad49 feat(frontends/lean): add version of 'exact' tactic (sexact) that enforces goal type during term elaboration 2015-03-06 17:34:45 -08:00
Leonardo de Moura
368f9d347e refactor(frontends/lean): approach used to parse tactics
The previous approach was too fragile

TODO: we should add separate parsing tables for tactics
2015-03-05 18:11:21 -08:00
Leonardo de Moura
039afb4578 feat(frontends/lean): treat "proof t qed" as alias for "by exact t" 2015-03-05 11:12:39 -08:00
Leonardo de Moura
8295ef4e57 fix(library/tactic/class_instance_synth): constraint execution order at type class resolution
We could not fix this problem before because we did not have the
[quasireducible] annotation.

Without this annotation, the fixed TC would loop in some HoTT files.
2015-03-04 22:20:20 -08:00
Jeremy Avigad
c09f1c4eaf feat(*.md): create markdown files for HoTT library, update ones in standard library 2015-03-04 18:33:18 -08:00
Floris van Doorn
3d7656078d feat(hott/types): prove that 'is_equiv f' is an hprop 2015-03-04 00:22:51 -05:00
Floris van Doorn
704f2b2697 feat(hott/algebra/category): prove that set is a univalent category assuming is_equiv is an hprop 2015-03-04 00:22:41 -05:00
Floris van Doorn
5b922aad5c feat(init): add 'do' tactic 2015-03-04 00:17:41 -05:00
Floris van Doorn
da9b134dd8 feat(hott/types): start with proof that is_equiv is an hprop 2015-03-04 00:14:18 -05:00
Leonardo de Moura
e40e2f0677 feat(hott/init): define num.sub in the HoTT library 2015-03-03 16:22:59 -08:00
Leonardo de Moura
ca57b43698 feat(library/tactic): add 'change' tactic 2015-03-01 14:15:39 -08:00
Floris van Doorn
1559e0e58c feat(hott): some more renaming in category library 2015-02-28 01:16:23 -05:00
Floris van Doorn
326eaffafb style(hott/algebra): rename theorems in the HoTT category libraries 2015-02-28 01:16:23 -05:00
Floris van Doorn
23a248ab28 style(hott): let inverse notation have higher binding power than application 2015-02-28 01:16:23 -05:00
Floris van Doorn
219f7ae11a feat(hott/algebra/precategory): general cleanup in precategories, define uncurrying functor 2015-02-28 01:16:23 -05:00
Floris van Doorn
f513538631 feat(hott): more cleanup of HoTT library
remove funext class,
remove a couple of sorry's,
add characterization of equality in trunctypes,
use Jeremy's format for headers everywhere in the HoTT library,
continue working on Yoneda embedding
2015-02-26 13:19:54 -05:00
Floris van Doorn
c091acc55b feat(hott): remove funext as type class, add theorems to prove equalities between functors and natural transformations 2015-02-26 12:52:33 -05:00
Floris van Doorn
9201bd7ca6 feat (hott/init): move nat.of_num to init.num and make it reducible outside namespace nat
This is so that init.trunc can already use nat.of_num.
Also make nat.of_num reducible in the standard library
Also make gt and ge abbreviations
2015-02-26 12:28:57 -05:00
Leonardo de Moura
68110faa4d feat(frontends/lean/inductive_cmd): allow '|' in inductive datatype declarations 2015-02-25 17:00:10 -08:00
Leonardo de Moura
5ca52d81ec feat(frontends/lean): ML-like notation for match and recursive equations 2015-02-25 16:20:44 -08:00
Leonardo de Moura
3c24461e51 refactor(*): modify '|' binding power, use 'abs a' instead of '|a|', and '(a | b)' instead of 'a | b' 2015-02-25 15:18:21 -08:00
Leonardo de Moura
c04c610b7b feat(frontends/lean): add 'assert H : A, ...' as notation for 'have H [visible] : A, ...' 2015-02-25 14:30:42 -08:00
Jeremy Avigad
e513b0ead4 refactor(library,hott): rename theorems for decidable and inhabited
The convention is this: we use e.g. nat.is_inhabited and nat.has_decidable_eq
for these two purposes only, to avoid clashing with "inhabited" and "decidable_eq"
in a namespace. Otherwise, we use "decidable_foo" and "inhabited_foo".
2015-02-25 14:05:07 -08:00
Leonardo de Moura
d5538ddf19 refactor(hott/algebra/precategory/morphism): reduce compilation time using rewrite tactic 2015-02-25 14:04:17 -08:00
Leonardo de Moura
3ede8e9150 refactor(library): use [] binder annotation when declaring instances 2015-02-24 16:12:39 -08:00
Leonardo de Moura
1cd44e894b feat(library/tactic/class_instance_synth): conservative class-instance resolution: expand only definitions marked as reducible
closes #442
2015-02-24 16:12:35 -08:00
Leonardo de Moura
3846f5a4e7 refactor(hott): use nested begin-end blocks, use cases tactic 2015-02-24 13:27:57 -08:00
Leonardo de Moura
d1ba9ba1dd feat(hott/types/sigma): simplify file using 'cases' tactic, definitional package and rewrite tactic
Simpler version is also faster.
On my notebook, the runtime was 2.8 secs before, and 1.1 secs after changes
2015-02-23 23:28:28 -08:00
Floris van Doorn
61901cff81 feat(hott): rename definition and cleanup in HoTT library
also add more definitions in types.pi, types.path, algebra.precategory

the (pre)category library still needs cleanup
authors of this commit: @avigad, @javra, @fpvandoorn
2015-02-20 21:40:42 -05:00
Leonardo de Moura
421a30d75c feat(library): export [reducible] annotations from function namespace to top-level
see issue #433
2015-02-16 18:52:41 -08:00
Jakob von Raumer
80e1ac2c4f feat(hott/algebra): make lemmas about isomorphisms accept more iso parameters. new lemmas about groupoids 2015-02-13 09:28:33 -08:00
Leonardo de Moura
a35cce38b3 feat(frontends/lean): new semantics for "protected" declarations
closes #426
2015-02-11 14:09:25 -08:00
Leonardo de Moura
0f34f4d4a1 fix(hott): adjust library to new apply tactic semantics 2015-02-06 17:27:56 -08:00
Leonardo de Moura
b4dd2cc729 refactor(library/tactic/rewrite_tactic): more general rewrite step
The rule can be an arbitrary expression.
Allow user to provide a pattern that restricts the application of the rule.
2015-02-04 11:51:39 -08:00
Leonardo de Moura
c845e44777 feat(frontends/lean): parse rewrite tactic 2015-02-04 11:51:39 -08:00
Leonardo de Moura
855050e623 feat(frontends/lean/calc_proof_elaborator): try conservative alternatives first 2015-01-31 21:29:34 -08:00
Leonardo de Moura
e2c41fca75 feat(frontends/lean): modify syntax for local notation
The idea is to make it uniform with the syntax for defining local
attributes.
2015-01-26 11:51:17 -08:00
Leonardo de Moura
b4d6f6e3ed feat(frontends/lean): 'attribute' command is persistent by default 2015-01-26 11:51:17 -08:00
Leonardo de Moura
4f2e0c6d7f refactor(frontends/lean): add 'attribute' command
The new command provides a uniform way to set declaration attributes.
It replaces the commands: class, instance, coercion, multiple_instances,
reducible, irreducible
2015-01-24 20:23:21 -08:00
Leonardo de Moura
abc64fbab8 refactor(library/algebra/group): remove unnecessary symm 2015-01-20 16:20:47 -08:00
Leonardo de Moura
2717adde94 feat(library/unifier): add option 'unifier.conservative', use option by default in the calc_assistant 2015-01-19 16:23:29 -08:00
Leonardo de Moura
2e4a2451e6 refactor(library/reducible): simplify reducible/irreducible semantics 2015-01-08 18:52:18 -08:00
Jakob von Raumer
e11c401d79 fix(hott/algebra) comment unfinished proofs out for later completion 2015-01-03 22:31:40 -08:00
Jakob von Raumer
4de1a07324 chore(hott/algebra) maybe use only lower case file names 2015-01-03 22:31:40 -08:00
Jakob von Raumer
334db4ec1e feat(hott/algebra) start to formalize the category of sets (seems to be pretty tough) 2015-01-03 22:31:40 -08:00
Jakob von Raumer
f59c2559b6 feat(hott/algebra) add proof that functors into strict cats form an hset 2015-01-03 22:31:39 -08:00
Jakob von Raumer
0faf585773 feat(hott) start characterizing truncatedness by sigma and pi types 2015-01-03 22:31:39 -08:00
Jakob von Raumer
0e34a1838d feat(hott) create new file with advanced truncatedness lemmas 2015-01-03 22:31:39 -08:00
Jakob von Raumer
0915da6625 chore(hott/algebra) modify the proof that taking the dual category is involutive 2015-01-03 22:31:39 -08:00
Jakob von Raumer
428a2b6f58 chore(hott/algebra) complete the sigma characterization 2015-01-03 22:31:39 -08:00
Jakob von Raumer
4af0a911b3 feat(hott/algebra) finish functor category up to that missing sigma characterization 2015-01-03 22:31:39 -08:00
Jakob von Raumer
31d1076bd7 fix(hott/algebra) fix some proofs for functor category 2015-01-03 22:31:39 -08:00
Jakob von Raumer
31b3bbe5cb chore(hott/init/axioms) remove +1 in universe levels from axioms 2015-01-03 22:31:39 -08:00
Jakob von Raumer
98803406cc chore(hott/algebra) add sigma characterization of functors, turn functors into structures 2015-01-03 22:31:39 -08:00
Jakob von Raumer
004a01629a feat(hott) add preliminary axiomatized truncation operator 2015-01-03 22:31:39 -08:00
Jakob von Raumer
0a1aab9ff9 chore(hott) make univalence an axiom again 2015-01-03 22:31:39 -08:00
Leonardo de Moura
d2958044fd feat(frontends/lean): add multiple_instances command
After this commit, Lean "cuts" the search after the first instance is
computed. To obtain the previous behavior, we must use the new command

          multiple_instances <class-name>

closes #370
2014-12-21 17:28:44 -08:00
Leonardo de Moura
0627ad2f56 feat(hott/init/nat): add basic facts about natural numbers 2014-12-20 11:32:27 -08:00
Leonardo de Moura
d75ef7a07a feat(hott/init/types): add 'sum' notation 2014-12-20 11:32:27 -08:00
Leonardo de Moura
6843fe3a8b refactor(hott/init): 'prod' and 'sum' notation should be infix right like 'and' and 'or' 2014-12-20 11:32:27 -08:00
Leonardo de Moura
187f4483e9 refactor(hott/init/util.hlean): modify definition to make it more convenient for definitional package 2014-12-19 22:00:25 -08:00
Leonardo de Moura
2e93e5d6a7 fix(hott/init): minimize number of universe parameters 2014-12-19 22:00:25 -08:00
Leonardo de Moura
f93278eab8 fix(hott/init/hedberg): remove unnecessary import 2014-12-19 19:01:07 -08:00
Leonardo de Moura
2521dbb39e refactor(hott): use same name convention for sigma in the HoTT and standard libraries 2014-12-19 18:46:06 -08:00
Leonardo de Moura
69191ef9b7 feat(hott/init/datatypes): add sum.intro_left and sum.intro_right aliases 2014-12-19 17:56:44 -08:00
Leonardo de Moura
3d2d5839a1 feat(hott/init): add auxiliary definition needed by definitional package 2014-12-19 14:22:03 -08:00
Leonardo de Moura
582c1f8458 feat(hott/init): add proof for Hedberg's theorem 2014-12-19 13:54:12 -08:00
Jakob von Raumer
71cffd29a0 chore(hott) minor corrections 2014-12-16 13:11:32 -08:00
Jakob von Raumer
9607518ce0 chore(hott) reflect @avigad's name changes in the std library 2014-12-16 13:11:32 -08:00
Jakob von Raumer
503048226e chore(hott) fix the types and algebra 2014-12-16 13:11:32 -08:00
Jakob von Raumer
341a3d4411 chore(hott) add function.hlean to init 2014-12-16 13:11:32 -08:00
Jakob von Raumer
a02cc1aff9 chore(hott) fix init 2014-12-16 13:11:32 -08:00
Jakob von Raumer
dae2aeb605 chore(hott) fix file endings 2014-12-16 13:11:32 -08:00
Jakob von Raumer
402622ac91 chore(hott) try to move library 2014-12-16 13:11:32 -08:00
Leonardo de Moura
8ad9b84c85 feat(init): reserve notation for "not in" 2014-12-15 19:22:17 -08:00
Leonardo de Moura
ad9620f325 feat(hott/init): add notation for sigma types 2014-12-09 15:41:18 -08:00
Leonardo de Moura
41c6914e48 refactor(hott/init): mark theorems load by initialization as transparent 2014-12-08 12:12:19 -08:00
Leonardo de Moura
beef85289a feat(hott/init): add lift to initialization 2014-12-08 12:09:41 -08:00
Leonardo de Moura
ec7f90cb16 feat(hott/init): make sure eq is universe polymorphic
Jakob and Floris needed path equality to be universe polymorphic when
proving univalence.
2014-12-06 09:43:42 -08:00
Leonardo de Moura
94a825c472 feat(hott/init): add wf and prod to HoTT initialization 2014-12-05 21:48:08 -08:00
Leonardo de Moura
5e9ed30e7d feat(hott/init/prod): show lex is well-founded in HoTT 2014-12-05 21:46:17 -08:00
Leonardo de Moura
cf7dd60442 feat(hott/init): add well-founded recursion to HoTT library 2014-12-05 21:36:34 -08:00
Leonardo de Moura
1dc0790004 feat(hott/init): add initialization files 2014-12-05 15:47:04 -08:00
Leonardo de Moura
eb87c18693 feat(*): add support for separate HoTT library 2014-12-05 14:34:02 -08:00