{-# OPTIONS --without-K --exact-split #-}

open import Data.Product

-- Type of Coinductive positivity relations
-- See Appendix B of
-- "A topological reading of coinductive
--  predicates in Dependent Type Theory"

module Coinductive.Constructors.⋊-types
  {A : Set}
  (I : A  Set)
  (C : (a : A)  I a  A  Set)
  (V : A  Set)
  where

  postulate
     : A  Set
    corf : (a : A) (p :  a)  V a
    cotr : (a : A) (i : I a) (p :  a)  Σ A λ b  C a i b ×  b
    ⋊coind :
       {P : A  Set}
       (q₁ :  a  P a  V a)
       (q₂ :  a i  (p : P a)  Σ A λ b  C a i b × P b)
       (a : A)  P a   a