In theory, formal specifications offer numerous benefits in developing more reliable software. In practice however, the use of specifications is rather limited, and practitioners often consider them more trouble than they are worth. Indeed, manually writing detailed specifications using notations that have unfamiliar syntax and semantics can be a daunting task -- even for experienced programmers. We introduce a new automated approach for synthesis of desired specifications and debugging of faulty specifications using given examples that capture the essence of desired properties and serve as test cases. Our focus is specifications written in the declarative language Alloy -- a first-order logic based on relations with transitive closure,...
Modeling of software-intensive systems using formal declarative modeling languages offers a means of...
Using mathematical notations and logical reasoning, formal methods precisely define a program’s spec...
In this thesis, we explore techniques for the development of recursive functional programs over unbo...
The rising popularity of declarative languages and the hard to debug nature thereof have motivated t...
textAs software systems grow in complexity, the need for efficient automated techniques for design, ...
© 2020 IEEE. Personal use of this material is permitted. Permission from IEEE must be obtained for a...
The emergence of lightweight formal methods tools such as Alloy improves the software design process...
textWriting declarative models of software designs and analyzing them to detect defects is an effect...
textMutation is a powerful technique that researchers have studied for several decades in the contex...
Formal verification methods have traditionally been used in industry for proofs of functional correc...
There are two different types of programs: imperative programs that describe how to solve a problem,...
Reactive synthesis deals with the automated construction of implementations of reactive systems fro...
Abstract. Declarative debugging is a semi-automatic technique that starts from an incorrect computat...
Abstract. Declarative debugging is a semi-automatic technique that starts from an incorrect computat...
Abstract—Deriving a formal specification from an informal design intent is an error-prone process. T...
Modeling of software-intensive systems using formal declarative modeling languages offers a means of...
Using mathematical notations and logical reasoning, formal methods precisely define a program’s spec...
In this thesis, we explore techniques for the development of recursive functional programs over unbo...
The rising popularity of declarative languages and the hard to debug nature thereof have motivated t...
textAs software systems grow in complexity, the need for efficient automated techniques for design, ...
© 2020 IEEE. Personal use of this material is permitted. Permission from IEEE must be obtained for a...
The emergence of lightweight formal methods tools such as Alloy improves the software design process...
textWriting declarative models of software designs and analyzing them to detect defects is an effect...
textMutation is a powerful technique that researchers have studied for several decades in the contex...
Formal verification methods have traditionally been used in industry for proofs of functional correc...
There are two different types of programs: imperative programs that describe how to solve a problem,...
Reactive synthesis deals with the automated construction of implementations of reactive systems fro...
Abstract. Declarative debugging is a semi-automatic technique that starts from an incorrect computat...
Abstract. Declarative debugging is a semi-automatic technique that starts from an incorrect computat...
Abstract—Deriving a formal specification from an informal design intent is an error-prone process. T...
Modeling of software-intensive systems using formal declarative modeling languages offers a means of...
Using mathematical notations and logical reasoning, formal methods precisely define a program’s spec...
In this thesis, we explore techniques for the development of recursive functional programs over unbo...