Summary
A very general lattice-based language of commands, based on the primitive operations of substitution and test for equality, is constructed. This base language permits unbounded nondeterminism, demonic and angelic nondeterminism. A dual language permitting miracles is constructed. Combining these two languages yields an extended base language which is complete, in the sense that all monotonic predicate tranformers can be constructed in it. The extended base language provides a unifying framework for various specification languages; we show how two Dijkstra-style specification languages can be embedded in it.
Similar content being viewed by others
References
Back, R.J.R.: On the correctness of refinement steps in program development. (Ph. D. thesis), Report A-1978-4, Dept. of Computer Science, University of Helsinki 1978
Back, R.J.R.: Correctness preserving program refinements: Proof theory and applications. Mathematical Centre Tracts 131, Mathematical Centre, Amsterdam 1980
Back, R.J.R.: A calculus of refinements for program derivations. Acta Inf. 25, 593–624 (1988)
Back, R.J.R.: Refining atomicity in parallel algorithms. Reports on Computer Science and Mathematics 57, Åbo Akademi 1988 (To appear in Conference on Parallel Architectures and Languages Europe 1989)
Back, R.J.R.: Changing data representation in the refinement calculus. Hawaii International Conference on System Sciences 1989 (also available as Data Refinement in the Refinement Calculus, Reports on Computer Science and Mathematics 68, Åbo Akademi 1988)
de Bakker, J.: Mathematical theory of program correctness. Englewood Cliffs, NJ: PrenticeHall 1980
Birkhoff, G.: Lattice theory. Providence, RI: American Mathematical Society 1961
Broy, M.: A theory for nondeterminism, parallellism, communications and concurrency. Theor. Comput. Sci. 45, 1–61 (1986)
Dijkstra, E.W.: A discipline of programming. Englewood Cliffs, NJ: Prentice Hall 1976
Dijkstra, E.W., van Gasteren, A.J.M.: A simple fixpoint argument without the restriction to continuity. Acta Inf. 23, 1–7 (1986)
Gardiner, P., Morgan, C.: Data refinement of predicate transformers. Theor. Comput. Sci. (To appear)
Grätzer, G.: General lattice theory. Basel: Birkhäuser 1978
Hehner, E.: do considered od: A contribution to the programming calculus. Acta Inf. 11, 287–304 (1979)
Hehner, E.: The logic of programming. Englewood Cliffs, NJ: Prentice-Hall 1984
Hesselink, W.H.: An algebraic calculus of commands. CS8808, Department of Mathematics and Computer Science, University of Groningen 1988
Hoare, C.A.R., Hayes, I.J., He, J., Morgan, C.C., Roscoe, A.W., Sanders, J.W., Sorensen, I.H., Spivey, J.M., Sufrin, A.: Laws of programming. Commun. ACM 30, 672–686 (1987)
Jacobs, D., Gries, D.: General correctness: A unification of partial and total correctness. Acta Inf. 22, 67–83 (1985)
Morgan, C.: Data refinement by miracles. Inf. Process. Lett. 26, 243–246 (1988)
Morgan, C.: The specification statement. ACM TOPLAS 10, 403–419 (1988)
Morris, J.: A theoretical basis for stepwise refinement and the programming calculus. Sci. Progr. 9, 287–306 (1987)
Nelson, G.: A generalization of Dijkstra's calculus. Tech. Rep. 16, Digital Systems Research Center, Palo Alto, Calif. 1987
Park, D.: On the semantics of fair parallelism. Lect. Notes Comput. Sci. 86, 504–526 (1980)
Smyth, M.B.: Powerdomains. J. Comput. Syst. Sci. 16, 23–36 (1978)
Tarski, A.: A lattice theoretical fixed point theorem and its applications. Pac. J. Math. 5, 285–309 (1955)
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Back, R.J.R., von Wright, J. Duality in specification languages: a lattice-theoretical approach. Acta Informatica 27, 583–625 (1990). https://doi.org/10.1007/BF00259469
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF00259469