Is John will have arrived yesterday' correct/good English?
I'd happily accept "John will have arrived the day before" or "John will have arrived a day earlier" because we are clearly looking ahead to some time in the future. For me "yesterday" only means "the day before today", not "the day before the day we happen to be talking about".
It's midday. Peter will be landing in Moscow about now.
The phone's ringing. That will be Emma. She said she'd call about this time.
There is certainty, not futurity, in all of these.
I'm shocked many of you say it's OK to say "John will have arrived yesterday." In my school, we tell them not to use "will" with "yesterday."
Out of curiosiy, is it OK to say "John will go there yesterday.", if the certanity is emphasized?
Thank you in advance.
He will/won't be there now. He will/won't have been there then.
He must/can't be there now. He must/can't have been there then.
He should be there now. He should have been there then.
He may/may not be there now. He may/may not have been there then.
He could/couldn't/might/might not be there now. He could/couldn't/might/might not have been there then.
I'd like to add to the explanation, though 5jj is correct.
When we say, "John will have arrived yesterday", we are saying that we believe that John arrived yesterday, but we have no direct confirmation of that, so we can't quite say, "John arrived yesterday." What we are expressing is the belief that, when we find out for certain, we will find out that he arrived yesterday.