# krobertson/learnivore

A lightweight framework for generating, solving, and verifying solutions of algebraic equations.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
 Failed to load latest commit information. log resources src COURSES README learnivore.cabal mathdata.hs

```run cabal install in this directory to install learnivore,
then execute with learnivore -p 8000
then go to localhost:8000
then input an equation

for interactive console access, cd into src, load ghci, and run :l Equations
and use solveExpression to simplify arithmetic and algebraic expressions from strings
and use solveEquation to solve arithmetic and algebraic equations from strings

to run the test suite, cd into src, load ghci, and run :l Tests

Current Functionality:
----------------------

Solves algebraic equations of one variable
Example:

putStrLn \$ solveEquation "2^x=4"
------------------
2.0^x = 4.0
=>
x = log<2.0>(4.0)
=>
x = 2.0

putStrLn \$ solveEquation "2^x+1=log<2>(8)"
-------------------
(2^x) + 1 = log<2>(8)
=>
(2^x) + 1 = 3.0
=>
2^x = 3.0 - 1
=>
2^x = 2.0
=>
x = log<2>(2.0)
=>
x = 1.0

putStrLn \$ solveEquation "x^3+5=32"
--------------------
(x^3) + 5 = 32
=>
x^3 = 32 - 5
=>
x^3 = 27
=>
x = <3>√(27)
=>
x = 3.0

future plans:
-------------
todo:
add complex numbers and their operations

add i and other operations on complex numbers, basic derivatives and integrals,

write an algebraic expression generator, reusing the transformations, and adding a few generative (non-equivalent) transformations ([Seed] -> [Generator] -> (Expression, [Generator]))

set up QuickCheck for testing (using HUnit for now)

to continue on the engineering math track:
linear algebra, derivatives, integrals

to continue on the university level math track:
logics, combinatorics, abstract algebra, category theory

TODO BUGS:
1 error and 4 failures in current spec suite
should display correct solution if incorrect solution is given to quiz question

should not generate equations that it cannot solve (use perfect square determinants to generate integer solvable polynomials, etc)

Snap
- expose as a json api
- Equations
- solve (*DONE*)
- generate (*PARTIAL*)
- verify solution (equation -> solution) (*PARTIAL*)
- Quiz Stream
------------ maybe later
- Expressions
- simplify
- generate
- verify solution```