Should can be used with the perfect infinitive (have + past participle). This structure has several meanings.
Should have + past participle
This structure is used to talk about past events which did not happen.
- I should have posted that letter yesterday itself, but I forgot.
- She should have knocked at the door before entering the room. (It was necessary but she didn’t do it.)
- They should have informed his parents that he was unwell. (They didn’t inform his parents.)
- He should have worked harder. (He didn’t work harder.)
- She should have made another attempt before quitting.
- He should have obtained the necessary permissions before opening the shop.
This structure can also be used to talk about logical possibility.
- 10 o’clock – he should have reached home.
- They should have received our letter.
In most cases, the actual meaning of this structure can be inferred using context.
Should not have + past participle
This structure is used to talk about unwanted things that happened.
- You shouldn’t have said things like that to her – it really upset her.
- She shouldn’t have refused that job offer. (= She refused it but it was totally unnecessary.)
- He shouldn’t have invested all his money in stocks. (= He invested all his money in stocks, but that was a stupid thing to do.)
- They shouldn’t have bought that used car. (= They bought that used car, but it was not a wise decision.)
- We shouldn’t have waited for his approval. (= We waited for his approval, but that was not necessary.)