------------------------------------------------------------------------ -- Types used to make recursive arguments coinductive ------------------------------------------------------------------------ -- 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 infix 10 ♯_ ♯₁_ codata ∞ (T : Set) : Set where ♯_ : (x : T) → ∞ T ♭ : ∀ {T} → ∞ T → T ♭ (♯ x) = x -- Variant for Set₁. codata ∞₁ (T : Set₁) : Set₁ where ♯₁_ : (x : T) → ∞₁ T ♭₁ : ∀ {T} → ∞₁ T → T ♭₁ (♯₁ x) = x