module Soat.SecondOrder.Signature %default total public export record Signature where constructor MkSignature T : Type 0 O : T -> List (Pair (List T) T) -> Type public export record Op (0 sig : Signature) (0 t : sig.T) where constructor MkOp {arity : List (Pair (List sig.T) sig.T)} op : sig.O t arity