I have an Ada 2012 function that converts a 12-bit ADC reading to millivolts, Raw * 3300 / 4095, with a Pre and a Post aspect. With assertions enabled the contract is checked when the program runs. I now read that SPARK can prove the same contract without running anything, and can also prove absence of run-time errors.
What is actually different between a contract that is checked at run time and one that is proved, what does the tool need from me, and does a proved unit still need testing?




