module Chapter9.Functions where

open import Level
  renaming ( suc to sucL )

open import Data.Unit
open import Data.Product

open import Chapter5.IDesc
open import Chapter5.IDesc.Fixpoint

infixr 20 μ_[_]→_
infixr 20 μ_[_]×_

data Type {k}( : Level) : Set (sucL (k  )) where
  μ_[_]→_ : {I : Set k}(D : func  I I)(i : I)(T : Type {k} )  Type 
  μ_[_]×_ : {I : Set k}(D : func  I I)(i : I)(T : Type {k} )  Type 
  `⊤ : Type 

⟦_⟧Type : ∀{k }  Type {k}   Set 
 μ D [ i ]→ T ⟧Type = μ D i   T ⟧Type
 μ D [ i  T ⟧Type = μ D i ×  T ⟧Type
 `⊤ ⟧Type = Lift