Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Albert D. Rich
    @AlbertRich

    @halirutan You wrote:

    But if you think we should make a small page for them on the website that explains some stuff and link from there to the repository, that would also work.

    Yes, as on Rubi's old website, clicking on the "Integration Rules" menu option should lead to another website page with the text at the beginning of the current README.md file and a menu-bar with the options: "Algebraic", "Exponential", "Log", "Trig", "Inverse Trig", "Hyperbolic", "Inverse Hyperbolic", "Special Functions", and "Miscellaneous".

    Albert D. Rich
    @AlbertRich
    @halirutan At the risk of asking for way too much :smile:, even better would be drop-down menus that appear when you hover over "Algebraic", "Exponential", etc that lead directly to the pdf files in the repository.
    Albert D. Rich
    @AlbertRich
    @halirutan I just heavily revised about.md.
    Patrick Scheibe
    @halirutan
    @AlbertRich Nice!
    Patrick Scheibe
    @halirutan

    @halirutan At the risk of asking for way too much :smile:, even better would be drop-down menus that appear when you hover over "Algebraic", "Exponential", etc that lead directly to the pdf files in the repository.

    Such nested drop-down-menus are realy old-school and not used anymore nowadays. But more importantly, all we do at the moment is a compromise between two things: (1) Having a clear design and all information in one place (that is used by almost all today's developers) and (2) simplicity so that you can easily grasp how to change and edit things without learning too much useless web-dev stuff. Such a nested drop-down is certainly possible, but it would mean that I have to re-create the web-site on each change. I would very much not go this way :)

    Patrick Scheibe
    @halirutan

    The current menu is a bit of a hack and I'm using buttons that are originally not meant to be a menu, but it looked great when I tested it and therefore I used it. So for the website, I would like to keep this simple "one level" menu where each entry either leads directly to a repository or it has exactly one page behind it. Therefore, this

    @halirutan I would like to encourage the development of definite integration rules in addition to indefinite integration rules. To that end, should we add two subsections under IntegrationRules named DefiniteIntegrationRules and IndefiniteIntegrationRules?

    is absolutely fine when it stays on one page. I'm not sure I completely understood this though. The current state is that Rubi only has indefinite integration rules, right?

    Albert D. Rich
    @AlbertRich
    @halirutan Yes.
    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