A tool to manipulate mathamatical expressions, inspired by the paper Interactive Algebra Manipulation by Geoffrey Irving. This project uses mathjs to parse an expression into a tree structure which can be manipulated, and MathJax to beautifully display the expression in the browser.
Checkout the prototype, in which you can enter a mathjs formatted expression which will be displayed as a tree. Some nodes of the tree show red dots, this indicates an action which can be performed at that node. Mouse over the dot to preview the action. Click the dot to perform the action.
From Interactive Algebra Manipulation:
Our goal is a system for manipulating algebraic formulas interactively. Here interactively means that the user will be directing most of the changes, with assistance from the computer in making the changes quickly and verifying their correctness. In contrast, typical computer algebra systems such as Mathematica have quite powerful automatic tools for simplification, transformation, etc., but these tools do not always achieve the desired goal. A system oriented towards interactivity has two key strengths:
Understanding: A system which presents an entire derivation as a single step provides no insight as to how this transformation was achieved. Besides the educational advantages, presenting the derivation as a transparent chain of simple steps provides insight into generalizability, numerical stability, physical meaning, etc.
Flexibility: Taking simplification as an example, there are a wide range of goals that the user may wish to achieve in manipulating a formula, including efficient computability, numerical stability, or suitability for some followup transform. Although it may be possible to program the Simplify routine of a computer algebra system to achieve one of these goals, an interactive system can achieve any of them even if the user only has a vague idea of the goal in advance.
I could use additional collaborators.