Commit graph

600 commits

Author SHA1 Message Date
Jakob von Raumer
7c81044a99 chore(library/hott) change is_pointed to structure 2014-11-28 22:50:43 -08:00
Jakob von Raumer
0417c21bbb chore(library/hott) change naming in equiv_precomp 2014-11-28 22:50:43 -08:00
Jakob von Raumer
4587e46c67 chore(library/hott) change naming to leo's naming proposal 2014-11-28 22:50:43 -08:00
Jakob von Raumer
7374149758 chore(library/hott) change equiv.lean to use structures and more typeclass inference 2014-11-28 22:50:43 -08:00
Leonardo de Moura
011e955fed refactor(library/data/fin): simplify 'fin' module using new inversion tactic 2014-11-28 22:46:06 -08:00
Leonardo de Moura
e0debca771 feat(library/tactic/inversion_tactic): add 'case ... with ...' variant that allows user to specify names for new hypotheses 2014-11-28 22:25:37 -08:00
Leonardo de Moura
c2602baf2b feat(library/tools/tactic): add 'cases' alias for 'inversion' tactic 2014-11-28 19:33:11 -08:00
Leonardo de Moura
ebd320a6b3 feat(library/tactic): add first step of 'inversion' tactic 2014-11-26 21:28:00 -08:00
Leonardo de Moura
f7deabfd19 feat(library/rename): add notation for rename 2014-11-26 19:02:11 -08:00
Leonardo de Moura
e55397d422 feat(library/tactic): add 'clears' and 'reverts' variants 2014-11-26 14:49:48 -08:00
Leonardo de Moura
2bd8f969d5 feat(library/tactic): add 'revert' tactic, closes #346 2014-11-26 14:23:42 -08:00
Leonardo de Moura
df51ba8b7c feat(library/definitional/projection): use strict implicit inference, closes #344 2014-11-25 18:04:06 -08:00
Jakob von Raumer
53d66c91fc chore(library/hott) made ua_implies_funext a class instance 2014-11-23 17:43:55 -08:00
Jakob von Raumer
757cdcb130 feat(library/hott) funext from ua now with arbitrary universe levels for funext! 2014-11-23 17:43:55 -08:00
Jakob von Raumer
228205634d chore(library/hott) make funext more general 2014-11-23 17:43:55 -08:00
Jakob von Raumer
12429c93c8 fix(library/hott) fix equiv_precomp, doesn't look nice now 2014-11-23 17:43:55 -08:00
Jakob von Raumer
1f6b6ff8e6 chore(library/hott) adjust funext_from_ua.lea to typeclass axioms 2014-11-23 17:43:55 -08:00
Jakob von Raumer
2d9621892b fix(library/hott) fill both gaps (I don't know why it works that way), change name from funext.apply to funext.ap, since apply seems to be a tactic name? 2014-11-23 17:43:55 -08:00
Jakob von Raumer
fd47a162de chore(library/hott) adapted theories to typeclass axioms 2014-11-23 17:43:55 -08:00
Jakob von Raumer
d8d2ea998d feat(library/hott) change axioms to Leo's axioms-as-typeclass proposal 2014-11-23 17:43:55 -08:00
Leonardo de Moura
64686c1278 feat(frontends/lean): allow user to associate precedence to binders, closes #323 2014-11-23 17:30:46 -08:00
Leonardo de Moura
7231a36ec7 refactor(library/data/nat/div): remove unnecessary annotations 2014-11-23 17:30:46 -08:00
Leonardo de Moura
13fba433b0 feat(library/tactic/generalize): add 'generalizes' syntax sugar, closes #327 2014-11-23 17:30:22 -08:00
Floris van Doorn
3523a70b4c fix(hott/path): make recursion-like definitions reducible 2014-11-22 17:44:13 -08:00
Floris van Doorn
e97b0b4e8e feat(hott/types): port more of the sigma library from Coq
prove theorems about interaction of sigma types and n-types, including the fact that sigmas preserve n-types
2014-11-22 17:44:12 -08:00
Floris van Doorn
25f5c56bb2 refactor(data/sigma): move notation from sigma.thms to sigma.decl 2014-11-22 17:44:12 -08:00
Floris van Doorn
7bfbe039d9 refactor(data.prod): move theorems about products from data.quotient.util to data.prod.thms 2014-11-22 17:44:12 -08:00
Floris van Doorn
24e35a9f2c fix(hott/trunc): comment out sorry 2014-11-22 17:44:12 -08:00
Floris van Doorn
bc807212ac feat(hott/path): add notation for higher and dependent transports 2014-11-22 17:44:12 -08:00
Floris van Doorn
e8b076e460 feat(hott/types/sigma): port large part of the sigma library from the hott library
most importantly, prove the characterization of paths in sigma types
2014-11-22 17:44:12 -08:00
Leonardo de Moura
616f2d9b82 fix(library/data/nat/div): notation should be local 2014-11-22 17:33:42 -08:00
Leonardo de Moura
ab9c51bd4b refactor(library/data/nat/div): simplify 'gcd' definition 2014-11-22 17:19:24 -08:00
Leonardo de Moura
2af5ce364d feat(library/data/nat/decl): add 'measure' 2014-11-22 17:19:03 -08:00
Leonardo de Moura
d07481f60f feat(library/data/nat/div): remove some 'sorry's 2014-11-22 14:59:35 -08:00
Leonardo de Moura
9368b879bf refactor(library/data/nat/div): use well-founded library for defining div, mod and gcd 2014-11-22 13:26:55 -08:00
Leonardo de Moura
21b16fd97c feat(library/data/nat): add more basic theorems for definitional package 2014-11-22 13:25:46 -08:00
Leonardo de Moura
faf736a9d2 feat(library/logic/default): add wf_k 2014-11-22 13:25:46 -08:00
Leonardo de Moura
a3daff702a fix(library/logic/wf): typo 2014-11-22 13:25:46 -08:00
Leonardo de Moura
47b6cfb28d feat(library/logic/if): add dependent if-then-else: dite 2014-11-22 09:56:32 -08:00
Leonardo de Moura
9c9f5bba1a refactor(library/data/nat): prove auxiliary theorems about < and sub asap for the definitional package 2014-11-22 09:36:33 -08:00
Leonardo de Moura
29a0d3109b refactor(library/logic/connectives): mark theorems used to prove 'decidable' theorems as transparent
if we don't this, then 'if-then-else' expressions depending on theorems
such as 'and_decidable', 'or_decidable' will not compute inside the kernel
2014-11-22 09:32:43 -08:00
Leonardo de Moura
064ecd3e3d refactor(library/data/nat): declare lt and le asap using inductive definitions, and make key theorems transparent for definitional package
We also define key theorems that will be used to generate the
automatically generated a well-founded subterm relation for inductive
datatypes.
We also prove decidability and wf theorems asap.
2014-11-22 00:19:39 -08:00
Leonardo de Moura
7c54dbce10 refactor(library/logic/if): mark basic theorem transparent 2014-11-22 00:19:05 -08:00
Leonardo de Moura
acf1c501ad refactor(library/logic/prop): allow 'absurd' to generate Type 2014-11-22 00:19:05 -08:00
Leonardo de Moura
2e121182de refactor(library/logic/decidable): rename decidable_rel -> decidable_pred, and decidable_rel2 -> decidable_rel 2014-11-21 11:49:31 -08:00
Jakob von Raumer
19d0afe160 feat(library/hott) completed the funext_from_ua proof with a somewhat restricted generality on universe levels 2014-11-21 10:46:16 -08:00
Jakob von Raumer
bc33af9f51 feat(library/hott) add universe polymorphism to paths, truncation, etc... get stuck at ua to funext proof anyway 2014-11-21 10:46:16 -08:00
Leonardo de Moura
47e3f0e770 fix(library/logic/wf_k): missing file 2014-11-21 10:03:20 -08:00
Leonardo de Moura
dbb3b7c72a refactor(library/data/nat/sub): cleanup 'max' theorems 2014-11-18 17:56:42 -08:00
Leonardo de Moura
e77cd59368 refactor(library/logic): add basic definitions for relations at logic/relation.lean
We need them for wf and definitional package
2014-11-18 17:32:22 -08:00
Leonardo de Moura
99c30db805 feat(library/data/fin): add fin type 2014-11-17 23:44:57 -08:00
Leonardo de Moura
e2ceb86884 feat(library/data/nat/order): add calc_trans commands for lt and le 2014-11-17 23:44:27 -08:00
Leonardo de Moura
5dc42762de feat(library/data): define 'nat.addl' addition using recursion on the first argument, prove it to be equivalent to 'add', and use it to define vector.append 2014-11-17 22:03:39 -08:00
Jakob von Raumer
fdafb1c11f fix(library/hott) adapt trunc.lean to missing equiv coercion 2014-11-17 18:39:02 -08:00
Jakob von Raumer
59fbe8b53e chore(library/hott) fix universe issue. note: this should be fixed when contr is not bound to universe level 1 anymore 2014-11-17 18:39:02 -08:00
Jakob von Raumer
992aad9661 feat(library/hott) postcomposition from ua lemma is done up to the last gap 2014-11-17 18:39:02 -08:00
Jeremy Avigad
4420f0dc0c feat(library/algebra/group): add ordered semigroups 2014-11-17 18:32:14 -08:00
Leonardo de Moura
3cd3da5a84 refactor(library/data/prod/wf): remove duplication, and import wf's for sigma and prod 2014-11-16 21:19:10 -08:00
Leonardo de Moura
b7725c2949 feat(library/data/sigma/wf): define 'lex' for 'sigma' types and prove wf theorem 2014-11-16 20:08:52 -08:00
Leonardo de Moura
dd0b1ecdbf refactor(library/data/sigma): break file into smaller pieces to reduce dependencies 2014-11-16 18:22:03 -08:00
Leonardo de Moura
53ac754328 refactor(library/data/option): cleanup using 'no_confusion' 2014-11-16 17:56:51 -08:00
Leonardo de Moura
de209f929e feat(library/data/prod/wf): define relational product and prove wf theorem for it 2014-11-16 17:47:07 -08:00
Leonardo de Moura
bf5f48730c refactor(library/data/subtype): define subtype using 'structure' command 2014-11-16 15:01:14 -08:00
Leonardo de Moura
b5404cd979 refactor(library/data/vector): cleanup, use variables, add concat 2014-11-15 22:36:52 -08:00
Leonardo de Moura
85f24e4c80 feat(library/data/vector): add 'zip' and 'unzip' functions 2014-11-15 22:19:23 -08:00
Leonardo de Moura
a7adfde84f feat(library/data/vector): use 'mechanical' definitions, and add 'last' function
The 'mechanical' definitions are "mimicking" what the definitional
package will do.
2014-11-15 20:21:18 -08:00
Leonardo de Moura
627c7cb531 chore(library/logic/wf): remove unnecessary :max 2014-11-14 17:37:05 -08:00
Jeremy Avigad
0d982cceed feat(library/algebra/ring): begin theory of semirings and rings 2014-11-14 17:27:35 -08:00
Leonardo de Moura
e7a7458922 feat(library/general_notation): reserve unary minus 2014-11-13 22:08:20 -08:00
Jeremy Avigad
1ed7794264 feat(library/algebra/group): add theorems for calculation 2014-11-13 20:44:58 -08:00
Jakob von Raumer
e740fbe8c4 chore(library/hott) remove hott.axoims.ua from imports of funext_from_ua.lean 2014-11-13 20:43:46 -08:00
Jakob von Raumer
b514a978b2 fix(library/hott) changed pointed.lean to use trunc.lean correctly 2014-11-13 20:43:46 -08:00
Jakob von Raumer
8dfa78e070 feat(library/hott) almost completed portin UnivalenceImpliesFunext.v 2014-11-13 20:43:46 -08:00
Jakob von Raumer
df4a8db23d feat(library/hott) add to trunc.lean: contractible types are equivalent to unit 2014-11-13 20:43:46 -08:00
Jakob von Raumer
3ee703f5d5 feat(library/hott) Ported part of UnivalenceImpliesFunext.v 2014-11-13 20:43:46 -08:00
Jakob von Raumer
2ed7032997 chore(library/hott) cleaned up the proof a bit 2014-11-13 20:43:46 -08:00
Jakob von Raumer
b5d564431a feat(library/hott) port the rest of Funext_Varieties.v 2014-11-13 20:43:46 -08:00
Jakob von Raumer
6296f8e092 feat(library/hott) port a good portion of FunextVarieties.v 2014-11-13 20:43:46 -08:00
Jakob von Raumer
be8c758be1 feat(library/hott) ported Pointed.v 2014-11-13 20:43:45 -08:00
Leonardo de Moura
edd04881ee fix(library/logic): import prod and unit declarations in logic
Reason: we need them for automatically generating constructions needed
by the definitional package
2014-11-12 16:54:50 -08:00
Leonardo de Moura
6bc89f0916 feat(library/definitional): define ibelow and below
These are helper definitions for brec_on and binduction_on
2014-11-12 16:38:46 -08:00
Leonardo de Moura
ef5a3e83ad feat(library/data/vector): expand 'vector' module 2014-11-11 22:33:47 -08:00
Leonardo de Moura
21b93bd2e5 chore(library/data/prod/wf): remove dependency on opaque theorem 2014-11-11 00:39:53 -08:00
Leonardo de Moura
54213b48dc feat(library/data/prod/wf): lex of well-founded relations is well-founded 2014-11-11 00:29:21 -08:00
Leonardo de Moura
76711d00c1 feat(library/data/nat/wf): define measure using inverse image 2014-11-11 00:28:46 -08:00
Leonardo de Moura
4623a62ec3 feat(library/data/nat/wf): predecessor relation is well-founded 2014-11-10 22:15:15 -08:00
Leonardo de Moura
9c93816211 chore(library/logic/wf): cleanup 2014-11-10 21:19:38 -08:00
Leonardo de Moura
4ebd3e2c27 feat(library/logic/wf): transitive closure of a well-founded relation is well-founded 2014-11-10 21:07:28 -08:00
Leonardo de Moura
22b7a0615f fix(frontends/lean): coercion affects other modules 2014-11-10 20:14:19 -08:00
Leonardo de Moura
64043094f4 feat(library/logic/wf): some basic definitions for constructing well_founded relations 2014-11-10 17:57:55 -08:00
Leonardo de Moura
189e5e6b48 refactor(library/data/nat/wf): mark theorem as transparent
It doesn't really help since
        le_imp_lt_or_eq, succ_le_cancel, lt_imp_le_succ and or.elim
are still opaque
2014-11-10 12:52:02 -08:00
Floris van Doorn
107a9cf8e4 feat(library): port more of truncation library from Coq HoTT
Everything directly about truncations in the basic truncation library is ported.
Some theorems about other structures still need to be ported.
Also made some minor changes in hott.equiv
2014-11-08 19:12:54 -08:00
Floris van Doorn
780e949992 feat(empty): define negation of types 2014-11-08 19:12:54 -08:00
Floris van Doorn
bf27a17dec style(library): add some comments 2014-11-08 19:12:54 -08:00
Floris van Doorn
8c7fdd3708 style(library): rename set_category to discrete_category 2014-11-08 19:12:54 -08:00
Floris van Doorn
930cc11684 doc(algebra): update markdown files 2014-11-08 19:12:54 -08:00
Floris van Doorn
cd33d2e96d refactor(typeof): move typeof to general_notation 2014-11-08 19:12:54 -08:00
Floris van Doorn
74779dd855 feat(hott/trunc): clean up some theorems, prove some basic theorems 2014-11-08 19:12:54 -08:00
Floris van Doorn
08c56188b6 feat(library/hott/trunc): prove that n-types are (n+1)-types. 2014-11-08 19:12:54 -08:00
Jeremy Avigad
4a955c0f92 feat(library/algebra/order): begin theory of orders
feat(library/algebra/order): begin theory of orders
2014-11-08 19:07:59 -08:00
Leonardo de Moura
b97d437011 refactor(library/data/nat/basic): use no_confusion construction to simplify proofs 2014-11-08 19:00:40 -08:00
Leonardo de Moura
ac5a963db3 refactor(library/data/sum): use no_confusion construction to simplify proofs 2014-11-08 18:58:56 -08:00
Leonardo de Moura
46149d0d50 refactor(library/data/prod): break into pieces to reduce dependencies
prod is needed for some automatically generated constructions.
So, it is important it is loaded in the environment as early as possible.
2014-11-08 10:19:29 -08:00
Leonardo de Moura
ad2ecfb7a8 refactor(library/logic/cast): move heq declaration to a separate module
heq is be needed for some automatically generated constructions.
So, we want it available with the least number of dependencies.
2014-11-08 10:19:29 -08:00
Leonardo de Moura
64d2cc60c2 feat(library/data/nat/wf): add nat.lt is well founded theorem 2014-11-07 10:48:31 -08:00
Jeremy Avigad
c28227d7a1 feat(library/algebra/group): add multiplicative and additive structures 2014-11-07 10:23:37 -08:00
Jeremy Avigad
05ec76185d fix(library/hott/fibrant): set arguments for type class resolution 2014-11-07 10:23:37 -08:00
Leonardo de Moura
92b0a538c5 refactor(library/logic/wf): add well_founded class, and cleanup file 2014-11-07 10:18:24 -08:00
Leonardo de Moura
f16f215c2a refactor(data/num/string): break into pieces to reduce dependencies 2014-11-07 08:53:14 -08:00
Leonardo de Moura
fd34fd17de refactor(library/data/bool): break into pieces to reduce dependencies 2014-11-07 08:41:14 -08:00
Leonardo de Moura
e993486301 refactor(library/data/num): break into pieces to reduce dependencies 2014-11-07 08:24:29 -08:00
Leonardo de Moura
85d0521d48 feat(frontends/lean): add '[parsing-only]' modifier to notation declarations, closes #305 2014-11-06 21:34:05 -08:00
Jakob von Raumer
754901cf64 fix(library/hott) make universe index in ua.lean variable 2014-11-06 20:02:10 -05:00
Jakob von Raumer
b8ec1a1649 chore(library/hott) cleanup 2014-11-06 19:41:08 -05:00
Jakob von Raumer
f1cc0c4bd8 chore(library/hott) add note referring to missing substitution lemma 2014-11-06 19:27:27 -05:00
Jakob von Raumer
7dbd7b31f6 Added substitution lemma for equivalence calculations 2014-11-06 19:22:57 -05:00
Jakob von Raumer
fa9cbb1f6a chore(library/hott) adapted univalence axiom to suit notation in book and def in Coq. 2014-11-06 19:22:57 -05:00
Jakob von Raumer
d842be9c52 feat(library/hott) add univalence axiom 2014-11-06 19:22:57 -05:00
Jakob von Raumer
28d1c6c5e4 chore(library/hott) move function extensionality into new axioms folder, adjust file(s) using it 2014-11-06 19:22:57 -05:00
Jakob von Raumer
9ad75108a3 chore(library/hott) clean up file and add class inference 2014-11-06 15:57:30 -08:00
Jakob von Raumer
1f5be44f51 chore(library/hott) clean up Equiv namespace 2014-11-06 15:57:30 -08:00
Jakob von Raumer
8e1949e9aa feat(library/hott) add calc environment for equivalences 2014-11-06 15:57:29 -08:00
Jakob von Raumer
c50db9899d feat(library/hott) add thm: to give a section of a fibration it suffices to provide it for the image of an equivalence 2014-11-06 15:57:29 -08:00
Leonardo de Moura
781f709bb4 feat(library/logic): import wf.lean in logic/default.lean
We will use well-founded recursion in the definitional package
2014-11-06 15:03:13 -08:00
Leonardo de Moura
194247f75b refactor(library/logic/wf): minimize dependencies 2014-11-06 14:59:03 -08:00
Leonardo de Moura
b177c84b06 feat(library/logic): add well-founded recursion
It also removes the old well-founded induction theorem based on
classical principles
2014-11-06 14:49:53 -08:00
Leonardo de Moura
d306c42a1f refactor(library/logic): cleanup some of the proofs in cast.lean, remove piext axiom
Remark: the main motivation for piext was Lean 0.1 simplifier.
We are using a different approach in Lean 0.2.
The axiom is not needed anymore.
It is also not used in any part of the standard library
2014-11-05 16:43:31 -08:00
Jakob von Raumer
09b533a965 fix(library/hott) rename IsEquiv.ap to IsEquiv.ap_closed to avoid name clashes 2014-11-05 15:14:14 -08:00
Jakob von Raumer
02abc5c2ad chore(library/hott) fixed the copyright in equiv_precomp.lean 2014-11-05 15:14:14 -08:00
Jakob von Raumer
807224f3c1 chore(library/hott) cleaned up the proof a bit 2014-11-05 15:14:14 -08:00
Jakob von Raumer
2712b9b18f feat(library/hott) add theorem: if f is an equivalence, so is ap f 2014-11-05 15:14:14 -08:00
Jakob von Raumer
588ad210a2 feat(library/hott) add theorem: assuming function extensionality, precomposing and postcomposing of equivalences is an equivalence 2014-11-04 18:47:34 -08:00
Jakob von Raumer
efa33c5b52 chore(library/hott) move theorem about precomposition to its own file 2014-11-04 18:47:34 -08:00
Jakob von Raumer
0ed046ed80 fix(library/hott) fix funext.lean by making funext an instance 2014-11-04 18:47:34 -08:00
Leonardo de Moura
60eac0195d feat(frontends/lean/structure_cmd): generate projection over constructor theorems for structures 2014-11-04 09:10:25 -08:00
Leonardo de Moura
795f664964 fix(library/hott/funext): compilation error 2014-11-04 06:53:21 -08:00
Jakob von Raumer
261f8a014a feat(library/hott) use class inference for IsEquiv 2014-11-04 06:49:42 -08:00
Jakob von Raumer
479eabb416 feat(library/hott) add: if precompositions with f are equivalences, then f is 2014-11-04 06:49:42 -08:00
Leonardo de Moura
b24165dc7b feat(frontends/lean/structure_cmd): remove 'cases_on' for structures since it may confuse users, add 'destruct' as alternative name for 'rec_on' 2014-11-03 23:06:33 -08:00
Leonardo de Moura
d2b5af237e refactor(library): use new 'structure' command to define prod and sigma 2014-11-03 18:57:55 -08:00
Floris van Doorn
d8a616fa70 refactor(library): major changes in the library
I made some major changes in the library. I wanted to wait with pushing
until I had finished the formalization of the slice functor, but for
some reason that is very hard to formalize, requiring a lot of casts and
manipulation of casts. So I've not finished that yet.

Changes:

- in multiple files make more use of variables

- move dependent congr_arg theorems to logic.cast and proof them using heq (which doesn't involve nested inductions and fewer casts).

- prove some more theorems involving heq, e.g. hcongr_arg3 (which do not
  require piext)

- in theorems where casts are used in the statement use eq.rec_on
  instead of eq.drec_on

- in category split basic into basic, functor and natural_transformation

- change the definition of functor to use fully bundled
categories. @avigad: this means that the file semisimplicial.lean will
also need changes (but I'm quite sure nothing major).  You want to
define the fully bundled category Delta, and use only fully bundled
categories (type and ᵒᵖ are notations for the fully bundled
Type_category and Opposite if you open namespace category.ops). If you
want I can make the changes.

- lots of minor changes
2014-11-03 18:45:12 -08:00
Leonardo de Moura
ae9d11c9c4 refactor(library/data): rename prod_ext and dpair_ext to prod.eta and sigma.eta
Reason: they will be generated automatically by definitional package.
2014-11-03 08:29:05 -08:00
Leonardo de Moura
4bdee07af2 refactor(library/algebra/category/basic): use calc assistant 2014-10-31 09:49:45 -07:00
Leonardo de Moura
8d3e9fdc20 refactor(library/data/nat/basic): remove unnecessary {} 2014-10-31 09:49:45 -07:00
Leonardo de Moura
8a4d4409cd feat(frontends/lean/calc_proof_elaborator): add '{...⁻¹}' if needed in calc proofs, closes #268
This commit also simplifies library/data/nat/basic.lean
2014-10-31 01:02:49 -07:00
Leonardo de Moura
5f23179388 refactor(library/data/nat): remove unnecessary ! and eq.symm
The calc command automatically adds them now.
2014-10-30 23:28:35 -07:00
Leonardo de Moura
591e566472 feat(frontends/lean): try to inject symmetry (if needed) in calc proofs, add calc_symm command for configuring the symmetry theorem for a given operator
This is part of #268
2014-10-30 23:24:09 -07:00
Leonardo de Moura
09c6c05e26 chore(library/data/quotient): replace 'let' with 'have' and cleanup 2014-10-30 18:44:05 -07:00
Leonardo de Moura
407e35692b feat(frontends/lean/calc): wrap calc proofs with 'proof-qed' annotation to identify places where proof influences what is being proved
Later, we will add a custom annotation and elaborator for calc proofs.
This is the first step for issue #268.

Remark: we don't wrap the proof if it is of the form

   - `by tactic`
   - `begin tactic-seq end`
   - `{ expr }`
2014-10-30 18:33:47 -07:00
Leonardo de Moura
9547e2d077 feat(library/tactic): add rotate_left/rotate_right tactics, closes #278 2014-10-29 19:13:55 -07:00