Welcome to the EPEE (Electronic Polynomial Educational Experience) proof of concept! This demo is designed to provide a sense of what the finished product will feel like to use and experiment with the interface.
Getting Started
Click on the first + sign in the formula at the bottom left of the screen to select the subexpression (1+b).
To the right of the screen, under "Left Distributivity", click the first rightwards arrow, next to "For all x".
Type the letter a into the box next to "For all y".
Type the letter b into the box next to "For all z".
The result below should read ((1+b)*(a+b))=(((1+b)*a)+((1+b)*b)).
Click on the * in the formula at the bottom left of the screen to select the entire formula.
Click the leftwards arrow next to ((1+b)*(a+b))=(((1+b)*a)+((1+b)*b)), under "Left Distributivity".
To the right of the screen, under "Right Distributivity", enter 1, b, and a into the three text boxes.
Click on the first * in the formula at the bottom left of the screen to select the subexpression ((1+b)*a).
Click the leftwards arrow next to ((1+b)*a)=((1*a)+(b*a)), under "Right Distributivity".
Scroll down in the rules sidebar to find "Identity (*)".
Type the letter a into the textbox next to "For all x".
Click on the first * in the formula at the bottom left of the screen to select the subexpression (1*a).
Click the leftwards arrow next to (1*a) = a, under "Identity (*)".
The Workspace
Below these instructions is the workspace. You should see a mathematical formula there.
Move your mouse over parts of the formula to highlight them, and click to select/deselect subexpressions.
Users will be able to enter their own formulas, or (eventually) load in entire problems to solve.
For now, you can enter your own formula here:
Note: Currently only the variables a, b, c, and d are fully supported.
List of Rules
To the right, below a rough draft of the logo, is a list of currently implemented rules. They will eventually be complete, organized by tabs, and collapsible (thus rewarding users with a small boost of efficiency if they memorize the names of the rules and where they come from).
Using Rules
To use a rule, type a number, variable, or formula into the text boxes for the rule. You can also use the left arrow button to copy the currently selected subexpression into the box.
As you enter values in the text boxes, they will be plugged into the general version of the rule below.
If the currently selected subexpression is the left hand side or right hand side of the specific fact discovered, the right arrow button will use the identity to rewrite the current expression in the workspace.
Future Features
Parentheses which aren't typically drawn due to order of operations will only be drawn when the user moves their mouse over them.
Possibly also including a fade-in effect as here: (2*x)+1.
Support for multiplication by writing things next to each other.
Support for exponents.
Long sums/products will be supported to avoid the need to use associativity.
Users will be able to create their own rules (if they can derive the rules in the system) to streamline common sequences of tasks, such as FOILing.
A special rule for handling all instances of numerical computation will be implemented.
An auto-fill feature will optionally be available for the rules.
Optionally, a menu will appear on selecting a subexpression which will offer a list of applicable rules.
Eventual Goals
Provide a means of introducing the mechanics of algebra to students at the level of College Algebra (Algebra II)
A robust tutorial will guide users through the use of the software.
Notational conveniences will be introduced to simplify formulas.
Subexpression highlighting (particularly in the case where parentheses aren't drawn due to order of operations):
Makes it clear when replacement cannot happen (1+2x does not become 3x)
Rewards students for thinking about how expressions are made of subexpressions/order of operations with efficiency improvements.
Allowing students to make their own rules once they derive them allows them to see variables in their own derivations as places to plug things in.
Students will be able to experiment with rules that aren't true in a "contradiction sandbox", allowing them to get a feel for verifying rules they believe are true.
Facilitate self-discovery of key problem-solving heuristics.
Software encourages distinction between "what rules are allowed" and "what rules will reach the solution".
Facilitate returning to algebra for people who have learned algebra and forgotten it
Offer a wide variety of options for what level to engage with the software at.
Support a wide variety of mathematical environments
Rename to the Formal Algebra Reasoning Toolkit (FART)
Include rules for solving equalities.
Including rules for division also would require including rules for piecewise functions, and boolean logic, to handle situations like (x)(x+1)/(x)(x+1) which is 1 unless x = 0 OR x = -1.
Supporting division also requires a typesetting system for fractions.
Include trigonometric/exponential/logarithmic identities.
Allow function notation: "let f(x) = x+1" creates a new temporary rule allowing one to replace the x in f(x) = x+1 by any formula, and use the result to replace subexpressions.
Include differentiation rules.
Include formal logic rules.
Include linear algebraic rules.
Include modular arithmetic rules (specifcally, add 1+1+...+1 = 0).
Include a typing system to avoid incorrect conclusions (2^(-1) and f^(-1) mean completely different things).
Include highlighting to facilitate the typing system.
Support custom environments.
Allow students at the undergraduate level to perform long verified computations with ease
Common tasks will be able to be optionally streamlined:
A menu on subexpressions will offer various common ways of rewriting them.
Rules will offer an "auto-fill" feature.
LaTeX output will be supported.
Support integration with an online mathematics text
Provide built-in problems.
Integrate a tutorial for using the system with an introduction to algebra.
Provide a safe, stress-free environment for students to practice algebra
Reject integration with graded online evaluations.
Focus on intrinsic rewards (reaching a nice solution at the end of a problem, efficiency rewards for memorizing rules).
No points or "congratulations!"
Implement a wide variety of accessibility features.