Automatic verification of database transaction safety
ACM Transactions on Database Systems (TODS)
Verifiable properties of database transactions
Information and Computation
A Formal System for Reasoning about Programs Accessing a Relational Database
ACM Transactions on Programming Languages and Systems (TOPLAS)
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Thémis: a database programming language handling integrity constraints
The VLDB Journal — The International Journal on Very Large Data Bases - Persistent object systems
Proof of Imperative Programs in Type Theory
TYPES '98 Selected papers from the International Workshop on Types for Proofs and Programs
Functional Programming: An Angry Half-Dozen
DBLP-6 Proceedings of the 6th International Workshop on Database Programming Languages
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
LINQ: reconciling object, relations and XML in the .NET framework
Proceedings of the 2006 ACM SIGMOD international conference on Management of data
Dependent ML An approach to practical programming with dependent types
Journal of Functional Programming
Proving consistency of database transactions
VLDB '79 Proceedings of the fifth international conference on Very Large Data Bases - Volume 5
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Implementation and use of the PLT scheme Web server
Higher-Order and Symbolic Computation
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Refinement Types for Secure Implementations
CSF '08 Proceedings of the 2008 21st IEEE Computer Security Foundations Symposium
Ynot: dependent types for imperative programs
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
A Static Analysis Framework for Database Applications
ICDE '09 Proceedings of the 2009 IEEE International Conference on Data Engineering
A compositional theory for STM Haskell
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Toward a verified relational database management system
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Links: web programming without tiers
FMCO'06 Proceedings of the 5th international conference on Formal methods for components and objects
Ur: statically-typed metaprogramming with type-level record computation
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Semantic subtyping with an SMT solver
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Reflections on the Work of C.A.R. Hoare
Reflections on the Work of C.A.R. Hoare
Boogie: a modular reusable verifier for object-oriented programs
FMCO'05 Proceedings of the 4th international conference on Formal Methods for Components and Objects
Enforcing stateful authorization and information flow policies in fine
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Cryptographic verification by typing for a sample protocol implementation
Foundations of security analysis and design VI
Automatic versus interactive program verification
Proceedings of the 2013 ACM SIGAda annual conference on High integrity language technology
Hi-index | 0.00 |
Taking advantage of recent advances in automated theorem proving, we present a new method for determining whether database transactions preserve integrity constraints. We consider check constraints and referential-integrity constraints--extracted from SQL table declarations--and application-level invariants expressed as formulas of first-order logic. Our motivation is to use static analysis of database transactions at development time, to catch bugs early, or during deployment, to allow only integrity-preserving stored procedures to be accepted. We work in the setting of a functional multi-tier language, where functional code is compiled to SQL that queries and updates a relational database. We use refinement types to track constraints on data and the underlying database. Our analysis uses a refinement-type checker, which relies on recent highly efficient SMT algorithms to check proof obligations. Our method is based on a list-processing semantics for an SQL fragment within the functional language, and is illustrated by a series of examples.