/caterwaul/Semiring/Type
Copy path to clipboardThis is different from what is often called a “semiring” as it lacks additive unit, but here we follow the convention described in https://ncatlab.org/nlab/show/rig, using the name “rig” for what would traditionally be a semiring.
Source
{-|
This is different from what is often called a “semiring” as it lacks additive
unit, but here we follow the convention described in
https://ncatlab.org/nlab/show/rig, using the name “rig” for what would
traditionally be a semiring.
-}
let kCat = ../Category/Cat/semigroupal
let vObject = Type
in  λ(object : Kind) →
    λ(cat : ../Category/Monoidal/Kind kCat vObject object) →
    λ(m : object) →
      { additive :
          ../Semigroup/Commutative/Type
            object
            (../Category/Monoidal/extractSemigroupal kCat vObject object cat)
            m
      , multiplicative : ../Monoid/Type object cat m
      }