I really liked what I read. It was well thought out not to mention showed you'd done your research. 8)
I've two comments:
1) What if, the Present Prefect has nothing whatsoever to do with Time (Tense)? What if, the Present Perfect's function is to focus on the event/action and not the time? If that's the case, then it stands to reason why adverbials which express Time/Tense aren't compatible with the Present Perfect.
Yesterday = When? The day before today. Ah! A specific day.
In the past = When? Uhm? Some time? Ah! A non-specific day.
2) What if,
Sam: "Have you visited Dalian in July?". (OK)
Pat: "I've visited Dalian in July. (OK) meaning, any one July, this year's, last year's, two years ago July, and so on.
Compare:
Pat: I have visited Dalian in July (July two months ago). (not OK)
When 'in July' modfies a Present Perfect verb, the resulting meaning is that 'July' is any one of many Julys, not a specific July. The Present Perfect isn't compatible with adverbs that express TIME (specific time), but if such TIME adverbs can be expressed as non-specific, then they're compatible:
I've been there in July. (
any July) (OK)
I've been there in July of this year. (
a specific July) (not OK)
In short, the Present Perfect is not a Tense, so why attempt to modify its verbs with adverbs denoting Tense? (Psst, that's a Q for Shun). We wouldn't, of course. If we did, we'd get an ungrammatical result:
I have been there yesterday. (
a specific day) (not OK)
Adverbs denoting Tense are compatible only with verbs denoting Tense.
I was there yesterday. (
a specific day) (OK)
Adverbs not denoting Tense are compatible with verbs not denoting Tense.
I have been there in the past. (
When? Some time.) (OK)
Present Perfect verbs have nothing to do with Tense. When deciding which adverb is compatible, ask the question "When is (adverb)?". If the answer is too complicated to compute, then you know the adverb is compatible.
I have seen him in the past few weeks.
Q:
When is 'the past few weeks'?
A:
Well, let's see. Today is 3-Nov, and 'few weeks' is three weeks, about, and if we substract three weeks from today, we'll get..., let' me look at my calendar to check.
It's complicated. Computing non-specific time is complicated.
Compare:
I saw him yesterday.
Q:
When is yesterday?
A:
It's the day before today. Computing specific time is easy :D