{-
This second-order signature was created from the following second-order syntax description:
syntax Sub | S
type
L : 0-ary
T : 0-ary
term
vr : L -> T
sb : L.T T -> T
theory
(C) x y : T |> sb (a. x[], y[]) = x[]
(L) x : T |> sb (a. vr(a), x[]) = x[]
(R) a : L x : L.T |> sb (b. x[b], vr(a[])) = x[a[]]
(A) x : (L,L).T y : L.T z : T |> sb (a. sb (b. x[a,b], y[a]), z[]) = sb (b. sb (a. x[a, b], z[]), sb (a. y[a], z[]))
-}
module Sub.Signature where
open import SOAS.Context
-- Type declaration
data ST : Set where
L : ST
T : ST
open import SOAS.Syntax.Signature ST public
open import SOAS.Syntax.Build ST public
-- Operator symbols
data Sₒ : Set where
vrₒ sbₒ : Sₒ
-- Term signature
S:Sig : Signature Sₒ
S:Sig = sig λ
{ vrₒ → (⊢₀ L) ⟼₁ T
; sbₒ → (L ⊢₁ T) , (⊢₀ T) ⟼₂ T
}
open Signature S:Sig public