Re: Mathematica: subscript simplification under non-communicative multiplication.

*To*: mathgroup at smc.vnet.net*Subject*: [mg116437] Re: Mathematica: subscript simplification under non-communicative multiplication.*From*: Ray Koopman <koopman at sfu.ca>*Date*: Tue, 15 Feb 2011 06:34:28 -0500 (EST)*References*: <ijash7$nel$1@smc.vnet.net>

On Feb 14, 1:27 am, Cantormath <cantorm... at gmail.com> wrote: > Using Subscript[variable, integer] in Mathematica 7.0+, I have > expressions of the following form: > > a_-4 ** b_1 ** a_-4 ** b_-4 ** a_1 ** c_-4 ** c_1 ** c_5 > > I would like to simplify this expression. > Rules: > Variables with the same subscript to don't commute, > variables with different subscripts do commute. > > I need a way to simplify the expression and combine like terms > (if possible); the output should be something like: > > (a_-4)^2 ** b_-4 ** c_-4 ** b_1 ** a_1 ** c_1 ** c_5 > > The most important thing I need is to order the terms in the > expression by subscripts while preserving the rules about what > commutes and what does not. The second thing (I would like) to do > is to combine like terms once the order is correct. I need to at > least order expressions like above in the following way: > > a_-4 ** a_-4 ** b_-4 ** c_-4 ** b_1 ** a_1 ** c_1 ** c_5, > > that is, commute variables with different subscripts while preserving > the non-communicative nature of variables with the same subscripts. > > All Ideas are welcome, thanks. I've split this into separate statements to make it easier to follow: Subscript @@@ {{a,-4},{b,1},{a,-4},{b,-4},{a,1},{c,-4},{c,1},{c,5}} ; Split@Sort[ %, #1[[2]] <= #2[[2]]& ] ; NonCommutativeMultiply @@ ( #[[1]]^Length@# & /@ % ) (a_-4)^2 ** b_-4 ** c_-4 ** b_1 ** a_1 ** c_1 ** c_5