Alright, I'm having this huge ongoing debate with my friend about 'can't have' and 'couldn't have'. So I was talking to him a few days ago and, quite naturally, said, "No, she can't have passed the test!'' and he said that I meant 'couldn't have passed the test'. But 'can't have' sounds correct to me. Since then, we've been constantly arguing over 'can't have''s correctness. I say that both are right but he initially said that 'can't have' is totally incorrect, then switched to saying that it is correct, but MY context was wrong. Final question: would it be (in)correct for me to say, 'she can't have done that'. Please enlighten me.
In my experience, (British English), both can't have and couldn't have are used. In language, context is key.
In your example (can't / couldn't have passed the test), the surrounding circumstances are not known.
Can't have done something expresses surprise at that moment or expressing something is not plausible, whereas couldn't have done something expresses a lack of ability or capability based on known facts. A couple of examples:
A: Guess what, I just heard that Sarah passed her driving test! B: Wow! She can't have! There must have been no other cars on the road!
A: The policeman arrested him for the burglary. B: He couldn't have done it as he was with me in the coffee shop all day.
Can't is simply the opposite of can.
A simple solution would be to check if can would work in the sentence.
"She can have passed the test." This sentence sounds incredibly awkward however luckily for us English doesn't work in such a fashion.
can /can't show affirmation . They can only be used when you are sure that she hasn't passed the test. However whenever we are affirmitive we can just say "She did not pass the test". This leaves us with a intriguing paradox as there is no usage of can't .
Yet , colloquially it has a widespread usage . Since it has no probability in action . It is widely used in situations where you are sure that your statement is mostly true. Eg She can't have won the race as she was injured. She can't have been dirty as she just had a shower.
Whenever such a sentence is written in formal text, the reason for affirmation must become apparent in the sentence. Editors generally edit out and replace it with couldn't . This is because could has much more widespread application and is much more accepted. Back to your question. If you knew that she was failing the test for sure but you didn't know that she has failed. Then your sentence is correct provided it was apparent in the conversation which preceded that you had enough knowledge to be affirmative.However , in 100% pure and formal English your sentence would be incorrect.