Maybe just post all of the code. I don’t know how you got “the solution”. I don’t know how you got the left hand side of the equality. I don’t know how you got the right hand side of the equality. But again, what you posted actually shows that they are NOT equivalent. Look at the first terms.
By introducing Flatten when evaluating u, it solves the problem.
\[ScriptU] = Simplify[First[Flatten[bs1.state]]]
works, but
\[ScriptU] = Simplify[First[bs1.state]]
does not, as it leaves the curly brackets around the answer, and as Eric pointed out, that carries through to my final solution.
One further question - if the terms are NOT equivalent, why does Mathematica not return False?
The == is the infix form of Equal (Equal—Wolfram Documentation). It only returns True or False if it can definitely determine the equality. If the terms have undefined values, the equality cannot be definitively determined. So, for example, a==b will not resolve and will just return unchanged (assuming you haven’t defined a and b).
SameQ will always return either True or False. Its infix form is ===. So, a===b will return False (again assuming that the variables are undefined). If you had previously set a=1 and b=1, then a===b will return True. SameQ is basically looking for whether the two expressions are completely identical.