ABSTRACT
We present the first method for reasoning about temporal logic properties of higher-order, infinite-data programs. By distinguishing between the finite traces and infinite traces in the specification, we obtain rules that permit us to reason about the temporal behavior of program parts via a type-and-effect system, which is then able to compose these facts together to prove the overall target property of the program. The type system alone is strong enough to derive many temporal safety properties using refinement types and temporal effects. We also show how existing techniques can be used as oracles to provide liveness information (e.g. termination) about program parts and that the type-and-effect system can combine this information with temporal safety information to derive nontrivial temporal properties. Our work has application toward verification of higher-order software, as well as modular strategies for procedural programs.
- Alur, R., and Chaudhuri, S. Temporal reasoning for procedural programs. In Proceedings of the 11th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI'10) (2010), vol. 5944, pp. 45--60. Google ScholarDigital Library
- Ball, T., and Rajamani, S. K. Automatically validating temporal safety properties of interfaces. In Proceedings of the 8th International SPIN Workshop on Model Checking Software (2001), vol. 2057, pp. 103--122. Google ScholarDigital Library
- Barringer, H., Kuiper, R., and Pnueli, A. Now you may compose temporal logic specifications. In Proceedings of the 16th Annual ACM Symposium on Theory of Computing (STOC '84) (1984), pp. 51--63. Google ScholarDigital Library
- Beyene, T., Popeea, C., and Rybalchenko, A. Solving existentially quantified horn clauses. In Proceedings of the 25th International Conference on Computer Aided Verification (CAV'11) (2013). Google ScholarDigital Library
- Beyer, D., Henzinger, T. A., Jhala, R., and Majumdar, R. The software model checker blast. STTT 9, 5-6 (2007), 505--525. Google ScholarDigital Library
- Bhargavan, K., Fournet, C., and Gordon, A. D. Modular verification of security protocol code by typing. In The 37th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'10) (2010), pp. 445--456. Google ScholarDigital Library
- Clarke, E. M., Grumberg, O., Jha, S., Lu, Y., and Veith, H. Counterexample-guided abstraction refinement. In Proceedings of the 12th International Conference on Computer Aided Verification (CAV'00) (2000), vol. 1855, pp. 154--169. Google ScholarDigital Library
- Cook, B., Gotsman, A., Podelski, A., Rybalchenko, A., and Vardi, M. Y. Proving that programs eventually do something good. In Proceedings of the 34th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'07) (2007), pp. 265--276. Google ScholarDigital Library
- Cook, B., and Koskinen, E. Making prophecies with decision predicates. In Proceedings of the 38th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'11) (2011), ACM, pp. 399--410. Google ScholarDigital Library
- Cook, B., and Koskinen, E. Reasoning about nondeterminism in programs. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'13) (2013), ACM. Google ScholarDigital Library
- Cook, B., Koskinen, E., and Vardi, M. Temporal verification as a program analysis task {extended version}. Formal Methods in System Design (2012). Google ScholarDigital Library
- Cook, B., Koskinen, E., and Vardi, M. Y. Temporal property verification as a program analysis task. In Proceedings of the 23rd International Conference on Computer Aided Verification (CAV'11) (2011), vol. 6806, pp. 333--348. Google ScholarDigital Library
- Cook, B., Podelski, A., and Rybalchenko, A. Termination proofs for systems code. In Proceedings of the ACM SIGPLAN 2006 Conference on Programming Language Design and Implementation (PLDI'06) (2006), pp. 415--426. Google ScholarDigital Library
- Cousot, P., and Cousot, R. Inductive definitions, semantics and abstract interpretation. In Proceedings of the 19th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (1992), R. Sethi, Ed., ACM Press, pp. 83--94. Google ScholarDigital Library
- Gastin, P., and Oddoux, D. Fast LTL to Büchi automata translation. In Proceedings of the 15th International Conference on Computer Aided Verification (CAV'01) (2001), pp. 53--65. Google ScholarDigital Library
- Jhala, R., Majumdar, R., and Rybalchenko, A. HMC: Verifying functional programs using abstract interpreters. In Proceedings of the 23rd International Conference on Computer Aided Verification (CAV'11) (2011). Google ScholarDigital Library
- Johnsson, T. Lambda lifting: Transforming programs to recursive equations. In FPCA (1985), pp. 190--203. Google ScholarDigital Library
- Kobayashi, N., and Ong, C.-H. L. A type system equivalent to the modal mu-calculus model checking of higher-order recursion schemes. In Proceedings of the 24th Annual IEEE Symposium on Logic in Computer Science (LICS'09) (2009), pp. 179--188. Google ScholarDigital Library
- Kobayashi, N., Sato, R., and Unno, H. Predicate abstraction and cegar for higher-order model checking. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'11) (2011), pp. 222--233. Google ScholarDigital Library
- Koskinen, E., and Terauchi, T. Local temporal reasoning. Tech. Rep. 966, New York University, 2014.Google ScholarDigital Library
- Kuwahara, T., Terauchi, T., Unno, H., and Kobayashi, N. Automatic termination verification for higher-order functional programs. In Proceedings of the 22nd European Symposium on Programming (ESOP'14) (2014), vol. 7792, pp. 1--20.Google ScholarDigital Library
- Ledesma-Garza, R., and Rybalchenko, A. Binary reachability analysis of higher order functional programs. In Proceedings of the 19th International Symposium on Static Analysis (SAS'12) (2012), vol. 7460, pp. 388--404. Google ScholarDigital Library
- Leroy, X., and Grall, H. Coinductive big-step operational semantics. Inf. Comput. 207, 2 (2009), 284--304. Google ScholarDigital Library
- McMillan, K. L. Lazy abstraction with interpolants. In CAV'06 (2006), T. Ball and R. B. Jones, Eds., vol. 4144, pp. 123--136. Google ScholarDigital Library
- Podelski, A., and Rybalchenko, A. A complete method for the synthesis of linear ranking functions. In Proceedings of the 5th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI'04) (2004), vol. 2937, Springer, pp. 239--251.Google ScholarCross Ref
- Rondon, P. M., Kawaguchi, M., and Jhala, R. Liquid types. In Proceedings of the ACM SIGPLAN 2008 Conference on Programming Language Design and Implementation (PLDI'08) (2008), ACM, pp. 159--169. Google ScholarDigital Library
- Skalka, C., and Smith, S. F. History effects and verification. In Proceedings of Programming Languages and Systems: Second Asian Symposium, (APLAS 2004) (2004), W.-N. Chin, Ed., vol. 3302, Springer, pp. 107--128.Google ScholarCross Ref
- Skalka, C., Smith, S. F., and Horn, D. V. Types and trace effects of higher order programs. J. Funct. Program. 18, 2 (2008), 179--249. Google ScholarDigital Library
- Terauchi, T. Dependent types from counterexamples. In Proceedings of the 37th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'10) (2010), ACM, pp. 119--130. Google ScholarDigital Library
- Thomas, W. Handbook of theoretical computer science (vol. b). MIT Press, Cambridge, MA, USA, 1990, ch. Automata on Infinite Objects, pp. 133--191. Google ScholarDigital Library
- Unno, H., Terauchi, T., and Kobayashi, N. Automating relatively complete verification of higher-order functional programs. In Proceedings of the 40th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'13) (2013), pp. 75--86. Google ScholarDigital Library
- Xi, H., and Pfenning, F. Dependent types in practical programming. In Proceedings of the 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'99) (1999), pp. 214--227. Google ScholarDigital Library
Index Terms
- Local temporal reasoning
Recommendations
A Fixpoint Logic and Dependent Effects for Temporal Property Verification
LICS '18: Proceedings of the 33rd Annual ACM/IEEE Symposium on Logic in Computer ScienceExisting approaches to temporal verification of higher-order functional programs have either sacrificed compositionality in favor of achieving automation or vice-versa. In this paper we present a dependent-refinement type & effect system to ensure that ...
Temporal property verification as a program analysis task
We describe a reduction from temporal property verification to a program analysis problem. First we present a proof system that, unlike the standard formulation, is more amenable to reasoning about infinite-state systems: disjunction is treated by ...
Reasoning about nondeterminism in programs
PLDI '13Branching-time temporal logics (e.g. CTL, CTL*, modal mu-calculus) allow us to ask sophisticated questions about the nondeterminism that appears in systems. Applications of this type of reasoning include planning, games, security analysis, disproving, ...
Comments