/caterwaul/Category/Functor/inducedFunctor
Copy path to clipboardAny functor p : C → C' induces a functor between functor categories
[C', D] → [C, D].
Source
{-|
Any functor `p : C → C'` induces a functor between functor categories
`[C', D] → [C, D]`.
-}
let cat = ../Cat/semigroupal
let Compose = ../../Compose/Type
let Functor = ../../Functor/Type
let FunctorCategory = ./category
let NaturalTransformation = ../../NaturalTransformation/Type
let Set = ../Set/monoidal/cartesian
let Category = ../Kind cat
let vObject = Type
let v = Set.{ arrow, constraint }
in  λ(cObject : Kind) →
    λ(c : Category vObject cObject) →
    λ(cpObject : Kind) →
    λ(cp : Category vObject cpObject) →
    λ(p : cat.arrow cObject cpObject) →
    λ(dObject : Kind) →
    λ(d : Category vObject dObject) →
        { map =
            λ(a : cat.arrow cpObject dObject) →
            λ(b : cat.arrow cpObject dObject) →
            λ ( fn
              : NaturalTransformation cpObject dObject d { _1 = a, _2 = b }
              ) →
            λ(i : cObject) →
              fn (p i)
        }
      : Functor
          vObject
          (cat.arrow cpObject dObject)
          (cat.arrow cObject dObject)
          v
          (FunctorCategory cpObject dObject v cp d)
          (FunctorCategory cObject dObject v c d)
          ( λ(h : cat.arrow cpObject dObject) →
              Compose cObject cpObject dObject { _1 = h, _2 = p }
          )