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 <gauravdhingra.g...@gmail.com> wrote: > 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. > > > On Monday 13 March 2017 10:35 PM, Aaron Meurer wrote: > > I think you'll need to look at the merged pull requests to see what was > done. > > Aaron Meurer > > On Mon, Mar 13, 2017 at 10:01 AM Gaurav Dhingra > <gauravdhingra.g...@gmail.com> wrote: >> >> 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. >> >> >> On Monday 13 March 2017 03:49 AM, Aaron Meurer wrote: >> >> 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 >> <gauravdhingra.g...@gmail.com> wrote: >> >> 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 >> >> On Thursday, March 2, 2017 at 10:59:47 PM UTC+5:30, Aaron Meurer wrote: >> >> 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 >> >> >> On Thu, Mar 2, 2017 at 12:17 PM, Gaurav Dhingra >> <gauravdhi...@gmail.com> wrote: >> >> 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: >> >> 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 >> >> >> On Wed, Mar 1, 2017 at 9:59 AM Ondřej Čertík <ondrej...@gmail.com> >> wrote: >> >> On Wed, Mar 1, 2017 at 4:40 AM, Gaurav Dhingra >> <gauravdhi...@gmail.com> wrote: >> >> 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. >> >> 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. >> >> -- >> 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/CADDwiVBUVroL6MCUFjtjoLBG1b6Pgqf_QA%2Bcu%2BdMv-zyi%2Bc_ZQ%40mail.gmail.com. >> For more options, visit https://groups.google.com/d/optout. >> >> -- >> 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/CAKgW%3D6JFLu%3DEx2KWJy%2Bi7x7TQ-OPrV4UZMw36Kh9xzx5cKEbZw%40mail.gmail.com. >> For more options, visit https://groups.google.com/d/optout. >> >> >> -- >> Thanks >> Gaurav Dhingra >> (sent from Thunderbird email client) >> >> -- >> 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/c2bb4e3c-4ec1-6dd1-6fa1-4b8b9bc09f47%40gmail.com. >> >> For more options, visit https://groups.google.com/d/optout. >> >> -- >> 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+unsubscr...@googlegroups.com. >> To post to this group, send email to sympy@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/f25f4d51-6aa8-4d99-8fb7-7b426cf3b5da%40googlegroups.com. >> >> For more options, visit https://groups.google.com/d/optout. >> >> >> -- >> Gaurav Dhingra >> (Sent from Thunderbird email client) >> >> -- >> 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+unsubscr...@googlegroups.com. >> To post to this group, send email to sympy@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/7943b619-a2f6-3778-fb52-786318f0284b%40gmail.com. >> For more options, visit https://groups.google.com/d/optout. > > -- > 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+unsubscr...@googlegroups.com. > To post to this group, send email to sympy@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/CAKgW%3D6JJTi9ehkC2JPtjh3H6U3Ap-BVFd0wm215TNnbwPQZRpA%40mail.gmail.com. > For more options, visit https://groups.google.com/d/optout. > > > -- > Gaurav Dhingra > (Sent from Thunderbird email client) > > -- > 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+unsubscr...@googlegroups.com. > To post to this group, send email to sympy@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/7c637778-650a-0ad3-d65e-4b2f3fadd537%40gmail.com. > > For more options, visit https://groups.google.com/d/optout. -- 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+unsubscr...@googlegroups.com. To post to this group, send email to sympy@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/CAKgW%3D6LiKDVsaAGuNy-_chrrhNvWX8y4OHO7wMMuFP6_Wu13MQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.