{-# 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