Lambda lifting: transforming programs to recursive equations
Proc. of a conference on Functional programming languages and computer architecture
Deciding ML typability is complete for deterministic exponential time
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ML typability is Dexptime-complete
CAAP '90 Proceedings of the fifteenth colloquium on CAAP'90
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Tree automata, Mu-Calculus and determinacy
SFCS '91 Proceedings of the 32nd annual symposium on Foundations of computer science
Compiling with continuations
A simple proof of a theorem of Statman
Theoretical Computer Science
Complete restrictions of the intersection type discipline
Theoretical Computer Science
A syntactic approach to type soundness
Information and Computation
Intersection type assignment systems
Selected papers of the thirteenth conference on Foundations of software technology and theoretical computer science
Languages, automata, and logic
Handbook of formal languages, vol. 3
Model checking
An automata-theoretic approach to branching-time model checking
Journal of the ACM (JACM)
Tractable constraints in finite semilattices
Science of Computer Programming
Type-based analysis of uncaught exceptions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Enforcing high-level protocols in low-level software
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Type-based analysis and applications
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
The SLAM project: debugging system software via static analysis
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Theoretical Computer Science
Flow-sensitive type qualifiers
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Principles of Program Analysis
Principles of Program Analysis
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polymorphic Binding-Time Analysis
ESOP '94 Proceedings of the 5th European Symposium on Programming: Programming Languages and Systems
Strictness Analysis in Logical Form
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Functional Characterization of Some Semantic Equalities inside Lambda-Calculus
Proceedings of the 6th Colloquium, on Automata, Languages and Programming
Higher-Order Pushdown Trees Are Easy
FoSSaCS '02 Proceedings of the 5th International Conference on Foundations of Software Science and Computation Structures
An algebraic formulation of the Chomsky hierarchy
Proceedings of the Proceedings of the First International Symposium on Category Theory Applied to Computation and Control
The Theory and Practice of Transforming Call-by-need into Call-by-value
Proceedings of the Fourth 'Colloque International sur la Programmation' on International Symposium on Programming
Construction of Abstract State Graphs with PVS
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Continuation Semantics in Typed Lambda-Calculi (Summary)
Proceedings of the Conference on Logic of Programs
Counterexample-guided abstraction refinement for symbolic model checking
Journal of the ACM (JACM)
CDuce: an XML-centric general-purpose language
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Mathematical Structures in Computer Science
Principality and type inference for intersection types using expansion variables
Theoretical Computer Science
Regular expression types for XML
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Resource usage analysis for a functional language with exceptions
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
On Model-Checking Trees Generated by Higher-Order Recursion Schemes
LICS '06 Proceedings of the 21st Annual IEEE Symposium on Logic in Computer Science
Proving that programs eventually do something good
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The software model checker Blast: Applications to software engineering
International Journal on Software Tools for Technology Transfer (STTT)
On strong normalization and type inference in the intersection type discipline
Theoretical Computer Science
Sound, complete and scalable path-sensitive analysis
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Collapsible Pushdown Automata and Recursion Schemes
LICS '08 Proceedings of the 2008 23rd Annual IEEE Symposium on Logic in Computer Science
Types and higher-order recursion schemes for verification of higher-order programs
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Exception Handlers as Extensible Cases
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
Exploiting reachability and cardinality in higher-order flow analysis
Journal of Functional Programming
Model-checking higher-order functions
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
A Type System Equivalent to the Modal Mu-Calculus Model Checking of Higher-Order Recursion Schemes
LICS '09 Proceedings of the 2009 24th Annual IEEE Symposium on Logic In Computer Science
Higher-order multi-parameter tree transducers and recursion schemes for program verification
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Deciding monadic theories of hyperalgebraic trees
TLCA'01 Proceedings of the 5th international conference on Typed lambda calculi and applications
Towards practical typechecking for macro tree transducers
DBPL'07 Proceedings of the 11th international conference on Database programming languages
On-the-fly techniques for game-based software model checking
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Verifying higher-order functional programs with pattern-matching algebraic data types
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FOSSACS'11/ETAPS'11 Proceedings of the 14th international conference on Foundations of software science and computational structures: part of the joint European conferences on theory and practice of software
Predicate abstraction and CEGAR for higher-order model checking
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
XML type checking using high-level tree transducer
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Unsafe grammars and panic automata
ICALP'05 Proceedings of the 32nd international conference on Automata, Languages and Programming
Lazy abstraction with interpolants
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
A type system equivalent to a model checker
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
The monadic second order theory of trees given by arbitrary level-two recursion schemes is decidable
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Untyped recursion schemes and infinite intersection types
FOSSACS'10 Proceedings of the 13th international conference on Foundations of Software Science and Computational Structures
Exact flow analysis by higher-order model checking
FLOPS'12 Proceedings of the 11th international conference on Functional and Logic Programming
Hi-index | 0.00 |
We propose a novel verification method for higher-order functional programs based on higher-order model checking, or more precisely, model checking of higher-order recursion schemes (recursion schemes, for short). The most distinguishing feature of our verification method for higher-order programs is that it is sound, complete, and automatic for the simply typed λ-calculus with recursion and finite base types, and for various program verification problems such as reachability, flow analysis, and resource usage verification. We first show that a variety of program verification problems can be reduced to model checking problems for recursion schemes, by transforming a program into a recursion scheme that generates a tree representing all the interesting possible event sequences of the program. We then develop a new type-based model-checking algorithm for recursion schemes and implement a prototype recursion scheme model checker. To our knowledge, this is the first implementation of a recursion scheme model checker. Experiments show that our model checker is reasonably fast, despite the worst-case time complexity of recursion scheme model checking being hyperexponential in general. Altogether, the results provide a new, promising approach to verification of higher-order functional programs.