{-# OPTIONS --without-K #-}
module container.fixpoint where
open import sum
open import level
open import container.core
open import function.core
open import function.isomorphism
open import function.overloading
record Fixpoint {li la lb}
(c : Container li la lb)
(lx : Level) : Set (li ⊔ la ⊔ lb ⊔ lsuc lx) where
constructor fix
open Container c
field
X : I → Set lx
fixpoint : ∀ i → X i ≅ F X i
head : ∀ {i} → X i → A i
head {i} = proj₁ ∘ apply (fixpoint i)
tail : ∀ {i}(u : X i)(b : B (head u)) → X (r b)
tail {i} = proj₂ ∘' apply (fixpoint i)