今回は「もしあの時~していたら、~だったのに」というような、過去の話について事実とは違ったことを仮定する表現を見ていきましょう。
まず
If I had met him yesterday, I could have invited him to the party.
「もし昨日彼に会っていたら、そのパーティーに彼を招待できたのに」
という仮定の英文です。
現実には「昨日は彼に会わなかった。だからパーティーには招待できなかった」ということです。
このような「過去の事実と違うことを仮定する」文を「仮定法過去完了」の文といいます。
文法を詳しく見てみましょう。
- 条件節(if 節、副詞節と呼んでもかまいません)を「had + 過去分詞」の過去完了の形にします。
- 帰結節(主節のことです)にも過去完了を適用したいのです。でも仮定法の帰結節には「助動詞の過去形」をつけることになっています。(これは「仮定法過去」でもお話ししたとおりなので、「仮定法過去」の理解が不安な方は、先に英検準2級 仮定法過去をご覧ください)
なので、この場合は「できたのに」に対応するように can の過去形の could を付けましょう。そのうえで「had + 過去分詞」の過去完了を付けましょう。
あら、でも助動詞の後ろには「原形」の動詞しか置くことが出来ませんでしたね。じゃあ、「had + 過去分詞」ではなくて「have + 過去分詞」にしなければならないのですね。
ということで、帰結節は「could + have + 過去分詞」にします。
この場合は「~できたのに」なので助動詞は could でしたが、意味によって would(~しただろうに)、might(~したかもしれない)も使い分けます。
「仮定法の場合は時制を1つ下げる」ということになっていますので、「過去の事実と違うことを仮定する」場合は「過去」より1つ古い「大過去」で表す必要があるのです。「大過去」は「過去完了」の形で表せるのでしたね。なので「仮定法過去完了」となるわけです。
「仮定法過去」「仮定法過去完了」とはっきり分かれている英文ばかりではありません。両者のミックスもあります。
If I had caught that bus, I would be with you now.
「もしあのバスに間に合っていれば、今、あなたと一緒にいるのに」
という英文は、if 節(条件節)が「had + 過去分詞」で「仮定法過去完了」の形、主節(帰結節)が「would + 原形動詞」で「仮定法過去」の形になっています。
「バスに間に合わなかった」のは過去の話、「あなたと一緒にいない」のは現在の話ですので、それぞれ仮定法にするために時制を1つ下げて
「(過去に)バスに間に合ってたら」→ had caught「仮定法過去完了」
「(現在)あなたと一緒にいるのに」→ would be「仮定法過去」
となるわけです。
その逆もありえます。
If I were rich, I could have bought that car.
「もし私がお金持ちなら、あの車を買えていたのに」
という文は、if 節(条件節)が「動詞の過去形」で「仮定法過去」の形、主節(帰結節)が「could + have + 過去分詞」で「仮定法過去完了」の形になっています。
「金持ちではない」のは現在も続いている話、「あの車を買えなかった」のは過去の話ですので、それぞれ時制を1つ下げて
「(あの時も現在もひっくるめて)金持ちなら」→ were「仮定法過去」
「(あの時)車を買えたのに」→ could have bought「仮定法過去完了」
となります。
最後に「仮定法過去」と「仮定法過去完了」の形を整理しておきましょう。
仮定法過去(現在の事実とは違ったことを仮定する)
if 節(条件節、副詞節)→ 動詞の過去形
主節(帰結節)→ 助動詞の過去形(would, could, might, should)+ 原形動詞
仮定法過去完了(過去の事実とは違ったことを仮定する)
if 節(条件節、副詞節)→ had + 動詞の過去分詞形
主節(帰結節)→ 助動詞の過去形(would, could, might, should)+ have + 動詞の過去分詞形