Since in state `j` could already be (with malice aforethought) `mp` this would cause a problem wouldn't it? So it should be a Dummy as far as I can see. When testing against the solution, a trick will have to be used: if eq has a single Dummy in its free symbols then we can do

```
eq = x + Dummy('mp')
ans = x + mp
assert eq.xreplace({[d for d in eq.free_symbols if d.is_Dummy][0]: mp}) == ans
```

Since you use the same symbol in the sum as in the state I think this will work. If not, I have other ideas (as well as the existing hack which is to use a keyword like dummy=False to mean "make mp a symbol, not a dummy -- I'll try not to shoot myself in the foot".