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 product of functors *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import NaturalTransformation.Paths. Set Universe Polymorphism. Set Implicit Arguments. Generalizable All Variables. Set Asymmetric Patterns. Local Open Scope natural_transformation_scope. Local Notation fst_type := Basics.Overture.fst. Local Notation snd_type := Basics.Overture.snd. Local Notation pair_type := Basics.Overture.pair. (** ** Construction of product of functors as a functor - [_×_ : (C → D) × (C → D') → (C → D × D')] *) Section functorial. Context `{Funext}. Variables C D D' : PreCategory. Definition functor_morphism_of s d (m : morphism ((C -> D) * (C -> D')) s d) : morphism (_ -> _) (fst s * snd s)%functor (fst d * snd d)%functor := fst_type m * snd_type m.
H: Funext
C, D, D': PreCategory
s, d, d': ((C -> D) * (C -> D'))%category
m1: morphism ((C -> D) * (C -> D')) s d
m2: morphism ((C -> D) * (C -> D')) d d'

functor_morphism_of (m2 o m1) = functor_morphism_of m2 o functor_morphism_of m1
H: Funext
C, D, D': PreCategory
s, d, d': ((C -> D) * (C -> D'))%category
m1: morphism ((C -> D) * (C -> D')) s d
m2: morphism ((C -> D) * (C -> D')) d d'

functor_morphism_of (m2 o m1) = functor_morphism_of m2 o functor_morphism_of m1
path_natural_transformation; reflexivity. Qed.
H: Funext
C, D, D': PreCategory
x: ((C -> D) * (C -> D'))%category

functor_morphism_of 1 = 1%morphism
H: Funext
C, D, D': PreCategory
x: ((C -> D) * (C -> D'))%category

functor_morphism_of 1 = 1%morphism
path_natural_transformation; reflexivity. Qed. Definition functor : object ((C -> D) * (C -> D') -> (C -> D * D')) := Build_Functor ((C -> D) * (C -> D')) (C -> D * D') _ functor_morphism_of functor_composition_of functor_identity_of. End functorial.