/caterwaul/Category/postcomposition

Copy path to clipboard

Source

let kCat = ./Cat/semigroupal

let vObject = Type

let v =
./Monoidal/Cartesian/extractMonoidal
kCat
Type
vObject
./Set/monoidal/cartesian

let vBase = ./Monoidal/extractCategory kCat Type vObject v

in λ(object : Kind) →
λ(cat : ./Kind kCat vObject object) →
λ(category : ./Type object v cat) →
λ(c : object) →
{ map =
λ(x : object) →
λ(y : object) →
λ(fn : cat.arrow { _1 = x, _2 = y }) →
λ(input : cat.arrow { _1 = c, _2 = x }) →
category.product
{ _1 = c, _2 = y }
( λ(r : Type) →
λ ( arrowsOut
: ∀(z : object) →
cat.arrow { _1 = z, _2 = y } →
cat.arrow { _1 = c, _2 = z } →
r
) →
arrowsOut x fn input
)
}
: ../Functor/Type
vObject
object
vObject
vBase
cat
vBase
(λ(x : object) → cat.arrow { _1 = c, _2 = x })