{-# OPTIONS --safe --without-K #-}

open import Prelude

module Generics.Description.FixedPoint where
open import Generics.Telescope
open import Generics.Description

data μ (D : DataD)
       (ℓs : DataD.Levels D)
       (ps :  PDataD.Param (DataD.applyL D ℓs) ⟧ᵗ)
     : let Dᵖ = DataD.applyL D ℓs
       in   PDataD.Index Dᵖ ps ⟧ᵗ  Set (PDataD.dlevel Dᵖ) where
  con : let Dᵖ = DataD.applyL D ℓs in  {is}
       rewriteLevel (level-pre-fixed-point Dᵖ)
          (Lift (PDataD.dlevel Dᵖ) ( D ⟧ᵈ (μ D ℓs ps) is))
       μ D ℓs ps is