Automatic programming: A tutorial on formal methodologies
Journal of Symbolic Computation
On the synthesis of a reactive module
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
KIDS: A Semiautomatic Program Development System
IEEE Transactions on Software Engineering
The complexity of mean payoff games on graphs
Theoretical Computer Science
Theory of hybrid systems and discrete event systems
Theory of hybrid systems and discrete event systems
A Deductive Approach to Program Synthesis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Distributed Algorithms
Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic
Logic of Programs, Workshop
Programming by sketching for bit-streaming programs
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
LICS '05 Proceedings of the 20th Annual IEEE Symposium on Logic in Computer Science
Code aware resource management
Proceedings of the 5th ACM international conference on Embedded software
Model checking discounted temporal properties
Theoretical Computer Science - Tools and algorithms for the construction and analysis of systems (TACAS 2004)
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
A static analysis for quantifying information flow in a simple imperative language
Journal of Computer Security
Sketching concurrent data structures
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Inferring locks for atomic sections
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Timed Parity Games: Complexity and Robustness
FORMATS '08 Proceedings of the 6th international conference on Formal Modeling and Analysis of Timed Systems
Better Quality in Synthesis through Quantitative Objectives
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
An Antichain Algorithm for LTL Realizability
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
Abstraction-guided synthesis of synchronization
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Anzu: a tool for property synthesis
CAV'07 Proceedings of the 19th international conference on Computer aided verification
ACM Transactions on Computational Logic (TOCL)
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Quantitative Information Flow - Verification Hardness and Possibilities
CSF '10 Proceedings of the 2010 23rd IEEE Computer Security Foundations Symposium
ICALP'10 Proceedings of the 37th international colloquium conference on Automata, languages and programming: Part II
CONCUR'10 Proceedings of the 21st international conference on Concurrency theory
Automating string processing in spreadsheets using input-output examples
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
QUASY: quantitative synthesis tool
TACAS'11/ETAPS'11 Proceedings of the 17th international conference on Tools and algorithms for the construction and analysis of systems: part of the joint European conferences on theory and practice of software
Scalability versus semantics of concurrent FIFO queues
Proceedings of the 30th annual ACM SIGACT-SIGOPS symposium on Principles of distributed computing
Quantitative synthesis for concurrent programs
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
The Complexity of Quantitative Information Flow Problems
CSF '11 Proceedings of the 2011 IEEE 24th Computer Security Foundations Symposium
Temporal Specifications with Accumulative Values
LICS '11 Proceedings of the 2011 IEEE 26th Annual Symposium on Logic in Computer Science
Static timing analysis for hard real-time systems
VMCAI'10 Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation
Measuring and synthesizing systems in probabilistic environments
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
Hi-index | 0.00 |
Motivated by improvements in constraint-solving technology and by the increase of routinely available computational power, partial-program synthesis is emerging as an effective approach for increasing programmer productivity. The goal of the approach is to allow the programmer to specify a part of her intent imperatively (that is, give a partial program) and a part of her intent declaratively, by specifying which conditions need to be achieved or maintained. The task of the synthesizer is to construct a program that satisfies the specification. As an example, consider a partial program where threads access shared data without using any synchronization mechanism, and a declarative specification that excludes data races and deadlocks. The task of the synthesizer is then to place locks into the program code in order for the program to meet the specification. In this paper, we argue that quantitative objectives are needed in partial-program synthesis in order to produce higher-quality programs, while enabling simpler specifications. Returning to the example, the synthesizer could construct a naive solution that uses one global lock for shared data. This can be prevented either by constraining the solution space further (which is error-prone and partly defeats the point of synthesis), or by optimizing a quantitative objective that models performance. Other quantitative notions useful in synthesis include fault tolerance, robustness, resource (memory, power) consumption, and information flow.