These past modal verbs are all used hypothetically, to talk about things that didn't really happen in the past.
Could have + past participle1: Could have + past participle means that something was possible in the past, or you had the ability to do something in the past, but that you didn't do it. (See also modals of ability.)
- I could have stayed up late, but I decided to go to bed early.
- They could have won the race, but they didn't try hard enough.
- Julie could have bought the book, but she borrowed it from the library instead.
- He could have studied harder, but he was too lazy and that's why he failed the exam.
- I couldn't have arrived any earlier. There was a terrible traffic jam (= it was impossible for me to have arrived any earlier).
- He couldn't have passed the exam, even if he had studied harder. It's a really, really difficult exam.
Why is John late?
- He could have got stuck in traffic.
- He could have forgotten that we were meeting today.
- He could have overslept.
- He might have got stuck in traffic.
- He might have forgotten that we were meeting today.
- He might have overslept.
1: Should have + past participle can mean something that would have been a good idea, but that you didn't do it. It's like giving advice about the past when you say it to someone else, or regretting what you did or didn't do when you're talking about yourself.
Shouldn't have + past participle means that something wasn't a good idea, but you did it anyway.
- I should have studied harder! (= I didn't study very hard and so I failed the exam. I'm sorry about this now.)
- I should have gone to bed early (= I didn't go to bed early and now I'm tired).
- I shouldn't have eaten so much cake! (= I did eat a lot of cake and now I don't feel good.)
- You should have called me when you arrived (= you didn't call me and I was worried. I wish that you had called me).
- John should have left early, then he wouldn't have missed the plane (= but he didn't leave early and so he did miss the plane).
- His plane should have arrived by now (= if everything is fine, the plane has arrived).
- John should have finished work by now (= if everything is normal, John has finished work).
- Lucy should have arrived by now, but she hasn't.
1: Part of the third conditional.
- If I had had enough money, I would have bought a car (but I didn't have enough money, so I didn't buy a car).
-
I would have gone to the party, but I was really busy.
(= I wanted to go to the party, but I didn't because I was busy. If I hadn't been so busy, I would have gone to the party.)
-
I would have called you, but I didn't know your number.
(= I wanted to call you but I didn't know your number, so I didn't call you.)
-
A: Nobody volunteered to help us with the fair
B: I would have helped you. I didn't know you needed help.
(= If I had known that you needed help, I would have helped you.)