Hi SymPy Community,
I’m Krishnav Bajoria, a third-year student at IIT BHU,Varanasi in the department of Mathematics and Computing(GitHub handle - krishnavbajoria02).I am proficient in Python and have had a fairly strong mathematical background which was also the reason that led me to start contributing in SymPy. In terms of my contributions to SymPy, I have had three PRs merged—two related to assumptions and one in codegen/utilities.lambdify —and a few more under review.(Link to the PRs: https://github.com/sympy/sympy/pull/27511,https://github.com/sympy/sympy/pull/27512,https://github.com/sympy/sympy/pull/27552)
As I was exploring potential GSoC projects, I became particularly interested in two from the ideas page:
Since I’ve already worked a bit on assumptions, I’ve been delving deeper into the discussions and implementation details to understand its current state. I wanted to share what I’ve gathered so far and get feedback on whether I’m on the right track, or if there are other key areas I should focus on.
Assumptions System: What I’ve Studied So FarI’d appreciate to hear from the community—does this list cover the main areas that need attention? Are there any other fundamental issues I should be looking at?
Considering Risch IntegrationApart from assumptions, I’ve also started reading about the Risch integration algorithm. I haven’t explored it as deeply yet, but I find it intriguing and would like to get insights on its feasibility as a GSoC project.
At this stage, I’m just considering both projects for discussion and plan to finalize my choice based on the feedback and guidance from the community.
Thank you for your time and consideration. I look forward to your response!
Best Regards,
Krishnav Bajoria.
Hi SymPy Community,
I’m Krishnav Bajoria, a third-year student at IIT BHU,Varanasi studying Mathematics and Computing.I am proficient in Python and have had a fairly strong mathematical background which was also the reason that led me to start contributing in SymPy. In terms of my contributions to SymPy, I have had three PRs merged—two related to assumptions and one in codegen/utilities.lambdify
—and a few more under review.
As I was exploring potential GSoC projects, I became particularly interested in two from the ideas page:
Since I’ve already worked a bit on assumptions, I’ve been delving deeper into the discussions and implementation details to understand its current state. I wanted to share what I’ve gathered so far and get feedback on whether I’m on the right track, or if there are other key areas I should focus on.
x.is_real
) sometimes fail to evaluate correctly when additional constraints are introduced.--
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 [email protected].
To view this discussion visit https://groups.google.com/d/msgid/sympy/42483b67-c51d-442e-b245-61527ef09fdan%40googlegroups.com.
Dear SymPy Community,
I hope you're doing well. I wanted to follow up regarding my GSoC proposal idea, as I haven’t received any further feedback. I appreciate the insights from Aaron and Tilo, and I’ve been working on refining my proposal based on the discussion.
Would it be possible for someone to review my updated proposal and provide any additional feedback? I want to ensure I’m on the right track and aligning with the community's expectations.
I’d really appreciate any guidance or suggestions on how I can further improve my proposal. Looking forward to your thoughts!
Best regards,
Krishnav Bajoria.
Hello again SymPy community,First of all, I would like to thank Aaron and Tilo for their valuable comments and ideas. I have taken a note of them. For the past two weeks I have been studying through the entire assumptions system in SymPy and along with their ideas I have come up with some observations and my plan that I have for GSoC:1) As pointed out earlier regarding the performance of assumptions I plan on making it faster and improving performance in the following ways:- As suggested by Tilo, I would look to cache results in ways like currently @memoize decorator is used for in AssumptionKeys class.- By rewriting existing code for handlers by trying to take a two-fold approach as suggested by Aaron for fast queries and slow queries.- I also think by improving abilities of refine, which currently has very less functionality added to it by improving that we can reduce number of calls when dealing with complex expressions.2) By trying to improve the deductive capabilities and add functionalities related to quantifiers:- I have been researching upon some new algorithms - as Tilo told that he will be implementing the SMT in his spare time so I wouldn't be looking into it then and instead would focus on elimination techniques like Fourier-Motzkin elimination, Quantifier elimination, Tarski's algorithm.- I also think we should be adding implementation and support for quantifiers for more general reasoning capability of SymPy. I think we could proceed in a way that is similar along the lines of functions like allargs, anyargs,etc which is written in a declarative programming paradigm and as was also suggested by Tilo we should add more general rules along these lines. I think quantifiers implementation along these lines would be a good idea.
Hello Aaron,
Thank you for your detailed feedback on my proposal ideas. I now realize that focusing on just 1-2 tasks from my initial list would be the best approach, and I’m currently working on finalizing my scope of work and drafting my proposal accordingly.
As I proceed, I had two questions:
1) I noticed that there isn’t a specific mentor yet listed for the assumptions project on the ideas page. Will a mentor be assigned, or should I continue engaging with the community for guidance? (Given your insights, I was wondering if you might also be involved in mentoring for this project.)
2) For proposal reviews, should I share my draft of the proposal in this public discussion, or is there a preferred way to receive feedback, such as direct communication with a mentor once assigned?
I’d appreciate any clarification so I can move forward in the best way possible.
Best Regards,
Krishnav Bajoria.
Dear SymPy Community,
I have completed the first draft of my GSOC 2025 proposal titled "Improving Relational Reasoning and Introducing Quantifier Support in SymPy's Assumptions Framework." You can find the proposal at this link.
I would greatly appreciate it if you could review the proposal and share any suggestions or feedback on how I can make it better. Your insights would be invaluable in refining the proposal further.
Thank you for your time and support!
Best regards, Krishnav Bajoria.
🔥 Hot conversation: [email protected] opened it many times in a short period or forwarded it. View all 459 opens | turn off hot conversations
--
You received this message because you are subscribed to a topic in the Google Groups "sympy" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/sympy/XSJuvibPOro/unsubscribe.
To unsubscribe from this group and all its topics, send an email to [email protected].
To view this discussion visit https://groups.google.com/d/msgid/sympy/CAF0TZutDGaxUcgVK71ZzokOWN_87%3DwVzFA4F%2BaJXyNBhkpy3Sw%40mail.gmail.com.
Hi Tilo,
Thank you for your feedback and for pointing out these issues.
Regarding the paraphrasing and referencing, I understand my mistake. Moving forward, I'll be more clear when distinguishing between your original content and my own thoughts by adding footnotes. Additionally, when paraphrasing content from specific issues, I'll include links to those issues in the reference section for better traceability. I apologize for the lack of clarity in the previous version and will correct this in my next revision.
As for the distinction between Q.gt(x, 0)
and Q.positive(x)
, I realize I misunderstood the difference. You're right—Q.positive(x)
does indeed imply that x
is real, whereas Q.gt(x, 0)
allows for x
to be extended real, which might include infinite values. I'll revise the proposal to accurately reflect this distinction.
Thanks again for your observation and guidance. I'll make sure the next version addresses these points properly.
Best regards,
Krishnav Bajoria.
Hi Krishnav,I skimmed through your proposal. Could you make it more clear when you're paraphrasing something I wrote vs your own original thoughts? It would be good if you added footnotes for this sort of thing. Also, if you're paraphrasing stuff I wrote in particular issues, you should add links to those issues in the reference section.
One more thing: Q.gt(x, 0) and Q.positive(x) are not supposed to be equivalent. Q.positive(x) implies that x is real whereas Q.gt(x, 0) implies x is extended real (it might not be finite).Tilo Reneau-Cardoso
On Sat, Mar 29, 2025 at 3:11 PM Krishnav Bajoria <[email protected]> wrote:
Dear SymPy Community,
I have completed the first draft of my GSOC 2025 proposal titled "Improving Relational Reasoning and Introducing Quantifier Support in SymPy's Assumptions Framework." You can find the proposal at this link.
I would greatly appreciate it if you could review the proposal and share any suggestions or feedback on how I can make it better. Your insights would be invaluable in refining the proposal further.
Thank you for your time and support!
Best regards, Krishnav Bajoria.
--
You received this message because you are subscribed to a topic in the Google Groups "sympy" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/sympy/XSJuvibPOro/unsubscribe.
To unsubscribe from this group and all its topics, send an email to [email protected].
To view this discussion visit https://groups.google.com/d/msgid/sympy/CAF0TZutDGaxUcgVK71ZzokOWN_87%3DwVzFA4F%2BaJXyNBhkpy3Sw%40mail.gmail.com.
--
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 [email protected].
To view this discussion visit https://groups.google.com/d/msgid/sympy/CAEgDm30-yGWbb-0cxdn48p%3DquWqi3ez%3DrRKLG7KNi7amajvzqg%40mail.gmail.com.
Dear SymPy Community,
I would like to inform you that I have taken into account Tilo’s comments regarding paraphrasing, adding footnotes, and properly referencing the sources of certain content in my GSoC 2025 proposal.
I have now uploaded the revised version of my proposal, titled:
"Improving Relational Reasoning and Introducing Quantifier Support in SymPy’s Assumptions Framework", to the SymPy Wiki. The link to my revised proposal for convenience can be found here.
Please feel free to review it and share any further feedback. I appreciate your time and guidance throughout this process.
Best regards, Krishnav Bajoria.
Hi Krishnav,
I recommend reading the following if you haven't already: https://github.com/sympy/sympy/wiki/Assumptions#the-aims-of-assumptions
To view this discussion visit https://groups.google.com/d/msgid/sympy/9929ab3d-6e37-481a-8c4e-a4b3704a3010n%40googlegroups.com.
Hi Tilo and Aaron,
Thank you both for your insights!
To Tilo, I appreciate you pointing me to the assumptions page—I wasn’t aware of some of the details, and it was really informative to read through. To Aaron, thanks for elaborating on the evolution of the assumptions system and its implications. Your explanation and the slides provided great clarity on the reasoning behind both approaches. I’ll reflect on what I’ve learned from this discussion and see how I can incorporate it into my GSoC project and proposal.
Best regards,
Krishnav Bajoria.
Hello Tilo,
I've been analyzing that PR since you pushed it. Given the size of the code, it's taking some time to review it thoroughly, but I'll get back to you once I've gone through it completely.
Thanks again for pointing me to another valuable PR—it's been helpful for my understanding of SAT/SMT solvers.
Best Regards, Krishnav Bajoria.
--
You received this message because you are subscribed to a topic in the Google Groups "sympy" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/sympy/XSJuvibPOro/unsubscribe.
To unsubscribe from this group and all its topics, send an email to [email protected].
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 [email protected].
To view this discussion visit https://groups.google.com/d/msgid/sympy/CAEgDm30cguwMTDYiUwzD1sBY4PZxGQzKGz%3DX%3DCEzsKMEj8QUgA%40mail.gmail.com.
Dear Aaron,
Firstly, thank you for reviewing my GSoC proposal and providing invaluable feedback. Based on your suggestions, I have revised my proposal to better align with SymPy's priorities and focus on algorithmic improvements.
Quantifier Implementation:
While I understand the importance of quantifiers in formal logic systems, I also recognize that their implementation can introduce complexity, especially with quantifier elimination algorithms (e.g., CAD). Given that symbolic quantifiers are not urgently needed for SymPy's assumptions system, I have reduced the scope of quantifier implementation in my timeline. Instead, I emphasize basic symbolic support inspired by Z3's pattern-based approach for universal (Q.forall
) and existential (Q.exists
) quantifiers.
Algorithmic Improvements:
Following your advice, I have placed greater emphasis on improving existing algorithms in the assumptions system.
I would be happy to incorporate further changes if needed and look forward to hearing your thoughts on this revised plan. Thank you once again for your guidance!
Best regards,
Krishnav Bajoria.