module FunOrn.Functions where

open import Data.Unit
open import Data.Product

open import IDesc.IDesc
open import IDesc.Fixpoint

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

-- Paper: Definition 5.1

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

⟦_⟧Type : Type  Set 
 μ D [ i ]→ T ⟧Type = μ D i   T ⟧Type
 μ D [ i  T ⟧Type = μ D i ×  T ⟧Type
 `⊤ ⟧Type =