import sympy as sym
import numpy as np
from IPython.display import display, Math
from sympy.abc import w,x,y,z,a,b,c,d
sym.init_printing()
# associative
expr1 = x*(4*y)
expr2 = (x*4)*y
expr1 == expr2
expr1 - expr2
# commutative
e1 = 4*x*y
e2 = x*4*y
e3 = y*x*4
print(e1.subs({x:3,y:2}))
print(e2.subs({x:3,y:2}))
print(e3.subs({x:3,y:2}))
# distributive
#a,b,c,d = sym.symbols('a,b,c,d')
expr = (a+b)*(c+d)
expr
sym.expand(expr)
x = w*(4-w)+1/w**2*(1+w)
f1 = x*(y+z)
f2 = 3/x + x**2
display(f1*f2)
display(sym.simplify(f1*f2))
display(sym.simplify(f1*f2 - f2*f1))