\begin{code} {-# OPTIONS --cubical --safe #-} open import Algebra open import Level module Control.Monad.Weighted.Definition {ℓ} {𝑅 : Type ℓ} (rng : Semiring 𝑅) where open Semiring rng open import Level open import Path open import HLevels infixr 5 _◃_∷_ \end{code} %<*list-part> \begin{code} data Weighted (A : Type a) : Type (a ℓ⊔ ℓ) where [] : Weighted A _◃_∷_ : (p : 𝑅) (x : A) (xs : Weighted A) → Weighted A \end{code} %</list-part> %<*trunc> \begin{code} trunc : isSet (Weighted A) \end{code} %</trunc> %<*quots> \begin{code} com : ∀ p x q y xs → p ◃ x ∷ q ◃ y ∷ xs ≡ q ◃ y ∷ p ◃ x ∷ xs dup : ∀ p q x xs → p ◃ x ∷ q ◃ x ∷ xs ≡ p + q ◃ x ∷ xs del : ∀ x xs → 0# ◃ x ∷ xs ≡ xs \end{code} %</quots>