Note: I will have another relatively free week before I start working next monday. I would very much like to make all desired changes to get my code in by then.

On 10.06.2012 10:34, Tom Bachmann wrote:
Hi,

first of all I'd like to apologize for being slightly unresponsive
during the last couple of weeks ... it's been exam time.

Partly as a result of this, my pull requests have been sitting around
for a rather long time now. As a reminder, there is a trigsimp extension
[1], and various commutative algebra related pull requests [2]. As far
as I am aware, these pull requests are fully rebased and pass tests in
all python versions from 2.5 to 3.2. This applies in particular to the
trigsimp PR - could anyone give this a final once-over and decide if it
can be committed?

Regarding the AGCA pull requests, I have to (embarrasedly) say that
while I hope the many smallish PRs made reviewing easier, I have
somewhat lost track of which of these are commit-ready and which not. As
far as I can tell I have addressed all comments, with exception of those
elaborated on below:

- naming of the implementation classes

In my system, there are "abstract" base classes implementing user-facing
functionality, and "concrete" subclasses supplying vital methods used by
the abstract code. For example, there is an "abstract" class for
submodules (called SubModule), which implements all the niceties, and
there is a "concrete" subclass which implements core functionality, like
element membership and syzygy computation. It is currently named
SubModulePolyRing. This is because while the concept of submodules makes
sense over arbitrary rings, this implementation uses groebner basis
computations, which only work for polynomial rings.

In fact, the implementation only works with polynomial rings over
*fields*. It has been suggested that if (or when) this code might be
extended to work in more general cases (there certainly are groebner
basis algorithms for various more general cases), the name
"FreeModulePolyRing" might turn out to be too general - i.e. what should
the new class be called?

I see I'm not managing to explain this simple issue in a concise way. So
let me put it like this: what should the naming convention be for the
concrete subclasses? Should I rename SubModulePolyRing to
SubModulePolyRingField, or perhaps SubModulePolyField? Or might
SubModulePolyRing do, and the new class might be called SubModulePolyPID?

- printing of matrices

As discussed in issue 2865, matrix 'str' printing should not produce 2D
pictures. The same goes for my homomorphism class. However the
homomorphism class actually *uses* the matrix printing. So my question
is: is anyone working on fixing the matrix printing problem? Because if
not I will do it (and then my homomorphism printing will be fixed
automatically - except for a few doctests it will break).

- coercion in equality testing

This is a bit of a conceptual issue. In the module classes, I'm allowing
expressions like

module_element == [x, y, z].

Here the __eq__ function of module_element automatically tries to coerce
[x, y, z]. Functions like __add__ etc also do this. I found it handy,
because otherwise one always has to write

module_element = my_module.convert([x, y, z]).

I guess my general question is: is this a good idea? Does the gained
syntactic flexiblity outweigh the risks? (what risks/problems are
there?) A related issue is that I implemented similar automatic coercion
in the new QuotientRing class. Again, I think this is quite handy, since
it allows writing

foo == 1

instead of writing "foo = my_ring.convert(1)" or "foo == 1 + my_ideal".
On the other hand the last notation can be fairly short if used
consistently. The problem with this automatic coercion in QuotientRing
is that no other polys/domains classes do it, so it's somewhat
inconsistent.


Ok. I think I have woffled for long enough. Please let me know what you
think.

Best,
Tom

[1] https://github.com/sympy/sympy/pull/1258
[2] https://github.com/sympy/sympy/pull/1209
https://github.com/sympy/sympy/pull/1218
etc


--
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sympy@googlegroups.com.
To unsubscribe from this group, send email to 
sympy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to