abstract CopyAbs = { cat S ; AB ; fun s : AB -> S ; end : AB ; a,b : AB -> AB ; }