Applying Formal Methods in Automated Software Development

Research into the development of software tools that support formal methods is aimed at simplifying and providing assistance during the development of correct software. This paper describes the development of the Seed system, which demonstrates that the building blocks of a software system can be correctly synthesized from user-supplied formal speci cations using techniques amenable to automation. Seed accepts a formal speci cation of a problem written in predicate logic and generates annotated program source code satisfying the speci cation. The rules for choosing which programming language structures to synthesize are contained in a rule base; background knowledge and domain-speci c information are entered into a fact base. During synthesis, Seed uses the fact base to disambiguate rule applications. In addition to primitive programming language constructs, such as assignment, alternative and iterative statements, Seed is capable of synthesizing recursive and non-recursive procedures and functions, as well as abstract data types.

[1]  Nachum Dershowitz Orderings for Term-Rewriting Systems , 1979, FOCS.

[2]  Rodney J. Douglas KIDS: A Semi-Automatic Program Development System , 1990 .

[3]  Alfred V. Aho,et al.  Principles of Compiler Design , 1977 .

[4]  Paliath Narendran,et al.  Proof by Induction Using Test Sets , 1986, CADE.

[5]  David C. Luckham,et al.  On automating the construction of programs. , 1974 .

[6]  Jeannette M. Wing A specifier's introduction to formal methods , 1990, Computer.

[7]  David H. D. Warren,et al.  Generating Conditional Plans and Programs , 1976, AISB.

[8]  Richard C. T. Lee,et al.  Symbolic logic and mechanical theorem proving , 1973, Computer science classics.

[9]  Susan L Ge,et al.  Applications of Formal Methods : Developing Virtuoso Software , 2022 .

[10]  Zohar Manna,et al.  Synthesis: Dreams - Programs , 1979, IEEE Trans. Software Eng..

[11]  John Darlington,et al.  An Experimental Program Transformation and Synthesis System , 1986, Artif. Intell..

[12]  Betty H. C. Cheng,et al.  Synthesis of procedural and data abstractions , 1990 .

[13]  Betty H. C. Cheng,et al.  An object-oriented toolkit for constructing specification editors , 1992, [1992] Proceedings. The Sixteenth Annual International Computer Software and Applications Conference.

[14]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[15]  Zohar Manna,et al.  Fundamentals of Deductive Program Synthesis , 1992, IEEE Trans. Software Eng..

[16]  Betty H. C. Cheng,et al.  An Integrated Development Environment for Formal Specifications , 1993, SEKE.

[17]  Betty H. C. Cheng,et al.  Using Formal Methods to Construct a Software Component Library , 1993, ESEC.

[18]  J. A. Zimmer Abstraction for Programmers , 1985 .

[19]  Kanth Miriyala,et al.  Automatic Derivation of Formal Software Specifications From Informal Descriptions , 1991, IEEE Trans. Software Eng..

[20]  Betty H. C. Cheng,et al.  A Two-Phase Approach to Reverse Engineering Using Formal Methods , 1993, Formal Methods in Programming and Their Applications.

[21]  Friedrich L. Bauer,et al.  The Munich Project CIP: Volume I: The Wide Spectrum Language CIP-L , 1985 .

[22]  Martin S. Feather,et al.  A System for Assisting Program Transformation , 1982, TOPL.

[23]  Betty H.C. Cheng,et al.  Automated Synthesis of Data Abstractions , 1991 .

[24]  N. A C H U M D E R S H O W I T Z Termination of Rewriting' , 2022 .

[25]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.

[26]  Uday S. Reddy,et al.  Transformational derivation of programs using the focus system , 1989, SDE 3.

[27]  Robert A. Kowalski,et al.  Predicate Logic as Programming Language , 1974, IFIP Congress.

[28]  Friedrich L. Bauer,et al.  The Munich Project CIP, Volume II: The Program Transformation System CIP-S , 1987 .

[29]  Nachum Dershowitz,et al.  Synthetic Programming , 1985, Artificial Intelligence.

[30]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .