newbie questions about maxima internals



Hello,

I'm looking at maxima source code, and the way maxima expressions are 
written in lisp.

If I'm right, upon startup maxima runs cl-user::run in init-cl.lisp,
then macsyma-top-level in macsys.lisp, then for each command entered,
continue, and toplevel-macsyma-eval, and ultimately meval.

Then, I can use meval on maxima expressions written as list, and with
a: ...;
:lisp $a
I can see how expression are coded.

Now the question:
expression are often of the form
((op simp) arg ...)

However, I can run meval simply on '(op arg ...), and hte result seems 
to be the same.
So what's the difference ?

Also, with for example (meval '($factor (mplus 1 $x (mtimes $x $x) 
(mtimes $x $x $x))))
I get forms with (op simp factored), (op simp irreducible) and (op simp 
ratsimp).

How does maxima work with symbols added to the operator ?

Also, when trying
a:'expand((x+y)^2);
:lisp $a

I get (%expand simp) instead of ($expand simp). What's the difference ?

Finally, is there some documentation about maxima internals ?

Jean-Claude Arbaut