1996
DOI: 10.1109/32.541437
|View full text |Cite
|
Sign up to set email alerts
|

Derivation of data intensive algorithms by formal transformation: the Schnorr-Waite graph marking algorithm

Abstract: In this paper we consider a particular class of algorithms which present certain di culties to formal veri cation. 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 speci cation of … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
23
0

Year Published

1999
1999
2014
2014

Publication Types

Select...
6
1
1

Relationship

0
8

Authors

Journals

citations
Cited by 26 publications
(23 citation statements)
references
References 37 publications
0
23
0
Order By: Relevance
“…Examples of the use of the transformation based approach for forward engineering are given in [34,40], and for reverse engineering in [35,39,45]. A survey of work on transformation systems may be found in [42] and also in [27].…”
Section: Theoretical Foundationmentioning
confidence: 99%
“…Examples of the use of the transformation based approach for forward engineering are given in [34,40], and for reverse engineering in [35,39,45]. A survey of work on transformation systems may be found in [42] and also in [27].…”
Section: Theoretical Foundationmentioning
confidence: 99%
“…(5) Tackle some challenging program development and reverse engineering tasks to demonstrate the validity of this approach [31,33,37,39,42,46]; (6) Extend WSL with constructs for implementing program transformations (the result is called METAWSL);…”
Section: Slicing In Fermatmentioning
confidence: 99%
“…; (23) (24) funct @Slice(I, X) ≡ (25) var R := , new := , newX := : (26) if @ST(I) = Statements (27) then for S ∈ REVERSE(@Cs(I)) do (28) R := @Slice(S, X); (29) new := R[1] + + new; (30) X := R[2] od; (31) R := @Make(Statements, , new), X (32) elsif @ST(I) = Abort (33) then R := I, (34) elsif @GT(I) = Statement ∧ X ∩ @Assigned(I)) = (35) then R := @Skip, X (36) elsif @ST(I) = Assignment (37) then R := I, (X \ @Assigned(I)) ∪ @Used(I) (38) elsif @ST(I) = Cond ∨ @ST(I) = D If (39) then for guard ∈ @Cs(I) do (40) R := @Slice(guardˆ2, X); (41) new := @Make(Guarded, , guardˆ1,…”
mentioning
confidence: 99%
“…In [8][9][10] program transformations are used to derive a variety of efficient algorithms from abstract specifications. In [11] the same transformations are used in the reverse direction: starting with a small but tangled and obscure program we were able to use transformations to restructure the program and derive a concise abstract representation of its specification.…”
Section: Introductionmentioning
confidence: 99%