Written on Apr, 05, 2020by iwano@_84 | No Comments
Computer-Aided Programming @ Rice
The vision of Computer-Aided Programming is to
use the power of automatic reasoning to simplify the task of programming.
Here, rather than manually reasoning
about programs, the programmer uses a program verifier to automatically find proofs
program correctness or incorrectness. Rather than directly coding up executable programs, the
programmer writes a specification of the structure and function of a program, letting
an algorithm for program synthesis generate correct low-level code.
All this may sound too good to be true, as
verification and synthesis are easily seen to be as hard as the Halting
for Turing machines.
However, over the last few decades, our field has developed many
tools that either solve these problems approximately,
or alternatively, solve them exactly for important classes of programs. Some of
these tools are now routinely used by program designers.