abstract A = { cat A1; A2 ; fun f1 : A1 ; f2 : A1 ; g : A2 ; }