Reading Harry Potter 2, I came across the following, and I wonder if the use of couldn't have is the equivalent of couldn't in this context?
"I have got a question, Oliver," said George, who had woken with a start. "Why couldn't you have told us all this yesterday when we were all awake?"
If we change it to the following, how does it change the meaning of it?
"I have got a question, Oliver," said George, who had woken with a start. "Why couldn't you tell us all this yesterday when we were all awake?"
And what is the difference between the following?
If you couldn't do it, you should have told us yesterday.
If you couldn't have done it, you should have told us yesterday.
Best Answer
Could is sometimes called the "remote" form of can. Sometimes it acts like a simple past tense:
but sometimes it acts like a conditional:
or emphasizes the vagueness of a possibility:
and sometimes it's simply more polite:
In your example, both Rowling's "couldn't you have told" and your "couldn't you tell" would be correct. In your "couldn't you tell", could is acting as a past tense. In Rowling's "couldn't you have told", it's have that's providing the past-tense sense, and could is serving a less well-defined role. It could be interpreted as a conditional:
. . . but for language-learning purposes, I think it might be better to think of could have as an idiom, and not try to unpack it too much. To ask why something "couldn't have" happened is to invoke the idea of alternate world where it did, and could's vague conditional sense is perfect for that.