/caterwaul/Category/Functor/liftedDuoidal
Copy path to clipboardFor any rig category π, any π-valued functor category is a rig category in the same way by βliftingβ the rig structure of π.
Source
{-|
For any rig category π, any π-valued functor category is a rig category in the
same way by βliftingβ the rig structure of π.
-}
let cat = ../Cat/semigroupal
let vObject = Type
let Category = ../Kind cat
let DuoidalCategory = ../Duoidal/Kind cat
in  Ξ»(cObject : Kind) β
      let dObject = Type
      in  Ξ»(v : Category Type vObject) β
          Ξ»(c : Category vObject cObject) β
          Ξ»(d : DuoidalCategory vObject dObject) β
            let base = ../Duoidal/extractCategory cat vObject
            let object = cat.arrow cObject dObject
            in      { diamond =
                      { unit =
                          Ξ»(x : cObject) β
                            ../../Functor/Constant/Type
                              dObject
                              cObject
                              { _1 = d.diamond.unit, _2 = x }
                      , product =
                          Ξ»(f : { _1 : object, _2 : object }) β
                          Ξ»(x : cObject) β
                            d.diamond.product { _1 = f._1 x, _2 = f._2 x }
                      }
                    , star =
                      { unit =
                          Ξ»(x : cObject) β
                            ../../Functor/Constant/Type
                              dObject
                              cObject
                              { _1 = d.star.unit, _2 = x }
                      , product =
                          Ξ»(f : { _1 : object, _2 : object }) β
                          Ξ»(x : cObject) β
                            d.star.product { _1 = f._1 x, _2 = f._2 x }
                      }
                    }
                  β§ ./category cObject dObject v c (base dObject d)
                : DuoidalCategory vObject object