{-
This second-order signature was created from the following second-order syntax description:
syntax Combinatory | CL
type
* : 0-ary
term
app : * * -> * | _$_ l20
i : *
k : *
s : *
theory
(IA) x |> app (i, x) = x
(KA) x y |> app (app(k, x), y) = x
(SA) x y z |> app (app (app (s, x), y), z) = app (app(x, z), app(y, z))
-}
module Combinatory.Signature where
open import SOAS.Context
open import SOAS.Common
open import SOAS.Syntax.Signature *T public
open import SOAS.Syntax.Build *T public
-- Operator symbols
data CLₒ : Set where
appₒ iₒ kₒ sₒ : CLₒ
-- Term signature
CL:Sig : Signature CLₒ
CL:Sig = sig λ
{ appₒ → (⊢₀ *) , (⊢₀ *) ⟼₂ *
; iₒ → ⟼₀ *
; kₒ → ⟼₀ *
; sₒ → ⟼₀ *
}
open Signature CL:Sig public