Abstract
Higher-order model checking (more precisely, the model checking of higher-order recursion schemes) has been extensively studied recently, which can automatically decide properties of programs written in the simply-typed λ-calculus with recursion and finite data domains. This paper formalizes predicate abstraction and counterexample-guided abstraction refinement (CEGAR) for higher-order model checking, enabling automatic verification of programs that use infinite data domains such as integers. A prototype verifier for higher-order functional programs based on the formalization has been implemented and tested for several programs.
- A. Bakewell and D. R. Ghica. Compositional predicate abstraction from game semantics. In TACAS '09, pages 62--76. Springer, 2009. Google Scholar
Digital Library
- T. Ball, R. Majumdar, T. Millstein, and S. K. Rajamani. Automatic predicate abstraction of C programs. In PLDI '01, pages 203--213. ACM, 2001. Google Scholar
Digital Library
- T. Ball, T. Millstein, and S. K. Rajamani. Polymorphic predicate abstraction. ACM Transactions on Programming Languages and Systems, 27(2):314--343, 2005. Google Scholar
Digital Library
- T. Ball and S. K. Rajamani. The SLAM project: debugging system software via static analysis. In POPL '02, pages 1--3. ACM, 2002. Google Scholar
Digital Library
- C. Barrett and C. Tinelli. CVC3. In CAV '07, volume 4590 of LNCS, pages 298--302. Springer, July 2007. Google Scholar
Digital Library
- D. Beyer, D. Zufferey, and R. Majumdar. CSIsat: Interpolation for LA EUF (tool paper). In CAV '08, volume 5123 of LNCS, pages 304--308, July 2008. Google Scholar
- W.-N. Chin and S.-C. Khoo. Calculating sized types. Higher-Order and Symbolic Computation, 14(2-3):261--300, September 2001. Google Scholar
Digital Library
- E. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample-guided abstraction refinement for symbolic model checking. Journal of the ACM, 50(5):752--794, 2003. Google Scholar
Digital Library
- P. Cousot and N. Halbwachs. Automatic discovery of linear restraints among variables of a program. In POPL '78, pages 84--96. ACM, 1978. Google Scholar
Digital Library
- W. Damm. The IO- and OI-hierarchies. Theoretical Computer Science, 20(2):95--207, 1982.Google Scholar
Cross Ref
- C. Flanagan. Hybrid type checking. In POPL '06, pages 245--256. ACM, 2006. Google Scholar
Digital Library
- S. Graf and H. Saïdi. Construction of abstract state graphs with PVS. In CAV '97, volume 1254 of LNCS, pages 72--83. Springer, June 1997. Google Scholar
Digital Library
- M. Heizmann, J. Hoenicke, and A. Podelski. Nested interpolants. In POPL '10, pages 471--482. ACM, 2010. Google Scholar
Digital Library
- T. A. Henzinger, R. Jhala, R. Majumdar, and K. L. McMillan. Abstractions from proofs. In POPL '04, pages 232--244. ACM, 2004. Google Scholar
Digital Library
- T. A. Henzinger, R. Jhala, R. Majumdar, and G. Sutre. Lazy abstraction. In POPL '02, pages 58--70. ACM, 2002. Google Scholar
Digital Library
- R. Jhala and R. Majumdar. Counterexample refinement for functional programs. Manuscript, available from http://www.cs.ucla.edu/ rupak/Papers/CEGARFunctional.ps, 2009.Google Scholar
- R. Jhala, R. Majumdar, and A. Rybalchenko. Refinement type inference via abstract interpretation. arXiv:1004.2884v1, 2010.Google Scholar
- R. Jhala and K. L. McMillan. A practical and complete approach to predicate refinement. In TACAS '06, volume 3920 of LNCS, pages 459--473. Springer, 2006. Google Scholar
- T. Knapik, D. Niwinski, and P. Urzyczyn. Higher-order pushdown trees are easy. In FoSSaCS '02, volume 2303 of LNCS, pages 205--222. Springer, 2002. Google Scholar
Digital Library
- N. Kobayashi. Model-checking higher-order functions. In PPDP '09, pages 25--36. ACM, 2009. Google Scholar
Digital Library
- N. Kobayashi. TRecS. http://www.kb.ecei.tohoku.ac.jp/koba/trecs/, 2009.Google Scholar
- N. Kobayashi. Types and higher-order recursion schemes for verification of higher-order programs. In POPL '09, pages 416--428. ACM, 2009. Google Scholar
Digital Library
- N. Kobayashi. A practical linear time algorithm for trivial automata model checking of higher-order recursion schemes. In FoSSaCS '11. Springer, 2011. Google Scholar
Digital Library
- N. Kobayashi and C.-H. L. Ong. A type system equivalent to the modal mu-calculus model checking of higher-order recursion schemes. In LICS '09, pages 179--188. IEEE, 2009. Google Scholar
Digital Library
- N. Kobayashi, R. Sato, and H. Unno. Predicate abstraction and CEGAR for higher-order model checking. An extended version, available from http://www.kb.ecei.tohoku.ac.jp/ uhiro/, 2011.Google Scholar
- N. Kobayashi, N. Tabuchi, and H. Unno. Higher-order multi-parameter tree transducers and recursion schemes for program verification. In POPL '10, pages 495--508. ACM, 2010. Google Scholar
Digital Library
- K. L. McMillan. An interpolating theorem prover. Theoretical Computer Science, 345(1):101--121, 2005. Google Scholar
Digital Library
- C.-H. L. Ong. On model-checking trees generated by higher-order recursion schemes. In LICS '06, pages 81--90. IEEE, 2006. Google Scholar
Digital Library
- C.-H. L. Ong and S. J. Ramsay. Verifying higher-order functional programs with pattern-matching algebraic data types. In POPL '11, pages 587--598. ACM, 2011. Google Scholar
Digital Library
- J. C. Reynolds. Definitional interpreters for higher-order programming languages. In Proceedings of the ACM annual conference - Volume 2, pages 717--740. ACM, 1972. Google Scholar
Digital Library
- P. Rondon, M. Kawaguchi, and R. Jhala. Liquid types. In PLDI '08. ACM, 2008. Google Scholar
Digital Library
- T. Terauchi. Dependent types from counterexamples. In POPL '10, pages 119--130. ACM, 2010. Google Scholar
Digital Library
- H. Unno and N. Kobayashi. Dependent type inference with interpolants. In PPDP '09, pages 277--288. ACM, 2009. Google Scholar
Digital Library
- H. Unno, N. Tabuchi, and N. Kobayashi. Verification of tree-processing programs via higher-order model checking. In APLAS '10, volume 6461 of LNCS, pages 312--327. Springer, October/December 2010. Google Scholar
Digital Library
- H. Xi and F. Pfenning. Dependent types in practical programming. In POPL '99, pages 214--227. ACM, 1999. Google Scholar
Digital Library
Index Terms
Predicate abstraction and CEGAR for higher-order model checking
Recommendations
Predicate abstraction and CEGAR for higher-order model checking
PLDI '11: Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and ImplementationHigher-order model checking (more precisely, the model checking of higher-order recursion schemes) has been extensively studied recently, which can automatically decide properties of programs written in the simply-typed λ-calculus with recursion and ...
Combining Theorem Proving with Model Checking through Predicate Abstraction
This article presents a procedure for proving invariants of infinite-state reactive systems using a combination of two formal verification techniques: theorem proving and model checking. This method uses term rewriting on the definition of the target ...
Automatically disproving fair termination of higher-order functional programs
ICFP 2016: Proceedings of the 21st ACM SIGPLAN International Conference on Functional ProgrammingWe propose an automated method for disproving fair termination of higher-order functional programs, which is complementary to Murase et al.’s recent method for proving fair termination. A program is said to be fair terminating if it has no infinite ...







Comments