Project ideas from Hacker News discussions.

Why Mathematica does not simplify sinh(arccosh(x))

📝 Discussion Summary (Click to expand)

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.


🚀 Project Ideas

Simplify Explorer

Summary

  • Interactive web tool that visualizes each simplification step, the rules applied, and the assumptions in effect.
  • Gives users a transparent view of why a CAS simplifies (or fails to simplify) an expression, turning the black‑box into a learning resource.

Details

Key Value
Target Audience CAS users, math educators, researchers, students
Core Feature Step‑by‑step rule tracing, assumption toggling, side‑by‑side comparison of original vs. simplified expressions
Tech Stack React + D3.js for UI, Python backend with SymPy or a custom rule engine, WebSocket for live updates
Difficulty Medium
Monetization Hobby

Notes

  • “I really wish Mathematica would open‑source the heuristics behind these core functions” (bryango) – this tool satisfies that craving for transparency.
  • “I want to see the code of functions” (gdelfino01) – the visualizer exposes the rule chain, making the code’s effect visible.
  • Useful for debugging puzzling simplifications like sqrt(x^2)abs(x) or x/x1 with removable singularities.

AssumeEngine

Summary

  • Declarative assumption system that wraps existing CAS (SymPy, Maxima, etc.) to enforce domain constraints during simplification.
  • Allows users to specify assumptions such as x > 0, x ∈ ℝ, x ∈ ℂ, and get correct, assumption‑aware results.

Details

Key Value
Target Audience Researchers, engineers, educators, advanced students
Core Feature DSL for assumptions, automatic propagation to simplification rules, multi‑value handling for functions like sqrt
Tech Stack Python, SymPy, optional Rust for performance, JSON‑based DSL
Difficulty Medium
Monetization Hobby

Read Later