We present a basis for the construction of automated tools that
cannot only prove that a program never does anything bad, but also can
prove that the program
eventually does something good. Such proofs increase our
confidence that the program will perform correctly.