Commit graph

482 commits

Author SHA1 Message Date
Floris van Doorn
f3ba81a19d fix(init.path): a couple of small simplifications 2015-08-07 13:34:40 -07:00
Floris van Doorn
0ec525a8ee feat(two_quotient): finish proof of elim_incl2 2015-08-07 13:34:40 -07: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
Floris van Doorn
747d12a385 feat(hott): prove characterization of a pathover in a pathover-type 2015-08-04 13:01:12 +02:00
Floris van Doorn
e198be318f feat(circle): show that x = x in the circle is always Z 2015-08-04 13:01:11 +02:00
Floris van Doorn
7a780b1b60 feat(hott): various minor changes in the HoTT library 2015-08-04 13:01:11 +02:00
Leonardo de Moura
b3cd3efbb4 refactor(hott): fix "sorry"s at int/basic.hlean, and comment the remaining "sorry"s 2015-07-27 08:34:11 -07:00
Leonardo de Moura
e969c7a8d6 refactor(library): remove 'simp' hack 2015-07-22 10:13:19 -07:00
Leonardo de Moura
267545ca0c feat(frontends/lean): parse 'with_options' tactical
see issue #492
2015-07-13 19:13:41 -04:00
Leonardo de Moura
6ab5cf214c feat(library,hott): add simp tactic reference 2015-07-13 18:01:40 -04:00
Leonardo de Moura
38d5c361df refactor(hott/types/trunc): remove unnecessary fold
The new unfold tactic performs the fold automatically for us.

see issue #692
2015-07-12 13:07:18 -04:00
Leonardo de Moura
584f9e3f49 fix(library/tactic/unfold_rec): support indexed families at unfold_rec
This commit also removes many (now unnecessary) folds from the HoTT
library.

See issue #692

We still have to implement support for recursive definitions based on
brec_on that recurse over inductive families.
2015-07-12 12:32:58 -04:00
Leonardo de Moura
a9515ac7a4 feat(library/tactic/rewrite_tactic): try to fold nested recursive applications after unfolding a recursive function
See issue #692.
The implementation still has some rough spots.
It is not clear what the right semantic is.
Moreover, the folds in e_closure could not be eliminated automatically.
2015-07-08 21:19:18 -04:00
Leonardo de Moura
4b1b3e277f feat(frontends/lean): rename '[unfold-c]' to '[unfold]' and '[unfold-f]' to '[unfold-full]'
see issue #693
2015-07-07 16:37:06 -07:00
Leonardo de Moura
68785b8bed fix(library/tactic/generalize_tactic): fixes #711 2015-06-26 19:35:30 -07:00
Leonardo de Moura
de90926eed refactor(hott): adjust HoTT library to new support for projections 2015-06-26 17:18:30 -07:00
Floris van Doorn
69f91bfd86 fix(types/nat/hott): workaround failed inductions 2015-06-25 23:13:47 -04:00
Floris van Doorn
24762fe843 feat(hit): add hits with 2-path constructors
In hit.two_quotient we define a general construction to define hits with 2-dimensional path constructors, similar to quotients.
We can add 2-paths between any two 'words', where a word consists of 1-path constructors, concatenation and inverses.
We use this to define the torus, reflexive quotients and the reduced suspension.

There is still one 'sorry' in the construction
2015-06-25 22:31:41 -04:00
Floris van Doorn
df3ce2b00b feat(types/eq2): add theorem about eq_of_con_inv_eq_idp 2015-06-25 22:31:41 -04:00
Floris van Doorn
c8eee66c5b feat(hott/relation): add equivalence closure of a relation 2015-06-25 22:31:41 -04:00
Floris van Doorn
b94b66243e feat(hott/types): add some theorems about operations of 2-paths 2015-06-25 22:31:41 -04:00
Floris van Doorn
ea0f57aef5 feat(hott): various clean-up and small additions 2015-06-25 22:31:40 -04:00
Floris van Doorn
2748525c21 feat(hit/susp): finish the proof that loop space is adjoint to the suspension 2015-06-25 22:31:40 -04:00
Floris van Doorn
124c9d3d8a feat(hott): various cleanup and fixes, rename \~ to ~, expand types.pointed 2015-06-25 22:31:40 -04:00
Floris van Doorn
ac03bf7a4a feat(hott/nat): prove computation rule for cases by inequality 2015-06-25 22:31:40 -04:00
Floris van Doorn
0b9c8e14a4 fix(*/init/nat): fix occurrences where both theorem and [unfold-c] were used 2015-06-25 22:31:40 -04:00
Floris van Doorn
fa1979c128 feat(datatypes): let the type of unit be the lowest non-Prop universe
The definitional package (brec_on and cases_on) now use poly_unit instead of unit

