module Chapter2.Desc where

open import Data.Unit
open import Data.Nat
open import Data.Fin
open import Data.Product
open import Data.Sum

infixr 30 _`×_
infixr 30 _`+_

data Desc : Set₁ where
  `var : Desc
  `1 : Desc
  _`×_ : (A B : Desc)  Desc
  _`+_ : (A B : Desc)  Desc
   : (S : Set)(T : S  Desc)  Desc
   : (S : Set)(T : S  Desc)  Desc

⟦_⟧ : Desc  Set  Set
 `var  X = X
 `1  X = 
 A  B  X =  A  X ×  B  X
 A `+ B  X =  A  X   B  X
  S T  X = Σ[ s  S ]  T s  X
  S T  X = (s : S)   T s  X