1. Domain‑assumptions matter for “simplification”
The core of the thread is whether sqrt(x^2) should become x, |x|, or stay as is.
- “It also equals x with appropriate assumptions (x > 0).” – MForster
- “So there's an unconditionally correct answer (it's also equal to abs(x) for x>0), and then there is an answer that is only correct for half the domain, which requires an additional assumption.” – exe34
- “For arbitrary complex values sqrt() gives 2 answers with ± signs.” – NooneAtAll3
2. Simplify is a black‑box heuristic
Many users lament the lack of transparency in how CAS decide what is “simpler.”
- “I expect its a black, or at least gray box to Mathematica maintainers, too.” – Someone
- “The documentation is good, but it still lags behind the actual implementation. It would be much easier if we could peek inside the black box.” – bryango
- “It has simple rules such as constant folding, ‘replace x‑x by zero’, … and some weird logic that decides the order in which to try simplification rules.” – Someone
3. Proprietary vs open‑source concerns
The discussion also turns to whether the internals of a CAS should be publicly available.
- “I really wish Mathematica would open‑source the heuristics behind these core functions.” – bryango
- “Many built‑in functions are open source too. Use the ‘PrintDefinitions’ ResourceFunction to see the code of functions that are implemented in Wolfram Language itself.” – gdelfino01
- “Yes, it is all proprietary, but there are still ways to inspect most of the WL‑implemented functions.” – LegionMammal978
These three themes—assumptions for algebraic simplification, the opaque nature of CAS heuristics, and the open‑source debate—dominate the conversation.