closes #698
2015-06-25 17:33:46 -07:00
Leonardo de Moura
cfafc90cc0 refactor(hott,library): make sure files compile even without using "projection macros" 2015-06-22 12:22:11 -07:00
Leonardo de Moura
e382f7c2f9 refactor(hott/algebra/field): cleanup
use same definition used in the standard library.
2015-06-21 15:58:54 -07:00
Leonardo de Moura
5830d7d037 refactor(hott/algebra/category/yoneda): reduce compilation time using 'rewrite' tactic 2015-06-18 15:52:08 -07:00
Leonardo de Moura
a4c0699e81 feat(library/tactic/constructor_tactic): restore 'constructor' tactic old semantics, add 'fconstructor' tactic
See issue #676

Add new test demonstrating why it is useful to have the old semantics
for 'constructor'
2015-06-17 23:48:54 -07:00
Jeremy Avigad
6b36076ab5 feat({library,hott}/init/nat): add sub_le_succ 2015-06-15 22:53:11 +10:00
Jeremy Avigad
3b010b8c92 feat({library,hott}/algebra/group): add abbreviations e.g. for mul.cancel_left 2015-06-15 22:53:11 +10:00
Jeremy Avigad
a4a8253f50 refactor(library,hott,tests): rename succ_inj to succ.inj, add abbreviation eq_of_succ_eq_succ 2015-06-15 22:52:38 +10:00
Leonardo de Moura
62e1be897c test(hott/algebra/category): test new 'abstract ... end' expression in the HoTT library 2015-06-12 17:53:01 -07:00
Leonardo de Moura
8b7dc4e03a feat(frontends/lean): apply eta-reduction in postprocessing step
Perhaps, we should add an option to disable this new feature.

Remark: this commit makes commit 46d418a redundant.
I'm keeping 46d418a because we may retract this commit in the future.
2015-06-10 16:29:30 -07:00
Leonardo de Moura
01127061f5 refactor(hott/arity): cleanup 2015-06-10 15:45:46 -07:00
Leonardo de Moura
4b91cfccff feat(frontends/lean/builtin_exprs): make notation ( e : T ) builtin
In the previous approach, the following (definitionally equal) term was being generated

       (fun (A : Type) (a : A), a) T e
2015-06-10 14:52:59 -07:00
Floris van Doorn
f995e5ea48 fix(cubical): remove unused basic file 2015-06-04 20:21:52 -04:00
Floris van Doorn
ff41886a32 feat(nat/bquant): give instances for quantification bounded with le
also add theorems c_iff_c to logic/connectives, where c is a connective
2015-06-04 20:14:13 -04:00
Floris van Doorn
7f5caab694 feat(nat): redefine le and lt in the standard library 2015-06-04 20:14:13 -04:00
Floris van Doorn
ff01774fd7 renaming(hit): rename type_quotient to quotient, and quotient to set_quotient
This renaming is because type_quotient is a nonstandard name.  I've had a discussion with Egbert
Rijke, Steve Awodey and Dan Licata, and the consensus for a better name was 'quotient'.  I had to
make changes in src/kernel/hits/hits.cpp, I renamed g_type_quotient* by g_hit_quotient* (to avoid
name clash the standard library quotient, although I don't know whether that name clash would
matter).
2015-06-04 20:14:13 -04:00
Floris van Doorn
06528c4791 refactor(types): create cubical subfolder, update markdown files 2015-06-04 20:14:13 -04:00
Floris van Doorn
33e948d9d1 feat(hit/sphere): Prove that maps from S^n to an (n-1)-type are constant 2015-06-04 20:14:13 -04:00
Floris van Doorn
876aa20ad6 feat(hott): Port remainder of §6.3 and §7.2 from the HoTT book
Also prove a theorem similar to Lemma 7.3.1

