When you write:
sage: f(x)=0^x
You define a "symbolic function":
sage: type(f)
<type 'sage.symbolic.expression.Expression'>
sage: f.parent()
Callable function ring with argument x
This is a kind of mathematical formula (like exp(cos(pi)) + log(x)
). This is an object you can derivate, integrate, and so on.
Instead you can define a Python function:
sage: def f(x):
....: return 0^x
sage: f(0)
1
sage: type(f)
<type 'function'>
For such easy-to-define function, you can be shorter, by typing:
sage: f = lambda x : 0^x
sage: f(0)
1
sage: type(f)
<type 'function'>
EDIT
According to your comment, it seems i misunderstood your question. Actually, the problem is not about evaluating the symbolic function f
but about SR(0)^SR(0)
being not defined. Thanks for reporting, @kcrisman opened trac ticket 18088.
Using a python lambda function, this will work. That is,
f = lambda x: 0^x
will give a function that does what you want. So, this indicates that it is a matter of how Sage is defining its functions.