>「~しているはずだ」は[should have 過去分詞]と習いましたが、「~していたはずだ」はどのような形になるんですか?
何か、誤解があるかもしれません。
質問の「している/していたはずだ」が、
「今、彼は英語を勉強しているはずだ」なら「He must/should be studying English now.」
「そのとき、彼は英語を勉強していたはずだ」なら「He must/should have been studying English then.」
になります。
「~している」という日本語だけだと、現在形や現在完了形がふさわしい場合もありますから、
「はずだ」という表現も、それに応じて、変わってきます。
そういう意味で、一般論は難しいところがあるので、上に書いたのと違う意味の
「しているはずだ」の話だった場合には、補足で、具体的に書いてみると
回答が得られると思います。
should のような助動詞の過去形そのものは勿論、had betterのような過去形の助動詞、ought to, must も、見るからに過去形型、こういう奴は、仮定法の尻尾をひきずったような表現で(義務系ではありませんが、could,would,mightもその点は同じ)、単なるニュートラルな義務ではなく、そうしてないじゃないか、という非難のニュアンスが多かれ少なかれ含まれていて、日本語訳から感じるより、キツい表現ですし、キツい順番も、日本語訳の順番とは違ってくるので注意が必要です(例えば、日本語だと、~した方がいい、には、すべきだ、しなければならない、より、表現が柔らかいという感じがありますが、had betterは、むしろキツめの表現です)。
で、単純な過去の義務だと、ハッキリ言いたい場合は、「have to」の過去形「had to」を使うのが無難です。
え、ニュアンスの差は、と、思うかもしれませんが、ここらへんの義務系の助動詞に、日本語のニュアンスの差と対応した同じニュアンスの差があると考えるのは、上で書いたように無理な面があるので、非難のニュアンスを消す、を優先するのが、正解かと思います。
同様に、~することができた、~するつもりだった、も、仮定法の尻尾をひきずる、could, would を使うのは、うまくないことが多いので、どちらも代用表現の方、was/were able to、was/were going toを使うのが得策でしょう。