{-# OPTIONS --cubical-compatible --safe #-}
module Reflection.AST.Universe where
open import Data.List.Base using (List)
open import Data.String.Base using (String)
open import Data.Product.Base using (_×_)
open import Reflection.AST.Argument using (Arg)
open import Reflection.AST.Abstraction using (Abs)
open import Reflection.AST.Term using (Term; Pattern; Sort; Clause)
data Univ : Set where
⟨term⟩ : Univ
⟨pat⟩ : Univ
⟨sort⟩ : Univ
⟨clause⟩ : Univ
⟨list⟩ : Univ → Univ
⟨arg⟩ : Univ → Univ
⟨abs⟩ : Univ → Univ
⟨named⟩ : Univ → Univ
pattern ⟨tel⟩ = ⟨list⟩ (⟨named⟩ (⟨arg⟩ ⟨term⟩))
⟦_⟧ : Univ → Set
⟦ ⟨term⟩ ⟧ = Term
⟦ ⟨pat⟩ ⟧ = Pattern
⟦ ⟨sort⟩ ⟧ = Sort
⟦ ⟨clause⟩ ⟧ = Clause
⟦ ⟨list⟩ k ⟧ = List ⟦ k ⟧
⟦ ⟨arg⟩ k ⟧ = Arg ⟦ k ⟧
⟦ ⟨abs⟩ k ⟧ = Abs ⟦ k ⟧
⟦ ⟨named⟩ k ⟧ = String × ⟦ k ⟧