Evaluating a symbolic expression for a Graph

asked 12 years ago

patronics gravatar image

updated 12 years ago

I'm able to do this:

sage: f = function('radius', nargs=1, evalf_func=Graph.radius)
sage: f(graphs.HouseGraph())
2

But not this:

sage: var('G')
sage: expr = f(G)
sage: expr.subs(G=graphs.HouseGraph())
...
TypeError: no canonical coercion from <class 'sage.graphs.graph.Graph'> to Symbolic Ring

What am I missing? Is it not possible to use symbolic expressions like this?

Preview: (hide)

Comments

The substitution is implemented in the stricter "sense of algebra". The instance expr is namely

sage: expr.__class__
<type 'sage.symbolic.expression.Expression'>

sage: expr
radius(G)

sage: expr.__dict__
<dictproxy {'__doc__': None,
 '__module__': 'sage.categories.commutative_rings',
 '_reduction': (<built-in function getattr>,
  (Category of commutative rings, 'element_class')),
 '_sage_src_lines_': <staticmethod object at 0x7f28c20399b8>}>

sage: expr.subs??

(Python allows better ways to call a known function on a known argument, and explicit is better then implicit. Why this contorsion by subs?)

dan_fulea gravatar imagedan_fulea ( 7 years ago )