Minimal and complete word unification
Journal of the ACM (JACM)
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Equational formulae with membership constraints
Information and Computation
Relational programming laws in the tree, list, bag, set hierarchy
Science of Computer Programming - Special issue on mathematics of program construction
Purely functional data structures
Purely functional data structures
A Machine-Oriented Logic Based on the Resolution Principle
Journal of the ACM (JACM)
Fast Decision Procedures Based on Congruence Closure
Journal of the ACM (JACM)
On the complexity of integer programming
Journal of the ACM (JACM)
QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Simplification by Cooperating Decision Procedures
ACM Transactions on Programming Languages and Systems (TOPLAS)
Recursive functions of symbolic expressions and their computation by machine, Part I
Communications of the ACM
A decision procedure for term algebras with queues
ACM Transactions on Computational Logic (TOCL)
The pointer assertion logic engine
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Reasoning about recursively defined data structures
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Korat: automated testing based on Java predicates
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Alias Types for Recursive Data Structures
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Structural Subtyping of Non-Recursive Types is Decidable
LICS '03 Proceedings of the 18th Annual IEEE Symposium on Logic in Computer Science
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Satisfiability of word equations with constants is in PSPACE
Journal of the ACM (JACM)
Model-Theoretic Methods in Combined Constraint Satisfiability
Journal of Automated Reasoning
Verifying properties of well-founded linked lists
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Combining Nonstably Infinite Theories
Journal of Automated Reasoning
Deciding Boolean Algebra with Presburger Arithmetic
Journal of Automated Reasoning
Decision procedures for term algebras with integer constraints
Information and Computation - Special issue: Combining logical systems
Modular Pluggable Analyses for Data Structure Consistency
IEEE Transactions on Software Engineering
An Abstract Decision Procedure for Satisfiability in the Theory of Recursive Data Types
Electronic Notes in Theoretical Computer Science (ENTCS)
Back to the future: revisiting precise program verification using SMT solvers
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Modular data structure verification
Modular data structure verification
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Full functional verification of linked data structures
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Programming in Scala: A Comprehensive Step-by-step Guide
Programming in Scala: A Comprehensive Step-by-step Guide
Type-based data structure verification
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Automated verification of shape and size properties via separation logic
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Combined satisfiability modulo parametric theories
TACAS'07 Proceedings of the 13th international conference on Tools and algorithms for the construction and analysis of systems
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Decision procedures for multisets with cardinality constraints
VMCAI'08 Proceedings of the 9th international conference on Verification, model checking, and abstract interpretation
On local reasoning in verification
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
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
Combining theories with shared set operations
FroCoS'09 Proceedings of the 7th international conference on Frontiers of combining systems
Verification of object-oriented software: The KeY approach
Verification of object-oriented software: The KeY approach
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Generalized typestate checking for data structure consistency
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
Data structure specifications via local equality axioms
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
The decidability of the first-order theory of knuth-bendix order
CADE' 20 Proceedings of the 20th international conference on Automated Deduction
Connecting many-sorted theories
CADE' 20 Proceedings of the 20th international conference on Automated Deduction
Safe programming with pointers through stateful views
PADL'05 Proceedings of the 7th international conference on Practical Aspects of Declarative Languages
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Ordered sets in the calculus of data structures
CSL'10/EACSL'10 Proceedings of the 24th international conference/19th annual conference on Computer science logic
Towards complete reasoning about axiomatic specifications
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Decision procedures for automating termination proofs
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Sets with cardinality constraints in satisfiability modulo theories
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
A theory of skiplists with applications to the verification of concurrent datatypes
NFM'11 Proceedings of the Third international conference on NASA Formal methods
Satisfiability modulo recursive programs
SAS'11 Proceedings of the 18th international conference on Static analysis
Modular termination and combinability for superposition modulo counter arithmetic
FroCoS'11 Proceedings of the 8th international conference on Frontiers of combining systems
Communications of the ACM
Recursive proofs for inductive tree data-structures
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Building a calculus of data structures
VMCAI'10 Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation
Deciding functional lists with sublist sets
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
The guardol language and verification system
TACAS'12 Proceedings of the 18th international conference on Tools and Algorithms for the Construction and Analysis of Systems
A DSL for cross-domain security
Proceedings of the 2012 ACM conference on High integrity language technology
Accurate invariant checking for programs manipulating lists and arrays with infinite data
ATVA'12 Proceedings of the 10th international conference on Automated Technology for Verification and Analysis
Towards a scalable software model checker for higher-order programs
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Compositional invariant checking for overlaid and nested linked lists
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Natural proofs for structure, data, and separation
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Reconciling exhaustive pattern matching with objects
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
An overview of the Leon verification system: verification by translation to recursive functions
Proceedings of the 4th Workshop on Scala
RADA: a tool for reasoning about algebraic data types with abstractions
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Synthesis modulo recursive functions
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Hi-index | 0.02 |
We describe a family of decision procedures that extend the decision procedure for quantifier-free constraints on recursive algebraic data types (term algebras) to support recursive abstraction functions. Our abstraction functions are catamorphisms (term algebra homomorphisms) mapping algebraic data type values into values in other decidable theories (e.g. sets, multisets, lists, integers, booleans). Each instance of our decision procedure family is sound; we identify a widely applicable many-to-one condition on abstraction functions that implies the completeness. Complete instances of our decision procedure include the following correctness statements: 1) a functional data structure implementation satisfies a recursively specified invariant, 2) such data structure conforms to a contract given in terms of sets, multisets, lists, sizes, or heights, 3) a transformation of a formula (or lambda term) abstract syntax tree changes the set of free variables in the specified way.