Function rings

module ring-theory.function-rings where
Imports
open import foundation.identity-types
open import foundation.sets
open import foundation.universe-levels

open import group-theory.abelian-groups
open import group-theory.monoids

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

Idea

Given a ring R and a type X, the exponent ring R^X consists of functions from X into the underlying type of R. The operations on R^X are defined pointwise.

Definition

module _
  {l1 l2 : Level} (R : Ring l1) (X : UU l2)
  where

  function-Ring : Ring (l1  l2)
  function-Ring = Π-Ring X  _  R)

  ab-function-Ring : Ab (l1  l2)
  ab-function-Ring = ab-Π-Ring X  _  R)

  multiplicative-monoid-function-Ring : Monoid (l1  l2)
  multiplicative-monoid-function-Ring =
    multiplicative-monoid-Π-Ring X  _  R)

  set-function-Ring : Set (l1  l2)
  set-function-Ring = set-Π-Ring X  _  R)

  type-function-Ring : UU (l1  l2)
  type-function-Ring = type-Π-Ring X  _  R)

  zero-function-Ring : type-function-Ring
  zero-function-Ring = zero-Π-Ring X  _  R)

  one-function-Ring : type-function-Ring
  one-function-Ring = one-Π-Ring X  _  R)

  add-function-Ring : (f g : type-function-Ring)  type-function-Ring
  add-function-Ring = add-Π-Ring X  _  R)

  neg-function-Ring : type-function-Ring  type-function-Ring
  neg-function-Ring = neg-Π-Ring X  _  R)

  mul-function-Ring : (f g : type-function-Ring)  type-function-Ring
  mul-function-Ring = mul-Π-Ring X  _  R)

  associative-add-function-Ring :
    (f g h : type-function-Ring) 
    add-function-Ring (add-function-Ring f g) h 
    add-function-Ring f (add-function-Ring g h)
  associative-add-function-Ring = associative-add-Π-Ring X  _  R)

  commutative-add-function-Ring :
    (f g : type-function-Ring) 
    add-function-Ring f g  add-function-Ring g f
  commutative-add-function-Ring = commutative-add-Π-Ring X  _  R)

  left-unit-law-add-function-Ring :
    (f : type-function-Ring) 
    add-function-Ring zero-function-Ring f  f
  left-unit-law-add-function-Ring =
    left-unit-law-add-Π-Ring X  _  R)

  right-unit-law-add-function-Ring :
    (f : type-function-Ring) 
    add-function-Ring f zero-function-Ring  f
  right-unit-law-add-function-Ring =
    right-unit-law-add-Π-Ring X  _  R)

  left-inverse-law-add-function-Ring :
    (f : type-function-Ring) 
    add-function-Ring (neg-function-Ring f) f  zero-function-Ring
  left-inverse-law-add-function-Ring =
    left-inverse-law-add-Π-Ring X  _  R)

  right-inverse-law-add-function-Ring :
    (f : type-function-Ring) 
    add-function-Ring f (neg-function-Ring f)  zero-function-Ring
  right-inverse-law-add-function-Ring =
    right-inverse-law-add-Π-Ring X  _  R)

  associative-mul-function-Ring :
    (f g h : type-function-Ring) 
    mul-function-Ring (mul-function-Ring f g) h 
    mul-function-Ring f (mul-function-Ring g h)
  associative-mul-function-Ring =
    associative-mul-Π-Ring X  _  R)

  left-unit-law-mul-function-Ring :
    (f : type-function-Ring) 
    mul-function-Ring one-function-Ring f  f
  left-unit-law-mul-function-Ring =
    left-unit-law-mul-Π-Ring X  _  R)

  right-unit-law-mul-function-Ring :
    (f : type-function-Ring) 
    mul-function-Ring f one-function-Ring  f
  right-unit-law-mul-function-Ring =
    right-unit-law-mul-Π-Ring X  _  R)

  left-distributive-mul-add-function-Ring :
    (f g h : type-function-Ring) 
    mul-function-Ring f (add-function-Ring g h) 
    add-function-Ring (mul-function-Ring f g) (mul-function-Ring f h)
  left-distributive-mul-add-function-Ring =
    left-distributive-mul-add-Π-Ring X  _  R)

  right-distributive-mul-add-function-Ring :
    (f g h : type-function-Ring) 
    mul-function-Ring (add-function-Ring f g) h 
    add-function-Ring (mul-function-Ring f h) (mul-function-Ring g h)
  right-distributive-mul-add-function-Ring =
    right-distributive-mul-add-Π-Ring X  _  R)