sig
type kind = KTerm | KType | KPerm | KArrow of Kind.kind * Kind.kind
val karrow : ('a * Kind.kind) list -> Kind.kind -> Kind.kind
val as_arrow : Kind.kind -> Kind.kind list * Kind.kind
val arity : Kind.kind -> int
val print : Kind.kind -> string
val print_kind : Kind.kind -> PPrint.document
val equal : Kind.kind -> Kind.kind -> bool
end