/caterwaul/Rig/Type
Copy path to clipboardThis is what is often called a “semiring”, but here we follow the convention described in https://ncatlab.org/nlab/show/rig, reserving “semiring” for a rig without multiplicative unit.
Source
{-|
This is what is often called a “semiring”, but here we follow the convention
described in https://ncatlab.org/nlab/show/rig, reserving “semiring” for a rig
without multiplicative unit.
-}
let kCat = ../Category/Cat/semigroupal
let vObject = Type
in  λ(object : Kind) →
    λ(cat : ../Category/Monoidal/Kind kCat vObject object) →
    λ(m : object) →
      { additive : ../Monoid/Commutative/Type object cat m
      , multiplicative : ../Monoid/Type object cat m
      }