Verified Software: Theories, Tools and Experiments
We propose a methodology for carrying out refinement proofs across declarative abstract models and concrete implementations in C, using the VCC verification tool. The main idea is to first perform a systematic translation from the top-level abstract model to a ghost implementation in VCC. Subsequent refinement proofs between successively refined abstract models and between abstract and concrete implementations are carried out in VCC. We propose an efficient technique to carry out these refinement checks in VCC. We illustrate our methodology with a case study in which we verify a simplified C implementation of an RTOS scheduler, with respect to its abstract Z specification. Overall, our methodology leads to efficient and automatic refinement proofs for complex systems that would typically be beyond the capability of tools such as Z/Eves or Rodin.
Divakaran, Sumesh; D’Souza, Deepak; and Sridhar, Nigamanth, "Efficient Refinement Checking in VCC" (2014). Electrical Engineering & Computer Science Faculty Publications. 371.
S. Divakaran, D. D'Souza and N. Sridhar, "Efficient refinement checking in VCC," in Verified Software: Theories, Tools and Experiments: 6th International Conference, VSTTE 2014, Vienna, Austria, July 17-18, 2014, Revised Selected Papers, D. Giannakopoulou and D. Kroening, Eds. Cham: Springer International Publishing, 2014, pp. 21-36.