Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Patrick Scheibe
    @halirutan
    @AlbertRich What about the following: The Wiki is at the moment only duplicating most of the information that we can now present on the website. This is something I had not anticipated because my plan was to make a one-page website only. Therefore, I suggest:
    1. We use the website to represent the current state of Rubi. We explain what it is and what repositories are available
    2. On the Wiki, we can present and discuss future development (like the definite/indefinite rules information). There, you can feel free to add any content you think is important and we link from the website to the wiki.
    Albert D. Rich
    @AlbertRich
    @halirutan Yes, here I am suggesting changes to the RuleBasedIntegration organization, not to the website.
    Albert D. Rich
    @AlbertRich
    Basically, make IntegrationRules/DefiniteIntegrationRules an empty place-holder for now.
    Patrick Scheibe
    @halirutan
    @AlbertRich OK, we keep that for later. I want this initial version of everything out :)
    @AlbertRich Have you seen my comment about your Rubi challange in the private chat?
    Albert D. Rich
    @AlbertRich
    @halirutan No, how do I check the "private chat"?
    Patrick Scheibe
    @halirutan
    @AlbertRich On the left, you see a "talk bubble". Press it and you should see an entry that says my name.
    Patrick Scheibe
    @halirutan

    @AlbertRich In addition to the Mathematica package update, I added the following things to the web-page:

    1. I created a "page" for the Mathematica Package which includes now all information about installation and usage and links to the correct places
    2. I edited the "Home" page and included a plot that I believe fits into the overall style of the web-page.

    The "Home" page needs a bit more content, but I would like to announce everything this week, as I'm on vacation a week later.

    @AlbertRich How is your plan for this week? Do you think we can manage to make these final edits?
    (We should not forget to edit the Competition page and make clear that for the competition, the old-style Rubi package should be use or at least, the statistics should be compared. I don't think I manage to debug the reason for the difference this week)
    Albert D. Rich
    @AlbertRich
    @halirutan Hi Patrick. Your edits to the Home and Mathematica Package menu options on the GitHub website for Rubi look great.
    I would not be to concerned about the Competition. I think there is already a clear winner who has no competition. I will revise the page to refer to version 4.15 of Rubi.
    @halirutan However, I am greatly concerned about confusion that will arise as you modify the Rubi interface and I modify the Rubi engine. You have been assigning new version numbers for Rubi (4.16 and now 4.17) as the interface changes. I want to keep control of the Rubi engine version numbers continuing with my current numbering scheme. The current engine version number is 4.15.2 and I am working on 4.15.3.
    Since the Rubi interface and engine are now being developed asynchronously, I think it essential that the interface have its own version numbers starting with 1.0. Do you have any ideas how to make a composite version number for GitHub Rubi that indicates the interface is say version 1.0 and the engine is version 4.15.2?
    Albert D. Rich
    @AlbertRich
    Maybe use a colon: Rubi 4.15.2:1.0
    Patrick Scheibe
    @halirutan
    @AlbertRich I was under the impression that your new Rubi engine will have the version number 5.0?
    That's why I assumed 4.xx is reserved for the current "pattern-based" rubi.
    Albert D. Rich
    @AlbertRich
    @halirutan Rubi 4.n has to be perfected before "compiling" it into Rubi 5.
    Patrick Scheibe
    @halirutan
    @AlbertRich OK. There are different version schemes and basically they have the layout major.minor[.maintenance[.build]]. I didn't want to complicate things as deeply nested version numbers might be confusion, so I increased the minor version with each new package that contained changes.
    Additional features and changes in the interface usually require a change in the minor version number.
    Albert D. Rich
    @AlbertRich
    @halirutan So what version number are we going to assign to the first version of GitHub Rubi?
    Patrick Scheibe
    @halirutan
    @AlbertRich My suggestion is 4.xx and xx is whatever we have then. When we fix a critical bug and make a new release, the version number is incremented.
    Albert D. Rich
    @AlbertRich
    @halirutan No, that is not acceptable to me for the reasons given above.
    Patrick Scheibe
    @halirutan
    @AlbertRich Hmm.. The package includes the complete engine but I can only give one version number and I need to increase the version for each new release. 4.15.2:1.0 will blow the users mind and they won't understand it. Would 4.15.2.xx be acceptable so that I can increase xx to my liking and 4.15.2 points to the engine version?
    Albert D. Rich
    @AlbertRich
    @halirutan That will work. When I am ready to release Rubi engine 4.15.3, let say for example GitHub Rubi is at 4.15.2.5, then the version of the new GitHub Rubi will be 4.15.3.5, since we are still at version 5 of the interface. Ok?
    Patrick Scheibe
    @halirutan
    @AlbertRich Yes. I'm having a meeting today, but I try to read about the versioning a bit more. Maybe your suggestion with the colon as separator isn't that bad at all.
    See you soon. I must hurry now.
    Albert D. Rich
    @AlbertRich
    @halirutan Bye.
    Patrick Scheibe
    @halirutan
    @AlbertRich I have made the necessary changes to the versioning and edited the web-page install instructions accordingly. I played it save and used a dot as separator 4.15.2.1 and the reason for that is simple: I do not know if Mathematica can interpret more exotic version numbers correctly in their Paclet and we need to ensure that PacletUpdate understands which version is the newest.
    Albert D. Rich
    @AlbertRich
    @halirutan Perfect. Thanks! This also has the advantage that the 3 dot version numbers indicate it is GitHub Rubi vs. the 2 dot version numbers that indicates it is the Classic Rubi.
    Albert D. Rich
    @AlbertRich
    @halirutan In the "Basic Integration" section please, please change
    "Rubi can also directly compute a definite integral by taking the limit at the bounds and calculating the difference. However, this is not always correct, e.g. when the antiderivative is not continuous between the bounds."
    to something like
    "Rubi can also compute the difference of the limits of the antiderivative Int produces at two points. By the Fundamental Theorem of Calculus (FTOC), if the antiderivative is continuous between these points, this difference will equal the definite integral; otherwise, it will not equal the definite integral."
    @halirutan It is important to make clear that Rubi does not produce results that as you say are "not always correct." I recently introduced this feature giving the difference of the limits simply as a convenience for users. However, if it leads to accusations that Rubi produces incorrect definite integrals, this feature should be eliminated until Rubi is extended to properly handle definite integrals.
    Sorry, I'm so touchy about this. :worried:
    Patrick Scheibe
    @halirutan
    @AlbertRich No, I'm really concerned about this as well. Users often simply "use" without thinking and it should be clear, that Mathematica does a lot of work to handle this in Integrate.
    @AlbertRich I changed it. Since the Wiki content partially duplicates what we have on the web-page, we should remove the pages there that cover stuff from the website. What I would like to see in the Wiki is a page that explains, how we can possibly verify the results of Rubi, Mathematica, ...
    Albert D. Rich
    @AlbertRich
    @halirutan That was fast! Thanks for making the change.
    How about putting the final "not" in italics or bold.
    Albert D. Rich
    @AlbertRich
    @halirutan @Nasser Yes, cleaning redundant stuff off the Wiki page makes sense. The Wiki page could explain the grading system Nasser uses to grade the antiderivatives produced by the various systems.
    Albert D. Rich
    @AlbertRich

    @Nasser @halirutan Patrick wrote:

    What I would like to see in the Wiki is a page that explains, how we can possibly verify the results of Rubi, Mathematica, ...

    I use two different methods to test the validity of a candidate antiderivative produced by the various systems, including Rubi:

    • Test if the candidate's derivative minus the integrand simplifies to zero.
    • Test if the candidate minus the optimal antiderivative is free of the integration variable or that difference differentiates to zero. (Since it's ok for the candidate and optimal to differ by a piecewise constant which is not free of the integration variable.)

    Depending on the size of the candidate, one of these methods may take an inordinate amount of time to decide while the other would quickly succeed. Also, sometimes the first method will succeed only if you Simplify or FullSimplify the candidate before differentiation; sometimes it will succeed only if you do not Simplify or FullSimplify the candidate before differentiation.

    Also sometimes the first method will succeed only if you Simplify or FullSimplify the result of the differentiation before subtracting the integrand; sometimes it will succeed only if you do not to Simplify or FullSimplify until after subtracting the integrand.

    Similarly, the second method succeeding sometimes depends on when the candidate and intermediate results are simplified. So the test program should use time slicing, or better parallel processing, to try the numerous permutations of these two verification methods. As you can see good antiderivative verification is a difficult research project...

    Of course, if you don't trust me, the validity of the optimal antiderivatives in the test suite should be verified correct by the first method above. That verification should be easy, since the optimal antiderivatives are relatively small. However, I had to manually help out Mathematica on verifying some optimal antiderivatives that involved nested radicals and/or fifth roots.

    Finally note that these methods assume the CAS conducting the verification tests correctly differentiates, subtracts and simplifies expressions.

    Patrick Scheibe
    @halirutan
    @AlbertRich That's basically what I would have done as well except for the last part in method 2. It makes comparing different CAS very difficult, because you should give their results the benefit of the doubt. This means, they might produce a variant of the optimal antiderivative, but the CAS lacks of a powerful function like Simplify that is able to transform the expression into the right form. Am i mistaken here when I say that the correct way for e.g. Maple would be to integrate the expression, but import the result back to Mathematica to make the advanced comparision?
    Albert D. Rich
    @AlbertRich
    @halirutan @Nasser Yes, even a 10 page result should be given "the benefit of the doubt" by simply reporting that it could not be verified.

    @halirutan @Nasser Your remarks above suggest the WIki page on testing needs to clearly distinguish between

    • testing the validity of candidate antiderivatives, as discussed above (which Nasser does not yet do), and
    • grading the quality of candidates by comparing them with the optimal antiderivatives included in the test suite (which Nasser does do).

    To receive a grade of A, a candidate does not have to equal, or be of the same form, as the optimal antiderivative. Rather it just has to be no more than twice the leafcount size of the optimal, and not involve higher level functions than the optimal. The function levels are ordered as elementary < special < hypergeometric.

    For details on grading see Nasser's website. With his permission, perhaps some of the documentation there could be incorporated into the Wiki page on testing, along with my discussion above on verification methods.

    Albert D. Rich
    @AlbertRich

    @halirutan I think your question

    Am I mistaken here when I say that the correct way for e.g. Maple would be to integrate the expression, but import the result back to Mathematica to make the advanced comparison?

    refers to validity testing rather than quality grading. Assuming so, it could be argued that validity testing should include the ability of a CAS to differentiate its own antiderivatives back to the integrand.
    Also there is a Tower of Babel problem since Maple and Mathematica define some functions (e.g. the elliptic integral functions) differently. So differentiating a Maple antiderivative in Mathematica would not equal the integrand; however differentiating the Maple antiderivative in Maple would equal the integrand.

    Nasser M. Abbasi
    @nasser1
    @AlbertRich hi Albert. I am not following something you said above
    "Test if the candidate minus the optimal antiderivative is free of the integration variable or that difference differentiates to zero. (Since it's ok for the candidate and optimal to differ by a piecewise constant which is not free of the integration variable.)" It is about the second part above.
    How could candidate and optimal difference not be free of integration variable, yet difference differentiates to zero? For example,. lets say candidate anti-derivative is say 3x, and optimal is say 2x. So the difference is x. So this is not free of the integration constant x. But this difference do not differentiate to zero? I was studying what you wrote above to see if I can implement it but confused about this one. Could you please give an example of the above case? Thanks
    Albert D. Rich
    @AlbertRich

    @nasser1 You wrote

    How could candidate and optimal difference not be free of integration variable, yet difference differentiates to zero? ... Could you please give an example of the above case? Thanks

    Here's an example: For the optimal antiderivative of 1/(1+x^2) the test suite gives ArcTan[x]. However, some CAS might give - ArcCot[x] which is also a perfectly valid antiderivative, as differentiation shows. The difference of these two antiderivatives is ArcTan[x]+ArcCot[x] which is not free of x; however, it differentiates to 0. As plotting ArcTan[x]+ArcCot[x] shows, it is not a constant; however, it is a piecewise constant; so its derivative equals 0 and therefore -ArcCot[x] is a valid antiderivative of 1/(1+x^2).

    Nasser M. Abbasi
    @nasser1
    @AlbertRich I see. Thanks. Now I understand.
    Albert D. Rich
    @AlbertRich

    @halirutan You wrote on June 24th:

    The "Home" page needs a bit more content, but I would like to announce everything this week, as I'm on vacation a week later.

    Simultaneously with your announcement, I would like to announce the availability of Rubi on GitHub on sci.math.symbolic, email several power users of Rubi about it, and provide a link to the GitHub site on Rubi's current homepage. Therefore, please let me know before you announce, and what user groups you plan to send it to. Also, I would appreciate your sending me a copy of the text so we can coordinate our descriptions of GitHub Rubi, including its proper name.

    Patrick Scheibe
    @halirutan
    @AlbertRich Hey Albert. I plan 2 things for the announcement. First, I will probably ask a self-answered question on StackExchange along the line "Is there a way to automatically install Rubi" and then I'm explaining in the answer what we have set up in the past weeks. Secondly, I write a small post on my blog explaining the work we did and how to use the GitHub Rubi. This post will automatically appear in the chatroom on stackexchange, I can share it through LinkedIn (I have many connections to people with Mathematica background there) or Twitter.
    @nasser1 To which URL on your page should I link from the rulebasedorganisation.org?
    Patrick Scheibe
    @halirutan
    @AlbertRich I have updated the home page with the plot for Nassers current results and included the A/B/C/F rating system. Could you look over it and edit index.md? Maybe you want to add furhter information or sections? I wouldn't know what else to write on this home page.
    Nasser M. Abbasi
    @nasser1
    @halirutan hi Patrick, the link for the main CAS integration tests page is this https://www.12000.org/my_notes/CAS_integration_tests/index.htm . This link will not change. btw, I getting close to adding another about 10,000 integrals which are almost completed. May be by end of this weekend. Sympy is so slooow and that it why it takes so much time. Many integrals in sympy time out, at 3 minutes, so a file with 3,000 integrals takes about 3-4 days to do just for sympy.