Opened 6 years ago
Closed 6 years ago
#21645 closed defect (fixed)
Full symbolic sum function
Reported by:  rws  Owned by:  

Priority:  major  Milestone:  sage7.4 
Component:  symbolics  Keywords:  
Cc:  Merged in:  
Authors:  Ralf Stephan  Reviewers:  Nils Bruin 
Report Upstream:  N/A  Work issues:  
Branch:  7e8d0d0 (Commits, GitHub, GitLab)  Commit:  7e8d0d09e3e718144b88664d05d1680a64f7081d 
Dependencies:  Stopgaps: 
Description (last modified by )
sum(ex,...)
always gets sent to calculus.symbolic_sum()
where Maxima is called. If unevaluated an anonymous function sum
is returned.
sage: ex=sum(gamma(n), n,1,a) sage: ex.operator() sum sage: type(_) <class 'sage.symbolic.function_factory.NewSymbolicFunction'>
This is unsatisfactory in many regards. Calls always go through Maxima, even if one wants just a sum expression held unevaluated. Also the anonymous function cannot be evaluated or substituted. For these reasons making a full symbolic sum function is a natural decision.
See also #17505
Change History (10)
comment:1 Changed 6 years ago by
comment:2 Changed 6 years ago by
Description:  modified (diff) 

comment:3 Changed 6 years ago by
Branch:  → u/rws/full_symbolic_sum_function 

comment:4 Changed 6 years ago by
Authors:  → Ralf Stephan 

Commit:  → 65d3d44d5245feb68ea652184a0024a00d7b7ad6 
Status:  new → needs_review 
New commits:
65d3d44  21645: full symbolic sum function

comment:5 Changed 6 years ago by
Commit:  65d3d44d5245feb68ea652184a0024a00d7b7ad6 → 29f7d1b349d606dddfe79086d9c3167d207443bd 

Branch pushed to git repo; I updated commit sha1. New commits:
29f7d1b  21645: remove forgotten diagnostic

comment:6 Changed 6 years ago by
Looking at the patch, I see presently special work happens on maxima's return values, which replaces maxima's "inert" sum with sage's newly grown symbolic sum function. I think that's problematic (for instance, we could have nested sums, and the nested sums would escape this treatment).
It should be possible to use the standard SRtomaxima and maximatoSR translation dictionaries for this, just as functions like sin etc. get properly translated. Isn't the line
+ BuiltinFunction.__init__(self, "sum", nargs=4, + conversions=dict(maxima='sum'))
already enough to get the required automatic translations? If not, perhaps there is a manual override somewhere else that needs to be *removed* to let the normal translation take its course?
comment:7 Changed 6 years ago by
Commit:  29f7d1b349d606dddfe79086d9c3167d207443bd → 7e8d0d09e3e718144b88664d05d1680a64f7081d 

Branch pushed to git repo; I updated commit sha1. New commits:
7e8d0d0  21645: remove unnecessary code

comment:9 Changed 6 years ago by
Reviewers:  → Nils Bruin 

Status:  needs_review → positive_review 
Looks good and patchbot is happy (coverage plugin failure seems to be on code that this actual branch doesn't touch)
comment:10 Changed 6 years ago by
Branch:  u/rws/full_symbolic_sum_function → 7e8d0d09e3e718144b88664d05d1680a64f7081d 

Resolution:  → fixed 
Status:  positive_review → closed 
Indeed ! This issue is known for a while, see this ask question for a dirty workaround. Funnily, i recently got a similar request privately, and was about to open a ticket to add a
hold
parameter to symbolic sum, i guess this ticket will take care of that too.