SymPy was accepted as a GSoC org

290 views
Skip to first unread message

Aaron Meurer

unread,
Feb 27, 2017, 5:36:23 PM2/27/17
to sy...@googlegroups.com
SymPy was accepted as a GSoC org again this year.

Interested students, please read our instructions on how to apply here
https://github.com/sympy/sympy/wiki/GSoC-2017-Student-Instructions.
The most important things are to pick an idea from our ideas list to
discuss with us, and to start working on a patch to fulfill your patch
requirement.

Mentors, I will be sending you invites on Google's website. If you
never signed up on the ideas page, please let me know so I can invite
you.

Aaron Meurer

Gaurav Dhingra

unread,
Mar 1, 2017, 11:41:18 AM3/1/17
to sy...@googlegroups.com

I've been thinking about applying again, though I am not sure what the project should be. Are there any good algorithms that are not implemented that could make a good project (I've read the ideas page)? I have 3 projects in mind:
(a). Implementation of Karr's algorithm, I believe no one has done much work except Matthew Rocklin who did work on Concrete module.
(b). Complex Analysis: I quote the statement by Kalevi:

> What I think should be added to SymPy is the Laurent series expansion of meromorphic functions.
> The trouble with the current implementation of limit is that it often goes too early to gruntz.
> That should only be used for functions that are not meromorphic but have an essential singularity.

Also he opened a few issues on SymPy which might also use Complex Analysis. Plus, since I have a course on Complex Analysis, which include topics . But I am not sure even if it is possible to implement these things in a Computer Algebra System.

(c). Last summer Sumith mentioned about A dedicated bug fixing project in GSoC . Since I feel like I can try to handle quite a few issues of multiple modules, I would want to apply for this one if the above two doesn't have a mentor alloted to them.

I might not want to mentor a project, since that seems like too much pressure for me. Applying as a student would be my priority.

Gaurav Dhingra

Ondřej Čertík

unread,
Mar 1, 2017, 2:59:40 PM3/1/17
to sympy
Here is a really cool project that I would love to see happen:

https://github.com/sympy/sympy/issues/12233

Ondrej

>
> Gaurav Dhingra
>
>
> On Monday 27 February 2017 11:05 PM, Aaron Meurer wrote:
>
> SymPy was accepted as a GSoC org again this year.
>
> Interested students, please read our instructions on how to apply here
> https://github.com/sympy/sympy/wiki/GSoC-2017-Student-Instructions.
> The most important things are to pick an idea from our ideas list to
> discuss with us, and to start working on a patch to fulfill your patch
> requirement.
>
> Mentors, I will be sending you invites on Google's website. If you
> never signed up on the ideas page, please let me know so I can invite
> you.
>
> Aaron Meurer
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sympy+un...@googlegroups.com.
> To post to this group, send email to sy...@googlegroups.com.
> Visit this group at https://groups.google.com/group/sympy.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/fd4b4702-983b-4dbd-00f6-bff8b9142e0e%40gmail.com.
>
> For more options, visit https://groups.google.com/d/optout.

Aaron Meurer

unread,
Mar 1, 2017, 6:47:30 PM3/1/17
to sy...@googlegroups.com
Other algorithms that would be useful, if you believe you are capable of implementing them:

- cylindrical algebraic decomposition (CAD)

- the Risch algorithm. 

There are references on the ideas page. Both are challenging from a mathematical point of view (though I believe less so than Karr).

Aaron Meurer 


Robert Lee

unread,
Mar 1, 2017, 9:16:31 PM3/1/17
to sympy
This is something I'm working on for algebraic expressions at the moment. Coming up with a rules based solving mechanism has been proven to be quite a bit challenging as I'm interested in all the different variations one can take at any given solve step. I've found myself following a similar pattern to the manual_integrate package where I use the alternatives rule to delineate the different possibilities.

Gaurav Dhingra

