ACM Transactions on Programming Languages and Systems (TOPLAS)
Specifications are not (necessarily) executable
Software Engineering Journal
A polynomial time algorithm for the N-Queens problem
ACM SIGART Bulletin
Specifications are (preferably) executable
Software Engineering Journal
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
Korat: automated testing based on Java predicates
ISSTA '02 Proceedings of the 2002 ACM SIGSOFT international symposium on Software testing and analysis
Encapsulated Search and Constraint Programming in Oz
PPCP '94 Proceedings of the Second International Workshop on Principles and Practice of Constraint Programming
TestEra: A Novel Framework for Automated Testing of Java Programs
Proceedings of the 16th IEEE international conference on Automated software engineering
An overview of JML tools and applications
International Journal on Software Tools for Technology Transfer (STTT) - Special section on formal methods for industrial critical systems
Software Abstractions: Logic, Language, and Analysis
Software Abstractions: Logic, Language, and Analysis
Structured programming
Executing JML specifications of Java card applications: a case study
Proceedings of the 2009 ACM symposium on Applied Computing
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
A constraint solver for software engineering: finding models and cores of large relational specifications
jmle: a tool for executing JML specifications via constraint programming
FMICS'06/PDMC'06 Proceedings of the 11th international workshop, FMICS 2006 and 5th international workshop, PDMC conference on Formal methods: Applications and technology
Falling back on executable specifications
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Mixed constraints for test input generation - An initial exploration
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Proving acceptability properties of relaxed nondeterministic approximate programs
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Behavioral validation of JFSL specifications through model synthesis
Proceedings of the 34th International Conference on Software Engineering
Synthesizing iterators from abstraction functions
Proceedings of the 11th International Conference on Generative Programming and Component Engineering
Liberating the programmer with prorogued programming
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Program extrapolation with jennisys
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Faceted execution of policy-agnostic programs
Proceedings of the Eighth ACM SIGPLAN workshop on Programming languages and analysis for security
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Model-based, event-driven programming paradigm for interactive web applications
Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & software
Hi-index | 0.00 |
We present a unified environment for running declarative specifications in the context of an imperative object-Oriented programming language. Specifications are Alloy-like, written in first-order relational logic with transitive closure, and the imperative language is Java. By being able to mix imperative code with executable declarative specifications, the user can easily express constraint problems in place, i.e., in terms of the existing data structures and objects on the heap. After a solution is found, the heap is updated to reflect the solution, so the user can continue to manipulate the program heap in the usual imperative way. We show that this approach is not only convenient, but, for certain problems can also outperform a standard imperative implementation. We also present an optimization technique that allowed us to run our tool on heaps with almost 2000 objects.