Mathematica

<< Utilities`Notation`

Unprotect[{Times, Power}] ; ClearAttributes[Times, Orderless] Protect[Times] ;

Clear /@ {x, y} ;

x^(m_ /; m >= 3) ^:= x^Mod[m, 3] y^(m_ /; m >= 2) ^:= y^Mod[m, 2]

x y x z___ ^:= y z y x^2 ^:= x y  x^2 y ^:= y x  y x y z___ ^:= x^2 z

y^n_ x y^m_ ^:= x^(n - 1) y x^(m - 1) x^n_ y x^m_ ^:= x^(n - 1) y x^(m - 1)

{1, x, y} # & /@ {1, x, y} // Fl // Union

{1, x, y x, x^2, y, x y}

{1, x, y} # & /@ {1, x, y x, x^2, y, x y} // Fl // Union

{1, x, y x, x^2, y, x y}

{1, x, y x, x^2, y, x y} # & /@ {1, x, y} // Fl // Union

{1, x, y x, x^2, y, x y}


Converted by Mathematica  (October 16, 2002)