module A201706.ISML where
open import A201706.Prelude public
module ISMLList where
open import A201706.PreludeList public
mutual
infixr 7 _⇒_
data Ty : Set where
• : Ty
_⇒_ : Ty → Ty → Ty
[_⁏_]_ : BoxTy⋆ → Ty⋆ → Ty → Ty
record BoxTy : Set where
inductive
constructor [_⁏_]_
field
Δ : BoxTy⋆
Γ : Ty⋆
A : Ty
Ty⋆ : Set
Ty⋆ = List Ty
BoxTy⋆ : Set
BoxTy⋆ = List BoxTy
module ISMLVec where
open import A201706.PreludeVec public
mutual
infixr 7 _⇒_
data Ty : Set where
• : Ty
_⇒_ : Ty → Ty → Ty
[_⁏_]_ : ∀ {d g} → BoxTy⋆ d → Ty⋆ g → Ty → Ty
record BoxTy : Set where
inductive
constructor [_⁏_]_
field
{d} : Nat
{g} : Nat
Δ : BoxTy⋆ d
Γ : Ty⋆ g
A : Ty
Ty⋆ : Nat → Set
Ty⋆ g = Vec Ty g
BoxTy⋆ : Nat → Set
BoxTy⋆ d = Vec BoxTy d