Factor out tactic scripts for exponential laws

These can probably be put in a more general place, and be used more
widely in categories.  In general, the parts of a proof done by tactics
in categories are, in no particular order:

- apply type-driven principles, such as destructing [sum]-types in
  hypotheses and applying [path_prod] or [path_functor] to the goal

- eliminate composition with identities and inverses and normalize
  morphisms (w.r.t., e.g., associativity)

- eliminate [transport]s

- miscellany, such as eliminating points in contractible types,
  inducting on paths, using [simpl] and [reflexivity], or using
  hypotheses

The first is very systematic and general, and the second is amenable to
systematic tactics or reflective proof scripts.  The third is,
currently, rather ad-hoc, and the fourth is generally straightforward
but occasionally complicated.

After    | File Name                                                 | Before   || Change
--------------------------------------------------------------------------------------------
1m52.54s | Total                                                     | 1m50.89s || +0m01.65s
--------------------------------------------------------------------------------------------
0m09.81s | categories/ExponentialLaws/Law3/Law                       | 0m08.68s || +0m01.13s
0m09.44s | categories/ExponentialLaws/Law2/Law                       | 0m09.18s || +0m00.25s
0m09.31s | categories/ExponentialLaws/Law4/Law                       | 0m09.96s || -0m00.65s
0m07.20s | hit/V                                                     | 0m07.18s || +0m00.02s
0m04.88s | categories/Comma/ProjectionFunctors                       | 0m04.80s || +0m00.08s
0m04.08s | categories/LaxComma/CoreLaws                              | 0m04.06s || +0m00.02s
0m02.83s | categories/Comma/Functorial                               | 0m02.85s || -0m00.02s
0m02.26s | contrib/Freudenthal                                       | 0m02.24s || +0m00.01s
0m02.06s | categories/GroupoidCategory/Morphisms                     | 0m02.10s || -0m00.04s
0m02.04s | hit/Flattening                                            | 0m02.09s || -0m00.04s
0m01.84s | categories/Adjoint/Composition/AssociativityLaw           | 0m01.82s || +0m00.02s
0m01.62s | categories/ExponentialLaws/Law1/Law                       | 0m00.78s || +0m00.84s
0m01.59s | categories/ExponentialLaws/Law4/Functors                  | 0m01.58s || +0m00.01s
0m01.59s | ReflectiveSubuniverse                                     | 0m01.59s || +0m00.00s
0m01.28s | categories/Grothendieck/PseudofunctorToCat                | 0m01.40s || -0m00.11s
0m01.24s | categories/Functor/Sum                                    | 0m01.22s || +0m00.02s
0m01.23s | categories/Category/Morphisms                             | 0m01.24s || -0m00.01s
0m01.14s | categories/UniversalProperties                            | 0m01.13s || +0m00.01s
0m01.13s | categories/Functor/Pointwise/Properties                   | 0m01.06s || +0m00.06s
0m01.08s | categories/Adjoint/Composition/IdentityLaws               | 0m01.08s || +0m00.00s
0m01.06s | categories/Adjoint/HomCoercions                           | 0m01.05s || +0m00.01s
0m01.02s | hit/epi                                                   | 0m01.03s || -0m00.01s
0m00.94s | categories/Pseudofunctor/RewriteLaws                      | 0m01.01s || -0m00.07s
0m00.89s | categories/Comma/InducedFunctors                          | 0m00.87s || +0m00.02s
0m00.86s | Basics/Equivalences                                       | 0m00.84s || +0m00.02s
0m00.79s | categories/Pseudofunctor/FromFunctor                      | 0m00.87s || -0m00.07s
0m00.77s | categories/Pseudofunctor/Identity                         | 0m00.83s || -0m00.05s
0m00.76s | categories/Functor/Composition/Functorial/Attributes      | 0m00.66s || +0m00.09s
0m00.75s | categories/Yoneda                                         | 0m00.77s || -0m00.02s
0m00.72s | Basics/PathGroupoids                                      | 0m00.72s || +0m00.00s
0m00.72s | categories/Adjoint/UnitCounitCoercions                    | 0m00.70s || +0m00.02s
0m00.65s | categories/Adjoint/Composition/Core                       | 0m00.64s || +0m00.01s
0m00.65s | categories/Category/Sigma/OnMorphisms                     | 0m00.64s || +0m00.01s
0m00.63s | HSet                                                      | 0m00.65s || -0m00.02s
0m00.61s | types/Sigma                                               | 0m00.58s || +0m00.03s
0m00.59s | contrib/HoTTBook                                          | 0m00.60s || -0m00.01s
0m00.59s | HProp                                                     | 0m00.60s || -0m00.01s
0m00.51s | hit/Connectedness                                         | 0m00.55s || -0m00.04s
0m00.50s | categories/ProductLaws                                    | 0m00.48s || +0m00.02s
0m00.50s | categories/Functor/Paths                                  | 0m00.46s || +0m00.03s
0m00.48s | categories/LaxComma/Core                                  | 0m00.47s || +0m00.01s
0m00.47s | categories/LaxComma/CoreParts                             | 0m00.50s || -0m00.03s
0m00.46s | categories/Comma/Core                                     | 0m00.47s || -0m00.00s
0m00.46s | categories/Category/Sum                                   | 0m00.44s || +0m00.02s
0m00.45s | categories/Category/Sigma/Core                            | 0m00.44s || +0m00.01s
0m00.45s | categories/Limits/Core                                    | 0m00.42s || +0m00.03s
0m00.45s | categories/Functor/Prod/Universal                         | 0m00.41s || +0m00.04s
0m00.45s | categories/Structure/IdentityPrinciple                    | 0m00.46s || -0m00.01s
0m00.44s | EquivalenceVarieties                                      | 0m00.46s || -0m00.02s
0m00.44s | categories/Functor/Composition/Functorial/Core            | 0m00.48s || -0m00.03s
0m00.44s | categories/Comma/Dual                                     | 0m00.45s || -0m00.01s
0m00.44s | contrib/HoTTBookExercises                                 | 0m00.46s || -0m00.02s
0m00.43s | hit/Spheres                                               | 0m00.42s || +0m00.01s
0m00.42s | Modality                                                  | 0m00.42s || +0m00.00s
0m00.38s | categories/NaturalTransformation/Isomorphisms             | 0m00.36s || +0m00.02s
0m00.37s | categories                                                | 0m00.31s || +0m00.06s
0m00.36s | types/Paths                                               | 0m00.34s || +0m00.01s
0m00.35s | categories/ExponentialLaws/Law0                           | 0m00.38s || -0m00.03s
0m00.35s | categories/Functor/Attributes                             | 0m00.35s || +0m00.00s
0m00.34s | hit/PropositionalFracture                                 | 0m00.30s || +0m00.04s
0m00.33s | categories/DualFunctor                                    | 0m00.34s || -0m00.01s
0m00.32s | hit/quotient                                              | 0m00.30s || +0m00.02s
0m00.32s | categories/ExponentialLaws/Law1/Functors                  | 0m00.26s || +0m00.06s
0m00.31s | categories/ExponentialLaws/Law2/Functors                  | 0m00.28s || +0m00.02s
0m00.31s | types/Prod                                                | 0m00.28s || +0m00.02s
0m00.30s | categories/Adjoint/UniversalMorphisms                     | 0m00.31s || -0m00.01s
0m00.30s | categories/Functor/Pointwise/Core                         | 0m00.33s || -0m00.03s
0m00.27s | categories/Limits/Functors                                | 0m00.25s || +0m00.02s
0m00.27s | categories/SetCategory/Morphisms                          | 0m00.30s || -0m00.02s
0m00.27s | categories/InitialTerminalCategory/Pseudofunctors         | 0m00.31s || -0m00.03s
0m00.26s | categories/FunctorCategory/Morphisms                      | 0m00.25s || +0m00.01s
0m00.24s | categories/Adjoint/Paths                                  | 0m00.25s || -0m00.01s
0m00.24s | categories/Functor/Prod/Functorial                        | 0m00.25s || -0m00.01s
0m00.24s | hit/Circle                                                | 0m00.19s || +0m00.04s
0m00.23s | categories/Functor/Prod/Core                              | 0m00.26s || -0m00.03s
0m00.22s | categories/NaturalTransformation/Pointwise                | 0m00.21s || +0m00.01s
0m00.22s | categories/InitialTerminalCategory/Functors               | 0m00.19s || +0m00.03s
0m00.21s | categories/NaturalTransformation/Composition/Laws         | 0m00.21s || +0m00.00s
0m00.20s | types/Universe                                            | 0m00.23s || -0m00.03s
0m00.20s | categories/NaturalTransformation/Prod                     | 0m00.16s || +0m00.04s
0m00.20s | Tactics                                                   | 0m00.17s || +0m00.03s
0m00.20s | categories/KanExtensions/Functors                         | 0m00.21s || -0m00.00s
0m00.19s | categories/NaturalTransformation/Paths                    | 0m00.17s || +0m00.01s
0m00.19s | ObjectClassifier                                          | 0m00.23s || -0m00.04s
0m00.19s | hit/Pushout                                               | 0m00.17s || +0m00.01s
0m00.19s | hit/Join                                                  | 0m00.20s || -0m00.01s
0m00.18s | categories/FundamentalPreGroupoidCategory                 | 0m00.22s || -0m00.04s
0m00.18s | categories/HomFunctor                                     | 0m00.18s || +0m00.00s
0m00.18s | categories/FunctorCategory/Functorial                     | 0m00.18s || +0m00.00s
0m00.18s | categories/CategoryOfSections/Core                        | 0m00.12s || +0m00.06s
0m00.18s | categories/Structure/Core                                 | 0m00.19s || -0m00.01s
0m00.18s | categories/FunctorCategory/Dual                           | 0m00.18s || +0m00.00s
0m00.18s | categories/KanExtensions/Core                             | 0m00.14s || +0m00.03s
0m00.18s | types/Forall                                              | 0m00.17s || +0m00.00s
0m00.17s | types/Sum                                                 | 0m00.22s || -0m00.04s
0m00.17s | categories/Category/Sigma/OnObjects                       | 0m00.17s || +0m00.00s
0m00.17s | categories/PseudonaturalTransformation/Core               | 0m00.17s || +0m00.00s
0m00.17s | categories/Comma/Projection                               | 0m00.18s || -0m00.00s
0m00.16s | categories/Grothendieck/ToSet                             | 0m00.18s || -0m00.01s
0m00.16s | categories/FunctorCategory/Utf8                           | 0m00.13s || +0m00.03s
0m00.16s | categories/ExponentialLaws/Law3/Functors                  | 0m00.17s || -0m00.01s
0m00.16s | categories/IndiscreteCategory                             | 0m00.16s || +0m00.00s
0m00.16s | categories/NaturalTransformation/Sum                      | 0m00.12s || +0m00.04s
0m00.16s | categories/Notations                                      | 0m00.14s || +0m00.01s
0m00.16s | hit/Suspension                                            | 0m00.14s || +0m00.01s
0m00.16s | categories/Pseudofunctor/Core                             | 0m00.16s || +0m00.00s
0m00.15s | categories/Adjoint/Hom                                    | 0m00.15s || +0m00.00s
0m00.15s | hit/Truncations                                           | 0m00.10s || +0m00.04s
0m00.14s | categories/InitialTerminalCategory/NaturalTransformations | 0m00.13s || +0m00.01s
0m00.14s | categories/Category/Prod                                  | 0m00.16s || -0m00.01s
0m00.14s | categories/Grothendieck/ToCat                             | 0m00.11s || +0m00.03s
0m00.14s | categories/Functor/Utf8                                   | 0m00.12s || +0m00.02s
0m00.14s | categories/Adjoint                                        | 0m00.15s || -0m00.00s
0m00.14s | categories/Functor                                        | 0m00.17s || -0m00.03s
0m00.14s | categories/NaturalTransformation/Composition/Functorial   | 0m00.11s || +0m00.03s
0m00.14s | categories/Adjoint/UnitCounit                             | 0m00.16s || -0m00.01s
0m00.13s | UnivalenceImpliesFunext                                   | 0m00.16s || -0m00.03s
0m00.13s | HoTT                                                      | 0m00.09s || +0m00.04s
0m00.13s | categories/LaxComma/Utf8                                  | 0m00.13s || +0m00.00s
0m00.13s | Basics/Fibrations                                         | 0m00.14s || -0m00.01s
0m00.13s | categories/KanExtensions                                  | 0m00.09s || +0m00.04s
0m00.13s | categories/NaturalTransformation/Utf8                     | 0m00.13s || +0m00.00s
0m00.13s | categories/NaturalTransformation/Composition/Core         | 0m00.11s || +0m00.02s
0m00.12s | categories/HomotopyPreCategory                            | 0m00.11s || +0m00.00s
0m00.12s | categories/DependentProduct                               | 0m00.10s || +0m00.01s
0m00.12s | categories/Functor/Composition/Functorial                 | 0m00.11s || +0m00.00s
0m00.12s | categories/Cat/Core                                       | 0m00.14s || -0m00.02s
0m00.12s | categories/Comma                                          | 0m00.10s || +0m00.01s
0m00.12s | Basics/Trunc                                              | 0m00.14s || -0m00.02s
0m00.12s | categories/Utf8                                           | 0m00.17s || -0m00.05s
0m00.12s | categories/GroupoidCategory/Core                          | 0m00.08s || +0m00.03s
0m00.12s | categories/NatCategory                                    | 0m00.10s || +0m00.01s
0m00.12s | types/Arrow                                               | 0m00.16s || -0m00.04s
0m00.12s | categories/Functor/Composition/Laws                       | 0m00.11s || +0m00.00s
0m00.12s | categories/Functor/Notations                              | 0m00.12s || +0m00.00s
0m00.12s | categories/Functor/Composition                            | 0m00.12s || +0m00.00s
0m00.11s | categories/Adjoint/Dual                                   | 0m00.10s || +0m00.00s
0m00.11s | categories/Profunctor/Core                                | 0m00.09s || +0m00.02s
0m00.11s | hit/iso                                                   | 0m00.07s || +0m00.03s
0m00.11s | Functorish                                                | 0m00.12s || -0m00.00s
0m00.11s | categories/Pseudofunctor                                  | 0m00.12s || -0m00.00s
0m00.11s | categories/NaturalTransformation/Dual                     | 0m00.10s || +0m00.00s
0m00.11s | categories/Category/Objects                               | 0m00.11s || +0m00.00s
0m00.11s | types/Bool                                                | 0m00.11s || +0m00.00s
0m00.11s | categories/Limits                                         | 0m00.10s || +0m00.00s
0m00.11s | Utf8                                                      | 0m00.10s || +0m00.00s
0m00.10s | Basics/Overture                                           | 0m00.12s || -0m00.01s
0m00.10s | categories/LaxComma/Notations                             | 0m00.11s || -0m00.00s
0m00.10s | categories/Category                                       | 0m00.09s || +0m00.01s
0m00.10s | categories/LaxComma                                       | 0m00.10s || +0m00.00s
0m00.10s | categories/PseudonaturalTransformation                    | 0m00.08s || +0m00.02s
0m00.10s | categories/InitialTerminalCategory/Core                   | 0m00.08s || +0m00.02s
0m00.10s | TruncType                                                 | 0m00.09s || +0m00.01s
0m00.10s | Basics/FunextVarieties                                    | 0m00.10s || +0m00.00s
0m00.10s | categories/NaturalTransformation/Core                     | 0m00.06s || +0m00.04s
0m00.10s | categories/NaturalTransformation                          | 0m00.10s || +0m00.00s
0m00.10s | categories/Cat/Morphisms                                  | 0m00.11s || -0m00.00s
0m00.10s | categories/SetCategory                                    | 0m00.08s || +0m00.02s
0m00.10s | Tests                                                     | 0m00.08s || +0m00.02s
0m00.09s | categories/DiscreteCategory                               | 0m00.06s || +0m00.03s
0m00.09s | Conjugation                                               | 0m00.10s || -0m00.01s
0m00.09s | hit/Interval                                              | 0m00.13s || -0m00.04s
0m00.09s | categories/ExponentialLaws                                | 0m00.09s || +0m00.00s
0m00.09s | categories/InitialTerminalCategory                        | 0m00.10s || -0m00.01s
0m00.09s | categories/SetCategory/Core                               | 0m00.09s || +0m00.00s
0m00.09s | categories/Category/Dual                                  | 0m00.08s || +0m00.00s
0m00.09s | categories/ExponentialLaws/Law2                           | 0m00.11s || -0m00.02s
0m00.09s | categories/CategoryOfGroupoids                            | 0m00.11s || -0m00.02s
0m00.09s | categories/Category/Univalent                             | 0m00.09s || +0m00.00s
0m00.09s | categories/FunctorCategory                                | 0m00.10s || -0m00.01s
0m00.09s | categories/Profunctor/Representable                       | 0m00.08s || +0m00.00s
0m00.09s | categories/Category/Core                                  | 0m00.08s || +0m00.00s
0m00.09s | types/Unit                                                | 0m00.10s || -0m00.01s
0m00.09s | categories/FunctorCategory/Notations                      | 0m00.08s || +0m00.00s
0m00.09s | categories/Adjoint/Composition/LawsTactic                 | 0m00.11s || -0m00.02s
0m00.09s | categories/Category/Pi                                    | 0m00.08s || +0m00.00s
0m00.08s | categories/Comma/Utf8                                     | 0m00.09s || -0m00.00s
0m00.08s | categories/Adjoint/Core                                   | 0m00.10s || -0m00.02s
0m00.08s | categories/Adjoint/Utf8                                   | 0m00.08s || +0m00.00s
0m00.08s | categories/Profunctor                                     | 0m00.09s || -0m00.00s
0m00.08s | categories/Functor/Dual                                   | 0m00.10s || -0m00.02s
0m00.08s | categories/ExponentialLaws/Tactics                        |   N/A    || +0m00.08s
0m00.08s | Basics/Contractible                                       | 0m00.07s || +0m00.00s
0m00.08s | categories/Profunctor/Notations                           | 0m00.10s || -0m00.02s
0m00.08s | categories/ExponentialLaws/Law1                           | 0m00.08s || +0m00.00s
0m00.08s | categories/Adjoint/Identity                               | 0m00.10s || -0m00.02s
0m00.08s | categories/Grothendieck                                   | 0m00.10s || -0m00.02s
0m00.08s | hit/unique_choice                                         | 0m00.08s || +0m00.00s
0m00.08s | categories/Adjoint/Notations                              | 0m00.10s || -0m00.02s
0m00.08s | categories/Functor/Prod                                   | 0m00.08s || +0m00.00s
0m00.08s | categories/NaturalTransformation/Composition              | 0m00.07s || +0m00.00s
0m00.08s | types/Record                                              | 0m00.08s || +0m00.00s
0m00.08s | categories/Structure/Notations                            | 0m00.07s || +0m00.00s
0m00.08s | categories/Functor/Composition/Core                       | 0m00.04s || +0m00.04s
0m00.08s | categories/Structure                                      | 0m00.09s || -0m00.00s
0m00.08s | categories/NaturalTransformation/Identity                 | 0m00.08s || +0m00.00s
0m00.08s | categories/NaturalTransformation/Notations                | 0m00.10s || -0m00.02s
0m00.08s | hit/TwoSphere                                             | 0m00.10s || -0m00.02s
0m00.08s | Tactics/BinderApply                                       | 0m00.06s || +0m00.02s
0m00.08s | categories/Category/Subcategory/Full                      | 0m00.06s || +0m00.02s
0m00.08s | categories/Structure/Utf8                                 | 0m00.06s || +0m00.02s
0m00.08s | Basics                                                    | 0m00.06s || +0m00.02s
0m00.08s | categories/FunctorCategory/Core                           | 0m00.10s || -0m00.02s
0m00.07s | categories/Category/Utf8                                  | 0m00.10s || -0m00.03s
0m00.07s | categories/Category/Sigma                                 | 0m00.08s || -0m00.00s
0m00.07s | categories/Cat                                            | 0m00.11s || -0m00.03s
0m00.07s | categories/SetCategory/Functors                           | 0m00.08s || -0m00.00s
0m00.07s | categories/Category/Strict                                | 0m00.04s || +0m00.03s
0m00.07s | categories/ExponentialLaws/Law3                           | 0m00.09s || -0m00.01s
0m00.07s | categories/ExponentialLaws/Law4                           | 0m00.09s || -0m00.01s
0m00.07s | categories/Category/Subcategory                           | 0m00.08s || -0m00.00s
0m00.07s | Misc                                                      | 0m00.08s || -0m00.00s
0m00.07s | categories/Functor/Core                                   | 0m00.09s || -0m00.01s
0m00.07s | categories/CategoryOfSections                             | 0m00.10s || -0m00.03s
0m00.07s | categories/Comma/Notations                                | 0m00.09s || -0m00.01s
0m00.07s | categories/InitialTerminalCategory/Notations              | 0m00.09s || -0m00.01s
0m00.07s | categories/SetCategory/Functors/SetProp                   | 0m00.12s || -0m00.04s
0m00.07s | categories/Category/Notations                             | 0m00.08s || -0m00.00s
0m00.07s | categories/Profunctor/Utf8                                | 0m00.10s || -0m00.03s
0m00.07s | categories/Adjoint/Composition                            | 0m00.10s || -0m00.03s
0m00.06s | coq/Init/Peano                                            | 0m00.08s || -0m00.02s
0m00.06s | hit/IntervalImpliesFunext                                 | 0m00.07s || -0m00.01s
0m00.06s | categories/Functor/Pointwise                              | 0m00.08s || -0m00.02s
0m00.06s | categories/Category/Subcategory/Wide                      | 0m00.06s || +0m00.00s
0m00.06s | categories/Profunctor/Identity                            | 0m00.07s || -0m00.01s
0m00.06s | UnivalenceAxiom                                           | 0m00.07s || -0m00.01s
0m00.06s | types/Empty                                               | 0m00.06s || +0m00.00s
0m00.06s | categories/GroupoidCategory                               | 0m00.07s || -0m00.01s
0m00.05s | categories/Functor/Identity                               | 0m00.07s || -0m00.02s
0m00.05s | coq/Init/Datatypes                                        | 0m00.04s || +0m00.01s
0m00.05s | Basics/UniverseLevel                                      | 0m00.05s || +0m00.00s
0m00.05s | Basics/Pointed                                            | 0m00.08s || -0m00.03s
0m00.05s | FunextAxiom                                               | 0m00.05s || +0m00.00s
0m00.04s | coq/Init/Specif                                           | 0m00.04s || +0m00.00s
0m00.03s | coq/Unicode/Utf8                                          | 0m00.02s || +0m00.00s
0m00.03s | coq/Unicode/Utf8_core                                     | 0m00.03s || +0m00.00s
0m00.03s | coq/Init/Logic_Type                                       | 0m00.02s || +0m00.00s
0m00.02s | coq/Init/Logic                                            | 0m00.02s || +0m00.00s
0m00.02s | coq/Init/Prelude                                          | 0m00.02s || +0m00.00s
0m00.02s | coq/Bool/Bool                                             | 0m00.02s || +0m00.00s
0m00.02s | coq/Init/Tactics                                          | 0m00.02s || +0m00.00s
0m00.02s | coq/Program/Tactics                                       | 0m00.04s || -0m00.02s
0m00.01s | coq/Init/Notations                                        | 0m00.02s || -0m00.01s
Merge pull request #556 from JasonGross/factor-exp-law-proofs

Factor out tactic scripts for exponential laws