There are still some sorry's in hit.suspension
2015-06-04 20:14:12 -04:00
Floris van Doorn
883b4fedb9 feat(hott): start with proof to characterize (is_trunc n A) using iterated loop spaces 2015-06-04 20:14:12 -04:00
Floris van Doorn
4117455e97 feat(hott): redefine nat.le and nat.lt
also some minor modifications in other files
2015-06-04 20:14:12 -04:00
Floris van Doorn
d4a991ef84 feat(hott): define cubes and cubeovers 2015-06-04 20:13:53 -04:00
Jeremy Avigad
fabdae6d54 refactor(hott/algebra/ring.lean,ordered_ring.lean): rename some theorems 2015-06-01 12:35:44 +10:00
Leonardo de Moura
ca110012d8 feat(library/tactic): automate "generalize-intro-induction/cases" idiom
closes #645
2015-05-30 21:57:28 -07:00
Leonardo de Moura
6f6848968d feat(frontends/lean/coercion_elaborator): "coercion lifting" for backtracking case
closes #252
2015-05-30 16:44:26 -07:00
Leonardo de Moura
00232e70d6 feat(hott,library): auxiliary theorems for simplifier 2015-05-27 16:35:56 -07:00
Leonardo de Moura
85409a59d3 feat(library/tactic/rewrite_tactic): add xrewrite and krewrite tactic variants
closes #511
2015-05-27 16:32:43 -07:00
Leonardo de Moura
dc6411b903 feat(library/inductive_unifier_plugin): restrict rule that was generating non-terminating behavior
see issue #632
2015-05-27 14:41:12 -07:00
Floris van Doorn
96a4a015d9 fix(hit): make the nondependent eliminator standard for hits 2015-05-26 21:37:02 -07:00
Floris van Doorn
43bcdd7994 feat(hott): remove sorry's in circle.hlean, characterize pathovers in degenerate pi's 2015-05-26 21:37:01 -07:00
Floris van Doorn
c64d73aae4 feat(types.nat): prove that inequalities on nat are mere propositions
Also some small changes in various other locations
2015-05-26 21:37:01 -07:00
Floris van Doorn
95e0fbb71a feat(hott): add interval and (start of) squareovers 2015-05-26 21:37:01 -07:00
Floris van Doorn
d7c1a8f2e0 feat(hott): small fixes in hit and cubical.square 2015-05-26 21:37:01 -07:00
Floris van Doorn
4a29f4bdd4 feat(types): incorporate pathovers in the files of the types folder
Conflicts:
	hott/cubical/pathover.hlean
