How "Resending Message Attack" works?
I think what Bruce has done is to use Sign and Decrypt interchangeably, he has done same for Validate and Encrypt. I think it is because - to sign a message - Alice uses her private key. Now in terms of encryption / decryption, a private key is used to decrypt the message and a public key is used to encrypt the message.

So instead of saying:

Vm(Db(Eb(Sa(M)))) = Vm(Sa(M))


he is saying:

Em(Db(Eb(Da(M)))) = Em(Da(M))


Which I believe is same thing on implementation level.

So OP is correct, author has used different terms without specifying they are same. This is mentioned it in the next paragraph.