{-# OPTIONS --without-K --exact-split #-}
open import Data.Unit
open import Data.Product
-- Part of Theorem 10 / Corollary 12 in
-- "A topological reading of coinductive
-- predicates in Dependent Type Theory"
module Coinductive.Equivalences.⋊-gives-Coind
{A : Set}
(I : A → Set)
(C : (a : A) → I a → A → Set)
where
V : A → Set
V = λ _ → ⊤
open import Coinductive.Constructors.⋊-types I C V
CoInd : A → Set
CoInd = ⋊
El : (a : A) (i : I a) (p : CoInd a) → Σ A λ b → C a i b × CoInd b
El = cotr
coind :
∀ {P : A → Set}
→ (c : ∀ a i → P a → Σ A λ b → C a i b × P b)
→ (a : A) → P a → CoInd a
coind = ⋊coind (λ _ _ → tt)