The logic of programming
Program construction and verification
Program construction and verification
Principles of information systems analysis and design
Principles of information systems analysis and design
Essays in computing science
Predicate calculus and program semantics
Predicate calculus and program semantics
Programming: the derivation of algorithms
Programming: the derivation of algorithms
The cleanroom approach to quality software development
The cleanroom approach to quality software development
Programming on purpose: essays on software design
Programming on purpose: essays on software design
A practical theory of programming
A practical theory of programming
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Verification of sequential and concurrent programs (2nd ed.)
Verification of sequential and concurrent programs (2nd ed.)
Cleanroom software engineering: technology and process
Cleanroom software engineering: technology and process
Structured Programming with go to Statements
ACM Computing Surveys (CSUR)
The new math of computer programming
Communications of the ACM
Guarded commands, nondeterminacy and formal derivation of programs
Communications of the ACM
Program development by stepwise refinement
Communications of the ACM
Letters to the editor: go to statement considered harmful
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
Böhm and Jacopini's reduction of flow charts
Communications of the ACM
Flow diagrams, turing machines and languages with only two formation rules
Communications of the ACM
The Science of Programming
Princples of Computer Programming
Princples of Computer Programming
The Craft of Programming
Principles of Programming Languages
Principles of Programming Languages
Mathematical Theory of Program Correctness
Mathematical Theory of Program Correctness
Programming Methodology: A Collection of Articles by Members of IFIP WG 2.3
Programming Methodology: A Collection of Articles by Members of IFIP WG 2.3
Systematic Programming: An Introduction
Systematic Programming: An Introduction
Cleanroom Software Engineering: A Reader
Cleanroom Software Engineering: A Reader
Cleanroom Software Engineering Practices
Cleanroom Software Engineering Practices
A Discipline of Programming
Toward Zero-Defect Programming
Toward Zero-Defect Programming
Programming Approach to Computability
Programming Approach to Computability
A Method of Programming
Structured Programming; Theory and Practice the Systems Programming Series
Structured Programming; Theory and Practice the Systems Programming Series
Current Trends in Programming Methodology: Software Specification and Design
Current Trends in Programming Methodology: Software Specification and Design
ACM '72 Proceedings of the ACM annual conference - Volume 2
ACM '72 Proceedings of the ACM annual conference - Volume 2
Program Construction: Calculating Implementations from Specifications
Program Construction: Calculating Implementations from Specifications
Programming with(out) the GOTO
ACM SIGPLAN Notices - Special issue on control structures in programming languages
Writings of the Revolution: Selected Readings on Software Engineering
Writings of the Revolution: Selected Readings on Software Engineering
Classics in software engineering
Classics in software engineering
Structured programming
A regression test selection technique for embedded software
ACM Transactions on Embedded Computing Systems (TECS)
Hi-index | 0.00 |
There has been a vast amount of debate on the goto issue: i.e., the issue whether to use or not to use the goto statement initiated by Dijkstra in his famous Letter to the Editor of CACM and his proposal of 'Structured Programming'. However, except for the goto-less programming style by Mills based on theoretical results on the expressibility of control flow diagrams, there have hardly been any scientific accounts on this issue from Dijkstra's own viewpoint of the correctness of programs. In this work, we reconsider this seemingly old-tired issue from the viewpoint of Hoare Logic, the most well-known framework for correctness proof of programs. We show that, in two cases, the with-goto programming styles are more suitable for proving correctness in Hoare Logic than the corresponding without-goto ones; that is, in each of two cases, the without-goto style requires more complicated assertions in the proof-outline than the with-goto one. The first case is on the use of the goto statement for escaping from nested loops and the second case is on the use of the goto statement for expressing state transitions in programming through the finite state machine model. Hence, in both cases, the use of the goto statement can be justified from the viewpoint of the correctness proof in Hoare Logic.