Abstract Some transformation rules of imperative concurrent programs, based on congruence and refinement relations between statements, are presented. As an important complement for the applications, a collection of tactics, for the acceleration of broader transformations, is described.
Tactics apply a sequence of rules to a program with a specific transformation objective.
They can be used either interactively or from within a program, guaranteeing that the transformation always corresponds to the application of a sequence of rules. The transformation rules and the tactics could be used in formal design. Also, in conjunction with program verifiers and model checkers. They can derive new programs from verified ones, preserving their properties, and avoiding the repetition of verifications for the transformed programs. The paper shows that no finite set of transformation rules suffices to eliminate synchronous communication statements from programs involving the concatenation and parallelism operators only.