be able toはcanと違って条件に注目する
can または could は、単に一般論としてその気になれば可能な状態である(過去の場合は継続して可能であった)ことを意味する。漠然と、それをする能力がある、それをする可能性がある、許可を得るなどは can を使う。例えば I can swim なら泳ごうと思えば泳ぐ能力がある、となる。
次に be able to は一時的な能力や特定の時間、回数など条件がある場合に使う。The baby isn’t able to walk は「赤ちゃんだから」歩けないという一時的な状態を含む。能力よりは条件に注目するので Is he able to come over to hang out? とは言わない(無いわけではないが、遊び程度で来るための条件を確認するのは煩わしい)。文章に条件が現れていなくても、何か条件があったのだろうと推論につながる。
ただし「昨日」何かをできた場合は、一般論ではなくなるので be able to を用いる。例えば I was able to swim across the lake yesterday は特定の日付という条件が求められる。しかしながら普段から泳げるのであれば、その人としてはいつでも可能なので could でいい。
最後に、can は一般論なので、未来の時点という条件が必ず入る未来形の will と同時には使えない。そうして意味わからないが couldn’t は過去いちどだけの場合でも使える。理屈では意味がわからないけれど自然言語だからそういうものなんだろう。