{-# OPTIONS --cubical --safe #-} module Control.Monad.Levels.Mult where open import Prelude open import Control.Monad.Levels.Definition open import Control.Monad.Levels.Eliminators open import Control.Monad.Levels.Zipping open import Data.Bag hiding (bind) open import Path.Reasoning open import Cubical.Foundations.HLevels using (isOfHLevelΠ) bind-alg : (A → Levels B) → Levels-ϕ[ A ] Levels B [ bind-alg f ]-set = trunc [ bind-alg f ] x ∷ _ ⟨ xs ⟩ = zip (⟦ levels-cmon ⟧ trunc f x) ([] ∷ xs) [ bind-alg f ][] = [] [ bind-alg f ]-trail = trail bind : Levels A → (A → Levels B) → Levels B bind xs f = bind-alg f ↓ xs