When do we use the structure "should have done"? and particularly in conditional sentences?
for example is it correct to say: "If he were a hard-working student, he should have passed the exam"? (we know that he's not and didn't)
Just for accuracy, I should add that an epistemic 'should' (of the type under discussion here, denoting an assumption) rarely if ever occurs in counterfactual conditionals. However a deontic (i.e. ethical) 'should' is quite possible, e.g.
If there were a fire, you should immediately leave the building.