Tag Archives

Archive of posts published in the category: Rice

Computer-Aided Programming @ Rice

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
algorithms and
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.