module Chapter2.IDesc.Examples.ToIDesc where open import Data.Unit open import Data.Nat open import Data.Fin open import Chapter2.Desc open import Chapter2.IDesc toIDesc : (D : Desc) → IDesc ⊤ toIDesc `var = `var tt toIDesc `1 = `1 toIDesc (D `× D') = toIDesc D `× toIDesc D' toIDesc (D `+ D') = `σ 2 λ { zero → toIDesc D ; (suc zero) → toIDesc D' ; (suc (suc ())) } toIDesc (`Σ S T) = `Σ S λ s → toIDesc (T s) toIDesc (`Π S T) = `Π S λ s → toIDesc (T s)