A 15 Year Perspective on Automatic Programming
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
Systematic software development using VDM
Systematic software development using VDM
Deriving and using destructive data types
The IFIP TC2/WG 2.1 Working Conference on Program specification and transformation
Formal Program Construction by Transformations-Computer-Aided, Intuition-Guided Programming
IEEE Transactions on Software Engineering
The RAISE language, methods and tools
Formal Aspects of Computing
Specification case studies
Programming from specifications (2nd ed.)
Programming from specifications (2nd ed.)
Structured Programming with go to Statements
ACM Computing Surveys (CSUR)
Programming by Refinement, as Exemplified by the SETL Representation Sublanguage
ACM Transactions on Programming Languages and Systems (TOPLAS)
Combining Algebraic and Algorithmic Reasoning: An Approach to the Schorr-Waite Algorithm
ACM Transactions on Programming Languages and Systems (TOPLAS)
Syntactic source to source transforms and program manipulation
Communications of the ACM
Communications of the ACM
Communications of the ACM
An axiomatic basis for computer programming
Communications of the ACM
An efficient machine-independent procedure for garbage collection in various list structures
Communications of the ACM
The Science of Programming
A Discipline of Programming
Mural: A Formal Development Support System
Mural: A Formal Development Support System
On Backtracking and Greatest Fixpoints
Proceedings of the Fourth Colloquium on Automata, Languages and Programming
Development of the Schorr-Waite Algorithm
Program Construction, International Summer Schoo
VDM '91 Proceedings of the 4th International Symposium of VDM Europe on Formal Software Development-Volume 2: Tutorials
Abstractions, instantiations, and proofs of marking algorithms
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
Proving program refinements and transformations
Proving program refinements and transformations
An alternative to current looping syntax
ACM SIGPLAN Notices
A method for the manual extraction of business rules from legacy source code
BT Technology Journal
Pigs from sausages? Reengineering from assembler to C via FermaT transformations
Science of Computer Programming - Special issue on program transformation
Slicing as a program transformation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Conditioned semantic slicing for abstraction; industrial experiment
Software—Practice & Experience
Hi-index | 0.00 |
In this paper, we consider a particular class of algorithms which present certain difficulties to formal verification. These are algorithms which use a single data structure for two or more purposes, which combine program control information with other data structures or which are developed as a combination of a basic idea with an implementation technique. Our approach is based on applying proven semantics-preserving transformation rules in a wide spectrum language. Starting with a set theoretical specification of "reachability," we are able to derive iterative and recursive graph marking algorithms using the "pointer switching" idea of Schorr and Waite. There have been several proofs of correctness of the Schorr-Waite algorithm, and a small number of transformational developments of the algorithm. The great advantage of our approach is that we can derive the algorithm from its specification using only general-purpose transformational rules: without the need for complicated induction arguments. Our approach applies equally well to several more complex algorithms which make use of the pointer switching strategy, including a hybrid algorithm which uses a fixed length stack, switching to the pointer switching strategy when the stack runs out.