Proofs that count

A Farzan, Z Kincaid, A Podelski - Proceedings of the 41st ACM SIGPLAN …, 2014 - dl.acm.org
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of …, 2014dl.acm.org
Counting arguments are among the most basic proof methods in mathematics. Within the
field of formal verification, they are useful for reasoning about programs with infinite control,
such as programs with an unbounded number of threads, or (concurrent) programs with
recursive procedures. While counting arguments are common in informal, hand-written
proofs of such programs, there are no fully automated techniques to construct counting
arguments. The key questions involved in automating counting arguments are: how to …
Counting arguments are among the most basic proof methods in mathematics. Within the field of formal verification, they are useful for reasoning about programs with infinite control, such as programs with an unbounded number of threads, or (concurrent) programs with recursive procedures. While counting arguments are common in informal, hand-written proofs of such programs, there are no fully automated techniques to construct counting arguments. The key questions involved in automating counting arguments are: how to decide what should be counted?, and how to decide when a counting argument is valid? In this paper, we present a technique for automatically constructing and checking counting arguments, which includes novel solutions to these questions.
ACM Digital Library