This is actually a very simple fix: the problem derives from the fact that the Spring Expression Language (SpEL) needs to be 'told' how to resolve the string "Math" when it is encountered in a statement.
See Section 11.3.8, Type Registration for more info.
Thus, if you change your code to include the requisite type registration code, it should work for you as in...
Code:
TypeRegistry.RegisterType("Math", typeof(Math));
IDictionary vars = new Hashtable();
Expression.RegisterFunction("sqrt", "{|n| Math.Sqrt($n)}", vars);
var value = ExpressionEvaluator.GetValue(null, "#sqrt(9)", vars);
Unfortunately, the snippet in the section of the docs which you reference wasn't (entirely) intended to be a complete, runnable, stand-alone code block and so as-is it will definitely evidence the issue that you point out (e.g., not understanding what to do when it encounters the string "Math" in the SpEL statement).
Hope this helps clarify what's going on here.
Also, as an aside, I apologize for the delay in responding to this post, but this forum is generally reserved for Spring Java discussions and I only just recently was made aware of this post. In the future, for questions re: Spring.NET, we recommend that you post your questions in the Spring.NET-specific discussion forums so that they will (hopefully!) receive a speedier response.
Thanks,
-Steve B.