/caterwaul/Tuple/functor/endo/star

Copy path to clipboard

Source

let kCat = ../../../Category/Cat/semigroupal

let Set = ../../../Category/Set/monoidal/cartesian

let base = ../../../Category/Monoidal/Cartesian/extractCategory kCat

let vObject = Type

let v = base Type vObject ../../../Category/Set/monoidal/cartesian

let cat = base vObject Type Set

in λ(m : kCat.arrow Type Type) →
λ(functor : ../../../Functor/Endo/Type vObject Type v cat m) →
λ(a : Type) →
{ map =
λ(b : Type) →
λ(c : Type) →
λ(f : bm c) →
λ(t : Set.product { _1 = a, _2 = b }) →
functor.map
c
(Set.product { _1 = a, _2 = c })
(λ(x : c) → t ⫽ { _2 = x })
(f t._2)
}
: ../../../Functor/Endo/Star/Type
vObject
Type
v
cat
m
(λ(b : Type) → Set.product { _1 = a, _2 = b })