What are the differences between "May" & "Might" / "May have" & "Might have" in strict English?

The more I learn about Modals, the more confused I get. English Modals are very unstructured or adhere to a rigorous structure & that makes foreigners hard to understand them.

According to oxforddictionaries.com

Some people insist that you should use may (present tense) when talking about a current situation and might (past tense) when talking about an event that happened in the past. For example:

I may go home early if I’m tired. (present tense)

He might have visited Italy before settling in Nuremberg. (past tense, might here refers to posibility)

However, the site also states

In practice, this distinction is rarely made today and the two words are generally interchangeable:

I might go home early if I’m tired.

He may have visited Italy before settling in Nuremberg.

But there is a distinction between may have and might have in certain contexts. If the truth of a situation is still not known at the time of speaking or writing, either of the two is acceptable:

By the time you read this, he may have made his decision.

I think that comment might have offended some people.

If the event or situation referred to did not in fact occur, it's better to use might have:

The draw against Italy might have been a turning point, but it didn't turn out like that. (might here prefers to Ability, not Posibility)

My questions are those:

  1. Should we always use "may" for the present & "might" for the past as suggested by this page?

    That means we should never say "I may have done something", but we should say "I might have done something"

  2. As mentioned above, people do not distinguish "may have" & "might have", both refer to the past (The past can be "present perfect", "past perfect" or "simple past". My question is:

    Is there any slight difference between "may have" & "might have" in today English? For example, "I may have done this" corresponds to "Present perfect" & "I might have done this" corresponds to "Past perfect" or "simple past"?

    Ex 1: The baby may have been sleeping for 2 hours (similar to Present perfect, the action lasts from the past to the present time)

    Ex 2: The baby might have been sleeping for 2 hours (similar to Past perfect, the action had lasted from the past to a point in the past)

    But I am not sure my thinking is right or not because noone has ever brought this up.


Solution 1:

It's silly to say you can never say "may have". Though I may have offended someone by calling it silly...

The one thing you mustn't do is to confuse may and might.

"Heisenberg may have slept here" means it's possible he did.

"Napoleon might have liked the Eiffel Tower" means it WAS possible he WOULD, but obviously didn't because no such tower existed in his day.

Solution 2:

The following simple rule is easy to remember, and sometimes it works (but often it doesn't). (1) Adding "may" to a past gives "may have"; (2) Adding past to a "may" gives "might".

For (1), starting with "He liked fish" and adding "may" (meaning it's possible) gives "He may have liked fish."

For (2), starting with 'I said: "He may like fish"' gives "I said that he might like fish."

Doing both (1) and (2), starting with 'I said: "It's possible he liked fish"' gives "I said that he might have liked fish."

I have had to use the shift from direct to indirect speech in these examples, because elsewhere in modern English, "might" has lost its sense as a past tense.