Learn English – couldn’t or hasn’t been able to

modal-verbsnegationpresent-perfecttense

I wonder whether we can use couldn't in this sentence, and if no, why:

She misses her family living abroad. She __ visit them for years, but
they just got an e-mail account, so now they can keep in touch daily.

A test I've been solving says one should use hasn't been able to, not couldn't, but I'm not sure why.

One textbook (Downing & Locke) says that we use 'could' for extended actions in the past and 'was able to' for perfective actions, but that in negative phrases this distinction is not obligatory:

He was able to escape. (OK)

*He could escape. (Error)

But:

He wasn't able to escape.

He couldn't escape.

Is it that the words "for years" together with the "but-clause" containing the word "just" stress the "perfectivity" and force us to use the construction (to be able to) better suited for perfective actions?

Best Answer

Note that there are more than two possibilities here. You could use "couldn't", "wasn't able to", or "hasn't been able to". The reason "hasn't been able to" is better than either of the other two is that she still can't visit them. The present perfect is generally the correct verb tense to use when you have a condition that extends from the past into the present, and "hasn't been able to" is present perfect, while both "couldn't" and "wasn't able to" are simple past.

In both the sentences:

She couldn't visit them for years, but …
She wasn't able to visit them for years, but …

the word but sets up the expectation that the first clause is no longer true. However, in the sentence

She hasn't been able to visit them for years, but …

this doesn't happen; because you used the present perfect, the listener knows that the first clause is still true, and so is not surprised when the second clause fails to contradict the first.