abstract C = { cat S ; fun f : S -> S ; def f x = 1 ; }