{-# OPTIONS --no-exact-split --safe #-} module Cubical.Structures.MultiSet where open import Cubical.Foundations.Prelude open import Cubical.Foundations.Function open import Cubical.Foundations.HLevels open import Cubical.Foundations.Equiv open import Cubical.Foundations.SIP open import Cubical.Functions.FunExtEquiv open import Cubical.Structures.Auto open import Cubical.Data.Nat open import Cubical.Data.Sigma private variable ℓ : Level module _ (A : Type ℓ) (Aset : isSet A) where CountStructure : Type ℓ → Type ℓ CountStructure X = A → X → ℕ CountEquivStr = AutoEquivStr CountStructure countUnivalentStr : UnivalentStr _ CountEquivStr countUnivalentStr = autoUnivalentStr CountStructure Count : Type (ℓ-suc ℓ) Count = TypeWithStr ℓ CountStructure MultiSetStructure : Type ℓ → Type ℓ MultiSetStructure X = X × (A → X → X) × (A → X → ℕ) MultiSetEquivStr = AutoEquivStr MultiSetStructure multiSetUnivalentStr : UnivalentStr _ MultiSetEquivStr multiSetUnivalentStr = autoUnivalentStr MultiSetStructure MultiSet : Type (ℓ-suc ℓ) MultiSet = TypeWithStr ℓ MultiSetStructure