AtticusKuhn / symbolic-logic

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SymLogic

Symbolic Logic is an experssion manipulator inspired by noq. It is also inspired by the Wolfram Language

How it works

First you give SymLogic a set of rules like

dist A*(B+C) = A*B+A*C
comm A*B = B*A 
Assoc A+(B+C) = (A+B)+C
double A + A = 2*A
square A^2 = A*A

Then you give it an expression to transform like

(A+B)^2

And SymLogic will find all equivalent expressions

((((A * A) + (B * A)) + (A * B)) + (B * B))
((((A * A) + (A * B)) + (B * A)) + (B * B))
(((A * (A + B)) + (B * A)) + (B * B))
((((A + B) * A) + (B * A)) + (B * B))
(((A * A) + (B * A)) + ((A * B) + (B * B)))
(((A * A) + (A * B)) + ((B * A) + (B * B)))
((A * (A + B)) + ((B * A) + (B * B)))
(((A + B) * A) + ((B * A) + (B * B)))
((((A ^ 2) + (B * A)) + (A * B)) + (B ^ 2))
((((A ^ 2) + (A * B)) + (B * A)) + (B ^ 2))
(((A * (A + B)) + (B * A)) + (B ^ 2))
((((A + B) * A) + (B * A)) + (B ^ 2))
(((A ^ 2) + (B * A)) + ((A * B) + (B ^ 2)))
(((A ^ 2) + (A * B)) + ((B * A) + (B ^ 2)))
((A * (A + B)) + ((B * A) + (B ^ 2)))
(((A + B) * A) + ((B * A) + (B ^ 2)))
((((A * A) + (A * B)) + (B * A)) + (B ^ 2))
(((A * A) + (A * B)) + ((B * A) + (B ^ 2)))
((((A * A) + (B * A)) + (A * B)) + (B ^ 2))
(((A * A) + (B * A)) + ((A * B) + (B ^ 2)))
((A * (A + B)) + (B * (A + B)))
(((A + B) * A) + (B * (A + B)))
((A * A) + ((B * A) + ((A * B) + (B * B))))
((A * A) + ((A * B) + ((B * A) + (B * B))))
((A ^ 2) + ((B * A) + ((A * B) + (B ^ 2))))
((A ^ 2) + ((A * B) + ((B * A) + (B ^ 2))))
((A * A) + ((A * B) + ((B * A) + (B ^ 2))))
((A * A) + ((B * A) + ((A * B) + (B ^ 2))))
((A ^ 2) + ((B * A) + ((A * B) + (B * B))))
((A ^ 2) + ((A * B) + ((B * A) + (B * B))))
(((A * A) + (A * B)) + (B * (A + B)))
((A * A) + ((A * B) + ((A * B) + (B * B))))
((A * A) + ((B * A) + ((B * A) + (B * B))))
((A ^ 2) + ((A * B) + ((A * B) + (B ^ 2))))
((A ^ 2) + ((B * A) + ((B * A) + (B ^ 2))))
((A * A) + ((B * A) + ((B * A) + (B ^ 2))))
((A * A) + ((A * B) + ((A * B) + (B ^ 2))))
((A ^ 2) + ((A * B) + ((A * B) + (B * B))))
((A ^ 2) + ((B * A) + ((B * A) + (B * B))))
(((A * A) + (B * A)) + ((A + B) * B))
(((A ^ 2) + (B * A)) + ((A * B) + (B * B)))
(((A ^ 2) + (A * B)) + ((B * A) + (B * B)))
(((A * A) + (A * B)) + ((A * B) + (B * B)))
(((A * A) + (B * A)) + ((B * A) + (B * B)))
(((A ^ 2) + (A * B)) + ((A * B) + (B ^ 2)))
(((A ^ 2) + (B * A)) + ((B * A) + (B ^ 2)))
(((A * A) + (B * A)) + ((B * A) + (B ^ 2)))
(((A * A) + (A * B)) + ((A * B) + (B ^ 2)))
(((A ^ 2) + (A * B)) + ((A * B) + (B * B)))
(((A ^ 2) + (B * A)) + ((B * A) + (B * B)))
((A * A) + ((A * B) + (B * (A + B))))
((A ^ 2) + ((A * B) + (B * (A + B))))
((A * A) + ((B * A) + (B * (A + B))))
((A ^ 2) + ((B * A) + (B * (A + B))))
(((A ^ 2) + (A * B)) + (B * (A + B)))
((A * (A + B)) + ((A * B) + (B * B)))
(((A * A) + (B * A)) + (B * (A + B)))
((A * (A + B)) + ((A * B) + (B ^ 2)))
(((A ^ 2) + (B * A)) + (B * (A + B)))
(((A ^ 2) + (B * A)) + ((A + B) * B))
(((A + B) * A) + ((A * B) + (B * B)))
(((A * A) + (A * B)) + ((A + B) * B))
(((A + B) * A) + ((A * B) + (B ^ 2)))
(((A ^ 2) + (A * B)) + ((A + B) * B))
((A * A) + ((B * A) + ((A + B) * B)))
((A ^ 2) + ((B * A) + ((A + B) * B)))
((A * A) + ((A * B) + ((A + B) * B)))
((A ^ 2) + ((A * B) + ((A + B) * B)))
((((A ^ 2) + (B * A)) + (A * B)) + (B * B))
((((A ^ 2) + (A * B)) + (B * A)) + (B * B))
((((A * A) + (A * B)) + (A * B)) + (B * B))
((((A * A) + (B * A)) + (B * A)) + (B * B))
((((A ^ 2) + (A * B)) + (A * B)) + (B ^ 2))
((((A ^ 2) + (B * A)) + (B * A)) + (B ^ 2))
((((A * A) + (B * A)) + (B * A)) + (B ^ 2))
((((A * A) + (A * B)) + (A * B)) + (B ^ 2))
((((A ^ 2) + (A * B)) + (A * B)) + (B * B))
((((A ^ 2) + (B * A)) + (B * A)) + (B * B))
(((A * (A + B)) + (A * B)) + (B * B))
(((A * (A + B)) + (A * B)) + (B ^ 2))
((((A + B) * A) + (A * B)) + (B * B))
((((A + B) * A) + (A * B)) + (B ^ 2))
((A * A) + (B * (A + (A + B))))
((A ^ 2) + (B * (A + (A + B))))
((A * (A + B)) + ((A + B) * B))
((A * ((A + B) + B)) + (B * B))
((A * ((A + B) + B)) + (B ^ 2))
((A * A) + ((A + (A + B)) * B))
((A ^ 2) + ((A + (A + B)) * B))
(((A + B) * A) + ((A + B) * B))
((((A + B) + B) * A) + (B * B))
((((A + B) + B) * A) + (B ^ 2))
((A * (A + (B + B))) + (B * B))
((A * (A + (B + B))) + (B ^ 2))
(((A + (B + B)) * A) + (B * B))
(((A + (B + B)) * A) + (B ^ 2))
(((A * A) + (A * (B + B))) + (B * B))
(((A * A) + (A * (B + B))) + (B ^ 2))
(((A * A) + ((B + B) * A)) + (B * B))
(((A * A) + ((B + B) * A)) + (B ^ 2))
((A * A) + (B * ((A + A) + B)))
((A ^ 2) + (B * ((A + A) + B)))
((A * A) + (((A + A) + B) * B))
((A ^ 2) + (((A + A) + B) * B))
((A * (A + (2 * B))) + (B * B))
((A * (A + (2 * B))) + (B ^ 2))
(((A + (2 * B)) * A) + (B * B))
(((A + (2 * B)) * A) + (B ^ 2))
(((A * A) + (A * (2 * B))) + (B * B))
(((A * A) + (A * (2 * B))) + (B ^ 2))
(((A * A) + ((2 * B) * A)) + (B * B))
(((A * A) + ((2 * B) * A)) + (B ^ 2))
((A * A) + (B * ((2 * A) + B)))
((A ^ 2) + (B * ((2 * A) + B)))
((A * A) + (((2 * A) + B) * B))
((A ^ 2) + (((2 * A) + B) * B))
((A + B) * (A + B))
((A * A) + ((A * (B + B)) + (B * B)))
((A * A) + ((A * (B + B)) + (B ^ 2)))
((A * A) + (((B + B) * A) + (B * B)))
((A * A) + (((B + B) * A) + (B ^ 2)))
((A * A) + ((A * (2 * B)) + (B * B)))
((A * A) + ((A * (2 * B)) + (B ^ 2)))
((A * A) + (((2 * B) * A) + (B * B)))
((A * A) + (((2 * B) * A) + (B ^ 2)))
(((A ^ 2) + (A * (B + B))) + (B ^ 2))
(((A ^ 2) + ((B + B) * A)) + (B ^ 2))
(((A ^ 2) + (A * (2 * B))) + (B ^ 2))
(((A ^ 2) + ((2 * B) * A)) + (B ^ 2))
((A + B) ^ 2)
((A ^ 2) + ((A * (B + B)) + (B * B)))
((A ^ 2) + ((A * (B + B)) + (B ^ 2)))
((A ^ 2) + (((B + B) * A) + (B * B)))
((A ^ 2) + (((B + B) * A) + (B ^ 2)))
((A ^ 2) + ((A * (2 * B)) + (B * B)))
((A ^ 2) + ((A * (2 * B)) + (B ^ 2)))
((A ^ 2) + (((2 * B) * A) + (B * B)))
((A ^ 2) + (((2 * B) * A) + (B ^ 2)))
(((A * A) + ((A * B) + (A * B))) + (B * B))
(((A * A) + ((A * B) + (A * B))) + (B ^ 2))
((A * A) + ((B * (A + A)) + (B * B)))
((A ^ 2) + ((B * (A + A)) + (B * B)))
((A * A) + ((B * (2 * A)) + (B * B)))
((A ^ 2) + ((B * (2 * A)) + (B * B)))
((A * A) + (((A * B) + (A * B)) + (B * B)))
((A * A) + (((A * B) + (A * B)) + (B ^ 2)))
(((A ^ 2) + ((A * B) + (A * B))) + (B ^ 2))
((A ^ 2) + (((A * B) + (A * B)) + (B * B)))
((A ^ 2) + (((A * B) + (A * B)) + (B ^ 2)))
(((A * A) + ((B * A) + (A * B))) + (B * B))
(((A * A) + ((B * A) + (A * B))) + (B ^ 2))
((A * A) + (((A + A) * B) + (B * B)))
((A ^ 2) + (((A + A) * B) + (B * B)))
((A * A) + (((2 * A) * B) + (B * B)))
((A ^ 2) + (((2 * A) * B) + (B * B)))
((A * A) + (((B * A) + (A * B)) + (B * B)))
((A * A) + (((B * A) + (A * B)) + (B ^ 2)))
(((A ^ 2) + ((B * A) + (A * B))) + (B ^ 2))
((A ^ 2) + (((B * A) + (A * B)) + (B * B)))
((A ^ 2) + (((B * A) + (A * B)) + (B ^ 2)))
(((A ^ 2) + (A * (B + B))) + (B * B))
(((A ^ 2) + ((B + B) * A)) + (B * B))
(((A ^ 2) + (A * (2 * B))) + (B * B))
(((A ^ 2) + ((2 * B) * A)) + (B * B))
(((A * A) + (B * (A + A))) + (B * B))
(((A ^ 2) + (B * (A + A))) + (B * B))
(((A * A) + (B * (2 * A))) + (B * B))
(((A ^ 2) + (B * (2 * A))) + (B * B))
(((A ^ 2) + ((A * B) + (A * B))) + (B * B))
(((A * A) + ((A + A) * B)) + (B * B))
(((A ^ 2) + ((A + A) * B)) + (B * B))
(((A * A) + ((2 * A) * B)) + (B * B))
(((A ^ 2) + ((2 * A) * B)) + (B * B))
(((A ^ 2) + ((B * A) + (A * B))) + (B * B))
(((A * A) + (2 * (A * B))) + (B * B))
(((A * A) + (2 * (A * B))) + (B ^ 2))
((A * A) + ((2 * (A * B)) + (B * B)))
((A * A) + ((2 * (A * B)) + (B ^ 2)))
(((A ^ 2) + (2 * (A * B))) + (B ^ 2))
((A ^ 2) + ((2 * (A * B)) + (B * B)))
((A ^ 2) + ((2 * (A * B)) + (B ^ 2)))
(((A ^ 2) + (2 * (A * B))) + (B * B))
(((A * A) + ((A * B) * 2)) + (B * B))
(((A * A) + ((A * B) * 2)) + (B ^ 2))
((A * A) + (((A * B) * 2) + (B * B)))
((A * A) + (((A * B) * 2) + (B ^ 2)))
(((A ^ 2) + ((A * B) * 2)) + (B ^ 2))
((A ^ 2) + (((A * B) * 2) + (B * B)))
((A ^ 2) + (((A * B) * 2) + (B ^ 2)))
(((A ^ 2) + ((A * B) * 2)) + (B * B))
((A ^ 2) + ((B * (A + A)) + (B ^ 2)))
((A ^ 2) + ((B * (2 * A)) + (B ^ 2)))
((A ^ 2) + (((A + A) * B) + (B ^ 2)))
((A ^ 2) + (((2 * A) * B) + (B ^ 2)))
(((A ^ 2) + (B * (A + A))) + (B ^ 2))
(((A ^ 2) + (B * (2 * A))) + (B ^ 2))
(((A ^ 2) + ((A + A) * B)) + (B ^ 2))
(((A ^ 2) + ((2 * A) * B)) + (B ^ 2))
((A * A) + (((B * A) + (B * A)) + (B * B)))
((A ^ 2) + (((B * A) + (B * A)) + (B * B)))
(((A * A) + ((B * A) + (B * A))) + (B * B))
(((A ^ 2) + ((B * A) + (B * A))) + (B * B))
((A ^ 2) + (((B * A) + (B * A)) + (B ^ 2)))
(((A ^ 2) + ((B * A) + (B * A))) + (B ^ 2))
((A * A) + (((A * B) + (B * A)) + (B * B)))
((A ^ 2) + (((A * B) + (B * A)) + (B * B)))
(((A * A) + ((A * B) + (B * A))) + (B * B))
(((A ^ 2) + ((A * B) + (B * A))) + (B * B))
((A ^ 2) + (((A * B) + (B * A)) + (B ^ 2)))
(((A ^ 2) + ((A * B) + (B * A))) + (B ^ 2))
((A * A) + ((2 * (B * A)) + (B * B)))
((A ^ 2) + ((2 * (B * A)) + (B * B)))
(((A * A) + (2 * (B * A))) + (B * B))
(((A ^ 2) + (2 * (B * A))) + (B * B))
((A ^ 2) + ((2 * (B * A)) + (B ^ 2)))
(((A ^ 2) + (2 * (B * A))) + (B ^ 2))
((A * A) + ((B * (A + A)) + (B ^ 2)))
((A * A) + ((B * (2 * A)) + (B ^ 2)))
((A * A) + (((A + A) * B) + (B ^ 2)))
((A * A) + (((2 * A) * B) + (B ^ 2)))
((A * A) + (((B * A) + (B * A)) + (B ^ 2)))
((A * A) + (((A * B) + (B * A)) + (B ^ 2)))
((A * A) + ((2 * (B * A)) + (B ^ 2)))
((A * A) + (((B * A) * 2) + (B * B)))
((A ^ 2) + (((B * A) * 2) + (B * B)))
(((A * A) + ((B * A) * 2)) + (B * B))
(((A ^ 2) + ((B * A) * 2)) + (B * B))
((A ^ 2) + (((B * A) * 2) + (B ^ 2)))
(((A ^ 2) + ((B * A) * 2)) + (B ^ 2))
((A * A) + (((B * A) * 2) + (B ^ 2)))
(((A * A) + (B * (A + A))) + (B ^ 2))
(((A * A) + (B * (2 * A))) + (B ^ 2))
(((A * A) + ((A + A) * B)) + (B ^ 2))
(((A * A) + ((2 * A) * B)) + (B ^ 2))
(((A * A) + ((B * A) + (B * A))) + (B ^ 2))
(((A * A) + ((A * B) + (B * A))) + (B ^ 2))
(((A * A) + (2 * (B * A))) + (B ^ 2))
(((A * A) + ((B * A) * 2)) + (B ^ 2))

About


Languages

Language:TypeScript 47.2%Language:JavaScript 34.6%Language:Nearley 18.1%