Rupert,
Your general approach makes sense to me. A few comments.
About CLOS objects, I don't see any problem with letting them float
around in Maxima. Makes sense to me to patch DISPLA to print them.
May as well use native Lisp objects whenever they're useful.
There is an existing structure scheme in Maxima which is essentially a
reimplementation of similar stuff in Lisp. See defstruct, @, new.
However that doesn't have any method stuff so it sounds like what you're
doing is beyond its capabilities. It would probably be a good idea to
nuke the existing structure implementation and punt directly to Lisp.
There exists some code for finite groups in maxima/share -- I think it
is called gf. Maybe you know about that already.
Keep up the good work, & keep us posted. If you have a patch for the
display code already, I am interested to see it.
best
Robert Dodier