unread,
Mar 2, 2017, 5:06:35 PM3/2/17
to sy...@googlegroups.com

Hi Aaron,

I might want to look at Risch integration algorithm. Seeing the idea, it seems like Chetna worked on it in summer 2013. Did anyone else (other than Chetna) worked on the integration module (probably in GSoC) after your 2010 GSoC project? Since that would give me a list of things to look at for deciding as to what remains to be done by reading their blogs.

Gaurav Dhingra


For more options, visit https://groups.google.com/d/optout.

-- 
Thanks
Gaurav Dhingra
(sent rom Thunderbird email client)

Gaurav Dhingra

unread,
Mar 2, 2017, 5:17:57 PM3/2/17
to sy...@googlegroups.com

Also I see a list of references for it here https://github.com/sympy/sympy/wiki/Technical-References#symbolic-integration , which among these would be good to start first? (brief idea would suffice)

Gaurav Dhingra


On Thursday 02 March 2017 12:17 AM, Aaron Meurer wrote:

For more options, visit https://groups.google.com/d/optout.

-- 
Thanks
Gaurav Dhingra
(sent from Thunderbird email client)

Aaron Meurer

unread,
Mar 2, 2017, 5:29:47 PM3/2/17
to sy...@googlegroups.com
The main reference is Bronstein's book, "Symbolic Integration I:
Transcendental Functions". Most of what is in that book has already
been implemented, but the trigonometric case has not. Bronstein's
paper "Symbolic Integration Tutorial" (which can be found here
https://www-sop.inria.fr/cafe/Manuel.Bronstein/publications/mb_papers.html)
gives a high level overview of the whole algorithm, including the
algebraic and mixed cases (his book only deals with the transcendental
case). Unfortunately, the "easiest" bits from the book have already
been implemented, and what remains are algorithms that don't have
pseudocode. The algebraic case will require more references than
Bronstein's book.

As for the work since Chetna, other than the still open PRs
https://github.com/sympy/sympy/pulls/cheatiiit, the only work I am
aware of is this pull request by jksuom
https://github.com/sympy/sympy/pull/11761.

Aaron Meurer
> https://groups.google.com/d/msgid/sympy/c2bb4e3c-4ec1-6dd1-6fa1-4b8b9bc09f47%40gmail.com.

Gaurav Dhingra

unread,
Mar 12, 2017, 2:55:42 PM3/12/17
to sympy
Hi Aaron,

Considering my mathematical background and knowledge and after consulting Kalevi, I have doubt over my ability to work on Symbolic Integration (especially for algebraic part integration). But considering the amount work that remains to be done in the transcendental part integration + Completing the un-merged pull requests (by Kalevi and Chetna) do you think that would be enough for a GSoC project? Since I don't want to get into the Algebraic part integration.

Thanks

Aaron Meurer

unread,
Mar 12, 2017, 10:20:12 PM3/12/17
to sy...@googlegroups.com
Potentially. I would need to take a closer look at how much remains to
be done for the trigonometric case.

Aaron Meurer

On Sun, Mar 12, 2017 at 10:55 AM, Gaurav Dhingra
> https://groups.google.com/d/msgid/sympy/f25f4d51-6aa8-4d99-8fb7-7b426cf3b5da%40googlegroups.com.

Gaurav Dhingra

unread,
Mar 13, 2017, 2:01:07 PM3/13/17
to sy...@googlegroups.com

There does not seem to be any report of the project of Chetna, https://github.com/sympy/sympy/wiki/GSoC-2013-Report, or may be I couldn't find it anywhere. In any case I have started writing the proposal for completing the Transcendental part integration, since I very much like the impact of the project.

-- 
Gaurav Dhingra
(Sent from Thunderbird email client)

Archit Saxena

unread,
Mar 13, 2017, 4:43:16 PM3/13/17
to sympy
Respected Sir
I went through the  project lists of sympy. I am interested in 4 projects : 
1.Ordinary diffrential equations
2.Series expansion
3.Multivariate polynomials and factorization
4.Implementation of vector integration

I have done advanced level calculus courses (uptil vector integration) with good grades  in college and i also am a fluent programmer in python(i have done 2 projects in  python, on image processing and importing c functions to python.

How should i search for a mentor?Should i fix a bug and then contact you again for the above mentioned projects?

Thanking you
ARCHIT SAXENA
BITS PILANI

Aaron Meurer

unread,
Mar 13, 2017, 5:06:02 PM3/13/17
to sy...@googlegroups.com
I think you'll need to look at the merged pull requests to see what was done. 

Aaron Meurer 

Gaurav Dhingra

unread,
Mar 14, 2017, 1:03:27 PM3/14/17
to sy...@googlegroups.com

I am seeing what remains to be done. Chetna's pull request PR #2380 is an implementation of Coupled Differential System(+ other things), which is present as Chapter 8 in the Symbolic Integration (Manuel Bronstein). In total there are 9 chapters, and looking at chapter 9 doesn't contain much of the pseudo code or is it just a theoretical chapter for aide? I don't know if the all the chapters from book (Manuel Bronstein) were implemented in order without skipping any.


For more options, visit https://groups.google.com/d/optout.

Aaron Meurer

unread,
Mar 14, 2017, 6:20:29 PM3/14/17
to sy...@googlegroups.com
Chapter 9 is a bit different from the rest. It is a lot more
theoretical, but it is needed for the implementation. It tells you how
you can build the differential extension in a way that you know is
transcendental. For instance, you can prove (from the theorems in
chapter 9) that log(exp(x) + 1) is transcendental over QQ(x, exp(x)),
so it can be added as a differential extension. On the other hand,
log(exp(2*x)) is not, and the algorithm, which comes from the theorems
of chapter 9, tells you how to rewrite it in terms of x and exp(x) (in
this case, 2*x).

This is important because the algorithm everywhere assumes that the
extensions are transcendental. A nontranscendental (i.e., algebraic)
extension could produce a wrong answer (although, and this is an
interesting direction for research, I believe only a wrong answer in
the sense that it might tell you something is not elementary when it
isn't, see https://github.com/sympy/sympy/issues/11770).

For example, on that issue, I naively integrate f = exp(log(x)/2)
using risch, and it thinks it is nonelementary (it isn't, since f =
sqrt(x)). The problem is that the algorithm's decision procedures for
when an integral is nonelementary are based on the extensions being
transcendental, and QQ(x, log(x), exp(log(x)/2)) is not transcendental
(since y = exp(log(x)/2) is algebraic over the rest, satisfying y**2 -
x = 0). The structure theorems tell us how to reject exp(log(x)/2)
(or, if it were something like exp(log(x)*2), to just rewrite it in
terms of the rest). If you want to understand how this works, you
might try running through the code for risch_integrate(exp(log(x)/2,
evaluate=False), x) in a debugger.

For exponentials and logs, the theorems are pretty straightforward
(although the book doesn't have pseudocode, as I recall). They are
implemented in is_deriv_k and is_log_deriv_k_t_radical in prde.py. We
need a similar algorithm for the tangent case, to tell if a tangent is
transcendental over an extension. I forget what the exact structure
theorem looks like (I'll need to check my book later when I get home),
but I believe it is also relatively straightforward.

Yes, some of the book was skipped. Only half of chapter 7 was
implemented (Kalevi's PR does some work in this area). There are also
sections of the previous chapters that depend on things that aren't
yet implemented, so they aren't done yet either.

Aaron Meurer

On Tue, Mar 14, 2017 at 9:03 AM, Gaurav Dhingra
> https://groups.google.com/d/msgid/sympy/7c637778-650a-0ad3-d65e-4b2f3fadd537%40gmail.com.
Reply all
Reply to author
Forward
0 new messages