Although the majority of modal verbs have no past form, it is possible to use them to refer to the past. It requires the usage of the so-called perfect infinitive, which is the construction of the modal verb + have + past participle.
MAY HAVE AND MIGHT HAVE
To express that something is probably happening now or will happen soon, we use the modal verb “may” or “might.”
He may be at home.
We might leave earlier. If we want to say that something probably happened in the past, we use “may have” or “might have.”
MAY / MIGHT + HAVE + PAST PARTICIPLE
He may have gone shopping.
I might have lost it somewhere.
She may not have met him before.
To make an assumption about the present and the future, instead of “may/might” we also use the weaker verb “could.”
She could be sleeping now.
They could be abroad.
However, when the same assumption applies to the past, we use “could have” form.
COULD + HAVE + PAST PARTICIPLE
I could have lost the keys in the pub.
The form “could have” is also used when talking about something that could have happened, but did not.
You could have broken your leg!
I could have gone to the cinema, but I decided to stay home.
Whereas negative form “couldn’t have” is used to talk about something that couldn’t have happened and something impossible.
She couldn’t have met him before. He used to live in Canada.
He couldn’t have gone to the shopping centre. It’s closed on Sundays.
MUST HAVE AND CAN’T HAVE
When we expressed certainty about an event or state, we use “must”:
It’s been such a long day. You must be tired.
If he’s not at work or home, he must be in the gym.
The same situation, but in the past, is expressed by “must have”:
MUST + HAVE + PAST PARTICIPLE
You must have been tired.
He must have gone home.
In turn, the verb “can’t” used in the present tense means that a situation is impossible.
Can’t have, correspondingly, means that a situation could not have happened in the past:
CAN’T + HAVE + PAST PARTICIPLE
She can’t have been asleep. Her eyes were open.
You can’t have seen Luke yesterday. He left the city six months ago.
SHOULD HAVE AND OUGHT TO HAVE
When giving advice or suggesting what seemed to be the best solution in a given situation, we use “should” or “ought to”:
You should go there straight away.
I ought to spend more time with my family.
When we talk about what someone should have done in the past (but probably did not), we use “should have” or “ought to have”:
SHOULD / OUGHT TO + HAVE + PAST PARTICIPLE
You should have gone there straight away.
I ought to have spent more time with my family.