Proving Mutual Termination of Programs
Two programs are said to be mutually terminating if they terminate on exactly the same inputs. We suggest a proof rule that uses a mapping between the functions of the two programs for proving mutual termination of functions f, f′. The rule’s premise requires proving that given the same arbitrary input in, f(in) and f’(in) call mapped functions with the same arguments. A variant of this rule with a weaker premise allows to prove termination of one of the programs if the other is known to terminate for all inputs. We present an algorithm for decomposing the verification problem of whole programs to that of proving mutual termination of individual functions, based on our suggested rules.
KeywordsFunction Call Recursive Function Recursive Call Function Pair Input Program
Unable to display preview. Download preview PDF.
- 1.Full version available from http://ie.technion.ac.il/~ofers/hvc-full.pdf
- 5.Clarke, E., Kroening, D.: Hardware verification using ANSI-C programs as a reference. In: Proceedings of ASP-DAC 2003, pp. 308–311. IEEE Computer Society Press (January 2003)Google Scholar
- 12.Godlin, B., Strichman, O.: Regression verification. Technical Report IE/IS-2011-02, Technion (2011), http://ie.technion.ac.il/tech_reports/1306207119_j.pdf
- 13.Godlin, B., Strichman, O.: Regression verification. In: 46th Design Automation Conference, DAC (2009)Google Scholar
- 14.Kawaguchi, M., Lahiri, S.K., Rebelo, H.: Conditional equivalence. Technical Report MSR-TR-2010-119, Microsoft Research (2010)Google Scholar