aboutsummaryrefslogtreecommitdiff
path: root/Functor/Forgetful/Instance/Semimodule.agda
blob: 59f4b61cd90e4e4fb1d9f93355974425ec8ebd6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{-# OPTIONS --without-K --safe #-}

open import Algebra using (CommutativeSemiring)
open import Level using (Level)

module Functor.Forgetful.Instance.Semimodule {c  m ℓm : Level} (R : CommutativeSemiring c ) where

open import Algebra.Module using (Semimodule)
open import Categories.Functor using (Functor)
open import Category.Instance.CMonoids using (CMonoids; CMonoidHomomorphism; mk-⇒)
open import Category.Instance.Semimodules {c} {} {m} {ℓm} R using (Semimodules; SemimoduleHomomorphism)
open import Function using (id)

open Semimodule

map : {M N : Semimodule R m ℓm}
     SemimoduleHomomorphism M N
     CMonoidHomomorphism m ℓm (+ᴹ-commutativeMonoid M) (+ᴹ-commutativeMonoid N)
map f = mk-⇒ record
    { ⟦_⟧ = ⟦_⟧
    ; isMonoidHomomorphism = +ᴹ-isMonoidHomomorphism
    }
  where
    open SemimoduleHomomorphism f

+-CMonoid : Functor Semimodules (CMonoids m ℓm)
+-CMonoid = record
    { F₀ = +ᴹ-commutativeMonoid
    ; F₁ = map
    ; identity = λ {A} x  ≈ᴹ-refl A {x}
    ; homomorphism = λ {_ _ C} _  ≈ᴹ-refl C
    ; F-resp-≈ = id
    }

module +-CMonoid = Functor +-CMonoid