Hi Rich,
I've been going through your RPN code. It's completely lost me about the point where it empties the stack of all bits less in priority (mainly due to DB's very clunky arrays).
I'll try and have a bash through it.
What you also may want to think about Rich is instead of having two process, Convert then Solve, why not solve while converting?
Every time you write some output from the converter, you could execute that action as well.
So as your prog outputs, say 123*+
Output 1: push 1 at the same time
Output 2: push 2 at the same time
Output 3: push 3 at the same time
Output *: pop pop mult push
Output +: pop pop add push
if your stack runs empty you could ouput "Invalid expression!".
Facts are meaningless.
You could use facts to prove anything that's even remotely true.