------------------------------------------------------------------------
-- Types used to make recursive arguments coinductive
------------------------------------------------------------------------
{-# OPTIONS --universe-polymorphism #-}
-- See Data.Colist for examples of how this type is used, or
-- http://article.gmane.org/gmane.comp.lang.agda/633 for a longer
-- explanation.
module Coinduction where
open import Level
infix 10 ♯_
codata ∞ {a} (A : Set a) : Set a where
♯_ : (x : A) → ∞ A
♭ : ∀ {a} {A : Set a} → ∞ A → A
♭ (♯ x) = x