2015-05-26 21:37:01 -07:00
Floris van Doorn
0b12d51b25 feat(hott): use pathovers in all the recursors of hits
move pathover file to the init folder
2015-05-26 21:37:01 -07:00
Floris van Doorn
54ed8a8e76 feat(hott): small changes in init and category 2015-05-26 21:37:01 -07:00
Floris van Doorn
40d5f83851 feat(hit): start using induction tactic 2015-05-26 21:37:01 -07:00
Floris van Doorn
50290fb81c feat(hott): add recursor attribute to hits
recursor attribute is added to both the dependent and nondependent elimination, is such a way that the dependent elimination is used by default
2015-05-26 21:37:01 -07:00
Floris van Doorn
8056f326d7 feat(reserved_notation): make is_typeof parsing-only, add ^ to HoTT 2015-05-26 21:37:01 -07:00
Jeremy Avigad
716da2488b fix(hott/*.md,library/*.md): use the word 'file' instead of 'module' 2015-05-25 16:50:42 -07:00
Leonardo de Moura
d0987eb3ac feat(library/tactic): add 'subtvars' tactic 2015-05-25 16:36:44 -07:00
Jeremy Avigad
33214f0895 refactor(hott/*): remove 'Module:' lines 2015-05-23 20:52:58 +10:00
Jeremy Avigad
d33c91d7b9 fix({hott,library}/algebra/*): fix names 2015-05-23 14:05:06 +10:00
Leonardo de Moura
c133d26505 feat(frontends/lean/builtin_exprs): change how 'show' is processed in tactics
Unresolved placeholders were not being reported
2015-05-19 16:23:50 -07:00
Leonardo de Moura
78ee055de8 feat(library/tactic): add induction tactic with support for user defined recursors
closes #483
closes #492
2015-05-19 13:27:17 -07:00
Leonardo de Moura
e1c2340db2 fix(frontends/lean): consistent behavior for protected declarations
see https://github.com/leanprover/lean/issues/604#issuecomment-103265608

closes #609
2015-05-18 22:35:18 -07:00
Floris van Doorn
c430d1d5ba feat(category.constructions): define comma category 2015-05-18 15:59:55 -07:00
Floris van Doorn
eedf1992bf feat(functor): prove sorry's, and shorten some proofs 2015-05-18 15:59:55 -07:00
Floris van Doorn
6ca9635d53 feat(hit.trunc): replace sorry by proof 2015-05-18 15:59:55 -07:00
Floris van Doorn
de6294a4ce feat(hott.core): add more files to core.hlean 2015-05-18 15:59:55 -07:00
Floris van Doorn
2144036cdb feat(hott.circle): prove that the fundamental group of the circle is equal to the integers, as groups
Also many minor fixes at various places
2015-05-18 15:59:55 -07:00
Floris van Doorn
1597337c72 feat(path): add unfold-c attribute to definitions 2015-05-18 15:59:55 -07:00
Floris van Doorn
17a9bb4bc2 fix(types.W): clean-up W file, remove 'exit' 2015-05-18 15:59:54 -07:00
Leonardo de Moura
19361f0196 feat(library/unifier): do not fire type class resolution as last resort when type contains metavariables
see discussion at #604
2015-05-18 15:45:23 -07:00
Leonardo de Moura
b1ece388a6 feat(frontends/lean,library/tactic/induction_tactic): improve induction tactic notation, expand induction tactic implementation 2015-05-18 09:25:07 -07:00
Leonardo de Moura
065a1f7501 feat(library/tactic): add 'induction' tactic skeleton 2015-05-12 20:21:25 -07:00
Leonardo de Moura
396f77aa68 fix(library,hott): comment 'exit' commands to avoid warnings during compilation 2015-05-11 11:49:23 -07:00
Leonardo de Moura
379af8a04e feat(library): avoid 'definition' hack for theorems 2015-05-09 12:15:30 -07:00
Leonardo de Moura
6c958a25e7 refactor(library/tactic/expr_to_tactic): make sure builtin tactics don't need to be marked opaque
This modification is needed since we will remove opaque definitions from
the kernel.

see issue #576
2015-05-08 16:06:16 -07:00
Leonardo de Moura
0b57f7d00a refactor(library/tactic): refine interface between tactic and proof-term modes
Some constraints were being lost with the previous interface.
This is why we had a workaround in fintype.lean.

We can also remove some hacks we have used in the past.
2015-05-07 18:02:51 -07:00
Floris van Doorn
c2c7c4f79f feat(hit.circle): finish proof that (base = base) is equivalent to int 2015-05-07 16:39:04 -07:00
Floris van Doorn
111c8e1529 feat(hott): add [unfold-c] and [constructor] attributes for HITs 2015-05-07 16:39:04 -07:00
Floris van Doorn
9893de6194 feat(hit/circle): prove partly that the fundamental group of the circle is int
Also add markdown files for nat and int
2015-05-07 16:39:04 -07:00
Floris van Doorn
0a8f4f6dab feat(function): add unfold hints to function.[h]lean 2015-05-07 16:39:03 -07:00
Floris van Doorn
7cfac38eda feat(hott): port parts of natural numbers and integers from standard library to HoTT
This also involves:
- adding definitions about logic and natural numbers existing in the standard library to init
- porting the current algebraic hierarchy
2015-05-07 16:39:03 -07:00
Floris van Doorn
e9ff925e2f feat(pi): prove that forall x, a = x is a mere proposition 2015-05-07 16:39:03 -07:00
Floris van Doorn
e5241f84ec fix(init.datatypes): make empty live in Type.{0} 2015-05-07 16:39:03 -07:00
Floris van Doorn
90f1a691fd feat(hott): change notation of transport to correspond with standard library 2015-05-07 16:39:03 -07:00
Floris van Doorn
8b4756f9c8 feat(hott): port nat from standard library to HoTT library; make script to port files 2015-05-07 16:39:03 -07:00
Floris van Doorn
61c1cd6840 feat(hott.init): define core namespace 2015-05-07 16:39:03 -07:00
Floris van Doorn
6dfd7af0ec feat(hott.types): add theorems about booleans 2015-05-07 16:39:03 -07:00
Floris van Doorn
dce672a815 fix(hott.md): mention arity.hlean 2015-05-07 16:39:03 -07:00
Floris van Doorn
ce5f60d009 feat(hott.init.function): add more notions from the standard library 2015-05-07 16:39:03 -07:00
Floris van Doorn
43fb334914 feat(circle): prove loop != base 2015-05-07 16:39:03 -07:00
Floris van Doorn
e8e41ed745 fix(types.md): add all files, add some explanation 2015-05-07 16:39:03 -07:00
Leonardo de Moura
21ee0a5ff9 refactor(hott/algebra/category/constructions/functor): cleanup proof 2015-05-07 15:29:02 -07:00
Leonardo de Moura
b03266be70 feat(library/normalize,frontends/lean): rename '[unfold-m]' hint to '[constructor]', and allow it to be attached to constants
closes #587
2015-05-07 12:00:34 -07:00
Leonardo de Moura
741fca1e7b feat(hott/init/path): mark 'idp' and 'idpath' with '[unfold-m]' hint
closes #496
2015-05-04 14:29:22 -07:00
Leonardo de Moura
4e1146a2d5 refactor(hott,library): test new tactics in the HoTT and standard libraries 2015-05-02 22:22:31 -07:00
Leonardo de Moura
657ad3327f chore(hott): remove unnecessary '[trans]' attributes 2015-05-02 21:35:59 -07:00
Leonardo de Moura
b39fe17dee feat(library/tactic): add 'transitiviy', 'reflexivity' and 'symmetry' tactics
closes #500
2015-05-02 15:48:25 -07:00
Leonardo de Moura
cd17618f4a refactor(library): replace 'calc_trans', 'calc_symm', 'calc_refl' and 'calc_subst' commands with attributes '[symm]', '[refl]', '[trans]' and '[subst]'
These attributes are used by the calc command.
They will also be used by tactics such as 'reflexivity', 'symmetry' and
'transitivity'.

See issue #500
2015-05-02 15:15:35 -07:00
Leonardo de Moura
415ca2b93f feat(library/tactic): add 'congruence' tactic
It is the f_equal described at issue #500.
2015-05-02 12:58:46 -07:00
Leonardo de Moura
458d13025f refactor(library,hott): define 'congr' in the initialization files 2015-05-02 11:29:31 -07:00
Leonardo de Moura
ac8ba6a3cf feat(library/tactic): add 'subst' tactic
see issue #500
2015-05-01 19:31:24 -07:00
Leonardo de Moura
9ba8b284a1 fix(library/tactic/apply_tactic): add eapply, and fix issue #361 2015-05-01 15:08:00 -07:00
Leonardo de Moura
63eb155c7e feat(library/tactic): add 'injection' tactic
see issue #500
2015-05-01 12:45:21 -07:00
Leonardo de Moura
2d9c950144 feat(library/tactic/constructor_tactic): allow 'constructor' tactic without index
see issue #500
2015-04-30 21:15:07 -07:00
Leonardo de Moura
d152f38518 feat(library/tactic): add 'constructor', 'split', 'left', 'right' and 'existsi' tactics
see issue #500
2015-04-30 17:52:29 -07:00
Leonardo de Moura
1c6067bac2 feat(library/tactic): add 'exfalso' tactic
see issue #500
2015-04-30 15:43:07 -07:00
Leonardo de Moura
9760968b45 refactor(library,hott): use/test new 'contradiction' tactic in the standard and hott libraries 2015-04-30 13:56:12 -07:00
Leonardo de Moura
9c8a63caec feat(library/tactic): add 'contradiction' tactic
see issue #500

Remark: this tactic also applies no_confusion to take care of a contradiction
2015-04-30 13:47:40 -07:00
Leonardo de Moura
3233008039 feat(library/tactic): allow user to name generalized term in the 'generalize' tactic
closes #421
2015-04-30 11:57:40 -07:00
Leonardo de Moura
3912bc24c8 feat(frontends/lean): nicer syntax for 'intros' 'reverts' and 'clears' 2015-04-30 11:00:39 -07:00
Leonardo de Moura
e384894f7a chore(hott/cubical/square): remove unnecessary annotations added in previous commit 2015-04-29 12:25:31 -07:00
Leonardo de Moura
b790ca9806 fix(library/tactic/rewrite_tactic): type check rewriting steps
closes #550
2015-04-29 12:16:37 -07:00
Floris van Doorn
297d50378d feat(hott): add definitions using truncations and theorems about them
define embedding, (split) surjection, retraction, existential quantifier, 'or' connective
also add a whole bunch of theorems about these definitions

still has two sorry's which can be solved after #564 is closed
2015-04-29 10:04:07 -07:00
Floris van Doorn
15c2ee289f feat(hott): make some fibrations in path.hlean implicit, and a bit of renaming in init 2015-04-29 10:04:07 -07:00
Floris van Doorn
5349839fa9 feat(hott): define pathovers and squares 2015-04-29 10:04:07 -07:00
Floris van Doorn
dbdb8e6050 feat(circle): prove the path computation rule for the circle 2015-04-29 10:04:07 -07:00
Floris van Doorn
c23e707874 feat(circle): define circle as sphere 1, remove all but 1 sorry 2015-04-29 10:04:07 -07:00
Floris van Doorn
6c061991cc feat(hit): prove path computation rules for all hits except the circle 2015-04-29 10:04:07 -07:00
Floris van Doorn
70a2f6534c feat(hit): derive path computation rule for elim and elim_type for every hit
also make argument of eq_of_rel implicit
also remove most sorry's for hits

path computation rule for rec still needs to be done for all hits
2015-04-29 10:04:07 -07:00
Floris van Doorn
4173c958f7 feat(init.ua): add some useful consequences of ua 2015-04-29 10:04:07 -07:00
Floris van Doorn
40086d0084 feat(hott): standardize the naming of definitions proving equality of elements of a structure
examples:
foo_eq : Pi {A B : foo}, _ -> A = B
foo_mk_eq : Pi _, foo.mk _ = foo.mk _ (if constructor is called "bar", then this becomes "bar_eq")
foo_eq_equiv : Pi {A B : foo}, (A = B) ≃ _

also changed priority of some instances of is_trunc
2015-04-29 10:04:06 -07:00
Floris van Doorn
b70841171a fix(hott): rename retr and sect to right_inv and left_inv 2015-04-29 10:04:06 -07:00
Floris van Doorn
797a2d2047 refactor(category): merge precategory/ and category/, organize construction files differently. 2015-04-29 10:04:06 -07:00
Floris van Doorn
23e6a3131d feat(precategory): add two redundant fields to precategory. Also some cleanup.
In particular, all instances of "set_option apply.class_instance false" are removed
2015-04-29 10:04:06 -07:00
Floris van Doorn
48f1aff848 feat(hott): add hit-markdown file 2015-04-29 10:04:06 -07:00
Floris van Doorn
052fbe0228 refactor(hott.init): remove subdirectories, merge some files 2015-04-29 10:04:06 -07:00
Floris van Doorn
86012d841b fix(hott): make f explicit in is_equiv.mk and a bit of renaming in init 2015-04-29 10:04:06 -07:00
Floris van Doorn
e769fdd9dc feat(hott): make some arguments in init.path implicit and rename apD to apd 2015-04-29 10:04:06 -07:00
Leonardo de Moura
d2c7b5c319 feat(library/tactic): add 'let' tactic
closes #555
2015-04-28 17:24:43 -07:00
Leonardo de Moura
a23118d357 feat(frontends/lean): add tactic_notation command
This addresses the first part of issue #461

We still need support for tactic definitions
2015-04-27 17:46:13 -07:00
Leonardo de Moura
ca8943f45b feat(library,hott): remove rapply tactic 2015-04-27 15:06:16 -07:00
Leonardo de Moura
dcc94dde82 refactor(kernel): rename may_reduce_later to is_stuck, and make is_stuck more precise
It now reflects the definition used in the elaboration paper.
2015-04-27 11:20:15 -07:00
Leonardo de Moura
9d01868361 feat(frontends/lean): use rewrite tactic to implement unfold (it has a unfold step)
closes #502
2015-04-24 17:23:12 -07:00
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