the application of a symbolic mathematical system to program verification
Program verification is a relatively new application area for symbolic mathematical systems. We report on an interactive program verification system, based on the inductive assertion method, which system is implemented using an existing symbolic mathematical language and supporting system, Reduce. Reduce has been augmented with a number of capabilities which are important to program verification, particularly transformations on relational and Boolean expressions. We believe these capabilities would be valuable in other contexts and should be incorporated more widely into symbolic mathematical systems for general use. The program verification application can serve as a guide to an appropriate definition of such capabilities, particularly with regard to the need to distinguish between undefined program variables and polynomial indeterminates. Additional capabilities which would benefit the program verification application include representation of user-defined functions by internal forms which directly incorporate properties such as commutativity and associativity (as is commonly done with plus and times), and a comprehensive facility for defining conditionally applicable transformations
applications symbolic mathematical systems systems program verification verification interaction inductance assert method use language reduce capabilities relation express context general definition variability polynomial representation intern association simplification correctness user