Affiliation:
1. Intel Research, Berkeley, CA
2. UCLA, Los Angeles, CA
Abstract
Type systems and model checking are two prevalent approaches to program verification. A prominent difference between them is that type systems are typically defined in a syntactic and modular style whereas model checking is usually performed in a semantic and whole-program style. This difference between the two approaches makes them complementary to each other: type systems are good at explaining why a program was accepted while model checkers are good at explaining why a program was rejected.
We present a type system that is equivalent to a model checker for verifying temporal safety properties of imperative programs. The model checker is natural and may be instantiated with any finite-state abstraction scheme such as predicate abstraction. The type system, which is also parametric, type checks exactly those programs that are accepted by the model checker. It uses a variant of function types to capture flow sensitivity and intersection and union types to capture context sensitivity. Our result sheds light on the relationship between type systems and model checking, provides a methodology for studying their relative expressiveness, is a step towards sharing results between the two approaches, and motivates synergistic program analyses involving interplay between them.
Funder
National Science Foundation
Publisher
Association for Computing Machinery (ACM)
Cited by
11 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. The role of model checking in software engineering;Frontiers of Computer Science;2018-04-27
2. TYPING WEAK MSOL PROPERTIES;LOG METH COMPUT SCI;2017
3. Input Synthesis for Sampled Data Systems by Program Logic;Electronic Proceedings in Theoretical Computer Science;2015-01-22
4. Typing Weak MSOL Properties;Lecture Notes in Computer Science;2015
5. Type-based parametric analysis of program families;ACM SIGPLAN Notices;2014-11-26