{-# OPTIONS --safe --without-K #-} module Interface.MonotoneState where open import Relation.Unary using (IUniversal ; _⇒_ ; U) open import Relation.Binary using (Rel) open import Relation.Binary.PropositionalEquality open import Relation.Binary.Structures open import Core open import Signature open import Structure.Monad open import MonadicFragment open import Data.Product open import Data.Vec open import Data.List open import Data.List.Relation.Unary.All open import Data.List.Membership.Propositional import Level as L module _ (M : Eff Sto) where record MonotoneState : Set₁ where field get : ∀ {Γ V t} → ∀[ (value t ∈_) ⇒ M {σ} V Γ (V t) ] put : ∀ {Γ V t} → ∀[ (value t ∈_) ⇒ V t ⇒ M {σ} V Γ U ] alloc : ∀ {Γ V t} → ∀[ V t ⇒ M {σ} V Γ (value t ∈_) ]