import Syntax.Simple.Signature as S
import Syntax.Typed.Signature  as T

module Syntax.Typed.Raw.Functor (SD : S.SigD) where

open import Prelude

open import Syntax.Simple SD
open T SD

private variable
  n Ξ : 

Fam : ( : Level)  Set (lsuc )
Fam  =   Set 

Fam₀ : Set₁
Fam₀ = Fam 0ℓ

⟦_⟧ᵃ : (Δ : TExps Ξ)  Fam   Fam 
 Δ ⟧ᵃ X n = X (length Δ ʳ+ n)

⟦_⟧ᵃˢ : (ADs : ArgsD Ξ) (X : Fam )  Fam 
 []           ⟧ᵃˢ _ _ = 
 (Δ  A)  Ds ⟧ᵃˢ X n =  Δ ⟧ᵃ X n ×  Ds ⟧ᵃˢ X n

⟦_⟧ᶜ : (D : OpD) (X : Fam )  Fam 
 ι _ D ⟧ᶜ X =  D ⟧ᵃˢ X

⟦_⟧ : (D : SigD)  Fam   Fam 
 D  X n = Σ[ i  D .Op ]  D .ar i ⟧ᶜ X n