[for some reason, I did not get any of the notifications from MaplePrimes until yesterday for the last month's worth of posts, so I had missed all these posts. So sorry for the late reply].
To be more precise, 'static' typing is typing that happens before run-time. Maple does not do any of this at all - even though it could do some restricted amount. It already does some restricted amount of simplifications, like
proc() if true then 1 else 2 end if end;
proc() 1 end
proc() if 5 then 1 else 2 end if end;
proc() if 5 then 1 else 2 end if end
so why not simply give an error in the second case? That would correspond to 'static' typing.
To a certain extent, you are correct that surface types are static, because they are assigned by Maple at 'parse time', i.e. when a proper DAG is created. But it's not really 'static typing' as only very rudimentary checks are made.
Static typing is usually understood to be "early type checking" to eliminate obvious nonsense. Maple is dynamically typed -- it tells you about obvious nonsense only when it tries to run it and no earlier (with only very very minor exceptions).
Typically we say that A is more strongly typed than B is A catches more 'wrong' programs before B does.