In interactive proofs, do we assume that the prover can always solve the problem? I'm having a difficult time understanding a concept from interactive proofs:

A trivial interactive proof for the graph isomorphism problem is having the prover just send a permutation that shows an isomorphism between $G_1$ and $G_2$, and have the verifier check it.

But what happens when $G_1$ and $G_2$ aren't isomorphic? If the prover really does know a solution to the problem, he'll just say that they aren't and we'll move on. But what if he always says that they aren't isomorphic? We have no way of knowing whether they really aren't, or whether the prover is lying, right? 

So the prover might just always answer "not isomorphic" for any problem given to him, and we'll have no way of knowing whether he's correct or not.

So when we discuss interactive proofs (and Zero-Knowledge Proofs especially) do we always assume that the prover is capable of solving the problem? 

Thanks
No, but if the problem isn't known to be in promiseMA then

we do "assume that the prover can always solve the problem".

https://cstheory.stackexchange.com/questions/696/mip-with-efficient-provers

Graph isomorphism is trivially in NP, so for graph isomorphism, we just

"assume that the prover" has an isomorphism between the graphs.

Graph non-isomorphism is not even known to be in MA, so for graph non-isomorphism,

we do "assume that the prover can always solve the problem".