must have been should have beencould have been这三者的不同之处?他们都表示对过去已经发生的事情的猜测吗? 还是过去可能发生的事情读猜测?

假如说话人了解事情已经在过去发生,他就无需猜测了。他直接用一般过去时或目前完成时表示出过去的事实即可。用情态动词,说话人并非陈述事实,而是表示说话人自己觉得(推断)某件事极可能、可能、可能在过去发生了。

must/should/could have done都可以表示说话人推断某事件在过去发生了或某状况在过去存在着。这这种使用方法中,三者有什么区别只不过说话人推断时的信心程度不同,must表示信心十足的推断,一定是、一定是...。should表示有肯定的依据作这种推断。信心程度低于用must。could表示这种可能性是存在的。说话人的信心程度低于用must 和 should.

should/could have done还可以是虚拟语气形式,表示主语在过去本应该或本可以做某事,但事实上没做。

所以,读者应该依据句子语境来判断情态动词是表示推断还是虚拟语气使用方法。