Journal Article10.1145/1925844.1926453
Verifying higher-order functional programs with pattern-matching algebraic data types
C.-H. Luke Ong,Steven J. Ramsay +1 more
- 26 Jan 2011
- Vol. 46, Iss: 1, pp 587-598
TL;DR: This paper introduces pattern-matching recursion schemes (PMRS) as an accurate model of computation for functional programs that manipulate algebraic data-types and shows that the (trivial automaton) model-checking problem for weak PMRS is decidable.
read more
Abstract: Type-based model checking algorithms for higher-order recursion schemes have recently emerged as a promising approach to the verification of functional programs. We introduce pattern-matching recursion schemes (PMRS) as an accurate model of computation for functional programs that manipulate algebraic data-types. PMRS are a natural extension of higher-order recursion schemes that incorporate pattern-matching in the defining rules.This paper is concerned with the following (undecidable) verification problem: given a correctness property φ, a functional program ℘ (qua PMRS) and a regular input set ℑ, does every term that is reachable from ℑ under rewriting by ℘ satisfy φ? To solve the PMRS verification problem, we present a sound semi-algorithm which is based on model-checking and counterexample guided abstraction refinement. Given a no-instance of the verification problem, the method is guaranteed to terminate.From an order-n PMRS and an input set generated by a regular tree grammar, our method constructs an order-n weak PMRS which over-approximates only the first-order pattern-matching behaviour, whilst remaining completely faithful to the higher-order control flow. Using a variation of Kobayashi's type-based approach, we show that the (trivial automaton) model-checking problem for weak PMRS is decidable. When a violation of the property is detected in the abstraction which does not correspond to a violation in the model, the abstraction is automatically refined by `unfolding' the pattern-matching rules in the program to give successively more and more accurate weak PMRS models.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Directed symbolic execution
Kin-Keung Ma,Khoo Yit Phang,Jeffrey S. Foster,Michael Hicks +3 more
- 14 Sep 2011
TL;DR: This paper proposes two new directed symbolic execution strategies that aim to solve the problem of automatically finding program executions that reach a particular target line, and proposes a hybrid strategy, Mix-CCBSE, which alternates CCBSE with another (forward) search strategy.
•Proceedings Article
Resource Usage Analysis.
Atsushi Igarashi,Naoki Kobayashi +1 more
- 01 Jan 2001
TL;DR: A general problem of analyzing resource usage as a resource usage analysis problem is formalized, and a type-based method is proposed as a solution to the problem.
167
Higher-Order Approximate Relational Refinement Types for Mechanism Design and Differential Privacy
Gilles Barthe,Marco Gaboardi,Emilio Jesús Gallego Arias,Justin Hsu,Aaron Roth,Pierre-Yves Strub +5 more
TL;DR: In this article, a relational refinement type system, called $\mathsf{HOARe}^2$, is proposed for verifying mechanism design and differential privacy, which is sound w.r.t. a denotational semantics and correctly models differential privacy.
84
Symbolic security analysis of ruby-on-rails web applications
Avik Chaudhuri,Jeffrey S. Foster +1 more
- 04 Oct 2010
TL;DR: This work introduces Rubyx, a symbolic executor that is used to analyze Ruby-on-Rails web applications for security vulnerabilities, and shows how to write Ruby specifications to detect susceptibility to cross-site scripting and cross- site request forgery, insufficient authentication, leaks of secret information, insufficient access control, as well as application-specific security properties.
A practical linear time algorithm for trivial automata model checking of higher-order recursion schemes
Naoki Kobayashi
- 26 Mar 2011
TL;DR: This is the first practical model checking algorithm for recursion schemes that runs in time linear in the size of the higher-order recursion scheme, under the assumption that thesize of trivial automata and the largest order and arity of functions are fixed.
References
KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs
Cristian Cadar,Daniel Dunbar,Dawson Engler +2 more
- 08 Dec 2008
TL;DR: A new symbolic execution tool, KLEE, capable of automatically generating tests that achieve high coverage on a diverse set of complex and environmentally-intensive programs, and significantly beat the coverage of the developers' own hand-written test suite is presented.
Symbolic execution and program testing
TL;DR: A particular system called EFFIGY which provides symbolic execution for program testing and debugging is described, which interpretively executes programs written in a simple PL/I style programming language.
•Book
Principles of program analysis
Flemming Nielson,Hanne Riis Nielson,Chris Hankin +2 more
- 22 Oct 1999
TL;DR: This book is unique in providing an overview of the four major approaches to program analysis: data flow analysis, constraint-based analysis, abstract interpretation, and type and effect systems.
2.1K
CUTE: a concolic unit testing engine for C
Koushik Sen,Darko Marinov,Gul Agha +2 more
- 01 Sep 2005
TL;DR: In this paper, the authors address the problem of automating unit testing with memory graphs as inputs, and develop a method to represent and track constraints that capture the behavior of a symbolic execution of a unit with memory graph as inputs.
Counterexample-guided abstraction refinement
Edmund M. Clarke
- 08 Jul 2003
TL;DR: Counterexample-guided abstraction refinement is an automatic abstraction method where the key step is to extract information from false negatives ("spurious counterexamples") due to over-approximation.