Dependent products of commutative semirings

module commutative-algebra.dependent-products-commutative-semirings where
Imports
open import commutative-algebra.commutative-semirings

open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.sets
open import foundation.universe-levels

open import group-theory.commutative-monoids
open import group-theory.dependent-products-commutative-monoids

open import ring-theory.dependent-products-semirings
open import ring-theory.semirings

Idea

Given a family of commutative semirings A i indexed by i : I, their dependent product Π (i:I), A i is again a commutative semiring.

Definition

module _
  {l1 l2 : Level} (I : UU l1) (A : I  Commutative-Semiring l2)
  where

  semiring-Π-Commutative-Semiring : Semiring (l1  l2)
  semiring-Π-Commutative-Semiring =
    Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  additive-commutative-monoid-Π-Commutative-Semiring :
    Commutative-Monoid (l1  l2)
  additive-commutative-monoid-Π-Commutative-Semiring =
    Π-Commutative-Monoid I
      ( λ i  additive-commutative-monoid-Commutative-Semiring (A i))

  multiplicative-commutative-monoid-Π-Commutative-Semiring :
    Commutative-Monoid (l1  l2)
  multiplicative-commutative-monoid-Π-Commutative-Semiring =
    Π-Commutative-Monoid I
      ( λ i  multiplicative-commutative-monoid-Commutative-Semiring (A i))

  set-Π-Commutative-Semiring : Set (l1  l2)
  set-Π-Commutative-Semiring =
    set-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  type-Π-Commutative-Semiring : UU (l1  l2)
  type-Π-Commutative-Semiring =
    type-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  is-set-type-Π-Commutative-Semiring : is-set type-Π-Commutative-Semiring
  is-set-type-Π-Commutative-Semiring =
    is-set-type-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  add-Π-Commutative-Semiring :
    type-Π-Commutative-Semiring  type-Π-Commutative-Semiring 
    type-Π-Commutative-Semiring
  add-Π-Commutative-Semiring =
    add-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  zero-Π-Commutative-Semiring : type-Π-Commutative-Semiring
  zero-Π-Commutative-Semiring =
    zero-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  associative-add-Π-Commutative-Semiring :
    (x y z : type-Π-Commutative-Semiring) 
    add-Π-Commutative-Semiring (add-Π-Commutative-Semiring x y) z 
    add-Π-Commutative-Semiring x (add-Π-Commutative-Semiring y z)
  associative-add-Π-Commutative-Semiring =
    associative-add-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  left-unit-law-add-Π-Commutative-Semiring :
    (x : type-Π-Commutative-Semiring) 
    add-Π-Commutative-Semiring zero-Π-Commutative-Semiring x  x
  left-unit-law-add-Π-Commutative-Semiring =
    left-unit-law-add-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  right-unit-law-add-Π-Commutative-Semiring :
    (x : type-Π-Commutative-Semiring) 
    add-Π-Commutative-Semiring x zero-Π-Commutative-Semiring  x
  right-unit-law-add-Π-Commutative-Semiring =
    right-unit-law-add-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  commutative-add-Π-Commutative-Semiring :
    (x y : type-Π-Commutative-Semiring) 
    add-Π-Commutative-Semiring x y  add-Π-Commutative-Semiring y x
  commutative-add-Π-Commutative-Semiring =
    commutative-add-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  mul-Π-Commutative-Semiring :
    type-Π-Commutative-Semiring  type-Π-Commutative-Semiring 
    type-Π-Commutative-Semiring
  mul-Π-Commutative-Semiring =
    mul-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  one-Π-Commutative-Semiring : type-Π-Commutative-Semiring
  one-Π-Commutative-Semiring =
    one-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  associative-mul-Π-Commutative-Semiring :
    (x y z : type-Π-Commutative-Semiring) 
    mul-Π-Commutative-Semiring (mul-Π-Commutative-Semiring x y) z 
    mul-Π-Commutative-Semiring x (mul-Π-Commutative-Semiring y z)
  associative-mul-Π-Commutative-Semiring =
    associative-mul-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  left-unit-law-mul-Π-Commutative-Semiring :
    (x : type-Π-Commutative-Semiring) 
    mul-Π-Commutative-Semiring one-Π-Commutative-Semiring x  x
  left-unit-law-mul-Π-Commutative-Semiring =
    left-unit-law-mul-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  right-unit-law-mul-Π-Commutative-Semiring :
    (x : type-Π-Commutative-Semiring) 
    mul-Π-Commutative-Semiring x one-Π-Commutative-Semiring  x
  right-unit-law-mul-Π-Commutative-Semiring =
    right-unit-law-mul-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  left-distributive-mul-add-Π-Commutative-Semiring :
    (f g h : type-Π-Commutative-Semiring) 
    mul-Π-Commutative-Semiring f (add-Π-Commutative-Semiring g h) 
    add-Π-Commutative-Semiring
      ( mul-Π-Commutative-Semiring f g)
      ( mul-Π-Commutative-Semiring f h)
  left-distributive-mul-add-Π-Commutative-Semiring =
    left-distributive-mul-add-Π-Semiring I
      ( λ i  semiring-Commutative-Semiring (A i))

  right-distributive-mul-add-Π-Commutative-Semiring :
    (f g h : type-Π-Commutative-Semiring) 
    mul-Π-Commutative-Semiring (add-Π-Commutative-Semiring f g) h 
    add-Π-Commutative-Semiring
      ( mul-Π-Commutative-Semiring f h)
      ( mul-Π-Commutative-Semiring g h)
  right-distributive-mul-add-Π-Commutative-Semiring =
    right-distributive-mul-add-Π-Semiring I
      ( λ i  semiring-Commutative-Semiring (A i))

  left-zero-law-mul-Π-Commutative-Semiring :
    (f : type-Π-Commutative-Semiring) 
    mul-Π-Commutative-Semiring zero-Π-Commutative-Semiring f 
    zero-Π-Commutative-Semiring
  left-zero-law-mul-Π-Commutative-Semiring =
    left-zero-law-mul-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  right-zero-law-mul-Π-Commutative-Semiring :
    (f : type-Π-Commutative-Semiring) 
    mul-Π-Commutative-Semiring f zero-Π-Commutative-Semiring 
    zero-Π-Commutative-Semiring
  right-zero-law-mul-Π-Commutative-Semiring =
    right-zero-law-mul-Π-Semiring I  i  semiring-Commutative-Semiring (A i))

  commutative-mul-Π-Commutative-Semiring :
    (f g : type-Π-Commutative-Semiring) 
    mul-Π-Commutative-Semiring f g  mul-Π-Commutative-Semiring g f
  commutative-mul-Π-Commutative-Semiring =
    commutative-mul-Commutative-Monoid
      multiplicative-commutative-monoid-Π-Commutative-Semiring

  Π-Commutative-Semiring : Commutative-Semiring (l1  l2)
  pr1 Π-Commutative-Semiring = semiring-Π-Commutative-Semiring
  pr2 Π-Commutative-Semiring = commutative-mul-Π-Commutative-Semiring