\import Category \import Category.Limit \open PrecatWithBprod \open PrecatWithTerminal \class BaseObject {C : CartesianPrecat} (E : C) \class CMonoidObject \extends BaseObject | iide : Hom terminal.apex E | imul : Hom (Bprod E E) E | iide-left : imul ∘ pair (iide ∘ terminalMap) (id E) = id E | imul-assoc : imul ∘ prodMap imul (id E) = imul ∘ prodMap (id E) imul ∘ associator | imul-comm : imul ∘ pair proj2 proj1 = imul \class AbGroupObject \extends BaseObject | izro : Hom terminal.apex E | iadd : Hom (Bprod E E) E | inegative : Hom E E | izro-left : iadd ∘ pair (izro ∘ terminalMap) (id E) = id E | iadd-assoc : iadd ∘ prodMap iadd (id E) = iadd ∘ prodMap (id E) iadd ∘ associator | iadd-comm : iadd ∘ pair proj2 proj1 = iadd | inegative-left : iadd ∘ pair inegative (id E) = izro ∘ terminalMap \class CRingObject \extends AbGroupObject, CMonoidObject | ildistr : imul ∘ prodMap (id E) iadd = iadd ∘ prodMap imul imul ∘ pair (prodMap (id E) proj1) (prodMap (id E) proj2)