{-# OPTIONS --guardedness #-} module CEKCoinductive where open import Agda.Primitive private variable l l1 l2 l3 : Level E : Set → Set R : Set data ITreeF (ITree : Set) : Set where Ret : (r : R) → ITreeF ITree Tau : (t : ITree) → ITreeF ITree Vis : {A : Set l1} → (e : E A) → (k : A → ITreeF E R) → ITreeF E R record ITree : Set where coinductive field _observe : ITreeF ITree