[GSoC 2026] Question about extending the refine() for additional expression types

45 views
Skip to first unread message

Aditya Prakash

unread,
Mar 8, 2026, 4:23:00 PM (4 days ago) Mar 8
to sympy
Hello SymPy community,

While working with the refine() system and the way it interacts with the assumptions system, I had a thought about the way some expressions might not be handled as well as they could be. I was thinking that how the refine() system could be extended to deal with expressions like log, exp, Piecewise, Min, Max as well as the way predicate-based short-circuiting already works with the assumptions system.

Is extending the refine() system in this way a good scope for a small GSoC? I would greatly appreciate any feedback from the maintainers about whether this could be a good change and how the idea could be developed further.

Aditya Prakash

unread,
Mar 9, 2026, 1:31:01 PM (3 days ago) Mar 9
to sympy
Hello again. I would like to formally introduce myself this time, I'm Aditya Prakash, and I’m in my second year of B. Tech in Computer Science and Business Systems. I have been coding in Python for four years and have been contributing to SymPy for the past month. I like understanding the in-depth concepts of the application, understanding its functions and their implementations.

Recently, I’ve been working on PR #29353, which focuses on handling realness for symbolic rational exponents, as well as my merged PR #29172. While I was working on the `Pow` logic it has shown me how much assumption-driven logic is currently hidden within `eval` methods or scattered across auto-simplification paths. From reading the discussions and wiki pages about assumptions, it seems there is a broader interest in reducing this kind of hidden auto-simplification and making refinement more clear. Instead of trying to tackle the full old to new assumptions migration, which feels beyond my current abilities and skill set, I am interested in a way which expands refine() and updates its handlers. I believe focusing on specific expression families like log, exp, Piecewise, or Min/Max will make the new assumptions system much useful. Before I develop a formal proposal, I would really appreciate  to get your feedback on:

1. Does this focus on expanding refine() aligns with the goals for the assumptions system right now?

2. Are there any specific "related issues" or existing documents I can refer for my better understanding of the current limitations of refine()?

3. Which expression types do you think are the currently the highest priority for better refinement handling?

I’m excited to learn more about the internal workings of this and want I to ensure  that I'll be contributing something that adds real value to the codebase.

Best regards,
Aditya Prakash


Reply all
Reply to author
Forward
0 new messages