Eiffel: the language
Principals in programming languages: a syntactic proof technique
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
A lattice model of secure information flow
Communications of the ACM
Object-Oriented Software Construction
Object-Oriented Software Construction
Contracts for higher-order functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Making Components Contract Aware
Computer
DrScheme: a programming environment for Scheme
Journal of Functional Programming
Lineage retrieval for scientific data processing: a survey
ACM Computing Surveys (CSUR)
A survey of data provenance in e-science
ACM SIGMOD Record
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Sound and complete models of contracts
Journal of Functional Programming
The design and implementation of typed scheme
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Checking Well-Formedness of Pure-Method Specifications
FM '08 Proceedings of the 15th international symposium on Formal Methods
Static contract checking for Haskell
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Contracts for first-class modules
DLS '09 Proceedings of the 5th symposium on Dynamic languages
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Semantics Engineering with PLT Redex
Semantics Engineering with PLT Redex
Logical types for untyped languages
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
On contract satisfaction in a higher-order world
ACM Transactions on Programming Languages and Systems (TOPLAS)
Typed contracts for functional programming
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Contracts as pairs of projections
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
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
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
Temporal higher-order contracts
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
The interaction of contracts and laziness
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
Complete monitors for behavioral contracts
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
A core calculus for provenance
POST'12 Proceedings of the First international conference on Principles of Security and Trust
Practical typed lazy contracts
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Higher-order symbolic execution via contracts
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Gradual typing for first-class classes
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Contracts for First-Class Classes
ACM Transactions on Programming Languages and Systems (TOPLAS)
A core calculus for provenance
Journal of Computer Security - Security and Trust Principles
Hi-index | 0.00 |
Behavioral software contracts supplement interface information with logical assertions. A rigorous enforcement of contracts provides useful feedback to developers if it signals contract violations as soon as they occur and if it assigns blame to violators with preciseexplanations. Correct blame assignment gets programmers started with the debugging process and can significantly decrease the time needed to discover and fix bugs. Sadly the literature on contracts lacks a framework for making statements about the correctness of blame assignment and for validating such statements. This paper fills the gap and uses the framework to demonstrate how one of the proposed semantics for higher-order contracts satisfies this criteria and another semantics occasionally assigns blame to the wrong module. Concretely, the paper applies the framework to the lax enforcement of dependent higher-order contracts and the picky one. A higher-order dependent contract specifies constraints for the domain and range of higher-order functions and also relates arguments and results in auxiliary assertions. The picky semantics ensures that the use of arguments in the auxiliary assertion satisfies the domain contracts and the lax one does not. While the picky semantics discovers more contract violations than the lax one, it occasionally blames the wrong module. Hence the paper also introduces a third semantics, dubbed indy, which fixes the problems of the picky semantics without giving up its advantages.