/caterwaul/Lan/lift

Copy path to clipboard

Source

let kCat = ../Category/Cat/semigroupal

let vObject = Type

let object = Type

in λ(v : ../Category/Monoidal/Kind kCat Type vObject) →
λ(cat : ../Category/Kind kCat vObject object) →
λ(semigroupoid : ../Semigroupoid/Type object v cat cat.arrow) →
λ(f : kCat.arrow object object) →
λ(comonad : ../Comonad/Type object cat f) →
λ(g : kCat.arrow object object) →
λ(a : object) →
λ(x : g a) →
λ(r : Type) →
λ(k : ∀(b : object) → cat.arrow { _1 = f b, _2 = a } → g b → r) →
k a (comonad.unit a) x