Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use instead of Ctrl.
(** * Functoriality of functor composition *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import Functor.Composition.Core NaturalTransformation.Composition.Core. Require Import Category.Prod FunctorCategory.Core NaturalTransformation.Composition.Functorial NaturalTransformation.Composition.Laws ExponentialLaws.Law4.Functors. Require Import NaturalTransformation.Paths. Require ProductLaws. Set Universe Polymorphism. Set Implicit Arguments. Generalizable All Variables. Set Asymmetric Patterns. (** Construction of the functor [_∘_ : (C → D) × (D → E) → (C → E)] and its curried variant *) Section functorial_composition. Context `{Funext}. Variables C D E : PreCategory. Local Open Scope natural_transformation_scope. Definition compose_functor_morphism_of s d (m : morphism (C -> D) s d) : morphism ((D -> E) -> (C -> E)) (whiskerR_functor _ s) (whiskerR_functor _ d) := Build_NaturalTransformation (whiskerR_functor E s) (whiskerR_functor E d) (fun x => x oL m) (fun _ _ _ => exchange_whisker _ _).
H: Funext
C, D, E: PreCategory

((C -> D) -> (D -> E) -> C -> E)%category
H: Funext
C, D, E: PreCategory

((C -> D) -> (D -> E) -> C -> E)%category
refine (Build_Functor (C -> D) ((D -> E) -> (C -> E)) (@whiskerR_functor _ _ _ _) compose_functor_morphism_of _ _); abstract ( path_natural_transformation; rewrite ?composition_of, ?identity_of; reflexivity ). Defined. Definition compose_functor_uncurried : object ((C -> D) * (D -> E) -> (C -> E)) := ExponentialLaws.Law4.Functors.functor _ _ _ compose_functor. Definition compose_functor' : object ((D -> E) -> ((C -> D) -> (C -> E))) := ExponentialLaws.Law4.Functors.inverse _ _ _ (compose_functor_uncurried o ProductLaws.Swap.functor _ _)%functor. End functorial_composition.