We can use 'should have' to talk about past events that did not happen.
  • I should have let her know what was happening but I forgot.
  • He should have sent everybody a reminder by email.
  • They should have remembered that their guests don't eat pork.
We can also use 'should have' to speculate about events that may or may not have happened.
  • She should have got the letter this morning. I expect she'll give us a call about it later.
  • He should have arrived at his office by now. Let's try ringing him.
  • They should have all read that first email by this stage. It's time to send the next one.
We can use ' should not have'  to speculate negatively about what may or may not have happened.
  • She shouldn't have left work yet. I'll call her office.
  • He shouldn't have boarded his plane yet. We can probably still get hold of him.
  • They shouldn't have sent the report off for printing yet. There is still time to make changes.
We can also use 'should not have'  to regret past actions.
  • I shouldn't have shouted at you. I apologise.
  • We shouldn't have left the office so late. We should have anticipated this bad traffic.
  • They shouldn't have sacked him. He was the most creative person on their team.