{-# OPTIONS --safe #-}
open import Prelude
import Syntax.Simple.Signature as S
module Syntax.BiTyped.Signature (SD : S.SigD) where
open import Syntax.Context
open import Syntax.Simple.Term SD as Ty
renaming (Tm to TExp)
private variable
Ξ : ℕ
d : Mode
B : TExp Ξ
infix 6 _▷_⇒_ _▷_⇐_
infixr 7 ρ-syntax _⊢[_]_
record ArgD (Ξ : ℕ) : Set where
constructor _⊢[_]_
field
cxt : List (TExp Ξ)
mode : Mode
type : TExp Ξ
ArgsD = List ∘ ArgD
record OpD : Set where
constructor ι
field
{tvars} : ℕ
mode : Mode
type : TExp tvars
args : ArgsD tvars
open OpD public
record SigD : Set₁ where
constructor sigd
field
Op : Set
⦃ decOp ⦄ : DecEq Op
ar : Op → OpD
open SigD public
ρ-syntax : ArgD Ξ → ArgsD Ξ → ArgsD Ξ
ρ-syntax D Ds = D ∷ Ds
syntax ρ-syntax D Ds = ρ[ D ] Ds
infix 6 ι
_▷_⇒_ : (Ξ : ℕ) (D : ArgsD Ξ) (A : TExp Ξ) → OpD
Ξ ▷ D ⇒ A = ι Syn A D
_▷_⇐_ : (Ξ : ℕ) (D : ArgsD Ξ) (A : TExp Ξ) → OpD
Ξ ▷ D ⇐ A = ι Chk A D
modeArgD : ArgD Ξ → Mode
modeArgD D = ArgD.mode D