Every time a program runs, it traces a single path through billions of possible states. A bug might live on a path no test ever follows â until a spacecraft glitches at 40,000 feet, or a pacemaker freezes at the worst moment. The question that haunts engineers is simple and devastating: can a program ever reach a bad state, no matter what inputs it receives?
Running the program cannot answer that â you can only test finitely many inputs, and the dangerous ones may not be among them. This is not pessimism; it is a theorem. The halting problem guarantees that no algorithm can decide, for an arbitrary program and property, whether the property holds on every execution.
Abstract interpretation, invented by Patrick Cousot and Radhia Cousot in 1977, cuts through this impasse with a beautiful idea: instead of executing the program on concrete values, execute it on abstractions â compact mathematical objects that represent whole sets of possible values at once. The result is not the exact answer, but it is sound: if the abstract analysis says "no error," then no concrete execution can produce one. The false-alarm rate may be non-zero; the miss rate is zero.
This discipline underpins the AstrĂ©e static analyzer, which in the early 2000s was used to verify the absence of runtime errors in the fly-by-wire software of the Airbus A380 â zero false alarms on 132,000 lines of C â and it continues to power safety-critical verification in avionics, automotive (ISO 26262), and medical devices worldwide.
Comments
Loading comments...