We can use 'could have' to talk about something somebody was capable of doing but didn't do.
- I could have gone to Oxford University but I preferred Harvard.
- She could have married him but she didn't want to.
- They could have bought a house here 20 years ago but chose not to.
Often, there is a sense of criticism.
- You could have phoned me to let me know.
- They could have helped me instead of just sitting there.
- I could have done more to help you. Sorry.
We can use 'couldn't have' to talk about something we were not capable of doing.
- I couldn't have managed without you.
- I couldn't have got the job. He was always going to appoint his nephew.
- I couldn't have enjoyed myself more. Thank you for a lovely day.
We can use 'could have' to speculate about what has happened. (We can also use 'may have' or 'might have' in these situations.)
- She could have taken the earlier train.
- Simon could have told her.
- They could have overheard what we said.
We can also use 'can have' to speculate about what has happened but only in questions and negative sentences and with words such as 'hardly', 'never' and 'only'.
- Can she have forgotten about our meeting?
- He can't have seen us.
- They can hardly have thought that I was not interested in the job.