\begin{code}
{-# OPTIONS --cubical --safe #-}
open import Algebra
open import Level
module Control.Monad.Weighted.Semimodule {β} {π
: Type β} (rng : Semiring π
) where
open Semiring rng
open import Level
open import Path
open import Path.Reasoning
open import HLevels
open import Control.Monad.Weighted.Definition rng
open import Control.Monad.Weighted.Eliminators rng
open import Control.Monad.Weighted.Union rng
open import Control.Monad.Weighted.Cond rng
module _ {a} {A : Type a} where
semimodule : LeftSemimodule rng (Weighted A)
semimodule .LeftSemimodule.semimodule .CommutativeMonoid.monoid .Monoid._β_ = _βͺ_
semimodule .LeftSemimodule.semimodule .CommutativeMonoid.monoid .Monoid.Ξ΅ = []
semimodule .LeftSemimodule.semimodule .CommutativeMonoid.monoid .Monoid.assoc xs ys zs = sym (βͺ-assoc xs ys zs)
semimodule .LeftSemimodule.semimodule .CommutativeMonoid.monoid .Monoid.Ξ΅β _ = refl
semimodule .LeftSemimodule.semimodule .CommutativeMonoid.monoid .Monoid.βΞ΅ xs = βͺ-idr xs
semimodule .LeftSemimodule.semimodule .CommutativeMonoid.comm = βͺ-com
semimodule .LeftSemimodule._β_ = _β_
semimodule .LeftSemimodule.β¨*β©β = *-assoc-β
semimodule .LeftSemimodule.β¨+β©β x y xs = sym (β-distribΚ³ x y xs)
semimodule .LeftSemimodule.ββ¨βͺβ© x y xs = sym (β-distribΛ‘ x y xs)
semimodule .LeftSemimodule.1β = 1β
semimodule .LeftSemimodule.0β = 0β
semimodule .LeftSemimodule.ββ
= ββ
\end{code}