import Syntax.Simple.Signature  as S
import Syntax.BiTyped.Signature as B

module Syntax.BiTyped.Pre.Term {SD : S.SigD} (D : B.SigD SD) where

open import Prelude

open import Syntax.Simple SD

open import Theory.Erasure

open import Syntax.Typed.Raw (erase D)

open import Syntax.BiTyped.Pre.Functor SD

private variable
  n : 
  r : Raw n
  d : Mode

infix 5 _∋_

data Pre : Mode  {n : }  Raw n  Set where

  `_  : (i : Fin n)
       -------------
        Pre Syn (` i)

  _∋_ : (A : Ty)
       Pre Chk r
       ---------------
        Pre Syn (A  r)

  _↑  : Pre Syn r
       ---------
        Pre Chk r

  op  : {rs : R.⟦ erase D  Raw n}
        D  Raw Pre d rs
       --------------------------
        Pre d (op rs)