[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread mabshoff

+1 from me to include Pynac/GiNaC in Sage,

Martin Albrecht asked about the Windows porting issue: I looked at the
GiNaC code and it is very clean C++. The maintainer is willing to
merge MSVC related patches where needed, i.e. export statements for
the symbols we need. I am not aware of any other issues that need
fixing.

The current reason that there is no MSVC target to build GiNaC is the
lack of an non-gcc port of CLN which does not apply any more since
William removed the dependency on CLN. So I will fix the problem with
MSVC during the Windows port. There are now also CLN patches to build
with MSVC, but I have not taken a closer look at those.

Considering the alternatives (GIAC, code written from scratch) this is
by far the best solution IMHO.

Cheers,

Michael
--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Ondrej Certik

On Tue, Aug 26, 2008 at 12:49 AM, William Stein [EMAIL PROTECTED] wrote:

 BTW, one important warning: ginac and sympycore are missing
 assumptions and sympy only has very trivial ones, like positive,
 negative, integer, even, odd, etc. This is really important for any
 nontrivial things in a CAS and I changes to the core may be needed. I
 really want to have assumptions in sympy first before saying -- yes,
 this approach to do the core is the best.

 Ondrej

 Why are assumptions really important for any nontrivial things in a CAS?
 In my entire life I've only ever used assumptions to get maxima to do
 a symbolic integration.  I've never used them in any other context.
 Can you please educate me on why they are so important?   Thanks.

Basically all more nontrivial simplifications. Things like to simplify
sqrt(1-sin(x)**2) etc. Or acos(cos(x)). All of those are things that
are needed to be automatic, but only work sometimes, e.g. if 0  x 
pi, or -pi/2  x  pi/2 etc. This is obivously needed in integration
and in solvers and also just when the user wants to simplify the
expression. So in particular this is done inside ginac, so ginac need
some way to handle these. Do you have any ideas how to do it?

Ondrej

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread William Stein

On Mon, Aug 25, 2008 at 11:29 PM, Ondrej Certik [EMAIL PROTECTED] wrote:

 On Tue, Aug 26, 2008 at 12:49 AM, William Stein [EMAIL PROTECTED] wrote:

 BTW, one important warning: ginac and sympycore are missing
 assumptions and sympy only has very trivial ones, like positive,
 negative, integer, even, odd, etc. This is really important for any
 nontrivial things in a CAS and I changes to the core may be needed. I
 really want to have assumptions in sympy first before saying -- yes,
 this approach to do the core is the best.

 Ondrej

 Why are assumptions really important for any nontrivial things in a CAS?
 In my entire life I've only ever used assumptions to get maxima to do
 a symbolic integration.  I've never used them in any other context.
 Can you please educate me on why they are so important?   Thanks.

 Basically all more nontrivial simplifications. Things like to simplify
 sqrt(1-sin(x)**2) etc. Or acos(cos(x)). All of those are things that
 are needed to be automatic, but only work sometimes, e.g. if 0  x 
 pi, or -pi/2  x  pi/2 etc. This is obivously needed in integration
 and in solvers and also just when the user wants to simplify the
 expression. So in particular this is done inside ginac, so ginac need
 some way to handle these. Do you have any ideas how to do it?


From reading the GiNaC docs I have the impression the *only* assumption
it supports is the assumption x is a positive real number.  I think there
are no other assumptions in GiNaC, though I could be wrong.

I think GiNaC makes it a point not to simplify stuff automatically by
making assumptions, instead providing good pattern matching,
substitution, expression traversal and other tools.  In fact somewhere
on their webpage they have the moto in bold simplification is evil.

Don't read the above as making any implications about what I think
Sage should do.   We can of course tack on something more sophisticated,
and also decide to make our simplifications more sophisticated too,
if we so desire...

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Ondrej Certik

On Tue, Aug 26, 2008 at 8:43 AM, William Stein [EMAIL PROTECTED] wrote:

 On Mon, Aug 25, 2008 at 11:29 PM, Ondrej Certik [EMAIL PROTECTED] wrote:

 On Tue, Aug 26, 2008 at 12:49 AM, William Stein [EMAIL PROTECTED] wrote:

 BTW, one important warning: ginac and sympycore are missing
 assumptions and sympy only has very trivial ones, like positive,
 negative, integer, even, odd, etc. This is really important for any
 nontrivial things in a CAS and I changes to the core may be needed. I
 really want to have assumptions in sympy first before saying -- yes,
 this approach to do the core is the best.

 Ondrej

 Why are assumptions really important for any nontrivial things in a CAS?
 In my entire life I've only ever used assumptions to get maxima to do
 a symbolic integration.  I've never used them in any other context.
 Can you please educate me on why they are so important?   Thanks.

 Basically all more nontrivial simplifications. Things like to simplify
 sqrt(1-sin(x)**2) etc. Or acos(cos(x)). All of those are things that
 are needed to be automatic, but only work sometimes, e.g. if 0  x 
 pi, or -pi/2  x  pi/2 etc. This is obivously needed in integration
 and in solvers and also just when the user wants to simplify the
 expression. So in particular this is done inside ginac, so ginac need
 some way to handle these. Do you have any ideas how to do it?


 From reading the GiNaC docs I have the impression the *only* assumption
 it supports is the assumption x is a positive real number.  I think there
 are no other assumptions in GiNaC, though I could be wrong.

 I think GiNaC makes it a point not to simplify stuff automatically by
 making assumptions, instead providing good pattern matching,
 substitution, expression traversal and other tools.  In fact somewhere
 on their webpage they have the moto in bold simplification is evil.

Yep I know all ginac documentation and I fully agree with
simplification is evil, that's why I wrote in our own simplify
function's docstring:


Naively simplifies the given expression.

Simplification is not a well defined term and the exact strategies
this function tries can change in the future versions of SymPy. If
your algorithm relies on simplification (whatever it is), try to
determine what you need exactly  -  is it powsimp(), or radsimp(),
or together(), or something else? And use this particular function
directly, because those are well defined and thus your algorithm
will be robust.



 Don't read the above as making any implications about what I think
 Sage should do.   We can of course tack on something more sophisticated,
 and also decide to make our simplifications more sophisticated too,
 if we so desire...

I don't know either what the best way forward is, until we actually
have something that is general and robust and maintainable.

Ondrej

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Fernando Perez

On Mon, Aug 25, 2008 at 10:58 AM, William Stein [EMAIL PROTECTED] wrote:

 As to GPL vs BSD, I am sad that some people will not contribute to a
 BSD project and some other people will not use a GPL project. But my
 intuition says that the license is not the main reason. If sympy was
 as fast as ginac (as I hope it will be in not so distant future), I am
 sure it'd be ok, even if it's BSD. BTW, I told Burcin and William that
 if the license was the only reason, I am willing to consider switching
 to GPL (i.e. try to persuade all 44+ contributors), if that would mean
 more people would be developing sympy. Currently it seems to be the
 opposite, i.e. when we switched from GPL to BSD, people and developers
 seemed to like it, but I may well be mistaken. But as I said, I think
 the main problem of sympy is not the license, but speed.

 The GPL/BSD split in the mathematical Python community is
 unfortunate and a is very real problem.   At scipy'08 it was
 the source of tension for some people...

I don't know if for this particular project it's a
realistic/valid/interesting solution or not, but how about using LGPL
as a middle solution?  I happen to actually really like the LGPL: I
find that it protects my code from flat out abuse, while not imposing
my conditions beyond my own code boundaries.  But for many cases I
find that LGPL strikes an excellent balance and fully protects the
original code from closed modifications (though not from use as an
unmodified library), which is what I consider most important.

In fact, I'd originally licensed ipython as LGPL, and switched to BSD
only to make it easier to share code back and forth with
numpy/scipy/matplotlib. In this case I'm happy having switched to BSD,
but I still like the LGPL a lot.

Just  a suggestion to consider,  though obviously ultimately the
decision rests with the code authors.

Cheers,

f

ps - I find the pynac idea extremely cool: using python itself  as the
rich native support for a C/C++ library in replacement of another
heavyweight system (CLN in this case) is a great show of the utility
and quality of the language.  FWIW I'm +1 on it going in, though I'm
not really a sage developer myself.

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Burcin Erocal

On Tue, 26 Aug 2008 08:29:33 +0200
Ondrej Certik [EMAIL PROTECTED] wrote:

 
 On Tue, Aug 26, 2008 at 12:49 AM, William Stein [EMAIL PROTECTED] wrote:
 
  BTW, one important warning: ginac and sympycore are missing
  assumptions and sympy only has very trivial ones, like positive,
  negative, integer, even, odd, etc. This is really important for any
  nontrivial things in a CAS and I changes to the core may be needed. I
  really want to have assumptions in sympy first before saying -- yes,
  this approach to do the core is the best.
 
  Ondrej
 
  Why are assumptions really important for any nontrivial things in a CAS?
  In my entire life I've only ever used assumptions to get maxima to do
  a symbolic integration.  I've never used them in any other context.
  Can you please educate me on why they are so important?   Thanks.
 
 Basically all more nontrivial simplifications. Things like to simplify
 sqrt(1-sin(x)**2) etc. Or acos(cos(x)). All of those are things that
 are needed to be automatic, but only work sometimes, e.g. if 0  x 
 pi, or -pi/2  x  pi/2 etc. This is obivously needed in integration
 and in solvers and also just when the user wants to simplify the
 expression. So in particular this is done inside ginac, so ginac need
 some way to handle these. Do you have any ideas how to do it?

Looking briefly at the MMA documentation, I can't find any reference to
a general assumption context, which can be queried to get information
on variables/expressions.

It seems that you can give assumptions only for specific functions,
such as

In[]:= Simplify[ArcCos[Cos[x]],{0x,xPi/2}]
Out[]= x

same goes for Refine, FullSimplify and FunctionExpand (whatever that
is).

As already mentioned in another thread, the automatic evaluation (basic
simplification) in GiNaC is meant to be a cheap operation. MMA doesn't
do automatic simplification of this statement either, 

In[]:= Assuming[0x, Assuming[xPi/2 ,ArcCos[Cos[x
Out[]= ArcCos[Cos[x]]


Cheers,

Burcin



--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread David Philp


On 26/08/2008, at 5:09 PM, Burcin Erocal wrote:
 In[]:= Assuming[0x, Assuming[xPi/2 ,ArcCos[Cos[x
 Out[]= ArcCos[Cos[x]]

In[]:= Simplify[ArcCos[Cos[x]], Assumptions - 0  x  Pi/2]
Out[] = x

==
David J Philp
Postdoctoral Fellow
National Centre for Epidemiology and Population Health
Building 62, cnr Mills Rd  Eggleston Rd
The Australian National University
Canberra ACT 0200 Australia

T: +61 2 6125 8260
F: +61 2 6125 0740
M: 0423 535 397
W: http://nceph.anu.edu.au/

CRICOS Provider #00120C





--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Fernando Perez

On Tue, Aug 26, 2008 at 12:09 AM, William Stein [EMAIL PROTECTED] wrote:

 I don't know if for this particular project it's a
 realistic/valid/interesting solution or not, but how about using LGPL
 as a middle solution?

 This is not an option because Pynac derives from Ginac and Ginac
 is GPL'd:  http://www.ginac.de/  So for this project I have absolutely
 no choice in the matter.

Ah, I see.  Thanks for the clarification.

BTW, numpy/scipy/mpl/ipython pretty much have to stay away from GPL
code because it would force them to relicense completely (something
impossible to do in practice even if someone wanted to, given the long
history and large developer pool). But there's a fair amount of use of
LGPL  code in all those projects and related. for example Mayavi and
all the Enthought GUI stuff is based on WXPython, which is itself
LGPL.  Since that code is used as a library and not to copy/paste, the
LGPL is not really an issue at all in such cases.

In any case, I'm really happy to see better symbolics coming.  This
will be a huge step forward, and I really hope that you guys all
figure out a technical way for sympy to continue, perhaps with an
optional pynac backend (I'd have no problem using it myself in
research, like I use tons of GPL code elsewhere, I just don't copy any
of it in ipython/numpy).

Cheers,

f

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Ondrej Certik

On Tue, Aug 26, 2008 at 9:09 AM, Burcin Erocal [EMAIL PROTECTED] wrote:

 On Tue, 26 Aug 2008 08:29:33 +0200
 Ondrej Certik [EMAIL PROTECTED] wrote:


 On Tue, Aug 26, 2008 at 12:49 AM, William Stein [EMAIL PROTECTED] wrote:
 
  BTW, one important warning: ginac and sympycore are missing
  assumptions and sympy only has very trivial ones, like positive,
  negative, integer, even, odd, etc. This is really important for any
  nontrivial things in a CAS and I changes to the core may be needed. I
  really want to have assumptions in sympy first before saying -- yes,
  this approach to do the core is the best.
 
  Ondrej
 
  Why are assumptions really important for any nontrivial things in a CAS?
  In my entire life I've only ever used assumptions to get maxima to do
  a symbolic integration.  I've never used them in any other context.
  Can you please educate me on why they are so important?   Thanks.

 Basically all more nontrivial simplifications. Things like to simplify
 sqrt(1-sin(x)**2) etc. Or acos(cos(x)). All of those are things that
 are needed to be automatic, but only work sometimes, e.g. if 0  x 
 pi, or -pi/2  x  pi/2 etc. This is obivously needed in integration
 and in solvers and also just when the user wants to simplify the
 expression. So in particular this is done inside ginac, so ginac need
 some way to handle these. Do you have any ideas how to do it?

 Looking briefly at the MMA documentation, I can't find any reference to
 a general assumption context, which can be queried to get information
 on variables/expressions.

 It seems that you can give assumptions only for specific functions,
 such as

 In[]:= Simplify[ArcCos[Cos[x]],{0x,xPi/2}]
 Out[]= x

 same goes for Refine, FullSimplify and FunctionExpand (whatever that
 is).

 As already mentioned in another thread, the automatic evaluation (basic
 simplification) in GiNaC is meant to be a cheap operation. MMA doesn't
 do automatic simplification of this statement either,

 In[]:= Assuming[0x, Assuming[xPi/2 ,ArcCos[Cos[x
 Out[]= ArcCos[Cos[x]]

If mathematica really doesn't do this in the core, e.g. you need to
tell the simplifiy --  hey, use these assumptions, then I think we
should do exactly this. We actually converged to this solution too in
sympy, because I really don't want to make the core complicated.

On Tue, Aug 26, 2008 at 9:15 AM, David Philp [EMAIL PROTECTED] wrote:


 On 26/08/2008, at 5:09 PM, Burcin Erocal wrote:
 In[]:= Assuming[0x, Assuming[xPi/2 ,ArcCos[Cos[x
 Out[]= ArcCos[Cos[x]]

 In[]:= Simplify[ArcCos[Cos[x]], Assumptions - 0  x  Pi/2]
 Out[] = x

Exactly, you pass the assumptions as an object to the simplify
function. That's the point, it's very explicit and what I like.

I really need to learn mathematica and then just do the same, instead
of trying to do something and then burn myself.

On Tue, Aug 26, 2008 at 9:06 AM, Fernando Perez [EMAIL PROTECTED] wrote:

 On Mon, Aug 25, 2008 at 10:58 AM, William Stein [EMAIL PROTECTED] wrote:

 As to GPL vs BSD, I am sad that some people will not contribute to a
 BSD project and some other people will not use a GPL project. But my
 intuition says that the license is not the main reason. If sympy was
 as fast as ginac (as I hope it will be in not so distant future), I am
 sure it'd be ok, even if it's BSD. BTW, I told Burcin and William that
 if the license was the only reason, I am willing to consider switching
 to GPL (i.e. try to persuade all 44+ contributors), if that would mean
 more people would be developing sympy. Currently it seems to be the
 opposite, i.e. when we switched from GPL to BSD, people and developers
 seemed to like it, but I may well be mistaken. But as I said, I think
 the main problem of sympy is not the license, but speed.

 The GPL/BSD split in the mathematical Python community is
 unfortunate and a is very real problem.   At scipy'08 it was
 the source of tension for some people...

 I don't know if for this particular project it's a
 realistic/valid/interesting solution or not, but how about using LGPL
 as a middle solution?  I happen to actually really like the LGPL: I
 find that it protects my code from flat out abuse, while not imposing
 my conditions beyond my own code boundaries.  But for many cases I
 find that LGPL strikes an excellent balance and fully protects the
 original code from closed modifications (though not from use as an
 unmodified library), which is what I consider most important.

 In fact, I'd originally licensed ipython as LGPL, and switched to BSD
 only to make it easier to share code back and forth with
 numpy/scipy/matplotlib. In this case I'm happy having switched to BSD,
 but I still like the LGPL a lot.

 Just  a suggestion to consider,  though obviously ultimately the
 decision rests with the code authors.


Thanks Fernando for mentioning LPGL. Actually, in fact Kirill, another
sympy developer who works on the core of sympy a lot, he didn't have
time to advocate it yet, but he also very much like LGPL and 

[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Fernando Perez

On Tue, Aug 26, 2008 at 12:25 AM, Ondrej Certik [EMAIL PROTECTED] wrote:

 But did it ever happen to you Fernando that someone would plainly
 abuse ipython/numpy/scipy? Clearly ipython is way more popular than
 sympy, so if it doesn't happen for numpy/scipy/ipython, I don't think
 we have to fear. (btw. fear of what actually?)

Well, I've heard at times that plenty of places are using ipython
internally in commercial settings, and I'm happy with that.  I don't
think anyone is going to try to go out and 'sell ipython'  since it's
so easy to get for free :)  Overall for ipython the BSD license
approach has worked well, as it's easy for me to take code from
matplotlib, numpy or python itself and viceversa without worrying
about licensing, and we get users from rather unexpected places
(especially in industry).

But each license does have its place.  For example, I *strongly*
support the GPL as the right choice for things like the Linux kernel,
so I'm not a fanatic on any front either.  My take on this is that I
tend to 'go with the flow': if I contribute/extend an existing project
I just follow its original license, and for my own things I tend to
oscillate between LGPL and BSD depending on the specifics of the case.
 And I might one day find that I want to use the GPL for a new
project, because I do see use cases for it as well.


Cheers,

f

ps - I know this is getting off topic.  I'm going to bed and will be
happy to discuss this further, but  off list to avoid derailing the
discussion on symbolics with too much licensing chat.

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Michel

An assumption framework is non-trivial as it is basically
computational
real algebraic geometry.

Recenty there was a post about QEPCAD  (http://www.cs.usna.edu/~qepcad/
B/QEPCAD.html).
Perhaps this might fit the bill?

Michel


On Aug 26, 8:43 am, William Stein [EMAIL PROTECTED] wrote:
 On Mon, Aug 25, 2008 at 11:29 PM, Ondrej Certik [EMAIL PROTECTED] wrote:

  On Tue, Aug 26, 2008 at 12:49 AM, William Stein [EMAIL PROTECTED] wrote:

  BTW, one important warning: ginac and sympycore are missing
  assumptions and sympy only has very trivial ones, like positive,
  negative, integer, even, odd, etc. This is really important for any
  nontrivial things in a CAS and I changes to the core may be needed. I
  really want to have assumptions in sympy first before saying -- yes,
  this approach to do the core is the best.

  Ondrej

  Why are assumptions really important for any nontrivial things in a CAS?
  In my entire life I've only ever used assumptions to get maxima to do
  a symbolic integration.  I've never used them in any other context.
  Can you please educate me on why they are so important?   Thanks.

  Basically all more nontrivial simplifications. Things like to simplify
  sqrt(1-sin(x)**2) etc. Or acos(cos(x)). All of those are things that
  are needed to be automatic, but only work sometimes, e.g. if 0  x 
  pi, or -pi/2  x  pi/2 etc. This is obivously needed in integration
  and in solvers and also just when the user wants to simplify the
  expression. So in particular this is done inside ginac, so ginac need
  some way to handle these. Do you have any ideas how to do it?

 From reading the GiNaC docs I have the impression the *only* assumption
 it supports is the assumption x is a positive real number.  I think there
 are no other assumptions in GiNaC, though I could be wrong.

 I think GiNaC makes it a point not to simplify stuff automatically by
 making assumptions, instead providing good pattern matching,
 substitution, expression traversal and other tools.  In fact somewhere
 on their webpage they have the moto in bold simplification is evil.

 Don't read the above as making any implications about what I think
 Sage should do.   We can of course tack on something more sophisticated,
 and also decide to make our simplifications more sophisticated too,
 if we so desire...

  -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Burcin Erocal

On Tue, 26 Aug 2008 00:40:22 -0700 (PDT)
Michel [EMAIL PROTECTED] wrote:

 
 An assumption framework is non-trivial as it is basically
 computational
 real algebraic geometry.
 
 Recenty there was a post about QEPCAD  (http://www.cs.usna.edu/~qepcad/
 B/QEPCAD.html).
 Perhaps this might fit the bill?

AFAIK, MMA indeed uses cylindrical algebraic decomposition (CAD) for
this, and it would be great to have an efficient CAD implementation in
Sage. I am not an expert on this issue, but from what I have heard,
qepcad has its advantages (more flexible?) and disadvantages (slow?)
compared to the CAD implementation in MMA.

qepcad relies on an aging library saclib for the algebraic data
structures. It would be a worthwhile project to implement CAD/port
qepcad so that it is modular, and can work with more recent/better
libraries. Maybe someone (Carl Witty?) will take this on (or already
has?). :) 

Cheers,

Burcin

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Ondrej Certik

On Tue, Aug 26, 2008 at 10:16 AM, Burcin Erocal [EMAIL PROTECTED] wrote:

 On Tue, 26 Aug 2008 00:40:22 -0700 (PDT)
 Michel [EMAIL PROTECTED] wrote:


 An assumption framework is non-trivial as it is basically
 computational
 real algebraic geometry.

 Recenty there was a post about QEPCAD  (http://www.cs.usna.edu/~qepcad/
 B/QEPCAD.html).
 Perhaps this might fit the bill?

 AFAIK, MMA indeed uses cylindrical algebraic decomposition (CAD) for
 this, and it would be great to have an efficient CAD implementation in
 Sage. I am not an expert on this issue, but from what I have heard,
 qepcad has its advantages (more flexible?) and disadvantages (slow?)
 compared to the CAD implementation in MMA.

 qepcad relies on an aging library saclib for the algebraic data
 structures. It would be a worthwhile project to implement CAD/port
 qepcad so that it is modular, and can work with more recent/better
 libraries. Maybe someone (Carl Witty?) will take this on (or already
 has?). :)

Yes, but this is not necessary to get the infrustructure in and get
the easy cases working and working fast.

qepcad or other things will come handy when doing the general cases,
where simple heuristics will fail. E.g. it's like with limits, the
gruntz algorithm is nice and working, but all easy cases can be done
(and are done) with heuristics, because it is simpler and way faster.

Ondrej

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread William Stein

On Tue, Aug 26, 2008 at 1:19 AM, Ondrej Certik [EMAIL PROTECTED] wrote:

 On Tue, Aug 26, 2008 at 10:16 AM, Burcin Erocal [EMAIL PROTECTED] wrote:

 On Tue, 26 Aug 2008 00:40:22 -0700 (PDT)
 Michel [EMAIL PROTECTED] wrote:


 An assumption framework is non-trivial as it is basically
 computational
 real algebraic geometry.

 Recenty there was a post about QEPCAD  (http://www.cs.usna.edu/~qepcad/
 B/QEPCAD.html).
 Perhaps this might fit the bill?

 AFAIK, MMA indeed uses cylindrical algebraic decomposition (CAD) for
 this, and it would be great to have an efficient CAD implementation in
 Sage. I am not an expert on this issue, but from what I have heard,
 qepcad has its advantages (more flexible?) and disadvantages (slow?)
 compared to the CAD implementation in MMA.

 qepcad relies on an aging library saclib for the algebraic data
 structures. It would be a worthwhile project to implement CAD/port
 qepcad so that it is modular, and can work with more recent/better
 libraries. Maybe someone (Carl Witty?) will take this on (or already
 has?). :)

I think Carl Witty has done a bunch.  He gave a talk about this
at Sage Days 8.5.  Maybe he'll comment on this thread.

 Yes, but this is not necessary to get the infrustructure in and get
 the easy cases working and working fast.

 qepcad or other things will come handy when doing the general cases,
 where simple heuristics will fail. E.g. it's like with limits, the
 gruntz algorithm is nice and working, but all easy cases can be done
 (and are done) with heuristics, because it is simpler and way faster.

Interesting.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread mabshoff



On Aug 26, 1:27 am, William Stein [EMAIL PROTECTED] wrote:
 On Tue, Aug 26, 2008 at 1:19 AM, Ondrej Certik [EMAIL PROTECTED] wrote:

SNIP

  qepcad relies on an aging library saclib for the algebraic data
  structures. It would be a worthwhile project to implement CAD/port
  qepcad so that it is modular, and can work with more recent/better
  libraries. Maybe someone (Carl Witty?) will take this on (or already
  has?). :)

 I think Carl Witty has done a bunch.  He gave a talk about this
 at Sage Days 8.5.  Maybe he'll comment on this thread.

Carl and Jason Grout have been fixing build and 64 bit issues, but
saclib is still not 64 bit. They have been pushing the fixes upstream
and there ought to be an experimental spkg soon - the current one got
rejected in review.

  Yes, but this is not necessary to get the infrustructure in and get
  the easy cases working and working fast.

  qepcad or other things will come handy when doing the general cases,
  where simple heuristics will fail. E.g. it's like with limits, the
  gruntz algorithm is nice and working, but all easy cases can be done
  (and are done) with heuristics, because it is simpler and way faster.

 Interesting.

Yeah, the code in qepcad looks funny since at least some of it was
translated from Fortran and hence has odd indentation for example.

  -- William

Cheers,

Michael
--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Burcin Erocal

On Tue, 26 Aug 2008 00:42:21 -0700
William Stein [EMAIL PROTECTED] wrote:

  Burcin, would LGPL be suitable for you to contribute to sympy, or is
  LGPL not protective enough for you?
 
 Since Burcin's whole proposal is to use GiNaC, I suspect that he is only going
 to write something if it builds on GiNaC.  As GiNaC is GPL'd
 the above question might be moot, since it seems difficult
 to build an LGPL'd Sympy on top of GiNaC...

My main objection to using sympy was not the license, but not having
access to the fast basic routines in Sage, such as linear algebra,
gcd's or polynomial arithmetic.

Being trained as a mathematician, I also like the typed magma approach,
and I can't deal with just handling symbolic expressions. This also
fits well into my work. Since for most of these symbolic tasks, e.g.
integration, summation, you model the problem algebraically, solve it
using your algebraic tools, then convert it back.


This doesn't mean that I'm ok with using licenses other than GPL, but I
think the points above make that irrelevant anyhow.


Cheers,

Burcin

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Ondrej Certik

On Tue, Aug 26, 2008 at 10:35 AM, Burcin Erocal [EMAIL PROTECTED] wrote:

 On Tue, 26 Aug 2008 00:42:21 -0700
 William Stein [EMAIL PROTECTED] wrote:

  Burcin, would LGPL be suitable for you to contribute to sympy, or is
  LGPL not protective enough for you?

 Since Burcin's whole proposal is to use GiNaC, I suspect that he is only 
 going
 to write something if it builds on GiNaC.  As GiNaC is GPL'd
 the above question might be moot, since it seems difficult
 to build an LGPL'd Sympy on top of GiNaC...

 My main objection to using sympy was not the license, but not having
 access to the fast basic routines in Sage, such as linear algebra,
 gcd's or polynomial arithmetic.

 Being trained as a mathematician, I also like the typed magma approach,
 and I can't deal with just handling symbolic expressions. This also
 fits well into my work. Since for most of these symbolic tasks, e.g.
 integration, summation, you model the problem algebraically, solve it
 using your algebraic tools, then convert it back.

Right. For me, symbolic expressions are exactly what I need. The
system should be clever enough to figure everything out and
automatically use the best tool to solve the job.



 This doesn't mean that I'm ok with using licenses other than GPL, but I
 think the points above make that irrelevant anyhow.

Thanks for the clarification, yes, I think now everything is clear.

Ondrej

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-26 Thread Carl Witty

On Aug 26, 1:19 am, Ondrej Certik [EMAIL PROTECTED] wrote:
 On Tue, Aug 26, 2008 at 10:16 AM, Burcin Erocal [EMAIL PROTECTED] wrote:

  On Tue, 26 Aug 2008 00:40:22 -0700 (PDT)
  Michel [EMAIL PROTECTED] wrote:

  An assumption framework is non-trivial as it is basically
  computational
  real algebraic geometry.

  Recenty there was a post about QEPCAD  (http://www.cs.usna.edu/~qepcad/
  B/QEPCAD.html).
  Perhaps this might fit the bill?

I'm not sure what sort of assumptions are really useful/used in
practice, but I can certainly imagine assumptions that QEPCAD couldn't
handle.  For example, it can't handle x is an integer, or x^2 + x +
e^x  2, or anything that involves a mixture of x and sin(x).

  AFAIK, MMA indeed uses cylindrical algebraic decomposition (CAD) for
  this, and it would be great to have an efficient CAD implementation in
  Sage. I am not an expert on this issue, but from what I have heard,
  qepcad has its advantages (more flexible?) and disadvantages (slow?)
  compared to the CAD implementation in MMA.

  qepcad relies on an aging library saclib for the algebraic data
  structures. It would be a worthwhile project to implement CAD/port
  qepcad so that it is modular, and can work with more recent/better
  libraries. Maybe someone (Carl Witty?) will take this on (or already
  has?). :)

I am indeed working on a CAD implementation for Sage, but I can't
commit to any sort of schedule... it might be months, years, or never,
before I get anything useful.  (I do have something now, but it's
100x slower than QEPCAD on trivial examples.)  If people want CAD-
based assumptions in the near term, it would probably be better to
start with QEPCAD.  I do think that this would be feasible, although
it would be take some work on QEPCAD (for instance, it doesn't yet
build on OSX).

I won't be working on a port of QEPCAD to not use saclib; I'm not
willing to spend that much time working with its ported-from-Fortran
code.  It's unclear how much work such a port would be; I can't tell
to what extent QEPCAD depends on internals of saclib.

 Yes, but this is not necessary to get the infrustructure in and get
 the easy cases working and working fast.

 qepcad or other things will come handy when doing the general cases,
 where simple heuristics will fail. E.g. it's like with limits, the
 gruntz algorithm is nice and working, but all easy cases can be done
 (and are done) with heuristics, because it is simpler and way faster.

Yes; if you can handle some particular class of assumptions without
CAD, it will likely be faster.  CAD is particularly horrible with
mutliple variables; constructing a CAD of a polynomial with k
variables and maximal degree d in each variable ends up constructing a
univariate polynomial of degree d^(2^(k-1)) in the generic case, if
I'm remembering right.  (So a polynomial with 6 variables, that is
degree 2 in each variable, would end up with a base case of a
polynomial of degree 2^32.)  (Interesting cases are likely to be
better, because intermediate polynomials are not irreducible; this
helps a lot.)

Similarly, you can do linear programming with CAD; but it will take
time exponential in the number of variables.

On the other hand, for one or two variables, CAD should be able to
handle fairly large problems.

Carl
--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread Ondrej Certik

 VOTE:
  [ ] Yes, include Pynac in Sage
  [ ] No, do not (please explain)
  [ ] Hmm, I have questions (please ask).

I don't know if my vote counts, but I am of course +1.

Thanks for pioneering the use of Python in C projects, I hope people
will now try much more to reuse C/C++ code.

  (e) how does this relate to sympy?
   (I dont' know.
Sympy does several things Ginac doesn't, such as symbolic
 integration and
sophisticated limits. I would like to find a way to somehow
 reuse that code directly,
especially since sympy is in sage already, and is already often better
than using Sage's current maxima + pexpect symbolic manipulation.
On the other hand, Burcin is I think driven mostly by his Ph.D. thesis
research, and has told me he will only write GPL'd code, which means
it can't go into Sympy.)

I think porting the limits is quite easy, but unfortunately ginac
series expansion is not sophisticated enough for more complicated
limits (at least last time I tried, it was I think 2 years ago), so
you will have to port the sympy's series expansion as well, or improve
ginac series expansion.

As to integration, that will be I think a little more difficult to
port, but definitely doable as well.

As to GPL vs BSD, I am sad that some people will not contribute to a
BSD project and some other people will not use a GPL project. But my
intuition says that the license is not the main reason. If sympy was
as fast as ginac (as I hope it will be in not so distant future), I am
sure it'd be ok, even if it's BSD. BTW, I told Burcin and William that
if the license was the only reason, I am willing to consider switching
to GPL (i.e. try to persuade all 44+ contributors), if that would mean
more people would be developing sympy. Currently it seems to be the
opposite, i.e. when we switched from GPL to BSD, people and developers
seemed to like it, but I may well be mistaken. But as I said, I think
the main problem of sympy is not the license, but speed.

I myself like the way sympy is designed, e.g. pure python + now we are
working on the Cython core (+possibly pynac if it's a better
alternative, even though some sympy developers seems to prefer pure
Cython solution if we can made it as fast as pynac), because that
allows to use sympy easily in the google app engine, hopefully soon in
pypy and jython, and also as a compiled library when we get the core
in with exactly the same interface, i.e., whenever there is python, it
should work on it.

On the other hand, if you are willing to release and maintain pynac
outside sage, so that it's easy to use and basically implement or port
all sympy to it, I'll be more than happy that someone else will do my
job and I can move to do some more advanced things. I really don't
want to have two codebases for the same thing.

Ondrej

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread David Joyner

On Mon, Aug 25, 2008 at 4:59 AM, William Stein [EMAIL PROTECTED] wrote:

 Hi,

 I propose that pynac be included in Sage.

 Pynac is a rewrite of Ginac to seamlessly use native Python objects instead
 of  CLN -- for inclusion in Sage.   Pynac is a C++ library plus extensive
 Cython bindings.   Pynac is about 30K lines, is very well documented and
 commented, and as C++ code goes is extremely readable.

 VOTE:
  [x ] Yes, include Pynac in Sage
  [ ] No, do not (please explain)
  [ ] Hmm, I have questions (please ask).


Looks very nice!


 MANY MORE DETAILS:


...


 I think with polish and proper refereeing, the code Burcin and I have
 already written should be included in Sage, so that others can start using it
 and developing it further.

  --  William

 --
 William Stein
 Associate Professor of Mathematics
 University of Washington
 http://wstein.org

 


--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread parisse

I still do not understand why giac is not even mentionned in the
symbolic discussion considering the fact that like ginac, it is a C++
library, but unlike ginac (Ginac Is Not A Cas), giac (Giac Is A Cas)
has much more advanced calculus functions (either functionnalities
like limits, integration) and good benchmarks. I thought sage was an
effort to build a free alternative to maple or mathematica and that
collaboration between projects having this goal would prevail, not
competition (how much time lost duplicating the functionnalities
already available in giac for pynac?).
By the way, I installed in ~parisse on sage the 64 bits binaries
version of giac (icas) and xcas so that everybody can test benchmarks.
Unfortunately a few system libraries on sage have bad rights, e.g.
libstdc++.so.6 is rw instead of rwx, hence one must run
 export LD_LIBRARY_PATH=~parisse
before running
 ~parisse/icas
For example
g:=(x+y+z+1)^20; h:=(x-y+2z-2)^20; time(r:=normal(g*h));
time(factor(r));

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread David Joyner

On Mon, Aug 25, 2008 at 10:12 AM, parisse
[EMAIL PROTECTED] wrote:

 I still do not understand why giac is not even mentionned in the
 symbolic discussion considering the fact that like ginac, it is a C++
 library, but unlike ginac (Ginac Is Not A Cas), giac (Giac Is A Cas)
 has much more advanced calculus functions (either functionnalities
 like limits, integration) and good benchmarks. I thought sage was an
 effort to build a free alternative to maple or mathematica and that
 collaboration between projects having this goal would prevail, not
 competition (how much time lost duplicating the functionnalities
 already available in giac for pynac?).

I can't speak for anyone else (hence I can't really answer your
question) but I have had problems compiling giac for amd64 hardy heron.
I'm fairly impatient though, and maybe if I tried harder I could have
gotten something to compile. I did spend maybe 30 minutes on it
and gave up.

I also tried installing it on an intel macbook but the package refused
to install
on my firewire drive. It's actually the first application I've run
across which has
refused to install on my firewire drive (my tiny HD is full:-). Is it
possible to
fix this?

Can you create a system for which someone using amd64 hardy heron
(a very popular distribution) can compile it from source (at least after a
specific number of dependencies are installed using apt-get). In other words,
can you create the analog of
http://modular.math.washington.edu/sage/doc/inst/node5.html ?
If so, I'd be happy to test it out. Also, is there any documentation in
English? (I mean something more than a 5 page tutorial.)

Sorry if I seem to hijack your thread. Actually, giac seems potentially
interesting but it is difficult for me to say more.


 By the way, I installed in ~parisse on sage the 64 bits binaries
 version of giac (icas) and xcas so that everybody can test benchmarks.
 Unfortunately a few system libraries on sage have bad rights, e.g.
 libstdc++.so.6 is rw instead of rwx, hence one must run
  export LD_LIBRARY_PATH=~parisse
 before running
  ~parisse/icas
 For example
 g:=(x+y+z+1)^20; h:=(x-y+2z-2)^20; time(r:=normal(g*h));
 time(factor(r));

 


--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread Burcin Erocal

Hi,

On Mon, 25 Aug 2008 07:12:27 -0700 (PDT)
parisse [EMAIL PROTECTED] wrote:

 I still do not understand why giac is not even mentionned in the
 symbolic discussion considering the fact that like ginac, it is a C++
 library, but unlike ginac (Ginac Is Not A Cas), giac (Giac Is A Cas)
 has much more advanced calculus functions (either functionnalities
 like limits, integration) and good benchmarks. 

I think the only reason giac is not mentioned in the benchmarks is that
it wasn't available. There are already interfaces to MMA and Maple from
Sage, so they are easy to time. Sympy and sympycore are already in
Python, so no trouble there. GiNaC was easy to build and understand, so
I could create packages and write an interface in a matter of hours. 

There was already an attempt (by Ondrej) to make a package for giac,
which is the first step to writing an interface. However, IIRC, it
didn't succeed.


There is also the question why use GiNaC and not giac as the symbolic
arithmetic engine in Sage. The answer lies in the formulation of the
question, and the word arithmetic.

We already have a pretty good symbolic engine in Sage, maxima does
quite a good job of solving integrals, limits, etc. The main problem
with Maxima is that we cannot extend it. The situation would be the
same if we adopted yet another system, such as giac. 

The point of the pynac effort (at least from my pov), is to acquire a
fast and capable arithmetic and manipulation engine and write the
higher level algorithms on top of that. This way Sage can advance
from being a user interface to become a research environment.


 I thought sage was an
 effort to build a free alternative to maple or mathematica and that
 collaboration between projects having this goal would prevail, not
 competition (how much time lost duplicating the functionnalities
 already available in giac for pynac?).
snip

Pynac is a modification of GiNaC to use python objects as coefficients
in its data types. This was a rather tricky, but well isolated change,
since GiNaC already abstracts this functionality into a single class. I
don't think this is duplicating any functionality already in giac.


Cheers,

Burcin

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread Gary Furnish

I've been trying to get an answer for this question for the last few
weeks: Is the plan to extend ginac (write algorithms in C) or to
extend sage (write new algorithms in Sage) using cython/python?  This
is very much a design related question, and in the hurry to get GiNaC
through review I feel that design issues and questions have been very
much ignored.  To put the question somewhat differently, are
algorithms using the new symbolics system going to be use GiNaC/pynac
enough that switching to any other low level system will be very, very
difficult (because new code such as sums may depend directly on GiNaC
specific behavior)?  If this is not intended, what will be done to try
to prevent Sage from becoming overly dependent on GiNaC in the long
term?

--Bill

On Mon, Aug 25, 2008 at 8:24 AM, Burcin Erocal [EMAIL PROTECTED] wrote:

 Hi,

 On Mon, 25 Aug 2008 07:12:27 -0700 (PDT)
 parisse [EMAIL PROTECTED] wrote:

 I still do not understand why giac is not even mentionned in the
 symbolic discussion considering the fact that like ginac, it is a C++
 library, but unlike ginac (Ginac Is Not A Cas), giac (Giac Is A Cas)
 has much more advanced calculus functions (either functionnalities
 like limits, integration) and good benchmarks.

 I think the only reason giac is not mentioned in the benchmarks is that
 it wasn't available. There are already interfaces to MMA and Maple from
 Sage, so they are easy to time. Sympy and sympycore are already in
 Python, so no trouble there. GiNaC was easy to build and understand, so
 I could create packages and write an interface in a matter of hours.

 There was already an attempt (by Ondrej) to make a package for giac,
 which is the first step to writing an interface. However, IIRC, it
 didn't succeed.


 There is also the question why use GiNaC and not giac as the symbolic
 arithmetic engine in Sage. The answer lies in the formulation of the
 question, and the word arithmetic.

 We already have a pretty good symbolic engine in Sage, maxima does
 quite a good job of solving integrals, limits, etc. The main problem
 with Maxima is that we cannot extend it. The situation would be the
 same if we adopted yet another system, such as giac.

 The point of the pynac effort (at least from my pov), is to acquire a
 fast and capable arithmetic and manipulation engine and write the
 higher level algorithms on top of that. This way Sage can advance
 from being a user interface to become a research environment.


 I thought sage was an
 effort to build a free alternative to maple or mathematica and that
 collaboration between projects having this goal would prevail, not
 competition (how much time lost duplicating the functionnalities
 already available in giac for pynac?).
 snip

 Pynac is a modification of GiNaC to use python objects as coefficients
 in its data types. This was a rather tricky, but well isolated change,
 since GiNaC already abstracts this functionality into a single class. I
 don't think this is duplicating any functionality already in giac.


 Cheers,

 Burcin

 


--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread Ondrej Certik

On Mon, Aug 25, 2008 at 5:24 PM, Burcin Erocal [EMAIL PROTECTED] wrote:

 Hi,

 On Mon, 25 Aug 2008 07:12:27 -0700 (PDT)
 parisse [EMAIL PROTECTED] wrote:

 I still do not understand why giac is not even mentionned in the
 symbolic discussion considering the fact that like ginac, it is a C++
 library, but unlike ginac (Ginac Is Not A Cas), giac (Giac Is A Cas)
 has much more advanced calculus functions (either functionnalities
 like limits, integration) and good benchmarks.

 I think the only reason giac is not mentioned in the benchmarks is that
 it wasn't available. There are already interfaces to MMA and Maple from
 Sage, so they are easy to time. Sympy and sympycore are already in
 Python, so no trouble there. GiNaC was easy to build and understand, so
 I could create packages and write an interface in a matter of hours.

 There was already an attempt (by Ondrej) to make a package for giac,
 which is the first step to writing an interface. However, IIRC, it
 didn't succeed.

It did:

http://groups.google.com/group/sage-devel/browse_thread/thread/40abd4b2825c0331/

giac builds, but it takes 72, while pynac takes 2 minutes. Also noone
has tried to write the Cython wrappers for it,
I hoped Bernard would try it, but I really don't have time for this now.


Ondrej

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread parisse



 I can't speak for anyone else (hence I can't really answer your
 question) but I have had problems compiling giac for amd64 hardy heron.
 I'm fairly impatient though, and maybe if I tried harder I could have
 gotten something to compile. I did spend maybe 30 minutes on it
 and gave up.


For a full-featured giac, you will need several packages. That's why I
provide binaries. The binaries on sage should work on any amd64 (first
install xcas_root.tgz (http://www-fourier.ujf-grenoble.fr/~parisse/
giac/xcas_root.tgz) to have the doc, then unarchive xcas64.tgz (ftp://
ftp-fourier.ujf-grenoble.fr/xcas/xcas64.tgz) in /usr/local/bin). For
compilation, get the latest giac_unstable.tgz or try the spkg built by
Ondrej which is in my directory on sage (it is up to date and compiles
on sage).

 I also tried installing it on an intel macbook but the package refused
 to install
 on my firewire drive. It's actually the first application I've run
 across which has
 refused to install on my firewire drive (my tiny HD is full:-). Is it
 possible to
 fix this?


There is perhaps some problem since a part of the installation goes
in /usr/local. You are the first one reporting this and I'm not a mac
expert therefore I can't answer right now:-(

 Can you create a system for which someone using amd64 hardy heron
 (a very popular distribution) can compile it from source (at least after a
 specific number of dependencies are installed using apt-get). In other words,
 can you create the analog 
 ofhttp://modular.math.washington.edu/sage/doc/inst/node5.html?

The INSTALL file from the source should help you compile giac. Where
does it fail for you?

 If so, I'd be happy to test it out. Also, is there any documentation in
 English? (I mean something more than a 5 page tutorial.)


There is a user guide in English for the xcas application.
http://www-fourier.ujf-grenoble.fr/~parisse/giac/doc/en/casref_en/casref_en.html
and a very short introduction on how to program with giac
 http://www-fourier.ujf-grenoble.fr/~parisse/giac_us.html
--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread didier deshommes

On Mon, Aug 25, 2008 at 4:59 AM, William Stein [EMAIL PROTECTED] wrote:

 Hi,

 I propose that pynac be included in Sage.

 VOTE:
  [ ] Yes, include Pynac in Sage
  [ ] No, do not (please explain)
  [ ] Hmm, I have questions (please ask).

I have a question: what will happen to gfurnish's work? Is it going to
be completely abandoned?

didier

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread parisse

 Also noone
 has tried to write the Cython wrappers for it,
 I hoped Bernard would try it, but I really don't have time for this now.

 Ondrej

I don't have the time right now to learn how to write Cython wrappers.
Unfortunately I may end up being obliged (once again) to do it myself
to attract python developpers:-( It will most probably not be as good
as if a true python developers write one.
--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread William Stein

On Mon, Aug 25, 2008 at 7:12 AM, parisse
[EMAIL PROTECTED] wrote:

 I still do not understand why giac is not even mentionned in the
 symbolic discussion considering the fact that like ginac, it is a C++

I was able to very quickly get a good understanding of the Ginac
codebase, and make fundamental changes that allowed me to
modify it to work at its core throughout with Python objects instead
of CLN.  Every single question I have had about Ginac I have literally
been able to answer for myself in minutes by reading the source
code. And when I change things in Ginac I can rebuild the whole
system in just over a minute.   My experience with Giac is that:
(a) I can't build it, (b) even on systems where I could, I'm not
patient enough, and (c) looking at the source code from the point
of view of doing what I want makes me dizzy and I get nowhere,
(d) and Giac is HUGE -- about five times the size of Ginac, and
much of that code in Giac overlaps with what Sage already does,
and (e) my technical build guy tells me that Giac isn't a model
of super high quality code.

So to me Giac cannot solve any of our problems today,
unless we want Sage to be bloated, and we want to take months
or years rather than a few days to get this stuff done.

Perhaps I could take code from Giac, e.g., for limits or
symbolic integration, but (a) you're using GPLv3, so I can't,
and (b) probably that would make you unhappy anyways,
and (c) I would rather such functionality comes from the sympy
project, since that is in Python.

 By the way, I installed in ~parisse on sage the 64 bits binaries
 version of giac (icas) and xcas so that everybody can test benchmarks.
 Unfortunately a few system libraries on sage have bad rights, e.g.
 libstdc++.so.6 is rw instead of rwx, hence one must run
  export LD_LIBRARY_PATH=~parisse
 before running
  ~parisse/icas
 For example
 g:=(x+y+z+1)^20; h:=(x-y+2z-2)^20; time(r:=normal(g*h));

Wow, that particular synthetic benchmark is really fast in Giac.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread William Stein

On Mon, Aug 25, 2008 at 8:54 AM, didier deshommes [EMAIL PROTECTED] wrote:

 On Mon, Aug 25, 2008 at 4:59 AM, William Stein [EMAIL PROTECTED] wrote:

 Hi,

 I propose that pynac be included in Sage.

 VOTE:
  [ ] Yes, include Pynac in Sage
  [ ] No, do not (please explain)
  [ ] Hmm, I have questions (please ask).

 I have a question: what will happen to gfurnish's work?
 Is it going to be completely abandoned?

If he clearly licenses it under GPLv2+ then hopefully it won't be, and
somebody will find ways to use it.  gfurnish -- are you willing to
post a version of all your code with GPLv2+ headers?

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread William Stein

On Mon, Aug 25, 2008 at 8:35 AM, Gary Furnish [EMAIL PROTECTED] wrote:

 I've been trying to get an answer for this question for the last few
 weeks: Is the plan to extend ginac (write algorithms in C) or to
 extend sage (write new algorithms in Sage) using cython/python?

The plan is definitely to extend sage (write new algorithms in Sage)
using cython/python.

 To put the question somewhat differently, are
 algorithms using the new symbolics system going to be use GiNaC/pynac
 enough that switching to any other low level system will be very, very
 difficult (because new code such as sums may depend directly on GiNaC
 specific behavior)?

Probably not.

   If this is not intended, what will be done to try
 to prevent Sage from becoming overly dependent on GiNaC in the long
 term?

Make it so sympy also runs on top of GiNaC.  This will force the creation
of a clear interface specification.

 -- William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread William Stein

On Mon, Aug 25, 2008 at 2:42 AM, Ondrej Certik [EMAIL PROTECTED] wrote:

 VOTE:
  [ ] Yes, include Pynac in Sage
  [ ] No, do not (please explain)
  [ ] Hmm, I have questions (please ask).

 I don't know if my vote counts, but I am of course +1.

Your vote counts.

 Thanks for pioneering the use of Python in C projects, I hope people
 will now try much more to reuse C/C++ code.

  (e) how does this relate to sympy?
   (I dont' know.
Sympy does several things Ginac doesn't, such as symbolic
 integration and
sophisticated limits. I would like to find a way to somehow
 reuse that code directly,
especially since sympy is in sage already, and is already often better
than using Sage's current maxima + pexpect symbolic manipulation.
On the other hand, Burcin is I think driven mostly by his Ph.D. thesis
research, and has told me he will only write GPL'd code, which means
it can't go into Sympy.)

 I think porting the limits is quite easy, but unfortunately ginac
 series expansion is not sophisticated enough for more complicated
 limits (at least last time I tried, it was I think 2 years ago), so
 you will have to port the sympy's series expansion as well, or improve
 ginac series expansion.

Or hopefully find a way to just directly use sympy's series expansion code?
Could you give an example to illustrate where you maybe found shortcomings
in Ginac's series code?  It's pretty straightforward code for the most part, and
I don't know how it could go wrong.

 As to integration, that will be I think a little more difficult to
 port, but definitely doable as well.

By port I will take it to mean improve sympy so it can manipulate
Pynac symbolic expressions in addition to its own.  I.e., it's basically
a duck typing thing, where as long as Pynac exports the right
interface, sympy should be able to work with it.

 As to GPL vs BSD, I am sad that some people will not contribute to a
 BSD project and some other people will not use a GPL project. But my
 intuition says that the license is not the main reason. If sympy was
 as fast as ginac (as I hope it will be in not so distant future), I am
 sure it'd be ok, even if it's BSD. BTW, I told Burcin and William that
 if the license was the only reason, I am willing to consider switching
 to GPL (i.e. try to persuade all 44+ contributors), if that would mean
 more people would be developing sympy. Currently it seems to be the
 opposite, i.e. when we switched from GPL to BSD, people and developers
 seemed to like it, but I may well be mistaken. But as I said, I think
 the main problem of sympy is not the license, but speed.

The GPL/BSD split in the mathematical Python community is
unfortunate and a is very real problem.   At scipy'08 it was
the source of tension for some people...

 I myself like the way sympy is designed, e.g. pure python + now we are
 working on the Cython core (+possibly pynac if it's a better
 alternative, even though some sympy developers seems to prefer pure
 Cython solution if we can made it as fast as pynac),

Why not both?  Having the option of multiple pluggable cores is probably
the best way to do a good job designing the right interface for the core.
The only option for sympy is both or no pynac, since pynac is GPL'd
(as was decided by the Ginac developers long ago).  So I can imagine
some sympy users using pynac as the core because it is maybe better
for large problems, and other users using csympycore or something,
because it is BSD licensed.  Yet others would use the purepython core
for portability (e.g., me on my cell phone ;-) ).

 because that
 allows to use sympy easily in the google app engine, hopefully soon in
 pypy and jython, and also as a compiled library when we get the core
 in with exactly the same interface, i.e., whenever there is python, it
 should work on it.

 On the other hand, if you are willing to release and maintain pynac
 outside sage, so that it's easy to use and basically implement or port
 all sympy to it, I'll be more than happy that someone else will do my
 job and I can move to do some more advanced things. I really don't
 want to have two codebases for the same thing.

I definitely want to have a version of pynac outside sage.  But keep
in mind again that pynac is GPL'd, and given your mission statement
for sympy, I think it is not an option for you to depend only on something
GPL'd as the only option.   As I see it, an important part of the
sympy mission is to be the CAS for the we will only use BSD'd code
side of the Python math software world, which is a very substantial
important and well funded group of people.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org

[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread Gary Furnish


Make it so sympy also runs on top of GiNaC.  This will force the creation
of a clear interface specification.


If there is going to be a clear interface spec, then we should go and
make a clear interface spec so that anyone, not just GiNaC can
potentially conform to it.  Perhaps this is the best long term
solution?

My symbolics code is already GPLv2+ so fixing the headers is just a
technicality.

On Mon, Aug 25, 2008 at 10:24 AM, William Stein [EMAIL PROTECTED] wrote:

 On Mon, Aug 25, 2008 at 8:54 AM, didier deshommes [EMAIL PROTECTED] wrote:

 On Mon, Aug 25, 2008 at 4:59 AM, William Stein [EMAIL PROTECTED] wrote:

 Hi,

 I propose that pynac be included in Sage.

 VOTE:
  [ ] Yes, include Pynac in Sage
  [ ] No, do not (please explain)
  [ ] Hmm, I have questions (please ask).

 I have a question: what will happen to gfurnish's work?
 Is it going to be completely abandoned?

 If he clearly licenses it under GPLv2+ then hopefully it won't be, and
 somebody will find ways to use it.  gfurnish -- are you willing to
 post a version of all your code with GPLv2+ headers?

  -- William

 


--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: [sympy] Re: [sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread Ondrej Certik
 I think porting the limits is quite easy, but unfortunately ginac
 series expansion is not sophisticated enough for more complicated
 limits (at least last time I tried, it was I think 2 years ago), so
 you will have to port the sympy's series expansion as well, or improve
 ginac series expansion.

 Or hopefully find a way to just directly use sympy's series expansion code?

I hope so too, see below.

 Could you give an example to illustrate where you maybe found shortcomings
 in Ginac's series code?  It's pretty straightforward code for the most part, 
 and
 I don't know how it could go wrong.

Basically any more complicated limit.

I put a print statement in sympy to print the series that needs to work:

In [1]: limit(sqrt(x)/sqrt(x+sqrt(x+sqrt(x))),x,oo)
1/(((1/_w + _w**(-1/2))**(1/2) + 1/_w)**(1/2)*_w**(1/2)) _w
Out[1]: 1

So you can try it in sympy:

In [2]: e = sympify(1/(((1/_w + _w**(-1/2))**(1/2) + 1/_w)**(1/2)*_w**(1/2)))

In [9]: e
Out[9]:
  1
──
 ⎽
╱  ⎽
   ╱  ╱ 1  1   1
╲╱ _w ⋅   ╱  ╱  ── + ──  + ──
 ╱  ╱   _w _w
   ╲╱ ╲╱ ╲╱ _w

In [5]: var(_w)
Out[5]: _w

In [6]: e.series(_w, 0, 2)
Out[6]:
   
_w   ╲╱ _w
1 + ── - ── + O(_w**(3/2))
8  2

In [8]: e.series(_w, 0, 3)
Out[8]:
   2 3/2
_w   ╲╱ _w29⋅_w_w
1 + ── - ── - ── + ─ + O(_w**(5/2))
8  2   128   8


Use a fixed width font or look here:

http://paste.debian.net/15584/plain/15584

alternatively:

In [10]: print e.series(_w, 0, 3)
1 + _w/8 - 1/2*_w**(1/2) - 29*_w**2/128 + 1/8*_w**(3/2) + O(_w**(5/2))

Now compare maxima:

sage: var(_w)
_w
sage: e = 1/(((1/_w + _w**(-1/2))**(1/2) + 1/_w)**(1/2)*_w**(1/2))
sage: e.taylor(_w, 0, 2)
1 - sqrt(_w)/2 + _w/8 + _w^(3/2)/8 - 29*_w^2/128

which is the same as sympy, although without the O term. And compare pynac:

sage: var(_w, ns=1)
_w
sage: e = 1/(((1/_w + _w**(-1/2))**(1/2) + 1/_w)**(1/2)*_w**(1/2))
sage: e.series(_w, 2)
---
RuntimeError  Traceback (most recent call last)

/home/ondrej/ipython console in module()

/home/ondrej/expression.pyx in
sage.symbolic.expression.Expression.series
(sage/symbolic/expression.cpp:3948)()

RuntimeError: power::eval(): division by zero


And there are many more like this. This was one of the reasons when I
abandoned swiginac, because I really didn't want to fix this in C++, I
rather wanted to play with these things in Python first, until we
figure out what needs to work and how.

At that time I didn't know how to call maxima from python, nor how to
fix ginac easily, so I just wrote everything in Python. But now it may
be easier to just go through all the limits and fix all the series in
ginac itself. Btw I believe Bernard fixed all of these in giac, didn't
you? How difficult was it?

This situation reminds me a year ago when Pearu wrote sympycore and it
was about 100x faster, just like ginac is now 10x to 100x faster than
sympy. So we massively switched to it, and then I had to fix all these
series problems and many other things, it's a lot of work. And I am
almost 100% sure we could (=should) have sped up sympy iteratively. So
you can imagine, I myself am not really keen on absolving the same
thing again, especially if we think we can speedup sympy to the level
of ginac (or very close) in matter of months from now.

However, if Burcin or others come up and help us with it, I am all for
it. I believe ginac is in a better state than our new core was. Also
the pynac core will be optional, so I think it could work.


 As to integration, that will be I think a little more difficult to
 port, but definitely doable as well.

 By port I will take it to mean improve sympy so it can manipulate
 Pynac symbolic expressions in addition to its own.  I.e., it's basically
 a duck typing thing, where as long as Pynac exports the right
 interface, sympy should be able to work with it.

Yes, I believe it is worthy to do it.


 As to GPL vs BSD, I am sad that some people will not contribute to a
 BSD project and some other people will not use a GPL project. But my
 intuition says that the license is not the main reason. If sympy was
 as fast as ginac (as I hope it will be in not so distant future), I am
 sure it'd be ok, even if it's BSD. BTW, I told Burcin and William that
 if the license was the only reason, I am willing to consider switching
 to GPL (i.e. try to persuade all 44+ contributors), if that would mean
 more people would be developing sympy. Currently it seems to be the
 opposite, i.e. when we switched from GPL to BSD, people and developers
 seemed to like it, but I may well be mistaken. But as I said, I think
 the main problem of sympy is not the license, but speed.

 The GPL/BSD split in the 

[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread Ondrej Certik

On Mon, Aug 25, 2008 at 10:41 PM, Gary Furnish [EMAIL PROTECTED] wrote:

 
 Make it so sympy also runs on top of GiNaC.  This will force the creation
 of a clear interface specification.
 

 If there is going to be a clear interface spec, then we should go and
 make a clear interface spec so that anyone, not just GiNaC can
 potentially conform to it.  Perhaps this is the best long term
 solution?

 My symbolics code is already GPLv2+ so fixing the headers is just a
 technicality.

Exactly. Especially if you believe you can be way faster than ginac.
It'd be really awesome.

Maybe William has some ideas how to do it the best, I think it just
needs to be done iteratively. We will have 2 production cores soon --
pynac and sympy. Then there is sympycore and your symbolics, so that
should give us enough data to see what all the cores have in common
and what is different.

BTW, one important warning: ginac and sympycore are missing
assumptions and sympy only has very trivial ones, like positive,
negative, integer, even, odd, etc. This is really important for any
nontrivial things in a CAS and I changes to the core may be needed. I
really want to have assumptions in sympy first before saying -- yes,
this approach to do the core is the best.

Ondrej

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: [sympy] Re: [sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread Ondrej Certik

 I definitely want to have a version of pynac outside sage.  But keep
 in mind again that pynac is GPL'd, and given your mission statement
 for sympy, I think it is not an option for you to depend only on something
 GPL'd as the only option.   As I see it, an important part of the
 sympy mission is to be the CAS for the we will only use BSD'd code
 side of the Python math software world, which is a very substantial
 important and well funded group of people.

 As far as I know we don't have anything about BSD vs GPL in our
 missing statement.


But to make this clear: Yes, if it's at least a bit possible, I'd like
to stay BSD, because clearly the BSD market is good.
But if staying BSD means that people will not help with sympy but
rather help with a GPLed package, I think that getting the job done
(=good symbolics in python) is more important than BSD vs GPL
flamewar.

We had the discussion BSD/GPL here:

http://groups.google.com/group/sympy/browse_thread/thread/e5f77a57874d2135/

a good summary is for example this email:

http://groups.google.com/group/sympy/msg/183cad529117b758


Ondrej




But also I think it's good to say my own opinion on this, and that is,
that I personally think that given that I am paid from tax payers
money (i.e. grants, stipends, etc.), which are individuals or
companies (in my case mostly Czech and European and soon hopefully
US), I really think it's fair if the companies can use the work that
was produced by their money in the way they want. I.e. BSD fits nice,
GPL doesn't. LGPL is somewhere shady, but many companies don't like it
either. But I understand that those are complicated questions and and
one argument for (L)GPL is the fear that someone will take the code
and close it, improve it, sell it and make a lot of money with BSD,
while with GPL he is forced to open it and that is better over all,
because it brings the code back to the project, that otherwise would
not be available. I believe though that less restrictions are better
in the long term, i.e. if people and companies can do things that they
want and use code as they want, it is better for all of us in the end.

But I am not fundamental on this, as I said above, getting the job
done and getting people to work together is way more important for me.

If you have opposite opinion than I do, I'd love if you could oppose,
but please no flamewars.

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread William Stein

On Mon, Aug 25, 2008 at 1:41 PM, Gary Furnish [EMAIL PROTECTED] wrote:

 
 Make it so sympy also runs on top of GiNaC.  This will force the creation
 of a clear interface specification.
 

 If there is going to be a clear interface spec, then we should go and
 make a clear interface spec so that anyone, not just GiNaC can
 potentially conform to it.  Perhaps this is the best long term
 solution?

It will not be clear what that spec should be until 2 systems use it.
In my opinion, specs should  not be written by committee, but by
abstracted away from an actual working solution.  When Sage and
Sympy can both run on top of a Pynac core, we'll see how it works
and have a clear interface as a result.

 My symbolics code is already GPLv2+ so fixing the headers is just a
 technicality.

Please do so and make an official release as a tarball or something.

 On Mon, Aug 25, 2008

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: [sympy] Re: [sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread William Stein

 For example pynac uses

 sin(x).seires(x, 5)

Actually, more precisely pynac uses:

  sin(x).series(x == 3, 5)

to get a taylor expansion about x = 3.   I did this
only for consistency with GiNaC, since that is what
GiNaC does.


 sympy uses

 sin(x).series(x, 0, 5)

 and sage uses

 sin(x).taylor(x, 0, 5)

Using taylor is really dumb.  It is inconsistent with
every other system and is confusion since it can
give Laurent series.


 and this is unfortunate. I would like to use just one interface.

Yep.  That's precisely what we'll have to have in order to
have a sympy + pynac system.

William

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread William Stein

 BTW, one important warning: ginac and sympycore are missing
 assumptions and sympy only has very trivial ones, like positive,
 negative, integer, even, odd, etc. This is really important for any
 nontrivial things in a CAS and I changes to the core may be needed. I
 really want to have assumptions in sympy first before saying -- yes,
 this approach to do the core is the best.

 Ondrej

Why are assumptions really important for any nontrivial things in a CAS?
In my entire life I've only ever used assumptions to get maxima to do
a symbolic integration.  I've never used them in any other context.
Can you please educate me on why they are so important?   Thanks.

william

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread Robert Bradshaw

On Aug 25, 2008, at 1:59 AM, William Stein wrote:

 Hi,

 I propose that pynac be included in Sage.

 Pynac is a rewrite of Ginac to seamlessly use native Python objects  
 instead
 of  CLN -- for inclusion in Sage.   Pynac is a C++ library plus  
 extensive
 Cython bindings.   Pynac is about 30K lines, is very well  
 documented and
 commented, and as C++ code goes is extremely readable.

 VOTE:
  [x] Yes, include Pynac in Sage
  [ ] No, do not (please explain)
  [ ] Hmm, I have questions (please ask).


Very enthusiastic about this!

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---



[sage-devel] Re: Proposal for inclusion of GINAC/pynac-0.1 in Sage.

2008-08-25 Thread Robert Bradshaw

On Aug 25, 2008, at 8:35 AM, Gary Furnish wrote:

 I've been trying to get an answer for this question for the last few
 weeks: Is the plan to extend ginac (write algorithms in C) or to
 extend sage (write new algorithms in Sage) using cython/python?

I don't think this was addressed in the email, but my understanding  
is that the plan is very much the latter. Perhaps (I hope) that much  
of this will not be re-implementation so much as porting SymPy  
algorithms/getting SymPy to run on top of GiNaC.

 This is very much a design related question, and in the hurry to  
 get GiNaC
 through review I feel that design issues and questions have been very
 much ignored.  To put the question somewhat differently, are
 algorithms using the new symbolics system going to be use GiNaC/pynac
 enough that switching to any other low level system will be very, very
 difficult (because new code such as sums may depend directly on GiNaC
 specific behavior)?  If this is not intended, what will be done to try
 to prevent Sage from becoming overly dependent on GiNaC in the long
 term?

 --Bill

--~--~-~--~~~---~--~~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~--~~~~--~~--~--~---