[sage-devel] Re: Clarification of Sage and GPL
On Tue, May 5, 2009 at 10:41 PM, Robert Bradshaw rober...@math.washington.edu wrote: On May 5, 2009, at 9:23 PM, Brian Granger wrote: Michael, Thank you for bringing up this issue as it does clarify some aspect of Sage derived code and licensing. But, in my mind, the sage as interpreter aspect is a small perturbation on top of the zero-order: Sage = Python + GPL libraries That is, for the most part, I view the interpreter as Python itself. But still the FAQ section is very clear that the presence of all the GPL libraries loaded into an interpreter is sufficient to make sage using scripts like Ondrej's GPL bound. I also understand that not everyone agrees on this interpretation. The concept of derivative work transcends the GPL, what was quoted was the FSF's interpretation of copyright law, which is obviously going to be bias towards maximal viral impact. Personally, I think qualitative aspects are more important than technical aspects (static vs. dynamic linking) in asking whether or not something is morally or legally a derivative work. One could argue with exactly the same logic that a Mathematica worksheet is a derivative work of Mathematica, and a Matlab script is a derivative work of Matlab. (Both are interpreters + large libraries, with much of the underlying core written in the exact same language that the end user uses). The copyrights of these two programs (all rights reserved) don't allow redistribution at all, does that mean every shared Mathematica/Matlab script (without the express permission of the respective coorperations) is a violation of copyright? I think not, and the same applies to Sage worksheets and scripts. I think this very much depends on what's written in the license of Mathematica and Maple. I didn't read their license, but I would not be surprised if they do *not* restrict licenses of your own scripts. GPL, on the other hand, speaks about derivative works and licensing your own stuff, that uses a GPLed library/code. So I think that from the fact, that you can license your own Mathematica code using any license you want, doesn't follow that you can license a Sage script using any license you want --- in fact, as William just clarified, if the script uses a Sage code, and you redistribute it publicly, it has to be GPL. William, so do you think that my script A above has to be GPL? I already distributed it publicly on this list. The repercussions of this could mean that papers and books couldn't be published with code snippets in them, one would require copyright notices for anyone using Sage in their homework (and showing their work), and we've all been violating the GPL by claiming the wiki is licensed under Creative Commons. (OK, maybe small snippets could be justified under fair use, but still...) But in my mind, that was the TRIVIAL part of the original question I asked. The more subtle aspect is centered around this issue: * Does Sharing a notebook (with other users of the notebook web app) constitute distribution and is that sufficient to trigger the application of the GPL? In other words, do I need to tell my students... When you share your Sage notebooks with me and other's in the class, you must agree to license them under the GPL I think sharing a worksheet, whether it be clicking on the publish button or emailing/posting a .sws file all have the same repercussions. In fact, flipping the permissions bit and pointing you to the file under a shared filesystem with the intent that you read it would probably classify as distribution. Ultimately, in the US system at least, it is the courts that will decide this, but as long as one is clearly respecting the intent of the GPL (which I don't think forces Sage scripts to be GPL'd, though of course that's up to interpretation as well) one retains the respect of the community, and if one is worried about the nitpicky legal aspects, I doubt any Sage developer is going to be suing any of your students for copyright violation for publishing an original notebook :-). But what about FSF suing Brian? Cheers, Brian PS[0] = even though I choose to use the GPL myself sometimes, this is what I hate about it. It is too damn complicated. Even on a strongly pro-GPL project like Sage, it doesn't seem like most people have any idea what it says and means. I don't mean to pick on anyone individually, but on this thread, I have heard _multiple_ different and incompatible interpretations of the GPL. I wholeheartedly agree. Sometimes I think it's unfortunate that the de-facto standard for copyleft licenses ended up being such a lengthy and messy one. This is one of the beauties of the BSD--it's so clean. Even the CC got this mostly right (it's two pages of legalize, but much better than most). However, if one wants to release code in a copyleft manner, going with the GPL is often a better path than choosing an obscure/incompatible one. PS[1] = It is
[sage-devel] Re: Clarification of Sage and GPL
If you were to print out the source code and distribute it in a book, it should not change the conclusions of copyright law. People tend to get very caught up in technical theories, and they often view the law the way they view software, but a judge will do a basic sanity check. If you published your own script in a book, would it be a derived work of the interpreter ? No. If you published binary executable code in a book, produced by running your own code through GCC, is it partially derived from GCC ? Yes, and hence the exception for GCC. Now for dynamic linking, what if you wrote a virus that exploits and infects a critical Windows file, and you publish its source code in a book. Is that derived from Windows ? Probably not, because the thing has creative value distinct from Windows, but good luck fighting Microsoft in court! The point is, it doesn't matter how you distribute, so for human readable formats it is often instructive to ask whether you would need permission to publish it in print. --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On May 5, 10:50 pm, William Stein wst...@gmail.com wrote: On Tue, May 5, 2009 at 3:25 PM, Brian Granger ellisonbg@gmail.com wrote: SNIP * Is the code pure python or does it use the sage syntax? If the code uses the sage syntax, I think it must be released under the GPL. * Does the code being written actually use any GPL libraries (like the sage python package)? If the code uses GPL libraries, I again think it must be GPL'd. Publicly distributed code using GPL'd library must be GPL'd. Well, having thought about this for a while I would like to point out something: The Sage notebook communicates with a Sage python process via pseudo tty. I.e. once the Sage notebook is spun off and no longer uses GPLed libraries that are used as extensions the situation in the FSF's FAQ no longer applies. As long as there is a socket or fork() between your code and Sage the GPL no longer applies. Something closely related it a known hole in the GPL, i.e. you can take GPLed code, modify it, expose it to the user via a webinterface and the GPL does not apply here since no distribution happens. That is why we have the Affero general public license. RMS has obviously bitched about how software as a service is taking away out freedom, but yadda yadda yadda :). SNIP This is relevant, because I need to clarify these issues for students and faculty who would use Sage in this manner. It isn't necessarily bad if the answer is GPL, but we all need to know this. You might consider consulting with a lawyer at your university. Universities sometimes have lawyers for this sort of thing. +1 Note that any GPLed codebase like Singular or pari would also be viral to high level code and I cannot believe that this is the way the GPL is intended. Anything using readline, i.e. IPython, would be infected, too, and that goes way too far IMHO (You can obviously use libedit or no readline at all to work around this). In the end the FSF seems to be rather wishy washy about the whole thing, i.e. compare the recent discussion about Maxima where a potential export licenses requirement was mandated by the DOE and it was cleared by a FSF license engineer that adding the DOE note to COPYING would be GPL compatible. That restriction IMHO clearly is against the spirit of the GPL. But there are loads of people at the FSF who get their panties in a twist about using binary firmware in the Linux kernel, etc. And don't get me started on the [L]GPL V3 ... William Licensing discussions just suck and are a waste of time. Sigh Cheers, Michael --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
William, Thanks for your replies. I mostly want to know what the consensus interpretation of these issues is amongst the Sage devs. Slowly, I am getting a picture of what this consensus looks like. Publicly distributed code using GPL'd library must be GPL'd. Great, to first order that is my understanding as well. * Does the code run without sage? * Does a sage notebook constitute source code in the GPL sense? Yes. Again, this makes sense to me. Interestingly enough though, it doesn't seem like all of the people on the this feel this way. * Is a notebook (even one that uses the python mode) a derivative work of sage? No. * If a sage notebook is source code does clicking Share in the notebook constitute distribution. In other words, if a bunch of people start sharing sage notebooks, do they all have to be GPL? No. This is internal distribution, so the GPL doesn't apply. This is no different than the NSA (say) distributing a program from one researcher to another, and obviously they don't have to GPL their code. Ahh, this distinction between internal sharing and public distribution is important and I hadn't thought about that. The usage case I have in mind is using this to teach University courses in computational physics. I know others are already doing this (William is right now I think). If I share notebooks with students and they with me, does everything have to be GPL? No, definitely not. But if you post the notebooks publicly and they make use of the sage library, then they have to be GPL'd. Great, this is what I thought. But, then some (or even many) Sage users and devs are in violation of the GPL. I think it would be useful to document these things somewhere so Sage users would know very clearly how the GPL affects them. If we only use non-GPL libraries and the python mode of the notebook could we choose a different license? Yes. Great. Thanks! Brian --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On Tue, May 5, 2009 at 10:41 PM, Robert Bradshaw rober...@math.washington.edu wrote: On May 5, 2009, at 9:23 PM, Brian Granger wrote: Michael, Thank you for bringing up this issue as it does clarify some aspect of Sage derived code and licensing. But, in my mind, the sage as interpreter aspect is a small perturbation on top of the zero-order: Sage = Python + GPL libraries That is, for the most part, I view the interpreter as Python itself. But still the FAQ section is very clear that the presence of all the GPL libraries loaded into an interpreter is sufficient to make sage using scripts like Ondrej's GPL bound. I also understand that not everyone agrees on this interpretation. The concept of derivative work transcends the GPL, what was quoted was the FSF's interpretation of copyright law, which is obviously going to be bias towards maximal viral impact. Personally, I think qualitative aspects are more important than technical aspects (static vs. dynamic linking) in asking whether or not something is morally or legally a derivative work. One could argue with exactly the same logic that a Mathematica worksheet is a derivative work of Mathematica, and a Matlab script is a derivative work of Matlab. Note that the GPL is viral, but the MATLAB/Mathematica/etc copyrights are not. When you share your Sage notebooks with me and other's in the class, you must agree to license them under the GPL I think sharing a worksheet, whether it be clicking on the publish button or emailing/posting a .sws file all have the same repercussions. In fact, flipping the permissions bit and pointing you to the file under a shared filesystem with the intent that you read it would probably classify as distribution. The GPLdistinguishes between sharing privately (in an organization) and publishing publicly. See the GPL FAQ: Does the GPL require that source code of modified versions be posted to the public? The GPL does not require you to release your modified version, or any part of it. You are free to make modifications and use them privately, without ever releasing them. This applies to organizations (including companies), too; an organization can make a modified version and use it internally without ever releasing it outside the organization. But if you release the modified version to the public in some way, the GPL requires you to make the modified source code available to the program's users, under the GPL. Thus, the GPL gives permission to release the modified program in certain ways, and not in other ways; but the decision of whether to release it is up to you. -- 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 sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: #5991: Add a standard constructor for dynamic classes
On Tue, May 05, 2009 at 03:11:48PM -0700, Nicolas Thiéry wrote: Dear Franco, dear all, Patch of the day: #5991 Add a standard constructor for dynamic classes Franco, since you are using dynamic classes in Sage-Words, could you review or comment on it? For information: I just added to the patch the following discussion on the relevance of the dynamic class paradigme for Sage. Best, Nicolas -- ..topic: Why dynamic classes? The short answer: - Multiple inheritance is a powerful tool for constructing new classes by combining preexisting building blocks. - There is a combinatorial explosion in the number of potentially useful classes that can be produced this way. - The implementation of standard mathematical constructions calls for producing such combinations automatically. - Dynamic classes, i.e. classes created on the fly by the Python interpreter, are a natural mean to achieve this. The long answer: Say we want to construct a new class ``MyPermutation`` for permutations in a given set `S` (in Sage, `S` will be modelled by a parent, but we won't discuss this point here). First, we have to choose a data structure for the permutations, typically among the following: - Stored by cycle type - Stored by code - Stored in list notation - C arrays of short ints (for small permutations) - python lists of ints (for huge permutations) - ... - Stored by reduced word - Stored as a function - ... Luckily, the Sage library provides (or will provide) classes implementing each of those data structures. Those classes all share a common interface (or possibly a common abstract base class). So we can just derive our class from the chosen one:: class MyPermutation(PermutationCycleType): ... Then we may want to further choose a specific memory behavior (unique representation, copy-on-write) which (hopefuly) can again be achieved by inheritance. class MyPermutation(UniqueRepresentation, PermutationCycleType): ... Finaly, we may want to endow the permutations in `S` with further operations coming from the (algebraic) structure of `S`: - group operations - or just monoid operations (for a subset of permutations not stable by inverse) - poset operations (for left/right/Bruhat order) - word operations (searching for substrings, patterns, ...) Or any combination thereof. Now, our class typically looks like:: class MyPermutation(UniqueRepresentation, PermutationCycleType, PosetElement, GroupElement): ... Note the combinatorial explosion in the potential number of classes which can be created this way. In practice, such classes will be used in mathematical constructions like:: SymmetricGroup(5).subset(... TODO: find a good example in the context above ...) In such a construction, the structure of the result, and therefore the operations on its elements can only be determined at execution time. Let us take another standard construction:: A = cartesian_product( B, C ) Depending on the structure of `B` and `C`, and possibly on further options passed down by the user, `A` may be: - an enumerated set - a group - an algebra - a poset - ... Or any combination thereof. Hardcoding classes for all potential combinations would be at best tedious. Furthermore, this would require a cumbersome mechanism to lookup the appropriate class depending on the desired combination. Instead, one may use the ability of Python to create new classes dynamicaly: type(class name, tuple of base classes, dictionary of methods) This paradigm is powerful, but there are some technicalities to address. The purpose of this library is to standardize its use within Sage, and in particular to ensure that the constructed classes are reused whenever possible (unique representation), and can be pickled. ..topic: combining dynamic classes and Cython classes TODO -- Nicolas M. Thiéry Isil nthi...@users.sf.net http://Nicolas.Thiery.name/ --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On Tue, May 5, 2009 at 11:12 PM, Brian Granger ellisonbg@gmail.com wrote: No, definitely not. But if you post the notebooks publicly and they make use of the sage library, then they have to be GPL'd. Great, this is what I thought. But, then some (or even many) Sage users and devs are in violation of the GPL. Really? Who? William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
Ah now I see, you mean though it displays 1/384 it is internally still the above sum, which is computed when evaluated with n. Well but then this contains imho 2 bugs: 1. 1**(a/b) should be the integer 1. 2. The display of a SymbolicArithmetic should show whats really there and not reduce before showing. Henryk --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
At the beginning of this thread, someone posted a link to the Sage worksheet: http://abstract.ups.edu/sage-aata.html That is 1) being publicly distributed and 2) is not being released under the GPL. Plus, anyone can create an account on the public Sage notebook servers, so basically any worksheet that is Shared there falls under this category. Finally a quick Google for Sage Worksheet or .sws reveals *many* public Sage worksheets, and at a glance, none of them have any licensing information. Now that I think about it, how would I release a worksheet under the GPL. The usual way is to add: This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later versionetc. to the source. Is there a simple way of doing that? Would it make sense to enable notebook users to add this to their Worksheet by simply clicking a box Make this GPL. Then, when a Worksheet is loaded, if it has the GPL text, the notebook could display it or notify the user This Worksheet is GPLd. Cheers, Brian --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
On Tue, May 5, 2009 at 11:16 PM, Henryk Trappmann bo198...@googlemail.com wrote: Ah now I see, you mean though it displays 1/384 it is internally still the above sum, which is computed when evaluated with n. True. In Sage right now the internal form of the expression (not the simplified form) is used by the n command. This will change when Sage switches from using maxima-based symbolics to Pynac. By the way, you can use the real interval field to get a floating point approximation to any symbolic expression to a given number of digits of precision. Every digit is definitely right except the one right before the question mark: sage: a = 1/(48*sqrt(1)) - 7/(96*1**(3/2)) + 3/(32*1**(5/2)) - 5/ (128*1**(7/2)) sage: RealIntervalField(100)(a) # increase 100 for more digits 0.0026041667? I think the n function (numerical_approx) for symbolics should be changed to using interval arithmetic. This will be a huge improvement. Notice, e.g., that interval arithmetic very nicely gives the right answer for the infamous sin(10^50): sage: a = sin(10^50) sage: a.n(53) -0.480500143493759 sage: a.n(100) 0.60974154556722786199645650055 sage: RealIntervalField(100)(a) 0.? sage: RealIntervalField(1000)(a) -0.7896724934293100827102895399174077539600834046214027191457808736221899969800609898633436757589688470442999273506152178357769064871103469499564331175635613221319397479785737324994506546860108913238488404198306006819757685879489185272089985858148036954222175628785469474395231359019098600625732453528693? sage: RealIntervalField(2000)(a) -0.78967249342931008271028953991740775396008340462140271914578087362218999698006098986334367575896884704429992735061521783577690648711034694995643311756356132213193974797857373249945065468601089132384884041983060068197576858794891852720899858581480369542221756287854694743952313590190986006257324535286926640214204183176856658976160340849634781130568053474154330242776565926107540133198976420887112928640131582614537425282391078909233424580311555104358881651194953182665408243214532152322603956371555619997139323527489307648072219268176687894373677502675114853503742816202001868587837402822439060931321957? I've made fixing this trac #5993: http://trac.sagemath.org/sage_trac/ticket/5993 And a big thanks to Carl Witty for implementing RealIntervalField, which makes the above possible. The above wasn't in Sage when I implemented numerical_approx, so it wasn't an option to use intervals back then. But now it is, and we should switch to it. William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
Licensing discussions just suck and are a waste of time. Sigh Yes, I fully a agree with youexcept when people learn new things about the GPL. I think some important things have come out of this discussion: * A notebook/Worksheet is source code and can potentially be a derivative work of Sage or any of the libraries that Sage ships with. * If a particular Worksheet uses a GPL library, and that Worksheet is distributed to the public (not just Shared internally on a single Sage notebook server), it must be GPL. * Currently, there is not a clear way of indicating or learning about the license of a Worksheet. * The GPL is confusing as hell... Cheers, Brian --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Sage 3.4.2 released (and this time it is the final one)
Hello folks, apologies that it took a while, but the final 3.4.2 source tarball announced a couple days ago turned out to be not truly final :). So here are md5sums to make the difference clear: 8fe47c23872bc39ceb0136602062c917 sage-3.4.2.tar fe5ce17b31557f57f32a714855f22d26 sage-3.4.2-sage.math-only-x86_64- Linux.tar.gz All the bits are in the usual place in http://sage.math.washington.edu/home/mabshoff/release-cycles-3.4.2/ From here on it is all about Sage 4.0. Cheers, Michael Merged in Sage 3.4.2: #5981: Michael Abshoff: Sage 3.4.2: prime_pi() broken on 32 bit [Reviewed by Jaap Spies] #5983: Michael Abshoff: cmp related doctest failure in sage/schemes/ jacobians/abstract_jacobian.py [Reviewed by William Stein] #5984: Michael Abshoff: cmp related doctest failure in sage/modular/ arithgroup/arithgroup_perm.py [Reviewed by William Stein] #5992: Michael Abshoff: Set stack size in Maxima.spkg to 32kb for clisp [Reviewed by William Stein] --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On Tue, May 5, 2009 at 11:30 PM, Brian Granger ellisonbg@gmail.com wrote: At the beginning of this thread, someone posted a link to the Sage worksheet: http://abstract.ups.edu/sage-aata.html That is 1) being publicly distributed and 2) is not being released under the GPL. Plus, anyone can create an account on the public Sage notebook servers, so basically any worksheet that is Shared there falls under this category. Finally a quick Google for Sage Worksheet or .sws reveals *many* public Sage worksheets, and at a glance, none of them have any licensing information. Now that I think about it, how would I release a worksheet under the GPL. The usual way is to add: This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later versionetc. to the source. Is there a simple way of doing that? Would it make sense to enable notebook users to add this to their Worksheet by simply clicking a box Make this GPL. Then, when a Worksheet is loaded, if it has the GPL text, the notebook could display it or notify the user This Worksheet is GPLd. Irregardless of all the licensing discussion above about derived works, etc, it would be nice to provide a simple way for users to GPL a worksheet, along with a link to the GPL, GPL faq, etc. -- William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On May 5, 11:34 pm, Brian Granger ellisonbg@gmail.com wrote: Licensing discussions just suck and are a waste of time. Sigh Yes, I fully a agree with youexcept when people learn new things about the GPL. I think some important things have come out of this discussion: * A notebook/Worksheet is source code and can potentially be a derivative work of Sage or any of the libraries that Sage ships with. Yep. * If a particular Worksheet uses a GPL library, and that Worksheet is distributed to the public (not just Shared internally on a single Sage notebook server), it must be GPL. I think this is far from clear, but the FSF's interpretation of the license. The OSI thinks differently for example as pointed out earlier. * Currently, there is not a clear way of indicating or learning about the license of a Worksheet. That might be so, but why would it matter? If you write code and link against a GPLed library there is no mechanism to remind someone that they have to abide by the GPL. But I agree that it is far from obvious to a user of Sage that the GPL of worksheets is even an issue and might apply to published Sage code. It would be nice to add something to the manual that gives various POVs of the problem, but in the end it should conclude that anyone concerned about this should consult a lawyer since the Sage project is not in the position to give legal advice. * The GPL is confusing as hell... The main issue here is that there is the letter of the law and the intend of the GPL. And there is way too much of a grey zone (even if you limit yourself to US case law) to make me comfortable. And I would like to emphasize again that just one should just not take the FSF by their word since they are clearly not a neutral player here. Cheers, Brian Cheers, Michael --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Graph Theory latex(G)
On Tue, May 05, 2009 at 08:50:09PM -0700, Fidel wrote: Hello, As mentioned in http://groups.google.com/group/sage-devel/browse_thread/thread/834be3b28bd7919f/45629a29507db4cb?lnk=gstq=tkz#45629a29507db4cb I am trying to write latex(G) for a graph. I now have a newer version which supports vertex, edge and label colors, as well as different styles from the tkz-graph package. There is already a ticket http://trac.sagemath.org/sage_trac/ticket/5975 Btw: you may want to have a quick look to: http://mupad-combinat.svn.sourceforge.net:80/viewvc/mupad-combinat/trunk/MuPAD-Combinat/lib/GRAPH/dotTeX.mu http://mupad-combinat.svn.sourceforge.net:80/viewvc/mupad-combinat/trunk/MuPAD-Combinat/lib/GRAPH/TeX.mu Which does just this for graphs in MuPAD (well almost: it's using plain pgf/tikz, and it's relying on graphviz for the layout). start lame advertisement For some examples of produced pictures, you can have a look at: http://nicolas.thiery.name/habilitation/main.pdf /... Cheers, Nicolas -- Nicolas M. Thiéry Isil nthi...@users.sf.net http://Nicolas.Thiery.name/ --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] order of elements in the field
Hi, This is surprising to me. sage: F.a = GF(2^3) sage: a.order(),a.additive_order(),a.multiplicative_order() (2, 2, 7) Who is interested in the additive order of a? I think that order() should be aliased to multiplicative_order(). --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On Tue, May 5, 2009 at 11:45 PM, mabshoff mabsh...@googlemail.com wrote: On May 5, 11:34 pm, Brian Granger ellisonbg@gmail.com wrote: Licensing discussions just suck and are a waste of time. Sigh Yes, I fully a agree with youexcept when people learn new things about the GPL. I think some important things have come out of this discussion: * A notebook/Worksheet is source code and can potentially be a derivative work of Sage or any of the libraries that Sage ships with. Yep. * If a particular Worksheet uses a GPL library, and that Worksheet is distributed to the public (not just Shared internally on a single Sage notebook server), it must be GPL. I think this is far from clear, but the FSF's interpretation of the license. The OSI thinks differently for example as pointed out earlier. * Currently, there is not a clear way of indicating or learning about the license of a Worksheet. That might be so, but why would it matter? If you write code and link against a GPLed library there is no mechanism to remind someone that they have to abide by the GPL. But I agree that it is far from obvious to a user of Sage that the GPL of worksheets is even an issue and might apply to published Sage code. It would be nice to add something to the manual that gives various POVs of the problem, but in the end it should conclude that anyone concerned about this should consult a lawyer since the Sage project is not in the position to give legal advice. We should be honest to our users about some of the potential pitfalls and responsibilities associated with using Sage. When users (or developers) build their work on Sage, they are building their work on GPL'd code, and there are certainly ramifications involved in doing this. For example, they can't just take any of their Sage programs and close source and sell them, etc.It doesn't do any good in the long run to pretend there aren't such ramifications. The situation with Sage is really different than the situation with GIMP or OpenOffice or Emacs, and we should be upfront about that. -- William * The GPL is confusing as hell... The main issue here is that there is the letter of the law and the intend of the GPL. And there is way too much of a grey zone (even if you limit yourself to US case law) to make me comfortable. And I would like to emphasize again that just one should just not take the FSF by their word since they are clearly not a neutral player here. Cheers, Brian Cheers, Michael -- 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 sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: order of elements in the field
On Tue, May 5, 2009 at 11:50 PM, Kwankyu ekwan...@gmail.com wrote: Hi, This is surprising to me. sage: F.a = GF(2^3) sage: a.order(),a.additive_order(),a.multiplicative_order() (2, 2, 7) Who is interested in the additive order of a? I think that order() should be aliased to multiplicative_order(). Well I think order should be deleted, since it's potentially ambiguous and confusing. By the way, since a is an element of F (since a.parent() == F), and the only natural group structure on F is addition, the right meaning of order would be the additive order. -- William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
OK, Brian, you beat me to it, I was going to post this link again in an effort to prolong this thread. ;-) This link points to a tutorial about how to use Sage to do group theory. PDF and *.sws formats. Lots of text, but significant sections of Sage code, including an @interact. Is this a text or a program? Book or code? No import statement anywhere - i'm not linking to anything. A reader/user can do what they want with it - read it or manipulate it digitally (ie upload it into Sage). Is this like a book or instruction manual and I can license it as GFDL or CC, as I choose? Or is this a program and the FSF FAQ takes precedence and I *must* yield to their overarching interpretation of their license? I claim, like Ondrej's hypothetical CD, that this is my creative work, independent of Sage, and I can do what I want with it, beginning with a strict copyright. I have not used Sage to create it, William Stein (as titular copyright holder of Sage) has no sway, and neither does FSF. I have entered into no contract with Sage, Stein or the FSF in the course of its creation, I haven't copied their materials or used them in any fashion to create my tutorial. I'm totally independent. Words on a page - my own thoughts and expressions - my creative output. Maybe I'll revoke the CC license on my next revision and users can pay me a royalty for every web-view. I think the notion that I am beholden to apply the GPL to a work created with a text editor (Kate), a Python Script (written personally) and translation tool with a Latex Public License (Tex4ht) is absurd. Just where does Sage's GPL license apply to this? http://abstract.ups.edu/sage-aata.html That is 1) being publicly distributed and 2) is not being released under the GPL. I plan to keep it that way. Rob On May 5, 11:30 pm, Brian Granger ellisonbg@gmail.com wrote: At the beginning of this thread, someone posted a link to the Sage worksheet: http://abstract.ups.edu/sage-aata.html That is 1) being publicly distributed and 2) is not being released under the GPL. Plus, anyone can create an account on the public Sage notebook servers, so basically any worksheet that is Shared there falls under this category. Finally a quick Google for Sage Worksheet or .sws reveals *many* public Sage worksheets, and at a glance, none of them have any licensing information. Now that I think about it, how would I release a worksheet under the GPL. The usual way is to add: This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later versionetc. to the source. Is there a simple way of doing that? Would it make sense to enable notebook users to add this to their Worksheet by simply clicking a box Make this GPL. Then, when a Worksheet is loaded, if it has the GPL text, the notebook could display it or notify the user This Worksheet is GPLd. Cheers, Brian --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On May 5, 2009, at 11:12 PM, William Stein wrote: On Tue, May 5, 2009 at 10:41 PM, Robert Bradshaw rober...@math.washington.edu wrote: On May 5, 2009, at 9:23 PM, Brian Granger wrote: Michael, Thank you for bringing up this issue as it does clarify some aspect of Sage derived code and licensing. But, in my mind, the sage as interpreter aspect is a small perturbation on top of the zero- order: Sage = Python + GPL libraries That is, for the most part, I view the interpreter as Python itself. But still the FAQ section is very clear that the presence of all the GPL libraries loaded into an interpreter is sufficient to make sage using scripts like Ondrej's GPL bound. I also understand that not everyone agrees on this interpretation. The concept of derivative work transcends the GPL, what was quoted was the FSF's interpretation of copyright law, which is obviously going to be bias towards maximal viral impact. Personally, I think qualitative aspects are more important than technical aspects (static vs. dynamic linking) in asking whether or not something is morally or legally a derivative work. One could argue with exactly the same logic that a Mathematica worksheet is a derivative work of Mathematica, and a Matlab script is a derivative work of Matlab. Note that the GPL is viral, but the MATLAB/Mathematica/etc copyrights are not. The MATLAB/Mathematica/etc copyrights don't allow any redistribution, so if their worksheets are derivative works, then one isn't allowed to share them at all. (On the other hand, if they're not derivative works, then nor is a Sage worksheet, and so it's not required to be GPL'd). When you share your Sage notebooks with me and other's in the class, you must agree to license them under the GPL I think sharing a worksheet, whether it be clicking on the publish button or emailing/posting a .sws file all have the same repercussions. In fact, flipping the permissions bit and pointing you to the file under a shared filesystem with the intent that you read it would probably classify as distribution. The GPLdistinguishes between sharing privately (in an organization) and publishing publicly. See the GPL FAQ: Also, does that also mean no Sage code could be included in a paper in a journal that required signing the copyright away? What about publishing (collections of) worksheets under the CC license? Code snippets in books? Are your books GPL compatible? (Maybe you could claim fair use.) I have no trouble licensing code under the GPL, but I do think this places an onerous and inappropriate burden on all *users* of Sage, and the GPL is supposed to be about modifying/distributing code. - Robert --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On Tue, May 5, 2009 at 11:41 PM, William Stein wst...@gmail.com wrote: On Tue, May 5, 2009 at 11:30 PM, Brian Granger ellisonbg@gmail.com wrote: Now that I think about it, how would I release a worksheet under the GPL. The usual way is to add: This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later versionetc. to the source. Is there a simple way of doing that? Would it make sense to enable notebook users to add this to their Worksheet by simply clicking a box Make this GPL. Then, when a Worksheet is loaded, if it has the GPL text, the notebook could display it or notify the user This Worksheet is GPLd. Irregardless of all the licensing discussion above about derived works, etc, it would be nice to provide a simple way for users to GPL a worksheet, along with a link to the GPL, GPL faq, etc. Hopefully it can be made somehow so that it doesn't obstruct so much space. I hate when there is a short few lines script and a page of copyright/license stuff. That said, I of course respect copyright and everything --- I just wish there was some simpler way of specifying all that. On Tue, May 5, 2009 at 11:45 PM, mabshoff mabsh...@googlemail.com wrote: On May 5, 11:34 pm, Brian Granger ellisonbg@gmail.com wrote: * If a particular Worksheet uses a GPL library, and that Worksheet is distributed to the public (not just Shared internally on a single Sage notebook server), it must be GPL. I think this is far from clear, but the FSF's interpretation of the license. The OSI thinks differently for example as pointed out earlier. I think important is what Sage developer think/intend, isn't it? And I think William has made this clear. * Currently, there is not a clear way of indicating or learning about the license of a Worksheet. That might be so, but why would it matter? If you write code and link against a GPLed library there is no mechanism to remind someone that they have to abide by the GPL. But I agree that it is far from obvious to a user of Sage that the GPL of worksheets is even an issue and might apply to published Sage code. It would be nice to add something to the manual that gives various POVs of the problem, but in the end it should conclude that anyone concerned about this should consult a lawyer since the Sage project is not in the position to give legal advice. * The GPL is confusing as hell... The main issue here is that there is the letter of the law and the intend of the GPL. And there is way too much of a grey zone (even if you limit yourself to US case law) to make me comfortable. And I would like to emphasize again that just one should just not take the FSF by their word since they are clearly not a neutral player here. Well, no one is a neutral player, right? :) But honestly, I am always astonished by a thread like this and the the wide range of opinions of what the (L)GPL actually allow you to or not. On Tue, May 5, 2009 at 11:53 PM, William Stein wst...@gmail.com wrote: We should be honest to our users about some of the potential pitfalls and responsibilities associated with using Sage. When users (or developers) build their work on Sage, they are building their work on GPL'd code, and there are certainly ramifications involved in doing this. For example, they can't just take any of their Sage programs and close source and sell them, etc.It doesn't do any good in the long run to pretend there aren't such ramifications. The situation with Sage is really different than the situation with GIMP or OpenOffice or Emacs, and we should be upfront about that. That'd be cool. I'll help with this text, as I will use it for SPD[0] too. Ondrej P.S., let me know, if we should move this to the newly created sage-flame list. :) P.P.S. But anyway, when my school finishes, I think I'll write a blog about this thread, it was very interesting. [0] http://code.google.com/p/spdproject/ --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: order of elements in the field
Hi William, All right. I thought F* is the natural group structure on F. I want to mention that additive order function is not even defined for elements of finite fields in Magma. Kwankyu --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On Tue, May 5, 2009 at 11:57 PM, Robert Bradshaw rober...@math.washington.edu wrote: What about publishing (collections of) worksheets under the CC license? Code snippets in books? Are your books GPL compatible? (Maybe you could claim fair use.) I have no trouble licensing code under the GPL, but I do think this places an onerous and inappropriate burden on all *users* of Sage, and the GPL is supposed to be about modifying/distributing code. Building software on top of GPL'd libraries like Sage *does* have serious implications toward sharing. That's sort of the point of the GPL'd. There's no sense in hiding that. Suppose you spend three years implementing an algorithm as part of Sage to compute X (say some Monsky-Washnitzer cohomology computations). Then somebody else writes and publishes a clever paper that includes a several-page Sage program that uses your implementation of X (plus many other things in Sage) to compute Y (say p-adic Regulators of Jacobians of genus 2 curves). Would you definitely be allowed to use their new code and include it in Sage? I think the GPL was designed to ensure that computer programs that build on your programs must be shared under compatible conditions. This has the pro that it means that your work is protected in that when people build on it, they can't hoard their improvements. It has the drawback that it puts an onerous (and inappropriate?) burden on those same people, that when they on your GPL'd work, they can't hoard their improvements. In one sense at least, Sage can never be an alternative to Maple/Mathematica/Matlab/Magma, etc. With the Ma's, if one wrote a big program on top of them, and wanted to distribute the program as a complete self-contained closed source program (say something like a standalone Mathematica demonstration), at least it would be technically and legally possible. One would have to do some sort of contract with say Wolfram, Inc., but that's quite reasonable. With Sage that would be impossible, since the copyright is spread over hundreds of people (some dead). Scipy/Numpy/Enthought's stack does provide this extra feature, which Sage never will. There's a little good and a little bad in everything. William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: order of elements in the field
On Wed, May 6, 2009 at 12:20 AM, Kwankyu ekwan...@gmail.com wrote: Hi William, All right. I thought F* is the natural group structure on F. But F* is not equal to F. :-) I want to mention that additive order function is not even defined for elements of finite fields in Magma. Just out of curiosity, could you comment on my proposal that order be removed, and replaced by *only* additive_order and multiplicative_order? I personally never use order anymore, since I'm always scared it is the wrong order. William Kwankyu -- 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 sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: order of elements in the field
Just out of curiosity, could you comment on my proposal that order be removed, and replaced by *only* additive_order and multiplicative_order? I personally never use order anymore, since I'm always scared it is the wrong order. I'm definitely +1 on this -- I always resort to the methods that have explicit names. As they say, explicit is better than implicit, and this is clearly a case where confusion can ensue ... -cc --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: order of elements in the field
On May 6, 2009, at 12:32 AM, Craig Citro wrote: Just out of curiosity, could you comment on my proposal that order be removed, and replaced by *only* additive_order and multiplicative_order? I personally never use order anymore, since I'm always scared it is the wrong order. I'm definitely +1 on this -- I always resort to the methods that have explicit names. As they say, explicit is better than implicit, and this is clearly a case where confusion can ensue ... +1 from me too. I've been bitten by using the wrong order before. - Robert --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: order of elements in the field
Hi William, I agree with you. +1 on removing the confusing order. Kwankyu --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] New machine in the sage.math network
On 2009-May-04 19:26:13 -0700, William Stein wst...@gmail.com wrote: Unfortunately, it seems that this does *NOT* mean that if you write a little C program, spawn 128 threads, and watch them run, then you can do 128 times what you would do with 1 thread. You still can only do 8 times as much as with 1 thread. For raw computation, I don't think that processor is any better than 8 single cores. Each T2 core provides a single integer ALU and a single FPU (plus a crypto unit which can probably be ignored for this purpose), thus an 8-core T2 only has 8 ALUs. Each core is hardware sliced between 8 threads - giving the 64 threads-per-chip. When a thread stalls (eg waiting for a memory access), the hardware will switch that core to a different thread. For small programs, this doesn't gain you much because everything is cached. You should see decent speedups on code that is cache-busting: If you try running 128 copies of a program to (eg) transpose a 2000x2000 matrix of longs or doubles then you should see better speedup. Note that for real-world apps, kernel and serialisation overheads can seriously hurt you. BTW, anyone looking at using a T1 should be aware that it only has a single FPU shared by all cores. This means FP performance is poor. -- Peter Jeremy pgpmRviaI7gT8.pgp Description: PGP signature
[sage-devel] Re: Clarification of Sage and GPL
On May 6, 2009, at 12:29 AM, William Stein wrote: On Tue, May 5, 2009 at 11:57 PM, Robert Bradshaw rober...@math.washington.edu wrote: What about publishing (collections of) worksheets under the CC license? Code snippets in books? Are your books GPL compatible? (Maybe you could claim fair use.) I have no trouble licensing code under the GPL, but I do think this places an onerous and inappropriate burden on all *users* of Sage, and the GPL is supposed to be about modifying/distributing code. Building software on top of GPL'd libraries like Sage *does* have serious implications toward sharing. That's sort of the point of the GPL'd. There's no sense in hiding that. For sure. That's perhaps the one useful purpose threads like this serve. Suppose you spend three years implementing an algorithm as part of Sage to compute X (say some Monsky-Washnitzer cohomology computations). Then somebody else writes and publishes a clever paper that includes a several-page Sage program that uses your implementation of X (plus many other things in Sage) to compute Y (say p-adic Regulators of Jacobians of genus 2 curves). Would you definitely be allowed to use their new code and include it in Sage? I would be more apt to label this a derivative work (not just for convenience, the same would apply if I was the one building on someone else's stuff). If a paper had a chunk of code illustrating an elliptic curve has a needed property using the MW computations, I probably wouldn't. As an aside, I wonder how some journal would react to being legally required to provide the source in a machine readable format due to their being a distributor? (Guess one would have to work that out before publishing...) I think the GPL was designed to ensure that computer programs that build on your programs must be shared under compatible conditions. This has the pro that it means that your work is protected in that when people build on it, they can't hoard their improvements. It has the drawback that it puts an onerous (and inappropriate?) burden on those same people, that when they on your GPL'd work, they can't hoard their improvements. In one sense at least, Sage can never be an alternative to Maple/Mathematica/Matlab/Magma, etc. With the Ma's, if one wrote a big program on top of them, and wanted to distribute the program as a complete self-contained closed source program (say something like a standalone Mathematica demonstration), at least it would be technically and legally possible. One would have to do some sort of contract with say Wolfram, Inc., but that's quite reasonable. With Sage that would be impossible, since the copyright is spread over hundreds of people (some dead). Scipy/Numpy/Enthought's stack does provide this extra feature, which Sage never will. There's a little good and a little bad in everything. First off, I *definitly* think GPL is the right license for Sage, because of (and despite) all its implications. I guess my point is that I'm making a distinction between documents that happen to use Sage, and new programs built on top of Sage. In the former camp are things like tutorials and the homework exercise worksheets for your 480 class, or your modular forms and number theory books. These are not, in my mind, derivative works of Sage (though I'd hope people choose to keep them open). Of course there is a lot of grey area, and I think one hits the derivative work area long before one is shipping modified copies of Sage in its entirety. I would consider many Sage worksheets derivative works, but I don't think the implication is automatic. - Robert --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Graph Theory latex(G), global name 'latex' is not
2009/5/6 Nick Alexander ncalexan...@gmail.com: So apparently it's: from sage.misc.latex import latex Just for the record, it's often easier to do: sage: latex.__module__ 'sage.misc.latex' That is very useful! I think I want to put sage: def whereis(thing): : return thing.__module__ : into my startup file, Then: sage: whereis(latex) 'sage.misc.latex' sage: whereis(xmrange) 'sage.misc.mrange' sage: whereis(gcd) 'sage.rings.arith' and similarly for all the other things whose whereabouts I always forget! John Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Singular 3-1-0?
Hi! When will Singular 3-1-0 be in Sage? I have a program parts of which would not work with Singular 3-0-4. So, how can I test the singular version? sage: singular.version() fails with an error (both on sage.math and on my machine). Cheers, Simon --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
Just for the record, isn't the following a bug? sage: p=RealIntervalField(4)(3.1) sage: p.str(style='brackets') '[3.00 .. 3.25]' sage: p 4.? --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Singular 3-1-0?
On May 6, 2:11 am, Simon King simon.k...@uni-jena.de wrote: Hi! When will Singular 3-1-0 be in Sage? The plan is that malb will update it when he is in Seattle before SD 15. I have a program parts of which would not work with Singular 3-0-4. So, how can I test the singular version? sage: singular.version() fails with an error (both on sage.math and on my machine). What does the docstring say? Is it supposed to work? This might be a bug ;). Cheers, Simon Cheers, Michael --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
On May 6, 2:20 am, Yann yannlaiglecha...@gmail.com wrote: Just for the record, isn't the following a bug? It looks like one to me. sage: p=RealIntervalField(4)(3.1) sage: p.str(style='brackets') '[3.00 .. 3.25]' sage: p 4.? The printing is a little odd, I would expect it to print 3.? cwitty? Cheers, Michael --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Singular 3-1-0?
Hi Michael, On May 6, 11:28 am, mabshoff mabsh...@googlemail.com wrote: The plan is that malb will update it when he is in Seattle before SD 15. So, what Sage release, approximately? What does the docstring say? Is it supposed to work? This might be a bug ;). Are there bugs in Sage? I wasn't aware of it, sorry... This is yet another example why having doc tests is a good thing! Namely, singular.version is defined by def version(self): EXAMPLES: return singular_version() So, no doc tests, and we have an error. By the way, a strange error. If you do singular.version() the first time, there is the error. If you do it a second time, no error. I will open a ticket. Cheers, Simon --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
It's trac #5942 On May 6, 11:30 am, mabshoff mabsh...@googlemail.com wrote: On May 6, 2:20 am, Yann yannlaiglecha...@gmail.com wrote: Just for the record, isn't the following a bug? It looks like one to me. sage: p=RealIntervalField(4)(3.1) sage: p.str(style='brackets') '[3.00 .. 3.25]' sage: p 4.? The printing is a little odd, I would expect it to print 3.? cwitty? Cheers, Michael --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
On May 6, 2:35 am, Yann yannlaiglecha...@gmail.com wrote: It's trac #5942 Ok, it looked familiar. I have CCed Carl Witty on the ticket so he is aware of its existence, not that this implies that he has to fix it. Cheers, Michael --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Singular 3-1-0?
On May 6, 2:32 am, simon.k...@uni-jena.de wrote: Hi Michael, Hi Simon, So, what Sage release, approximately? Well, given that Sage 3.4.2 is just out and that SD15 starts in 10 days I would say the next one. What does the docstring say? Is it supposed to work? This might be a bug ;). Are there bugs in Sage? I wasn't aware of it, sorry... Heresy, there cannot be any bugs in Sage ;). This is yet another example why having doc tests is a good thing! Well, you don't have to convince many people around here about that. Namely, singular.version is defined by def version(self): EXAMPLES: return singular_version() So, no doc tests, and we have an error. Yep. By the way, a strange error. If you do singular.version() the first time, there is the error. If you do it a second time, no error. Odd. I will open a ticket. Thanks. Cheers, Simon Cheers, Michael --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Singular 3-1-0?
Hi! On May 6, 11:32 am, simon.k...@uni-jena.de wrote: I will open a ticket. #5994, without a patch but with a suggestion of what to do. I first want to know what people think When I did singular.version(), I expected to get a tuple, say: sage: singular.version() (3,0,4,4) Would you expect a string such as 'Singular for x86_64-Linux version 3-0-4 (3044-2009031122) Mar 11 2009 22:29:08\nwith\n\tfactory(@(#) factoryVersion = 3.0.4),libfac (3.0.4,Mar 2008),\n\tGMP(4.2),NTL(5.4.2),static readline,Plural,DBM,\n \tnamespaces,dynamic modules,dynamic p_Procs,OM_CHECK=0,OM_TRACK=0,random=1241602325\n\tCC= gcc -O3 -g - fPIC -pipe -DNDEBUG -DOM_NDEBUG -Dx86_64_Linux -DHAVE_CONFIG_H,\n \tCXX= g++ -O3 -g -fPIC -pipe -DNDEBUG -DOM_NDEBUG -Dx86_64_Linux - DHAVE_CONFIG_H (4.2.4 (Ubuntu 4.2.4-1ubuntu3))\nargv[0] : \tSingular-3-0-4\nSearchPath:\t/usr/local/sage/local/LIB\nSingular : \t/usr/local/sage/local/bin/Singular-3-0-4\nBinDir:\t/usr/local/ sage/local/bin\nRootDir :\t/usr/local/sage/local\nDefaultDir:\t/usr/ local/sage/local\nInfoFile :\t\nIdxFile :\t\nHtmlDir :\t \nManualUrl :\thttp://www.singular.uni-kl.de/Manual/3-0-4\nExDir : \t\nPath :\t/usr/local/sage/local/bin:/usr/local/sage/local/ polymake/bin:/usr/local/sage:/usr/local/sbin:/usr/local/bin:/usr/sbin:/ usr/bin:/sbin:/bin:/usr/games\nEmacsDir :\t\nAvailable HelpBrowsers: dummy, emacs, \nCurrent HelpBrowser: dummy ' ? Yours, Simon --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: New machine in the sage.math network
On May 6, 1:21 am, Peter Jeremy peterjer...@optushome.com.au wrote: On 2009-May-04 19:26:13 -0700, William Stein wst...@gmail.com wrote: Unfortunately, it seems that this does *NOT* mean that if you write a little C program, spawn 128 threads, and watch them run, then you can do 128 times what you would do with 1 thread. You still can only do 8 times as much as with 1 thread. For raw computation, I don't think that processor is any better than 8 single cores. Each T2 core provides a single integer ALU and a single FPU (plus a crypto unit which can probably be ignored for this purpose), thus an 8-core T2 only has 8 ALUs. Each core is hardware sliced between 8 threads - giving the 64 threads-per-chip. When a thread stalls (eg waiting for a memory access), the hardware will switch that core to a different thread. For small programs, this doesn't gain you much because everything is cached. You should see decent speedups on code that is cache-busting: If you try running 128 copies of a program to (eg) transpose a 2000x2000 matrix of longs or doubles then you should see better speedup. Well, code like ATLAS is tuned for minimizing cache misses, so I seriously doubt that the design of the T2 will give us more benefit past 8 simultaneously running threads. The same more or less applies to arbitrary precision arithemtic. Note that for real-world apps, kernel and serialisation overheads can seriously hurt you. I don't think that is really that much of an issue with HPC code while it does play much more of a role with DB/Java/Webserver workloads where the T2 is making a pretty good figure. But Intel has been catching up fast in that area, i.e. in a year or two a 2 socket Xeon might be comparable in throughput in case Sun keeps bumbling their hardware roadmap. And given the Oracle buy as well as the history of Rock I guess you can see how I am not exactly optimistic here. BTW, anyone looking at using a T1 should be aware that it only has a single FPU shared by all cores. This means FP performance is poor. Well, the T1 had a GMP score comparable to the 68040. The T2 is about 10 times faster for a single thread than the T1 (with the above potential scaling issues), but still lacking the current Xeon generation by about a factor of 30 per core. So even if the T2 scaled perfectly to 128 cores on that benchmark it would still be beaten by a single 6 core Xeon of the Dunnington generation. And there are already Xeons based on the i7 generation out. Some of this is certainly due to the worst assembly support for Sparc64 in GMP (and MPIR) compared to x86-64, but even if this gets fixed and improved by a factor of 10 which some people have thrown around this isn't enough IMHO. Cheers, Michael -- Peter Jeremy application_pgp-signature_part 1KViewDownload --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: order of elements in the field
+1 though perhaps it should just be deprecated, along with a message saying to use multiplicative or additive order specifically. John 2009/5/6 Kwankyu ekwan...@gmail.com: Hi William, I agree with you. +1 on removing the confusing order. Kwankyu --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Sage 3.4.2 released (and this time it is the final one)
Hi Michael, Building 3.4.2 from scratch breaks at R as follows: - gcc -std=gnu99 -I. -I../../src/include -I../../src/include -I/opt/sage-3.4.2/local/inlcude -DHAVE_CONFIG_H -fpic -I/opt/sage-3.4.2/local/include -L/opt/sage-3.4.2/local/lib/ -c maxcol.c -o maxcol.o make[5]: *** [maxcol.o] Killed make[5]: Leaving directory `/opt/sage-3.4.2/spkg/build/r-2.6.1.p22/src/src/appl' make[4]: *** [R] Error 2 make[4]: Leaving directory `/opt/sage-3.4.2/spkg/build/r-2.6.1.p22/src/src/appl' make[3]: *** [R] Error 1 make[3]: Leaving directory `/opt/sage-3.4.2/spkg/build/r-2.6.1.p22/src/src' make[2]: *** [R] Error 1 make[2]: Leaving directory `/opt/sage-3.4.2/spkg/build/r-2.6.1.p22/src' Error building R. real1m15.975s user0m41.067s sys 0m31.088s sage: An error occurred while installing r-2.6.1.p22 Please email sage-devel http://groups.google.com/group/sage-devel explaining the problem and send the relevant part of of /opt/sage-3.4.2/install.log. Describe your computer, operating system, etc. If you want to try to fix the problem, yourself *don't* just cd to /opt/sage-3.4.2/spkg/build/r-2.6.1.p22 and type 'make'. Instead type /opt/sage-3.4.2/sage -sh in order to set all environment variables correctly, then cd to /opt/sage-3.4.2/spkg/build/r-2.6.1.p22 (When you are done debugging, you can type exit to leave the subshell.) make[1]: *** [installed/r-2.6.1.p22] Error 1 make[1]: Leaving directory `/opt/sage-3.4.2/spkg' real168m17.432s user150m57.636s sys 15m42.272s python: can't open file '/opt/sage-3.4.2/devel/sage/doc/common/builder.py': [Errno 2] No such file or directory --- This is on an older laptop with 1 GB RAM: [aghi...@frobenius sage-3.4.2]$ uname -a Linux frobenius 2.6.29-ARCH #1 SMP PREEMPT Fri Apr 17 12:46:01 UTC 2009 i686 Mobile Intel(R) Pentium(R) 4 - M CPU 2.20GHz GenuineIntel GNU/Linux It could very well be that the machine is just slowly dying, but so far I've built sage on it without problems, and I thought I should report it. Let me know if you want me to do any investigations on this. Best, Alex On Wed, May 6, 2009 at 4:37 PM, mabshoff mabsh...@googlemail.com wrote: Hello folks, apologies that it took a while, but the final 3.4.2 source tarball announced a couple days ago turned out to be not truly final :). So here are md5sums to make the difference clear: 8fe47c23872bc39ceb0136602062c917 sage-3.4.2.tar fe5ce17b31557f57f32a714855f22d26 sage-3.4.2-sage.math-only-x86_64- Linux.tar.gz All the bits are in the usual place in http://sage.math.washington.edu/home/mabshoff/release-cycles-3.4.2/ From here on it is all about Sage 4.0. Cheers, Michael Merged in Sage 3.4.2: #5981: Michael Abshoff: Sage 3.4.2: prime_pi() broken on 32 bit [Reviewed by Jaap Spies] #5983: Michael Abshoff: cmp related doctest failure in sage/schemes/ jacobians/abstract_jacobian.py [Reviewed by William Stein] #5984: Michael Abshoff: cmp related doctest failure in sage/modular/ arithgroup/arithgroup_perm.py [Reviewed by William Stein] #5992: Michael Abshoff: Set stack size in Maxima.spkg to 32kb for clisp [Reviewed by William Stein] -- Alex Ghitza -- Lecturer in Mathematics -- The University of Melbourne -- Australia -- http://www.ms.unimelb.edu.au/~aghitza/ --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Singular 3-1-0?
Hi Folks! Meanwhile I got a more detailed picture on the error. - I tested several versions of Singular (3-0-4 and 3-1-0-beta) built by Sage on four different machines. In *all* cases the error occured. - I tested Singular 3-1-0-beta built by myself and Singular 3-1-0 (official release) built in Oberwolfach. The error does *not* occur. In order to avoid a misunderstanding that occured on the Singular mailing list: The error does not only occur when Singular is used for the first time after being built. It always occurs when calling system(--version); for the first time *in a session*. Start a new session, it will happen again. There is no problem when using the system command in a different way, e.g. system(version); (returns the version as a number). And apparently it only occurs if Singular is built by Sage. So, could it be Sage's fault, after all? Perhaps it was a big mistake to remove the file Hannes-Sprueche from the Singular sources... ;) Cheers, Simon --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Fwd: FInally the link to download SAGElwlcd ISO!
People, here: http://sage.math.washington.edu/home/luciolastra/ I'll be uploading sagelwlcd images and the code sequences to create them. Please try the distro out to give me feedback (sagelw...@gmail) and help me make a better distro for everyone. Greetings, Lucio On 5 mayo, 23:58, Lucio Lastra luciolas...@gmail.com wrote: Alfredo, now that I have my space, it would be really nice to cross links between accounts so people can choose the option that fits the best for them. Not to mention is also because we are part of the same. I'm not sure how to post a link to your webpage, otherwise I'll have done it. Greetings, Lucio On Apr 27, 11:11 am, Lucio Lastra luciolas...@gmail.com wrote: Alfredo, awesome, I'll build it and provide the instructions and send William an email soon and also post the news here. Greetings, Lucio. On Mon, Apr 27, 2009 at 11:03 AM, Alfredo Portes doyenatc...@gmail.comwrote: Hi Lucio, Sorry for not replying to your previous email. I work at a financial company (Bloomberg) and work has been crazy lately. If you have some time to build a new iso with the new Sage please do it, and post your version in the mailing list. We can upload the iso the sagemath. If you ask William, he can surely give you access to the server, or I can uploaded for you. I can give you access to my server also if necessary. Again, I am very interested in your work with thelivecd. If you need any help, I will try to free some time to help. Thank you very much for your work and effort on this. Again sorry I didn't reply faster before. Regards, Alfredo On Sun, Apr 26, 2009 at 6:41 PM, Lucio Lastra luciolas...@gmail.com wrote: Alfredo, I sent you an email, many days ago talking about alivecdI built from scratch which is about 200 Mibs less in size and has the performance of sagelwlcd. I'm not sure if you read it and/or you are interested on it. I'm just telling you this because I don't have much time as I did before since I started working a week ago. In case you are interested or not post back in here. If not, the steps and code to build sagelwlcd are posted so if you are interested on it, you can build it. Greetings, Lucio Lastra. On 12 abr, 21:49, Lucio Lastra luciolas...@gmail.com wrote: Great! I have a doubt: how did you make to turn the cpio image into an ISO image? Greetings, Lucio. On 10 abr, 15:30, Jason Grout jason-s...@creativetrax.com wrote: Lucio Lastra wrote: Update: I just downloaded and tried it out. Alfredo you are completely right, this is exactly what we need! I'll follow the steps in the forum to get the eth0 up and working and try out the mkxpud to see how it works. This is really exciting. Thanks once again for sharing your discovery! I tried it out yesterday too. Wow, it looks really nice! Jason --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On May 6, 8:58 am, Ondrej Certik ond...@certik.cz wrote: But honestly, I am always astonished by a thread like this and the the wide range of opinions of what the (L)GPL actually allow you to or not. Me too, wow. My opinion is, that if you write a sage script, it's just a script. You can do with it what you want since you have the copyright. Distribution complications with the GPL is not an issue, since your script does not include Sage at all -- it just uses it, is interpreted by and formost, Sage is intended to be used that way. Theoretically, also something else could interpret that script ... e.g. a webserver that reads a text file and sends out something! A derived work is something that has a work as an input and builds or modifies it. If you write Sage code from scratch, this doesn't apply, too. from http://www.linuxjournal.com/article/6366 The meaning of derivative work will not be broadened to include software created by linking to library programs that were designed and intended to be used as library programs. When a company releases a scientific subroutine library, or a library of objects, for example, people who merely use the library, unmodified, perhaps without even looking at the source code, are not thereby creating derivative works of the library. -- Lawrence Rosen, attorney in private practice for opensource.org H --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Wigner 3j, 6j, 9j, Clebsch-Gordan, Racah and Gaunt coefficients
Just to say that I have opened a ticket now with Dan's changes: http://trac.sagemath.org/sage_trac/ticket/5996 Jens --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
Wow, I really missed quite a thread. So is there any final consensus on this? Is the following Sage program automatically GPL? {{{ 2+2 }}} Or only in the following form? {{{ Integer(2)+Integer(2) }}} Please no flames! I only wanted to know if there was a consensus, I got sort of confused by 50 messages on this in my RSS reader at once. If there isn't a consensus (and it seems there is not) then please don't reply, and I will go along with Rob B. and publish whatever Sage worksheets I want to under whatever license I deem appropriate, if any. - kcrisman --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On Wed, May 6, 2009 at 4:29 AM, William Stein wst...@gmail.com wrote: Suppose you spend three years implementing an algorithm as part of Sage to compute X (say some Monsky-Washnitzer cohomology computations). Then somebody else writes and publishes a clever paper that includes a several-page Sage program that uses your implementation of X (plus many other things in Sage) to compute Y (say p-adic Regulators of Jacobians of genus 2 curves). Would you definitely be allowed to use their new code and include it in Sage? Suppose you spend three years writing a proof of X (say, some very important result about high rank elliptic curves), which you publish as a paper under cc-by-sa in some journal. Then somebody else writes and publishes a very clever paper that includes a several-page mathematical proof which uses your implementation of the proof of X (i.e. statement of lemmas, propositions, etc. leading to X which appear in your paper), to prove the BSD conjecture. Would you definitely be allowed to republish their new proof and include it in (say) wikipedia? If this were true, some obstinate mathematicians could be releasing their proofs under the GPL, thus eventually infecting all mathematics... (provided they reach critical mass, say). Wrt the clever paper you mention above, I can see two possibilities, maybe depending on the interpretation of the law (the notion of derivative work) by a court: (a) the paper is NOT legally a derivative work of Sage. Then the journal is clean, and you cannot claim anything about it. (b) the paper IS legally a derivative work of Sage. Then the journal is clean or not depending on whether they have a license to reuse Sage. Assume for the sake of the argument that the GPL is the only valid license Sage the editorial can obtain. The GPL is a permission (license) to reuse Sage which is valid as long as they comply with the terms. Then either (b1) the journal complies with the GPL by releasing the new code as GPL === you would be definitely allowed to use the new code and include it in Sage; or (b2) the journal doesn't release the new code as GPL === then the journal would be infringing Sage copyright. It does *not* follow that you are allowed to use the new code and include it in Sage. It *only* follows that the copyright owner for Sage can sue the editorial for copyright infringement, i.e. distributing a derivative work without a license. (IOW, the GPL is *not* really viral --- copyright law is). Remember: the GPL is only a *license*. Nobody is forced to agree, and nobody is forced to comply. The GPL gives permission to do some things that copyright law would not allow, provided its terms and conditions are satisfied. If I want to do something that copyright law alone would allow me to, then I don't need to follow the GPL. This includes fair use. For instance: what's the difference between referencing the sage library by using an import statement and a function call, vs. referencing a theorem in a paper by citing it in the bibliography and recalling the statement? They both seem fair use to me... In principle: I guess it would be possible to write a paper which cites, references, and recalls so much from a previous paper so that it becomes a derivative work and fair use doesn't apply; the same is true for scripts which reference the sage library. IOW: I'm claiming that *some* scripts can be derivative works, but others are either not derivatives or under fair use (this has been already pointed out by Robert Bradshaw). I'd say *most* notebooks making use of the sage library in the intended way, using the documented APIs, etc, would fall into the second category, and thus can be published under any license or no license at all. Gonzalo --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Sage and GPL for end user scripts (Re: Clarification of Sage and GPL)
On Wed, May 6, 2009 at 4:29 AM, William Stein wst...@gmail.com wrote: On Tue, May 5, 2009 at 11:57 PM, Robert Bradshaw rober...@math.washington.edu wrote: What about publishing (collections of) worksheets under the CC license? Code snippets in books? Are your books GPL compatible? (Maybe you could claim fair use.) I have no trouble licensing code under the GPL, but I do think this places an onerous and inappropriate burden on all *users* of Sage, and the GPL is supposed to be about modifying/distributing code. Building software on top of GPL'd libraries like Sage *does* have serious implications toward sharing. That's sort of the point of the GPL'd. There's no sense in hiding that. At this point in the thread I'd argue that we don't really have a clue on what would be a court interpretation of the GPL on this issue [ok, each one of us has a clue, but the clues we have disagree :) in fact we don't even know if different courts would agree on this]. But IMO this particular issue is rather important and it deserves a definition, at the very least in the form of an express intent by the Sage developers, or even a clarification in the license itself. Thus, the really important question is not what the GPL means, or implies, but what *should* it mean, in order to better achieve the goals of Sage and of Sage developers, and what the Sage developers *intent* is. I think it is better if we differentiate two levels of program: (A) the sage system, i.e. the core sage library and all the packages included in sage, etc. (B) the user scripts written independently of the sage system, which may depend on facilities provided by the documented APIs, etc. There is of course a gray area between (A) and (B), because a user script may (ab)use of Sage internals in a significative way, etc, and in the end it becomes a part of (A). For instance, it definitely would be unfair if somebody extended functionality on some area of Sage by exporting all the internals and adding on top of that in a non-GPLed user script. So, here's a question for Sage developers: For user scripts clearly in (B), i.e. scripts which just *use* sage in the intended ways of use, etc. (1) do you think it is a good idea to require the scripts to be published under GPL or not published at all? (2) was this your actual intent when you contributed code to Sage under the GPL? I'm particularly interested in your (William) answer to this. In some of your posts seemed as if you were claiming that requiring scripts to be published under the GPL is the only option (just by the FSF interpretation of the issue), but I don't know what was your original intent, and whether you think this is good or just an undesired side effect of the GPL. Gonzalo --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: order of elements in the field
On 6-May-09, at 12:32 AM, Craig Citro wrote: Just out of curiosity, could you comment on my proposal that order be removed, and replaced by *only* additive_order and multiplicative_order? I personally never use order anymore, since I'm always scared it is the wrong order. I'm definitely +1 on this -- I always resort to the methods that have explicit names. As they say, explicit is better than implicit, and this is clearly a case where confusion can ensue ... +1 Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Graph Theory latex(G), global name 'latex' is not
Just for the record, it's often easier to do: sage: latex.__module__ 'sage.misc.latex' That is very useful! Yep, that's why I thought I'd throw it out there. Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Sage and GPL for end user scripts (Re: Clarification of Sage and GPL)
On Wed, May 6, 2009 at 8:13 AM, Gonzalo Tornaria torna...@math.utexas.edu wrote: I'm particularly interested in your (William) answer to this. Dang, I was hoping to not have to respond to this post, but since you explicitly ask me I have no choice. In some of your posts seemed as if you were claiming that requiring scripts to be published under the GPL is the only option (just by the FSF interpretation of the issue), but I don't know what was your original intent, and whether you think this is good or just an undesired side effect of the GPL. Both. I view it as a bad and an undesired side effect... unless I really want to use somebody's code, and then I might suddenly view it is a desired side effect. Over the last few years, I've personally convinced probably well over a dozen people to relicense their code under GPL (or a GPL compatible license), so I could include it in Sage. These include PARI scripts, programs against the PARI library, and other programs. In retrospect, in many cases I was able to convince the author to GPL their code, since their code fundamentally depended on a GPL'd program (e.g., PARI). In one case, I had argued for a week with a certain author about him making his code available under a GPL-compatible license, and at a certain moment we both realized that he had no choice, because his code depended on PARI; his response was to spend several weeks completely rewriting the program so it didn't depend on PARI to work, and releasing the resulting code under a pseudo-BSD license. Building your code on top of GPL'd code has consequences (or responsibilities) and there is no point in ignoring that. It also has rewards, e.g., you can read the source code of the whole stack, change anything, etc., and contribute back knowing that improvements to your contributions won't be locked away in the future. -- William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On 05/06/2009 07:50 AM, William Stein wrote: On Tue, May 5, 2009 at 3:25 PM, Brian Granger ellisonbg@gmail.com wrote: Hi, I have a question about Sage and the GPL. Here is the main question.. IF I write code in a Sage notebook, AND I redistribute the code, do I need to release my code under the GPL? Here is a bit of background... At a conference in the last year, one of the Sage developers was asked this question, and their answer was... You can do whatever you want with your code, you don't have to release it under the GPL In general, I don't think this answer can be right, but I think it is actually a bit subtle. Here are some of the issues that I see (all of this assumes that I do want to distribute my code to others)... * Is the code pure python or does it use the sage syntax? If the code uses the sage syntax, I think it must be released under the GPL. * Does the code being written actually use any GPL libraries (like the sage python package)? If the code uses GPL libraries, I again think it must be GPL'd. Publicly distributed code using GPL'd library must be GPL'd. Suppose Ondrej's program --- from sage.all import x print x**2 --- were a bit longer to actually contain some creativity (but no line from any GPL source code). Suppose he puts that in a file aaa.sage and distributes that (without sage). Why should there be any restriction on this source? He may, of course put that under BSD (it's open source anyway). The file itself does not use Sage. It's simply a string of characters. Only if somebody downloads Sage, downloads aaa.sage and actually runs aaa.sage, the sage library is used. But then distribution has already happened and there is no obligation for Ondrej to change the license of aaa.sage from BSD to GPL. * If a sage notebook is source code does clicking Share in the notebook constitute distribution. In other words, if a bunch of people start sharing sage notebooks, do they all have to be GPL? No. This is internal distribution, so the GPL doesn't apply. This is no different than the NSA (say) distributing a program from one researcher to another, and obviously they don't have to GPL their code. No. But for a different reason. The notebook is a separate piece. If you don't distribute it together with Sage, then it's only a string of characters (and as such not particularly useful) and I don't see a reason why such distribution must be under GPL rules. If, however, you choose to distribute your notebook together with Sage then it can be considered an extension/derivative work of Sage and as such the whole thing (=Sage+notebook) has to be GPL. The important term is distribution. Of course, also NSA-internal distribution of a GPL program has to follow GPL rules. Suppose I write a program and *distribute* it to my wife under the GPL. If my wife chooses to *distribute* that program to my child, she can do that, but she must follow the GPL rules. Now three people have that program (and source code) and none of us is forced by GPL rules to publish the source code to anybody else in the world if no further distribution happens. Only if you distribute the work, you must follow GPL rules. The usage case I have in mind is using this to teach University courses in computational physics. I know others are already doing this (William is right now I think). If I share notebooks with students and they with me, does everything have to be GPL? No, definitely not. But if you post the notebooks publicly and they make use of the sage library, then they have to be GPL'd. I'd say if you distribute the notebooks alone without any GPL'ed software, then you are free to choose any license you like. This is relevant, because I need to clarify these issues for students and faculty who would use Sage in this manner. It isn't necessarily bad if the answer is GPL, but we all need to know this. You might consider consulting with a lawyer at your university. Universities sometimes have lawyers for this sort of thing. Yes, that is always a good thing. There are, for example, certain items of GPL2 that don't apply in certain countries. Don't get me wrong here. I am a fan of GPL. And if everyone distributed his software under GPL there would not be such a lot of wasted mailing-list hours that discuss license issues. --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
On Wed, May 6, 2009 at 2:20 AM, Yann yannlaiglecha...@gmail.com wrote: Just for the record, isn't the following a bug? sage: p=RealIntervalField(4)(3.1) sage: p.str(style='brackets') '[3.00 .. 3.25]' sage: p 4.? It's a deliberate design decision. To quote from real_mpfi.pyx: When there are two possible results of equal precision and with the same error width, then we pick the one which is farther from zero. (For instance, RIF(0, 123) with two error digits could print as 61.?62 or 62.?62. We prefer the latter because it makes it clear that the interval is known not to be negative.) In other words, sage: RealIntervalField(4)(0, 1) 1.? prints as the interval [0 .. 2], rather than [-1 .. 1], because IMHO it is useful to be able to know that an interval is nonnegative; and we do this by always picking the result farther from zero whenever there are two possible correct printings. (Note that 3.? and 4.? would both include the interval [3.00 .. 3.25], so they are both correct in that sense.) It would be possible to use a different rule for choosing between two correct answers, but I like the current one. Carl --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On Wed, May 6, 2009 at 9:32 AM, Ralf Hemmecke r...@hemmecke.de wrote: On 05/06/2009 07:50 AM, William Stein wrote: On Tue, May 5, 2009 at 3:25 PM, Brian Granger ellisonbg@gmail.com wrote: Hi, I have a question about Sage and the GPL. Here is the main question.. IF I write code in a Sage notebook, AND I redistribute the code, do I need to release my code under the GPL? Here is a bit of background... At a conference in the last year, one of the Sage developers was asked this question, and their answer was... You can do whatever you want with your code, you don't have to release it under the GPL In general, I don't think this answer can be right, but I think it is actually a bit subtle. Here are some of the issues that I see (all of this assumes that I do want to distribute my code to others)... * Is the code pure python or does it use the sage syntax? If the code uses the sage syntax, I think it must be released under the GPL. * Does the code being written actually use any GPL libraries (like the sage python package)? If the code uses GPL libraries, I again think it must be GPL'd. Publicly distributed code using GPL'd library must be GPL'd. Suppose Ondrej's program --- from sage.all import x print x**2 --- were a bit longer to actually contain some creativity (but no line from any GPL source code). Suppose he puts that in a file aaa.sage and distributes that (without sage). Why should there be any restriction on this source? He may, of course put that under BSD (it's open source anyway). The file itself does not use Sage. It's simply a string of characters. Only if somebody downloads Sage, downloads aaa.sage and actually runs aaa.sage, the sage library is used. But then distribution has already happened and there is no obligation for Ondrej to change the license of aaa.sage from BSD to GPL. [snip] Ralf, In this email, what are you basing all your claims on? Numerous claims you make seem to me to contradict statements in the GPL FAQ at http://www.gnu.org/licenses/gpl-faq.html So I'm curious if you're basing everything on what you just tend to wish/believe is true about the GPL based on your memory, or on actually carefully reading the GPL and statements made by the FSF lawyers to clarify their intent regarding the GPL. Generally speaking, I think that if one wants to understand the intent of the GPL, then http://www.gnu.org/licenses/gpl-faq.html is a very good place to look.Almost every question I have about the GPL is clearly answered there. If one directly disagrees with a statement made there, then it is easy to get a lawyer from FSF to provide further clarification/answers. William * If a sage notebook is source code does clicking Share in the notebook constitute distribution. In other words, if a bunch of people start sharing sage notebooks, do they all have to be GPL? No. This is internal distribution, so the GPL doesn't apply. This is no different than the NSA (say) distributing a program from one researcher to another, and obviously they don't have to GPL their code. No. But for a different reason. The notebook is a separate piece. If you don't distribute it together with Sage, then it's only a string of characters (and as such not particularly useful) and I don't see a reason why such distribution must be under GPL rules. If, however, you choose to distribute your notebook together with Sage then it can be considered an extension/derivative work of Sage and as such the whole thing (=Sage+notebook) has to be GPL. The important term is distribution. Of course, also NSA-internal distribution of a GPL program has to follow GPL rules. Suppose I write a program and *distribute* it to my wife under the GPL. If my wife chooses to *distribute* that program to my child, she can do that, but she must follow the GPL rules. Now three people have that program (and source code) and none of us is forced by GPL rules to publish the source code to anybody else in the world if no further distribution happens. Only if you distribute the work, you must follow GPL rules. The usage case I have in mind is using this to teach University courses in computational physics. I know others are already doing this (William is right now I think). If I share notebooks with students and they with me, does everything have to be GPL? No, definitely not. But if you post the notebooks publicly and they make use of the sage library, then they have to be GPL'd. I'd say if you distribute the notebooks alone without any GPL'ed software, then you are free to choose any license you like. This is relevant, because I need to clarify these issues for students and faculty who would use Sage in this manner. It isn't necessarily bad if the answer is GPL, but we all need to know this. You might consider consulting with a lawyer at your university. Universities sometimes have lawyers for this sort of
[sage-devel] Re: Clarification of Sage and GPL
On May 6, 4:41 pm, kcrisman kcris...@gmail.com wrote: Wow, I really missed quite a thread. So is there any final consensus on this? Is the following Sage program automatically GPL? {{{ 2+2 }}} Or only in the following form? {{{ Integer(2)+Integer(2) }}} Technically, what's the difference between a GPL'd interpreter interpreting 2 + 2 and a call to a GPL'ed library add(2, 2)? I think this is the problem with the GPL: any program you write that uses an GPL'd interface has to be GPL'd. If you add a layer of abstraction to your program, for instance by defining Integer to be an user-specified type representing an integer, nothing forces you to use the GPL for you code, even if you users use you program in conjunction with a GPL'd implementation of Integer. The point is that your interface has to be general enough to be clearly not derived from a GPL'd interface/library/code. However, circumvention of this kind are debatable. (The nvidia closed source driver for Linux has an open source interface to the kernel, if I recall it correctly.) From my point of view, GPL'd libraries (and I think sage is also a library) are practically only usable by GPL'd code. If you don't want this, use LGPL'd libraries or similar. The main difference of the LGPL is as far as I know that it allows you to use an interface to the LGPL'd code without LGPL'ing your own code. Vinzent --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On May 6, 2009, at 12:05 PM, Vinzent Steinberg wrote: On May 6, 4:41 pm, kcrisman kcris...@gmail.com wrote: Wow, I really missed quite a thread. So is there any final consensus on this? Is the following Sage program automatically GPL? {{{ 2+2 }}} Or only in the following form? {{{ Integer(2)+Integer(2) }}} From my point of view, GPL'd libraries (and I think sage is also a library) are practically only usable by GPL'd code. If you don't want this, use LGPL'd libraries or similar. The main difference of the LGPL is as far as I know that it allows you to use an interface to the LGPL'd code without LGPL'ing your own code. Doesn't both Maple and Mathematica make use of GMP? I thought they did. They aren't licensed under the GPL. Cheers, Tim. --- Tim Lahey PhD Candidate, Systems Design Engineering University of Waterloo http://www.linkedin.com/in/timlahey --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On Wed, May 6, 2009 at 10:37 AM, Tim Lahey tim.la...@gmail.com wrote: On May 6, 2009, at 12:05 PM, Vinzent Steinberg wrote: On May 6, 4:41 pm, kcrisman kcris...@gmail.com wrote: Wow, I really missed quite a thread. So is there any final consensus on this? Is the following Sage program automatically GPL? {{{ 2+2 }}} Or only in the following form? {{{ Integer(2)+Integer(2) }}} From my point of view, GPL'd libraries (and I think sage is also a library) are practically only usable by GPL'd code. If you don't want this, use LGPL'd libraries or similar. The main difference of the LGPL is as far as I know that it allows you to use an interface to the LGPL'd code without LGPL'ing your own code. Doesn't both Maple and Mathematica make use of GMP? I thought they did. They aren't licensed under the GPL. GMP is not GPL'd. It is LGPL'd. So any program can use/include GMP without having to be GPL'd. Magma also includes GMP. William Cheers, Tim. --- Tim Lahey PhD Candidate, Systems Design Engineering University of Waterloo http://www.linkedin.com/in/timlahey -- 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 sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On May 6, 2009, at 10:37 AM, Tim Lahey wrote: Doesn't both Maple and Mathematica make use of GMP? I thought they did. They aren't licensed under the GPL. GMP is LGPL, not GPL. If what Ralf said were correct (which it isn't), there would be no need for an LGPL at all. - Robert --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: order of elements in the field
On Wed, May 6, 2009 at 8:39 AM, Nick Alexander ncalexan...@gmail.com wrote: On 6-May-09, at 12:32 AM, Craig Citro wrote: Just out of curiosity, could you comment on my proposal that order be removed, and replaced by *only* additive_order and multiplicative_order? I personally never use order anymore, since I'm always scared it is the wrong order. I'm definitely +1 on this -- I always resort to the methods that have explicit names. As they say, explicit is better than implicit, and this is clearly a case where confusion can ensue ... +1 Nick OK, this is not trac 5997: http://trac.sagemath.org/sage_trac/ticket/5997 --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Wrong answer in IntegerModRing.multiplicative_subgroups
Just now I was doing some tinkering in sage.rings.integer_mod_ring with the aim of fixing ticket #5250, where Sage wrongly claims that (Z / 162Z)^* is non-cyclic when it is. That turned out to be easy to fix, but in the process I discovered something more nasty: the method multiplicative_subgroups for the IntegerModRing class returns answers that are wrong. For example, take N = 341 = 11 * 31. Then (Z / NZ)^* is isomorphic to C_10 x C_30. The current method just calculates all subgroups of C_10 and all subgroups of C_30, and returns the products of those. This is clearly wrong, since not all subgroups of a direct product are products of subgroups of the factors. In fact in this example there are 80 subgroups -- I checked in GAP -- and Sage only finds 32 of them. Does anyone know a good, fast algorithm for solving this problem (correctly)? Alternatively, can someone give me a hint on how to use Gap for this? It has the right command (SubgroupsSolvableGroup) but I'm struggling to work out how to convert Gap's output back into Sage. --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On May 6, 10:41 am, kcrisman kcris...@gmail.com wrote: So is there any final consensus on this? Is the following Sage program automatically GPL? {{{ 2+2 }}} Or only in the following form? {{{ Integer(2)+Integer(2) }}} Please no flames! I only wanted to know if there was a consensus, I got sort of confused by 50 messages on this in my RSS reader at once. If there isn't a consensus (and it seems there is not) then please don't reply, and I will go along with Rob B. and publish whatever Sage worksheets I want to under whatever license I deem appropriate, if any. Totally awesome thread guys. What about this one? def is_prime(n): return not any([1 * n / d == n // d for d in range(2, n)]) Works in sage, but not in python. Is it GPL? david --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Wrong answer in IntegerModRing.multiplicative_subgroups
On Wed, May 6, 2009 at 10:58 AM, daveloeffler dave.loeff...@gmail.com wrote: Just now I was doing some tinkering in sage.rings.integer_mod_ring with the aim of fixing ticket #5250, where Sage wrongly claims that (Z / 162Z)^* is non-cyclic when it is. That turned out to be easy to fix, but in the process I discovered something more nasty: the method multiplicative_subgroups for the IntegerModRing class returns answers that are wrong. Crap. Thanks for spotting this. Fortunately this is used in only one place in Sage; this one line in congroup_gamma0.py: return [GammaH(N, H) for H in R.multiplicative_subgroups()] But of course that is a potentially important line. For example, take N = 341 = 11 * 31. Then (Z / NZ)^* is isomorphic to C_10 x C_30. The current method just calculates all subgroups of C_10 and all subgroups of C_30, and returns the products of those. This is clearly wrong, since not all subgroups of a direct product are products of subgroups of the factors. In fact in this example there are 80 subgroups -- I checked in GAP -- and Sage only finds 32 of them. Does anyone know a good, fast algorithm for solving this problem (correctly)? Alternatively, can someone give me a hint on how to use Gap for this? It has the right command (SubgroupsSolvableGroup) but I'm struggling to work out how to convert Gap's output back into Sage. If possible, I would greatly prefer not to use GAP for this. As it is, none of the modular forms code in Sage depends on GAP or any other external *pexpect* library. This can be really important when doing parallel computing, which I do a lot when doing research computations. Of course now the onus is on me to give an algorithm (that works), and I don't have time right now. William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Wrong answer in IntegerModRing.multiplicative_subgroups
Do we have a function which returns (Z/NZ)* as an abelian group? Should not be hard since you could use pari's znstar function. Then you'll just run into the less than perfect abelian group codewhich as far as I know does not have a function returning all subgroups of a group. John 2009/5/6 daveloeffler dave.loeff...@gmail.com: Just now I was doing some tinkering in sage.rings.integer_mod_ring with the aim of fixing ticket #5250, where Sage wrongly claims that (Z / 162Z)^* is non-cyclic when it is. That turned out to be easy to fix, but in the process I discovered something more nasty: the method multiplicative_subgroups for the IntegerModRing class returns answers that are wrong. For example, take N = 341 = 11 * 31. Then (Z / NZ)^* is isomorphic to C_10 x C_30. The current method just calculates all subgroups of C_10 and all subgroups of C_30, and returns the products of those. This is clearly wrong, since not all subgroups of a direct product are products of subgroups of the factors. In fact in this example there are 80 subgroups -- I checked in GAP -- and Sage only finds 32 of them. Does anyone know a good, fast algorithm for solving this problem (correctly)? Alternatively, can someone give me a hint on how to use Gap for this? It has the right command (SubgroupsSolvableGroup) but I'm struggling to work out how to convert Gap's output back into Sage. --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Wrong answer in IntegerModRing.multiplicative_subgroups
On May 6, 7.10pm, William Stein wrote: Crap. Thanks for spotting this. Fortunately this is used in only one place in Sage; this one line in congroup_gamma0.py: return [GammaH(N, H) for H in R.multiplicative_subgroups()] Yes, that was how I noticed this -- my fix for 5250 caused multiplicative_subgroups to give a different answer when n = 2, which broke the doctest for that function in congroup_gamma0. On May 6, 7:13 pm, John Cremona john.crem...@gmail.com wrote: Do we have a function which returns (Z/NZ)* as an abelian group? Somehow secretly we do, because it's embedded in the DirichletGroup machinery; but nothing that explicitly creates an AbelianGroup object. --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Wrong answer in IntegerModRing.multiplicative_subgroups
On Wed, May 6, 2009 at 11:33 AM, davidloeffler dave.loeff...@gmail.com wrote: On May 6, 7.10pm, William Stein wrote: Crap. Thanks for spotting this. Fortunately this is used in only one place in Sage; this one line in congroup_gamma0.py: return [GammaH(N, H) for H in R.multiplicative_subgroups()] Yes, that was how I noticed this -- my fix for 5250 caused multiplicative_subgroups to give a different answer when n = 2, which broke the doctest for that function in congroup_gamma0. On May 6, 7:13 pm, John Cremona john.crem...@gmail.com wrote: Do we have a function which returns (Z/NZ)* as an abelian group? Somehow secretly we do, because it's embedded in the DirichletGroup machinery; but nothing that explicitly creates an AbelianGroup object. Just some clarification. The functionality to do that is not embedded in the DirichletGroup machinery -- what's embedded is that the functionality is *used* there, so David knows it must be in Sage somewhere :-). Here's an example of how to get an explicit description of (Z/NZ)^* as a product of cyclic abelian groups: sage: R = Zmod(341) sage: R.unit_gens() [156, 34] sage: [a.multiplicative_order() for a in R.unit_gens()] [10, 30] sage: euler_phi(341) 300 Thus (Z/341Z)* = Z/10Z + Z/30Z with the map sending (1,0) to 156 and (0,1) to 34. Being able to work with abelian groups in all kinds of different arrangements and with subtle relations between them is one of the most critical and central tools needed in implementing computational number theory algorithms. That's why I've put a lot of work into http://trac.sagemath.org/sage_trac/ticket/5882 lately. -- William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Wrong answer in IntegerModRing.multiplicative_subgroups
2009/5/6 William Stein wst...@gmail.com: On Wed, May 6, 2009 at 11:33 AM, davidloeffler dave.loeff...@gmail.com wrote: On May 6, 7.10pm, William Stein wrote: Crap. Thanks for spotting this. Fortunately this is used in only one place in Sage; this one line in congroup_gamma0.py: return [GammaH(N, H) for H in R.multiplicative_subgroups()] Yes, that was how I noticed this -- my fix for 5250 caused multiplicative_subgroups to give a different answer when n = 2, which broke the doctest for that function in congroup_gamma0. On May 6, 7:13 pm, John Cremona john.crem...@gmail.com wrote: Do we have a function which returns (Z/NZ)* as an abelian group? Somehow secretly we do, because it's embedded in the DirichletGroup machinery; but nothing that explicitly creates an AbelianGroup object. Just some clarification. The functionality to do that is not embedded in the DirichletGroup machinery -- what's embedded is that the functionality is *used* there, so David knows it must be in Sage somewhere :-). Here's an example of how to get an explicit description of (Z/NZ)^* as a product of cyclic abelian groups: sage: R = Zmod(341) sage: R.unit_gens() [156, 34] sage: [a.multiplicative_order() for a in R.unit_gens()] [10, 30] sage: euler_phi(341) 300 Thus (Z/341Z)* = Z/10Z + Z/30Z with the map sending (1,0) to 156 and (0,1) to 34. OK, so if anyone did want to implement a class for multiplicative-group-mod-N then all the needed machinery is already there. I had tried r.tab ut had not see the unit_gens() function. Being able to work with abelian groups in all kinds of different arrangements and with subtle relations between them is one of the most critical and central tools needed in implementing computational number theory algorithms. That's why I've put a lot of work into http://trac.sagemath.org/sage_trac/ticket/5882 lately. I did not know of that work, which looks very interesting (and will perhaps make AbelianGroup, as currently implemented, redundant?) John -- William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Wrong answer in IntegerModRing.multiplicative_subgroups
On Wed, May 6, 2009 at 12:13 PM, John Cremona john.crem...@gmail.com wrote: 2009/5/6 William Stein wst...@gmail.com: On Wed, May 6, 2009 at 11:33 AM, davidloeffler dave.loeff...@gmail.com wrote: On May 6, 7.10pm, William Stein wrote: Crap. Thanks for spotting this. Fortunately this is used in only one place in Sage; this one line in congroup_gamma0.py: return [GammaH(N, H) for H in R.multiplicative_subgroups()] Yes, that was how I noticed this -- my fix for 5250 caused multiplicative_subgroups to give a different answer when n = 2, which broke the doctest for that function in congroup_gamma0. On May 6, 7:13 pm, John Cremona john.crem...@gmail.com wrote: Do we have a function which returns (Z/NZ)* as an abelian group? Somehow secretly we do, because it's embedded in the DirichletGroup machinery; but nothing that explicitly creates an AbelianGroup object. Just some clarification. The functionality to do that is not embedded in the DirichletGroup machinery -- what's embedded is that the functionality is *used* there, so David knows it must be in Sage somewhere :-). Here's an example of how to get an explicit description of (Z/NZ)^* as a product of cyclic abelian groups: sage: R = Zmod(341) sage: R.unit_gens() [156, 34] sage: [a.multiplicative_order() for a in R.unit_gens()] [10, 30] sage: euler_phi(341) 300 Thus (Z/341Z)* = Z/10Z + Z/30Z with the map sending (1,0) to 156 and (0,1) to 34. OK, so if anyone did want to implement a class for multiplicative-group-mod-N then all the needed machinery is already there. I had tried r.tab ut had not see the unit_gens() function. Being able to work with abelian groups in all kinds of different arrangements and with subtle relations between them is one of the most critical and central tools needed in implementing computational number theory algorithms. That's why I've put a lot of work into http://trac.sagemath.org/sage_trac/ticket/5882 lately. I did not know of that work, which looks very interesting (and will perhaps make AbelianGroup, as currently implemented, redundant?) Yes. The plan is that once 5882 is done (and optimized), then we'll implement abelian groups very easily as a light wrapper around the code at 5882. And finally, after long last, somebody will successfully (re)write abelian groups in Sage! -- William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On May 6, 2009, at 11:01 AM, David Harvey wrote: On May 6, 10:41 am, kcrisman kcris...@gmail.com wrote: So is there any final consensus on this? Is the following Sage program automatically GPL? {{{ 2+2 }}} Or only in the following form? {{{ Integer(2)+Integer(2) }}} Please no flames! I only wanted to know if there was a consensus, I got sort of confused by 50 messages on this in my RSS reader at once. If there isn't a consensus (and it seems there is not) then please don't reply, and I will go along with Rob B. and publish whatever Sage worksheets I want to under whatever license I deem appropriate, if any. Totally awesome thread guys. What about this one? def is_prime(n): return not any([1 * n / d == n // d for d in range(2, n)]) Works in sage, but not in python. Is it GPL? I think it depends on the context. Ignoring questions of substantiveness, if you were to publish the above code as MyAwsomePrimeDetectingScript.sage then it would need to be licensed under the GPL. If, however, you had this code in a tutorial/worksheet Detecting Primes: a Comparison of Various Methods than I think not (because I wouldn't classify that as a derivative work of Sage). Both the GMP and MPFR manuals contain code that uses GMP/MPFR in their manuals, and I'm sure they're not the only ones. Their manuals are licensed under the GFDL, which is incompatible with the GPL. Perhaps the license is so restrictive that the FSF can't even abide by it, but I take it as an indication that there is at least some leeway here. - Robert --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On 05/06/2009 06:47 PM, William Stein wrote: On Wed, May 6, 2009 at 9:32 AM, Ralf Hemmecke r...@hemmecke.de wrote: On 05/06/2009 07:50 AM, William Stein wrote: On Tue, May 5, 2009 at 3:25 PM, Brian Granger ellisonbg@gmail.com wrote: Hi, I have a question about Sage and the GPL. Here is the main question.. IF I write code in a Sage notebook, AND I redistribute the code, do I need to release my code under the GPL? Here is a bit of background... At a conference in the last year, one of the Sage developers was asked this question, and their answer was... You can do whatever you want with your code, you don't have to release it under the GPL In general, I don't think this answer can be right, but I think it is actually a bit subtle. Here are some of the issues that I see (all of this assumes that I do want to distribute my code to others)... * Is the code pure python or does it use the sage syntax? If the code uses the sage syntax, I think it must be released under the GPL. * Does the code being written actually use any GPL libraries (like the sage python package)? If the code uses GPL libraries, I again think it must be GPL'd. Publicly distributed code using GPL'd library must be GPL'd. Suppose Ondrej's program --- from sage.all import x print x**2 --- were a bit longer to actually contain some creativity (but no line from any GPL source code). Suppose he puts that in a file aaa.sage and distributes that (without sage). Why should there be any restriction on this source? He may, of course put that under BSD (it's open source anyway). The file itself does not use Sage. It's simply a string of characters. Only if somebody downloads Sage, downloads aaa.sage and actually runs aaa.sage, the sage library is used. But then distribution has already happened and there is no obligation for Ondrej to change the license of aaa.sage from BSD to GPL. [snip] Ralf, In this email, what are you basing all your claims on? Numerous claims you make seem to me to contradict statements in the GPL FAQ at http://www.gnu.org/licenses/gpl-faq.html So I'm curious if you're basing everything on what you just tend to wish/believe is true about the GPL based on your memory, or on actually carefully reading the GPL and statements made by the FSF lawyers to clarify their intent regarding the GPL. Generally speaking, I think that if one wants to understand the intent of the GPL, then http://www.gnu.org/licenses/gpl-faq.html is a very good place to look.Almost every question I have about the GPL is clearly answered there. If one directly disagrees with a statement made there, then it is easy to get a lawyer from FSF to provide further clarification/answers. William Did I disagree with gpl-faq.html? Show me where? First, I say it again. If all software were GPL, that would be wonderful. So if people think that the GPL requires notebooks to be further distributed under GPL that's fine with me and, in fact, I like this viral nature of GPL. But if it comes to Ondrej's code, I think it is ridiculous if it were forced to be under GPL. Just suppose Ondrej had mistyped his text so that it looked like --- from asge.all import x print x**2 --- (Note it's asge not sage.) Who would claim that this text must be distributed under GPL? http://www.gnu.org/licenses/gpl-faq.html#CanIUseGPLToolsForNF http://www.gnu.org/licenses/gpl-faq.html#GPLOutput http://www.gnu.org/licenses/gpl-faq.html#WhatCaseIsOutputGPL * If a sage notebook is source code does clicking Share in the notebook constitute distribution. In other words, if a bunch of people start sharing sage notebooks, do they all have to be GPL? No. This is internal distribution, so the GPL doesn't apply. This is no different than the NSA (say) distributing a program from one researcher to another, and obviously they don't have to GPL their code. Ooops, I've just found http://www.gnu.org/licenses/gpl-faq.html#InternalDistribution However, that doesn't say that the GPL doesn't apply. Why should the GPL not apply? The only restriction is: ... without giving the staff permission to release that modified version to outsiders By the GPL each individual inside the company has the right to distribute a modified (organization internal) GPL program under the terms of the GPL (i.e. with sources). But the GPL does not force distribution and the organization may forbid it. So it just means that inside the organization, every one who has the binary form of the program must be able to get the source. No. But for a different reason. The notebook is a separate piece. If you don't distribute it together with Sage, then it's only a string of characters (and as such not particularly useful) and I don't see a reason why such distribution must be under GPL rules. If, however, you choose to distribute your notebook together with Sage then it can be considered an
[sage-devel] Re: strange rounding with SymbolicArithmetic
On May 6, 6:35 pm, Carl Witty carl.wi...@gmail.com wrote: On Wed, May 6, 2009 at 2:20 AM, Yann yannlaiglecha...@gmail.com wrote: Just for the record, isn't the following a bug? sage: p=RealIntervalField(4)(3.1) sage: p.str(style='brackets') '[3.00 .. 3.25]' sage: p 4.? It's a deliberate design decision. To quote from real_mpfi.pyx: When there are two possible results of equal precision and with the same error width, then we pick the one which is farther from zero. (For instance, RIF(0, 123) with two error digits could print as 61.?62 or 62.?62. We prefer the latter because it makes it clear that the interval is known not to be negative.) I do agree In other words, sage: RealIntervalField(4)(0, 1) 1.? prints as the interval [0 .. 2], rather than [-1 .. 1], because IMHO it is useful to be able to know that an interval is nonnegative; and we do this by always picking the result farther from zero whenever there are two possible correct printings. (Note that 3.? and 4.? would both include the interval [3.00 .. 3.25], so they are both correct in that sense.) I would agree if it was 4.?1 (even I find something like 4.?±1 easier to understand) but without the error explicitely written, I would prefer to do what is in the docstring: In question style (the default), we print the known correct part of the number My understanding of this sentence is that we print the digits known for sure. And if a number is in the interval [3.00 .. 3.25], this should be 3.? The design you decision si only relevant IMHO if the error digits are explicitely written It would be possible to use a different rule for choosing between two correct answers, but I like the current one. Carl --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
On Wed, May 6, 2009 at 1:46 PM, Yann yannlaiglecha...@gmail.com wrote: In other words, sage: RealIntervalField(4)(0, 1) 1.? prints as the interval [0 .. 2], rather than [-1 .. 1], because IMHO it is useful to be able to know that an interval is nonnegative; and we do this by always picking the result farther from zero whenever there are two possible correct printings. (Note that 3.? and 4.? would both include the interval [3.00 .. 3.25], so they are both correct in that sense.) I would agree if it was 4.?1 (even I find something like 4.?±1 easier to understand) but without the error explicitely written, I would prefer to do what is in the docstring: In question style (the default), we print the known correct part of the number My understanding of this sentence is that we print the digits known for sure. And if a number is in the interval [3.00 .. 3.25], this should be 3.? The design you decision si only relevant IMHO if the error digits are explicitely written We definitely don't want to print the digits known for sure. Consider the interval [0.99 .. 1.01], which would print as 1.00? with the current code (I'm ignoring the fact that the endpoints are not exactly representable in binary). With printing the digits known for sure, the first digit that we know for sure is the tens digit, which is known to be zero; that would give 0.?e1, which gives vastly less information than 1.00?. Perhaps the docstring you quote should be adjusted? Elsewhere (in the module docstring) we find this variant: In question style, we print the known correct part of the number, followed by a question mark. The question mark indicates that the preceding digit is possibly wrong by +/- 1. Maybe that second sentence should be copied into the docstring for .str()? Carl --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On May 6, 10:27 pm, Ralf Hemmecke r...@hemmecke.de wrote: But if it comes to Ondrej's code, I think it is ridiculous if it were forced to be under GPL. Just suppose Ondrej had mistyped his text so that it looked like --- from asge.all import x print x**2 --- (Note it's asge not sage.) Who would claim that this text must be distributed under GPL? Another example I wonder about, in the same (contrived) spirit: It's entirely possible to write original Sage code, in, say, an email, without ever having retrieved a copy of Sage (e.g. by simply reading online docs); and so never accepting its terms of use. How can one possibly violate a license one never agreed to in the first place? I guess there's two discussions going on here; one for text and one for worksheets...though I find it hard to seperate the two. I know, IANAL... Dag Sverre --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] sage patches to ghmm
Hello, The ghmm developers have posted a 0.9rc1 release candidate on their website: http://sourceforge.net/project/showfiles.php?group_id=67094 with the hopes of doing an actual release shortly (they said they were doing it last Friday, actually, but I think are delaying because I said I'd review the software for minor bugs found by Debian's automated checking tools). Since they haven't released in several years, this might be a good time to send them any patches Sage has against ghmm that haven't been applied there already. I can't figure out what those are, however, because the .spkg in Sage 3.4.1 seems to have a bunch of patches that don't do anything (i.e. the file being copied in is replacing an identical file). Did someone accidentally overwrite the copies in the upstream directory, or did the patches all get merged already? -Tim Abbott --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
On May 6, 11:04 pm, Carl Witty carl.wi...@gmail.com wrote: On Wed, May 6, 2009 at 1:46 PM, Yann yannlaiglecha...@gmail.com wrote: In other words, sage: RealIntervalField(4)(0, 1) 1.? prints as the interval [0 .. 2], rather than [-1 .. 1], because IMHO it is useful to be able to know that an interval is nonnegative; and we do this by always picking the result farther from zero whenever there are two possible correct printings. (Note that 3.? and 4.? would both include the interval [3.00 .. 3.25], so they are both correct in that sense.) I would agree if it was 4.?1 (even I find something like 4.?±1 easier to understand) but without the error explicitely written, I would prefer to do what is in the docstring: In question style (the default), we print the known correct part of the number My understanding of this sentence is that we print the digits known for sure. And if a number is in the interval [3.00 .. 3.25], this should be 3.? The design you decision si only relevant IMHO if the error digits are explicitely written We definitely don't want to print the digits known for sure. Consider the interval [0.99 .. 1.01], which would print as 1.00? with the current code (I'm ignoring the fact that the endpoints are not exactly representable in binary). With printing the digits known for sure, the first digit that we know for sure is the tens digit, which is known to be zero; that would give 0.?e1, which gives vastly less information than 1.00?. Perhaps the docstring you quote should be adjusted? Elsewhere (in the module docstring) we find this variant: In question style, we print the known correct part of the number, followed by a question mark. The question mark indicates that the preceding digit is possibly wrong by +/- 1. Maybe that second sentence should be copied into the docstring for .str()? Carl or print the error digit 4.?1 (expicit is better than implicit, etc :) ) --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Wrong answer in IntegerModRing.multiplicative_subgroups
OK. In that case I'll upload a fix for #5250 without addressing this issue, and just fudge the multiplicative_subgroups method so it returns the same wrong output it did before, so the doctest in congroup_gamma0 passes. Once we have a new abelian groups framework based on #5882, someone can then go away and write a subgroups method for arbitrary abelian groups which gives correct output, and we can fix multiplicative_subgroups using that. David On May 6, 8:46 pm, William Stein wst...@gmail.com wrote: On Wed, May 6, 2009 at 12:13 PM, John Cremona john.crem...@gmail.com wrote: 2009/5/6 William Stein wst...@gmail.com: On Wed, May 6, 2009 at 11:33 AM, davidloeffler dave.loeff...@gmail.com wrote: On May 6, 7.10pm, William Stein wrote: Crap. Thanks for spotting this. Fortunately this is used in only one place in Sage; this one line in congroup_gamma0.py: return [GammaH(N, H) for H in R.multiplicative_subgroups()] Yes, that was how I noticed this -- my fix for 5250 caused multiplicative_subgroups to give a different answer when n = 2, which broke the doctest for that function in congroup_gamma0. On May 6, 7:13 pm, John Cremona john.crem...@gmail.com wrote: Do we have a function which returns (Z/NZ)* as an abelian group? Somehow secretly we do, because it's embedded in the DirichletGroup machinery; but nothing that explicitly creates an AbelianGroup object. Just some clarification. The functionality to do that is not embedded in the DirichletGroup machinery -- what's embedded is that the functionality is *used* there, so David knows it must be in Sage somewhere :-). Here's an example of how to get an explicit description of (Z/NZ)^* as a product of cyclic abelian groups: sage: R = Zmod(341) sage: R.unit_gens() [156, 34] sage: [a.multiplicative_order() for a in R.unit_gens()] [10, 30] sage: euler_phi(341) 300 Thus (Z/341Z)* = Z/10Z + Z/30Z with the map sending (1,0) to 156 and (0,1) to 34. OK, so if anyone did want to implement a class for multiplicative-group-mod-N then all the needed machinery is already there. I had tried r.tab ut had not see the unit_gens() function. Being able to work with abelian groups in all kinds of different arrangements and with subtle relations between them is one of the most critical and central tools needed in implementing computational number theory algorithms. That's why I've put a lot of work into http://trac.sagemath.org/sage_trac/ticket/5882lately. I did not know of that work, which looks very interesting (and will perhaps make AbelianGroup, as currently implemented, redundant?) Yes. The plan is that once 5882 is done (and optimized), then we'll implement abelian groups very easily as a light wrapper around the code at 5882. And finally, after long last, somebody will successfully (re)write abelian groups in Sage! -- William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] #6000 [with patch, needs review] Sets enumerated by exploring a search space with a (lazy) tree or graph structure
Dear Sage and Sage-combinat developers, Patch of the day: #6000 ([with patch, needs review] Sets enumerated by exploring a search space with a (lazy) tree or graph structure That's rather trivial code (searches in a graph), but has lots of applications, and I ended up written it again too many times in my life. So, this is an attempt at not doing it once again. It's used extensively in upcoming patches to enumerate elements in a submonoid, an ideal of a poset, a descent classes in a Coxeter group, a crystal, etc. We had the analog in MuPAD-Combinat and used it a lot, but never came up with a good interface. So, it needs a review, and more importantly feed back! Best, Nicolas -- This patches extend the sage.combinat.backtrack library with other generic tools for constructing large sets whose elements can be enumerated by exploring a search space with a (lazy) tree or graph structure. - SearchForest: Depth first search through a tree descrived by a `child` function - GenericBacktracker: (was readilly there) Depth first search through a tree descrived by a `child` function, with branch pruning, ... - TransitiveIdeal: Depth first search through a graph described by a `neighbours` relation - TransitiveIdealGraded: Breath first search through a graph described by a `neighbours` relation Todo: the names are crappy and inconsistent, because they come from different point of views. We need to find a good naming scheme!!! Do we want to emphasize the underlying graph/tree structure? The branchbound aspect? The transitive closure of a relation point of view? Todo: which interface do we want: - TransitiveIdeal(relation, generators) - TransitiveIdeal(generators, relation) The code needs to be standardized once the choice is done. -- -- Nicolas M. Thiéry Isil nthi...@users.sf.net http://Nicolas.Thiery.name/ --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On 05/06/2009 07:44 PM, Robert Bradshaw wrote: On May 6, 2009, at 10:37 AM, Tim Lahey wrote: Doesn't both Maple and Mathematica make use of GMP? I thought they did. They aren't licensed under the GPL. GMP is LGPL, not GPL. If what Ralf said were correct (which it isn't), there would be no need for an LGPL at all. Could you point me exactly to the place where I am wrong? Suppose you have a library A that is distributed under license L. If you write a program B that uses the library A *and* you create a binary and distribute the binary for B then that contains A (I don't care whether that is static or dynamic linking). Let's agree that B without the library A is the extension E (which is purely new code). If you distribute B=A+E and want to keep the sources for E private then you cannot do this if L=GPL, but you can if L=LGPL. This settles the need for LGPL. However, I did not describe this case. Even if L=GPL, you can distribute a form of E in a non-source form (which is probably useless without A) under any license you like. You might have produced that form of E without even having any GPL software on your computer. So why would somebody have the right to force you to distribute E under GPL? What if A was formerly under BSD and then changed to GPL? Would that mean you suddenly can no longer distribute E under a closed license. Why? If you don't distribute A you don't distribute GPL code and thus have no obligation. Now if a person P takes your E and also gets A and in some way produces a binary B, then P has no right to distribute B if L=GPL, since this would require him to distribute B under GPL as well, but without the sources for E this is clearly impossible. But of course, it is no problem to use B for private things. Now think of A as being Sage and E as being a notebook. Ralf --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On May 6, 2009, at 12:09 AM, mabshoff wrote: Note that any GPLed codebase like Singular or pari would also be viral to high level code and I cannot believe that this is the way the GPL is intended. Anything using readline, i.e. IPython, would be infected, too, and that goes way too far IMHO (You can obviously use libedit or no readline at all to work around this). I could very well be wrong, but according to RMS anything using readline *is* infected: http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/doc/Why-CLISP-is-under-GPL I would be interested in knowing why this is _not_ the case, i.e. what caused clisp to have problems but not IPython. Not a big fan of the GPL, Ivan --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Sage 4.0 plan
Hi, This is the plan for getting Sage-4.0 out. Help in any way you can. Wed May 6: * mhansen (by 2am) -- patches/todo list so anybody can help. * robertwb will have reviewed david roe's * mabshoff provides bill with symmetrica bug testcase * mabshoff fix libtool issue for pynac Thu May 7: sage-4.0.alpha0.tar -- ecl; mop up positive review; freebsd burcin updated pynac (this will better test ecl) * wstein, robertwb, nick, mhansen -- help with pynac/symbolics doctest Fri May 8: sage-4.0.alpha1.tar -- mhansen's symbolics get in david roe's patch Sat May 9: Sage-4.0 day -- IRC /merge/referee: goal: coverage to 75.0%. E.g., * wstein or cwitty -- referee implicit plot 3d Sun May 10: sage-4.0.rc0.tar (feature freeze) * fix singular prompt issue (solaris fix) * fix other singular remaining issues. Mon May 11: fix fallout;malb fix os x libsingular (?) Tue May 12: sage-4.0.rc1.tar Wed May 13: Thu May 14: sage-4.0.final.tar Fri May 15: Release sage-4.0.tar. -- 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 sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
On Wed, May 6, 2009 at 2:16 PM, Yann yannlaiglecha...@gmail.com wrote: or print the error digit 4.?1 (expicit is better than implicit, etc :) ) Well, again this was an explicit decision; the thinking was that if somebody saw 1.234567? they might be able to guess approximately what it means without reading the documentation, but 1.234567?1 is more confusing and less likely to have somebody correctly guess what it means. What do other people think? Carl --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
1.234567? +1 1.234567?1 is more -1 Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: sage patches to ghmm
On May 6, 2:16 pm, Tim Abbott tabb...@mit.edu wrote: Hello, Hi Tim, The ghmm developers have posted a 0.9rc1 release candidate on their website: http://sourceforge.net/project/showfiles.php?group_id=67094 Good. with the hopes of doing an actual release shortly (they said they were doing it last Friday, actually, but I think are delaying because I said I'd review the software for minor bugs found by Debian's automated checking tools). Cool. Since they haven't released in several years, this might be a good time to send them any patches Sage has against ghmm that haven't been applied there already. Well, William did some pretty deep changes upstream does not want, i.e. Sage does not use the XML interface that they want to keep non- optional, so I am not sure how much of the code should actually go upstream. I can't figure out what those are, however, because the .spkg in Sage 3.4.1 seems to have a bunch of patches that don't do anything (i.e. the file being copied in is replacing an identical file). Did someone accidentally overwrite the copies in the upstream directory, or did the patches all get merged already? Sounds like an accident. As is the code in Sage is actually partially broken on Itanium/Linux (some allocator just segfaults), so this ought to be sorted out in Sage 4.0.x. Right now the plan is to do 4.0 before SD 15, 4.0.1 after SD 15 with work from SD 15 and patches that didn't make it into 4.0. and then hopefully sort out everything for Debian for 4.0.2, i.e. about a month from now. Does that fit with your time table? After that we ought to have 4.1 which should deal with the category patches, etc. -Tim Abbott Cheers, Michael --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Sage 4.0 plan
On May 6, 5:53 pm, William Stein wst...@gmail.com wrote: Hi, This is the plan for getting Sage-4.0 out. Help in any way you can. Wed May 6: * mhansen (by 2am) -- patches/todo list so anybody can help. * robertwb will have reviewed david roe's * mabshoff provides bill with symmetrica bug testcase *stand alone* testcase :) * mabshoff fix libtool issue for pynac I think Mike already partially fixed that, but we will see. Thu May 7: sage-4.0.alpha0.tar -- ecl; mop up positive review; freebsd burcin updated pynac (this will better test ecl) * wstein, robertwb, nick, mhansen -- help with pynac/symbolics doctest Fri May 8: sage-4.0.alpha1.tar -- mhansen's symbolics get in david roe's patch Sat May 9: Sage-4.0 day -- IRC /merge/referee: goal: coverage to 75.0%. E.g., * wstein or cwitty -- referee implicit plot 3d William will announce this separately later tonight. Sun May 10: sage-4.0.rc0.tar (feature freeze) * fix singular prompt issue (solaris fix) * fix other singular remaining issues. singular - solaris? Mon May 11: fix fallout; malb fix os x libsingular (?) Tue May 12: sage-4.0.rc1.tar Wed May 13: Thu May 14: sage-4.0.final.tar Fri May 15: Release sage-4.0.tar. During SD 15: Sage 4.0 release party :) -- William Stein Associate Professor of Mathematics University of Washingtonhttp://wstein.org --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
On May 6, 5:43 pm, Ivan Andrus g...@macmail.com wrote: On May 6, 2009, at 12:09 AM, mabshoff wrote: Note that any GPLed codebase like Singular or pari would also be viral to high level code and I cannot believe that this is the way the GPL is intended. Anything using readline, i.e. IPython, would be infected, too, and that goes way too far IMHO (You can obviously use libedit or no readline at all to work around this). I could very well be wrong, but according to RMS anything using readline *is* infected:http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/doc/Why-CLISP... Yes, that is universally agreed upon. The issue is what is a derived work when GPLed interpreter uses extension modules that are GPL due do linking against GPLed libraries. I find it strange that code written on top of a GPLed interpreter is fine, but if you write a GPLed interpreter that loads GPLed extensions according the the FSF that code written on top of the interpreter is subject to the GPL (IANAL, this is how I read the FSF's position). I would be interested in knowing why this is _not_ the case, i.e. what caused clisp to have problems but not IPython. IPython is licensed under the new BSD license, so it is GPL compatible. Not a big fan of the GPL, Well, that is a whole other thread if it gets started, but it should be on sage-flame :) Ivan Cheers, Michael --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
On May 6, 2009, at 6:38 PM, Nick Alexander wrote: 1.234567? +1 1.234567?1 is more -1 Agreed. - Robert --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
Nick Alexander wrote: 1.234567? +1 1.234567?1 is more -1 I vote the same as Nick. Jason --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Is the pre-built clisp.spkg for Solaris SPARC available? If so where?
Michael said he would post a pre-built clisp for Solaris, as it appears there are serious issues with clisp with any recent compiler for Solaris. Is is available, and if so where can I find it? Sorry if this has been answered in another thread. The discussions were originally on a thread about a specific Sage release, but I can't seem to find the reply, but as the thread has around 50 (wild guess) entries, it is not always easy to find the bit on is looking for. dave --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: Clarification of Sage and GPL
Em Qua, 2009-05-06 às 00:29 -0700, William Stein escreveu: On Tue, May 5, 2009 at 11:57 PM, Robert Bradshaw rober...@math.washington.edu wrote: What about publishing (collections of) worksheets under the CC license? Code snippets in books? Are your books GPL compatible? (Maybe you could claim fair use.) I have no trouble licensing code under the GPL, but I do think this places an onerous and inappropriate burden on all *users* of Sage, and the GPL is supposed to be about modifying/distributing code. including yourself. Building software on top of GPL'd libraries like Sage *does* have serious implications toward sharing. That's sort of the point of the GPL'd. There's no sense in hiding that. Suppose you spend three years implementing an algorithm as part of Sage to compute X (say some Monsky-Washnitzer cohomology computations). Then somebody else writes and publishes a clever paper that includes a several-page Sage program that uses your implementation of X (plus many other things in Sage) to compute Y (say p-adic Regulators of Jacobians of genus 2 curves). Would you definitely be allowed to use their new code and include it in Sage? I think the GPL was designed to ensure that computer programs that build on your programs must be shared under compatible conditions. This has the pro that it means that your work is protected in that when people build on it, they can't hoard their improvements. It has the drawback that it puts an onerous (and inappropriate?) burden on those same people, that when they on your GPL'd work, they can't hoard their improvements. In one sense at least, Sage can never be an alternative to Maple/Mathematica/Matlab/Magma, etc. With the Ma's, if one wrote a big program on top of them, and wanted to distribute the program as a complete self-contained closed source program (say something like a standalone Mathematica demonstration), at least it would be technically and legally possible. One would have to do some sort of contract with say Wolfram, Inc., but that's quite reasonable. With Sage that would be impossible, since the copyright is spread over hundreds of people (some dead). Scipy/Numpy/Enthought's stack does provide this extra feature, which Sage never will. There's a little good and a little bad in everything. William Here's something that may really upset you (specially since earlier you asked about which developers could be infringing the GPL, if one thinks about the most restrictive interpretation). You wrote a book last year. It does include code that should be executed in Sage. However, you haven't released the book under the GPL and instead signed with a publisher to distribute your book. OK, you did take some measures to ensure the book will be freely available to the public after some time, however the GPL does not include text to deal with that. So, if you really want to take the strict interpretation, you should make available your book right now, which would of course break your contract with your publisher. So, what could you do now? Could other developers sue you to make you release your book under the GPL? If other people published books which included Sage example code, could you sue them to release their books under the GPL? Now, if one mathematician happens to solve one of the Millenium Prize Problems ( http://en.wikipedia.org/wiki/Millennium_Prize_Problems ) in Sage. Would his proof be GPL? Would other proofs that depend on that also be GPL? What about the result itself? I guess this would pretty much restrict much of Mathematics itself, contrary to the spirit of mathematics. Just my 2 cents with a truckload of salt. Ronan PS: Just to mention, if I had to choose I would release my libraries as LGPL, which would avoid much of the problems of both sides, or use some sort of dual-licensing, or even just not release them, but that's too extreme. --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---
[sage-devel] Re: strange rounding with SymbolicArithmetic
On Wed, May 6, 2009 at 6:28 PM, Carl Witty carl.wi...@gmail.com wrote: On Wed, May 6, 2009 at 2:16 PM, Yann yannlaiglecha...@gmail.com wrote: or print the error digit 4.?1 (expicit is better than implicit, etc :) ) Well, again this was an explicit decision; the thinking was that if somebody saw 1.234567? they might be able to guess approximately what it means without reading the documentation, but 1.234567?1 is more confusing and less likely to have somebody correctly guess what it means. What do other people think? Carl I'm not voting on anything, but when my undergrad students in the Sage class I'm teaching learned about RIF, they all nearly uniformly thought they had made a mistake when they got output that contained a ?. -- William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://www.sagemath.org -~--~~~~--~~--~--~---