Merge functions run_external_proof and check_external_proof.
The only significant difference between these functions is that the first one is calling a callback function at each step, while the second one is generating a report at the end. Any other differences are likely to be actual bugs, which hopefully are now fixed. Now both functions call a third one, which accepts callbacks that encompass all the previous features. Disclaimer: the code is ugly.