[HN Gopher] Rubi: Symbolic integrator based on an extensive syst...
       ___________________________________________________________________
        
       Rubi: Symbolic integrator based on an extensive system of
       integration rules
        
       Author : ducktective
       Score  : 53 points
       Date   : 2024-08-30 09:25 UTC (13 hours ago)
        
 (HTM) web link (rulebasedintegration.org)
 (TXT) w3m dump (rulebasedintegration.org)
        
       | injidup wrote:
       | What is it fundamentally about symbolic integration that makes it
       | so much more difficult to do? I mean, I studied calculus and
       | learned any number of the rules but it's a curious thing that one
       | operation, differentiation is trivial, yet the opposite,
       | integration is massively complex.
        
         | mkl wrote:
         | This is a common feature of mathematics; doing many things is
         | much easier in one direction than the reverse. Encryption
         | systems are built on this idea, e.g. RSA relies on
         | multiplication of large integers being very easy and factoring
         | large integers being very hard. That doesn't really answer your
         | question - I'm not sure there is a clear reason.
        
         | chongli wrote:
         | There is no general algorithm to symbolically compute all
         | integrals. All we have are partial algorithms which consist of
         | big rulebooks for the cases we've already solved.
         | 
         | It also turns out we can't even verify, in general, the result
         | of integration:
         | 
         | Suppose you are given two functions, f(x) and G(x), and are
         | told that G(x) is an antiderivative of f(x). So then you let
         | g(x) = G'(x), the derivative of G(x).
         | 
         | Now if G(x) is truly an antiderivative of f(x) then we must
         | have g(x) = f(x) but unfortunately the problem of determining
         | whether two functions are equal is undecidable (a consequence
         | of the halting problem).
        
           | carbotaniuman wrote:
           | Does the functional equality being impossible to determine
           | thing work for math problems? I know it works for computable
           | functions, but math functions are pure and total so it seems
           | easier.
        
             | chongli wrote:
             | Math functions are not total, in general. Computable
             | functions are a subclass of all functions, so lots of
             | functions are not computable.
             | 
             | Purity doesn't apply to functions, it applies to algorithms
             | which compute functions. In software parlance the terms are
             | often conflated but they are not equivalent. The algorithm
             | which computes a function is in general not unique.
        
             | kccqzy wrote:
             | Just determining the equality of two real numbers is
             | difficult.
        
           | Someone wrote:
           | > There is no general algorithm to symbolically compute all
           | integrals
           | 
           | Also, implementing it likely would be a challenge. The Risch
           | algorithm (https://en.wikipedia.org/wiki/Risch_algorithm,
           | https://mathworld.wolfram.com/RischAlgorithm.html) 'only'
           | handles "rational functions, radicals, logarithms, and
           | exponential functions", but may never have been fully
           | implemented (https://mathoverflow.net/questions/374089/does-
           | there-exist-a...)
        
         | GrantMoyer wrote:
         | If you think of the variable being derived/integrated over as
         | time, then conceptually the derivative at a time only
         | represents information from that one time plus or minus some
         | tiny delta, while an antiderivative repesents information from
         | _all of time_.
         | 
         | Formally, I'm not sure how to show that's related to the
         | relative difficilties of the two operarions, or if it actually
         | is related in the first place, but intuitively the explanation
         | is appealing.
        
           | almostgotcaught wrote:
           | It's not that simple
           | 
           | https://en.m.wikipedia.org/wiki/Liouville%27s_theorem_(diffe.
           | ..
           | 
           | So it's important to keep in mind the difference between
           | integral and anti-derivative. And note that as soon you say
           | "within an epsilon" you're already on the other side of "not
           | a lot of info" vs "infinite info". So global, local doesn't
           | matter, especially since eg an analytic function is
           | completely determined by it's derivatives at a single point
           | (good ol Taylor's theorem).
        
           | 6gvONxR4sf7o wrote:
           | > Formally, I'm not sure how to show that's related to the
           | relative difficilties of the two operarions, or if it
           | actually is related in the first place, but intuitively the
           | explanation is appealing.
           | 
           | I wonder if you could relate it to the difference between
           | local and global sections on bundles and connect "global
           | sections don't always exist" to "global data is harder."
        
         | barrenko wrote:
         | What is so difficult about unfrying an egg :D.
        
           | ValentinA23 wrote:
           | nothing https://www.livescience.com/49610-scientists-unboil-
           | egg.html
        
             | CoreformGreg wrote:
             | A team of four PhDs + seven other academics manage to
             | unfold a single protein in an egg white using a "vortex
             | fluid device" to produce a Couette flow, heat treatment,
             | dilution in phosphate-buffered saline, dissolution in
             | ureal, use of recombinant proteins, etc., etc.,
             | 
             | Meanwhile, my four-year old niece can boil a dozen eggs in
             | the time it took me to read their paper.
             | 
             | I think it's still accurate to say unboiling an egg is
             | "difficult"!
        
         | eigenket wrote:
         | Let's say you have a library of functions you know how to
         | integrate and differentiate. Something that happens a lot is
         | that you end up wanting to do integrate or differentiate a
         | product like x -> f(x)g(x) or composition like x -> f(g(x)) of
         | two or more of the functions you know about.
         | 
         | For diffentiation there are two ridiculously powerful theorems
         | which says that if you know how to differentiate a bunch of
         | functions you can also differentiate any product or composition
         | of these functions.
         | 
         | For a random other map there is no reason for this to be the
         | case, integration is essentially "as expected" in that except
         | in some specific circumstances knowing how to integrate f and g
         | doesn't tell you how to integrate their product or composition.
        
       | hobscoop wrote:
       | Rubi is great. When I'm stuck on an integral in Mathematica with
       | the builtin Integrate, I load up Rubi and sometimes it can find a
       | solution.
        
       | Y_Y wrote:
       | I used this a while back to do an awkward integral that no other
       | CAS was able to do and was able to show up a paper that had
       | claimed there was no closed-form solution.
       | 
       | Unfortunately the answer was in terms of hypergeometric functions
       | and was scarcely more useful than the unevaluated integral. In
       | any case I found Rubi to be very impressivein terms of results.
       | 
       | Digging into the code wasn't much fun, as it's just a colossal
       | Mathematica rules engine, like reading Gradshteyn and Ryzhik, but
       | with square brakets everywhere.
        
       | ducktective wrote:
       | I encourage those interested in Computer Algebra Systems to read
       | this comparison report:
       | https://www.12000.org/my_notes/CAS_integration_tests/reports...
       | 
       | AFAIK, this is the only recent benchmark-type study that compares
       | modern CAS software (Mathematica vs Maxima vs FriCAS vs etc).
        
       | amelius wrote:
       | Hopefully this can be integrated (no pun intended) into SymPy.
        
         | ducktective wrote:
         | From Rubi install guide:                 >The SymPy (Symbolic
         | Python) CAS also intends to incorporate Rubi's integration
         | rules. The code for Rubi is in the sympy/integrals/rubi
         | subdirectory of the SymPy source-code on GitHub.
         | 
         | Also: https://github.com/sympy/rubi
        
           | staplung wrote:
           | Sadly, it appears that repo hasn't been touched in a couple
           | years.
        
         | mkl wrote:
         | That was my hope at first too, but it seems very unlikely. It's
         | implemented in Mathematica and seems quite specific to
         | Mathematica.
        
       | pkaye wrote:
       | There is a Golang based CAS that follows the Mathematica language
       | which makes use of Rubi for integration.
       | 
       | https://github.com/corywalker/expreduce
        
       | krackers wrote:
       | This is cool! The page by Abbasi they link to also contains a
       | comparison between MMA and Maple in solving differential
       | equations
       | 
       | https://12000.org/my_notes/kamek/kamke_differential_equation...
        
       ___________________________________________________________________
       (page generated 2024-08-30 23:01 UTC)