Developing and Optimizing Parallel Programs with Algebra-Algorithmic and Term Rewriting Tools

  • Anatoliy Doroshenko
  • Kostiantyn Zhereb
  • Olena Yatsenko
Part of the Communications in Computer and Information Science book series (CCIS, volume 412)


An approach to program design and synthesis using algebra-algorithmic specifications and rewriting rules techniques is proposed. An algebra-algorithmic toolkit based on the approach allows building syntactically correct and easy-to-understand algorithm specifications. The term rewriting system supplements the algebra-algorithmic toolkit with facilities for transformation of the sequential and parallel algorithms, enabling performance improvement. We demonstrate the usage of the proposed tools with a simple example of parallelizing sequential program and improving performance of a parallel program, and also discuss possible applications in larger real-world projects.


Algebra of algorithms code generation formalized design of programs parallel computation term rewriting 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Akhter, S., Roberts, J.: Multi-Core Programming. Intel Press, Hillsboro (2006)Google Scholar
  2. 2.
    Andon, F.I., Doroshenko, A.Y., Tseytlin, G.O., Yatsenko, O.A.: Algebra-Algorithmic Models and Methods of Parallel Programming. Akademperiodika, Kyiv (2007) (in Russian)Google Scholar
  3. 3.
    Apel, S., et al.: An Algebraic Foundation for Automatic Feature-Based Program Synthesis. Science of Computer Programming 75(11), 1022–1047 (2010)CrossRefzbMATHGoogle Scholar
  4. 4.
    Bagheri, H., Sullivan, K.: Pol: Specification-Driven Synthesis of Architectural Code Frameworks for Platform-Based Applications. In: Proc. 11th Int. Conf on Generative Programming and Component Engineering, pp. 93–102. ACM, New York (2012)Google Scholar
  5. 5.
    Barthe, G., et al.: From relational verification to SIMD loop synthesis. ACM SIGPLAN Notices 48(8), 123–134 (2013)CrossRefGoogle Scholar
  6. 6.
    Batory, D.: Program Refactoring, Program Synthesis, and Model-Driven Development. In: Adsul, B., Odersky, M. (eds.) CC 2007. LNCS, vol. 4420, pp. 156–171. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  7. 7.
    Bures, T., et al.: The Role of Ontologies in Schema-Based Program Synthesis. In: Proc. Workshop on Ontologies as Software Engineering Artifacts, Vancouver (2004)Google Scholar
  8. 8.
    Cilk Home Page,
  9. 9.
    Doroshenko, A.Y., Prusov, V.A.: Methods of Efficient Modeling and Forecasting Regional Atmospheric Processes. In: Faragó, I., et al. (eds.) Advances in Air Pollution Modeling for Environmental Security, pp. 143–152. Springer, Netherlands (2005)CrossRefGoogle Scholar
  10. 10.
    Doroshenko, A., Shevchenko, R.: A Rewriting Framework for Rule-Based Programming Dynamic Applications. Fundamenta Informaticae 72(1-3), 95–108 (2006)zbMATHGoogle Scholar
  11. 11.
    Doroshenko, A., Tseytlin, G., Yatsenko, O., Zachariya, L.: A Theory of Clones and Formalized Design of Programs. In: Proc. Int. Workshop on Concurrency, Specification and Programming (CS&P 2006), Wandlitz, Germany, pp. 328–339 (2006)Google Scholar
  12. 12.
    Doroshenko, A.Y., Zhereb, K.A., Yatsenko, Y.A.: On Complexity and Coordination of Computation in Multithreaded Programs. Problems in Programming 2, 41–55 (2007) (in Russian)Google Scholar
  13. 13.
    Doroshenko, A., Zhereb, K.: Parallelizing Legacy Fortran Programs Using Rewriting Rules Technique and Algebraic Program Models. In: Ermolayev, V., Mayr, H.C., Nikitchenko, M., Spivakovsky, A., Zholtkevych, G., et al. (eds.) ICTERI 2012. CCIS, vol. 347, pp. 39–59. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  14. 14.
    Fischer, B., Schumann, J.: AutoBayes: a System for Generating Data Analysis Programs from Statistical Models. J. Funct. Program. 13(3), 483–508 (2003)MathSciNetCrossRefzbMATHGoogle Scholar
  15. 15.
    Flener, P.: Achievements and Prospects of Program Synthesis. In: Kakas, A.C., Sadri, F. (eds.) Computational Logic: Logic Programming and Beyond. LNCS (LNAI), vol. 2407, pp. 310–346. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  16. 16.
    Gulwani, S.: Dimensions in Program Synthesis. In: 12th Int. ACM SIGPLAN Symposium on Principles and Practice of Declarative Programming, pp. 13–24. ACM, New York (2010)CrossRefGoogle Scholar
  17. 17.
    Jackson, D.: Alloy: a lightweight object modelling notation. ACM Transactions on Software Engineering Methodology 11(2), 256–290 (2002)CrossRefGoogle Scholar
  18. 18.
    Jacobs, S., Kuncak, V., Suter, P.: Reductions for Synthesis Procedures. In: Giacobazzi, R., Berdine, J., Mastroeni, I. (eds.) VMCAI 2013. LNCS, vol. 7737, pp. 88–107. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  19. 19.
    Kitzelmann, E.: Inductive Programming: a Survey of Program Synthesis Techniques. In: Schmid, U., Kitzelmann, E., Plasmeijer, R. (eds.) AAIP 2009. LNCS, vol. 5812, pp. 50–73. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  20. 20.
    Kneuss, E., et al.: On Integrating Deductive Synthesis and Verification Systems. Technical Report (2013)Google Scholar
  21. 21.
    Leonard, E.I., Heitmeyer, C.L.: Automatic Program Generation from Formal Specifications using APTS. In: Automatic Program Development. A Tribute to Robert Paige, pp. 93–113. Springer, Dordrecht (2008)CrossRefGoogle Scholar
  22. 22.
    Mannadiar, R., Vangheluwe, H.: Modular Synthesis of Mobile Device Applications from Domain-Specific Models. In: Proc. 7th Int. Workshop on Model-Based Methodologies for Pervasive and Embedded Software, pp. 21–28. ACM, New York (2010)CrossRefGoogle Scholar
  23. 23.
    Menon, A., et al.: A machine learning framework for programming by example. In: Proceedings of the 30th International Conference on Machine Learning (ICML 2013), pp. 187–195 (2013)Google Scholar
  24. 24.
    Prusov, V.A., Doroshenko, A.Y.: On efficient numerical solution of one-dimensional convection-diffusion equations in modelling atmospheric processes. International Journal of Environment and Pollution 32(2), 231–249 (2008)MathSciNetCrossRefGoogle Scholar
  25. 25.
    Raychev, V., Vechev, M., Yahav, E.: Automatic Synthesis of Deterministic Concurrency. In: Logozzo, F., Fähndrich, M. (eds.) Static Analysis. LNCS, vol. 7935, pp. 283–303. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  26. 26.
    Rompf, T., Odersky, M.: Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs. Communications of ACM 55(6), 121–130 (2012)CrossRefGoogle Scholar
  27. 27.
    Srivastava, S., Gulwani, S., Foster, J.S.: From Program Verification to Program Synthesis. In: Proc. 37th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 313–326. ACM, New York (2010)CrossRefGoogle Scholar
  28. 28.
    Yatsenko, O.: On Parameter-Driven Generation of Algorithm Schemes. In: Proc. Int. Workshop on Concurrency: Specification and Programming (CS&P 2012), Berlin, Germany, pp. 428–438 (2012)Google Scholar

Copyright information

© Springer International Publishing 2013

Authors and Affiliations

  • Anatoliy Doroshenko
    • 1
  • Kostiantyn Zhereb
    • 1
  • Olena Yatsenko
    • 1
  1. 1.Institute of Software SystemsNational Academy of Sciences of UkraineKyivUkraine

Personalised recommendations