📜 ⬆️ ⬇️

Mathematical search engine Uniquation

We have just opened the α-testing of the Uniquation project. This is a mathematical search system that searches for solutions among equations, equations, and other mathematical objects hosted on the Internet. At the current stage of development, it can be thought of as a developing CAS ( wiki ). In addition to this post, you can read about it in our presentation .

image



')
We ( shai_xylyd , greenman , konfuze ) are a small team of adventurers who are interested in creating and exploring something new. As a result of our cooperation, this project was born and continues to be improved. First of all, we are driven by interest. Interest from research of the abilities, new tools, and that we create.

Opportunities


In the current version, the search follows formulas from Wikipedia and eqworld , but we consider all the mathematical websites of the Internet as a potential knowledge base, and the development of search technologies will allow us to create a computer algebra system that, in the area of ​​symbolic computing, will be better than the existing ones.

Simple arithmetic expressions, some functions (sin, cos, ln, factorial ...), indefinite integrals, sums and partial differential equations are now supported. Ordinary differential equations, limits, and combinatorics are not fully supported.

Project history


The idea to create a mathematical search came to my mind when I tried to calculate the Ito integral of a certain expression and the result did not coincide with the answer of the exercise. Then I wanted to find a solution on the Internet to compare the solutions, but, unfortunately, I could not, since the required search engine did not exist at that time. The current alpha is not yet able to search for stochastic equations, but it is developing and may already be useful in solving a small class of problems.

The development of the engine began in the free time from work and study in the fall of 2008. Initially, the code was written in an imperative style, but then, after a more complete analysis of the subject area, it was decided to switch to a functional paradigm, and as a result, around February 10, the entire code was rewritten, which reduced the size of the source code by almost half and accelerated the process development. Around this time, my friend offered to participate in the Imagine Cup competition, and as a result, the work became more intense. Since in addition to the engine it was necessary to work on the design of the site, I arranged a spam mailing to St. Petersburg students, working web-designers and registered on the habr. This method turned out to be very fruitful, almost everyone to whom I sent messages answered; so the team got konfuze . January 12, 2009 for the first time the engine successfully searched.

On March 17, 2009, a performance was held at the northwest stage of the Imagine Cup competition, where our team took second place. You can read about the performance in Business Petersburg . After the competition, we concentrated our efforts on correcting the mistakes that were found during the preparation for the Imagine Cup. Also, participation in the contest gave us confidence that the idea is viable.

April 11, 2009 Uniquation was presented as an example of a project written using aspect-oriented programming for Coffee & Code in St. Petersburg.

Since April 24, the engine has become multiplatform, and then all versions are tested both in windows and in linux.

In the summer, my friend greenman joined the development to create a new project and integrate Uniquation technologies into it.

September 5-6, 2009 the project participated in hackday. We hoped to find a JS specialist who would help us with creating a graphical editor for entering formulas. Unfortunately, it was not found, and green switched to adapting the DrugMath Java applet to our goals.

On October 2, 2009, one of the most significant changes in the project took place: the formula normalization algorithm was improved; it is precisely it that allows us to search for formulas regardless of the variables that are used in them, and regardless of the order of the arguments in commutative operations. This task belongs to the class of NP-complete, so theoretically there cannot theoretically be a fast algorithm for all possible formulas, but our algorithm works fairly quickly on those formulas that it makes sense to look for.

At the end of October, the development of new capabilities was frozen, and all the forces were devoted to the preparation of this α-version.

Architecture


The search is based on a simple idea - to bring the formula to a standard form and find it in the database. The fact that we did not step back from it, allowed us to write code that is easy to maintain, and to ensure that we use the database only for reading (with the exception of logs). That in turn did not cause problems when transferring the application to the cloud from amazon.

Open source


We love open source, but although the uniquation project itself is non-commercial, we cannot open its source, as we plan to launch a startup based on the technologies that we use in it. But we will fill ourselves with the benefit of the community, as we improve the open formula editor.

Why are we promoting?


Would love to get feedback. For example, if you think that the service may be useful to you, then write what you are missing in it now. We have a lot of ideas on how to improve the search, but it's always more pleasant to work, knowing that there is someone who needs it. These may be completely different wishes, for example, “it is worthwhile to combine identical formulas in the output”, or “to improve support for limits | multidimensional integrals | ODE | ... ”, or“ create a site where users can share solutions and discuss them ”, or“ index dxdy.ru ”.

Source: https://habr.com/ru/post/71523/


All Articles