Opened 11 years ago

Closed 11 years ago

#3276 closed enhancement (fixed)

[with patch, with positive review] more generic assumptions in calculus

Reported by: robertwb Owned by: gfurnish
Priority: major Milestone: sage-3.0.4
Component: calculus Keywords:
Cc: Merged in:
Authors: Reviewers:
Report Upstream: Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description

For example:

sage: var('n,m')
(n, m)
sage: assume(n, m, 'integer')
sage: sin(n*m*pi)
0
sage: forget()
sage: sin(n*m*pi)
sin(pi*m*n)

Attachments (1)

3276-assume.patch (7.3 KB) - added by robertwb 11 years ago.

Download all attachments as: .zip

Change History (10)

Changed 11 years ago by robertwb

comment:1 Changed 11 years ago by robertwb

  • Summary changed from [with patch] more generic assumptions in calculus to [with patch, needs review] more generic assumptions in calculus

comment:2 Changed 11 years ago by mhansen

  • Milestone changed from sage-3.0.3 to sage-3.0.2
  • Summary changed from [with patch, needs review] more generic assumptions in calculus to [with patch, positive review] more generic assumptions in calculus

Excellent work Robert -- this is really nice. The code applies, passes, tests, and is well documented.

comment:3 Changed 11 years ago by gfurnish

  • Summary changed from [with patch, positive review] more generic assumptions in calculus to [with patch, mixed review] more generic assumptions in calculus

I'm giving this a negative review - see the email I'm writing to sage-devel on how introducing more maxima-isms without serious consideration is bad. There is nothing wrong with the code (so it is probably safe to use as a patch if someone needs this feature now), but introducing code to deprecate it two weeks or three weeks later is not good practice in my opinion.

comment:4 Changed 11 years ago by robertwb

This is a feature that people have requested from me personally many times, so I think it's worthy of inclusion. I am skeptical that the new symbolics can be a drop-in replacement for maxima in two or three weeks (would be happy to be proven wrong) so I think that it has value. Also, the exposed interface, though it passes strings to maxima, is not tied to the way maxima does things and could easily be used in the new symbolics (if not, they are not a drop-in replacement).

Would it be better if there was a smaller, limited set of options (e.g. "integer", "even", "odd", "rational", ...) that we will be sure to want to support in the future.

comment:5 Changed 11 years ago by gfurnish

Drop in replacement for Maxima? doubtful. Drop in replacement for sage.calculus? almost certainly. Part of that is changing how assumptions work. Like it or not assumptions are tied to the maxima way of doing things. What makes you think I'm going to choose an assumption model that is 100% compatible with the Maxima way? You can declare variables to be in ZZ instead of having to assume it, so immediately your method becomes very inefficient. Also your patch has horrible error checking. It allows for declaring a variable to be analytic or increasing. This should almost certainly be handled better, even if your making an argument that this should go in now. I am not going to waste time implementing complicated features in symbolics because people wern't willing to design them properly.

comment:6 Changed 11 years ago by robertwb

To summarize, you don't want this feature because it is at odds with the way you are handling it in your symbolics package (which is a perfectly valid argument).

comment:7 Changed 11 years ago by gfurnish

Basically yes.

comment:8 Changed 11 years ago by gfurnish

  • Summary changed from [with patch, mixed review] more generic assumptions in calculus to [with patch, with positive review] more generic assumptions in calculus

After discussion at dev1 we have decided that we should merge this but only the assume function should be considered "public" in that it will be supported after the symbolics rewrite. The other support classes/methods will probably go away.

comment:9 Changed 11 years ago by mabshoff

  • Milestone changed from sage-3.1.1 to sage-3.0.4
  • Resolution set to fixed
  • Status changed from new to closed

Merged in Sage 3.0.4.alpha1

Note: See TracTickets for help on using tickets.