A Verified Generate-Test-Aggregate Coq Library for Parallel Programs Extraction

  • Kento Emoto
  • Frédéric Loulergue
  • Julien Tesson
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8558)


The integration of the generate-and-test paradigm and semirings for the aggregation of results provides a parallel programming framework for large scale data-intensive applications. The so-called GTA framework allows a user to define an inefficient specification of his/her problem as a composition of a generator of all the candidate solutions, a tester of valid solutions, and an aggregator to combine the solutions. Through two calculation theorems a GTA specification is transformed into a divide-and-conquer efficient program that can be implemented in parallel. In this paper we present a verified implementation of this framework in the Coq proof assistant: efficient bulk synchronous parallel functional programs can be extracted from naive GTA specifications. We show how to apply this framework on an example, including performance experiments on parallel machines.


List homomorphism functional programming automatic program calculation semi-ring computation bulk synchronous parallelism Coq 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press (1989),
  2. 2.
    Corra, R.C., Farias, P.M., de Souza, C.P.: Insertion and sorting in a sequence of numbers minimizing the maximum sum of a contiguous subsequence. Journal of Discrete Algorithms 21, 1–10 (2013)CrossRefMathSciNetGoogle Scholar
  3. 3.
    Emoto, K., Fischer, S., Hu, Z.: Filter-embedding semiring fusion for programming with MapReduce. Formal Aspects of Computing 24(4-6), 623–645 (2012)CrossRefzbMATHMathSciNetGoogle Scholar
  4. 4.
    Emoto, K., Fischer, S., Hu, Z.: Generate, Test, and Aggregate – A Calculation-based Framework for Systematic Parallel Programming with MapReduce. In: Seidl, H. (ed.) ESOP 2012. LNCS, vol. 7211, pp. 254–273. Springer, Heidelberg (2012)CrossRefGoogle Scholar
  5. 5.
    Gava, F., Fortin, J., Guedj, M.: Deductive Verification of State-Space Algorithms. In: Johnsen, E.B., Petre, L. (eds.) IFM 2013. LNCS, vol. 7940, pp. 124–138. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  6. 6.
    Gesbert, L., Hu, Z., Loulergue, F., Matsuzaki, K., Tesson, J.: Systematic Development of Correct Bulk Synchronous Parallel Programs. In: International Conference on Parallel and Distributed Computing, Applications and Technologies (PDCAT), pp. 334–340. IEEE (2010)Google Scholar
  7. 7.
    Ho, T.J., Chen, B.S.: Novel extended viterbi-based multiple-model algorithms for state estimation of discrete-time systems with markov jump parameters. IEEE Transactions on Signal Processing 54(2), 393–404 (2006)CrossRefGoogle Scholar
  8. 8.
    Loulergue, F., Hains, G., Foisy, C.: A Calculus of Functional BSP Programs. Science of Computer Programming 37(1-3), 253–277 (2000)CrossRefzbMATHMathSciNetGoogle Scholar
  9. 9.
    Lupinski, N., Falcou, J., Paulin-Mohring, C.: Sémantique d’une langage de squelettes (2012),
  10. 10.
    Malecha, G., Morrisett, G., Wisnesky, R.: Trace-based verification of imperative programs with i/o. J. Symb. Comput. 46(2), 95–118 (2011)CrossRefzbMATHMathSciNetGoogle Scholar
  11. 11.
    Mu, S.-C., Ko, H.-S., Jansson, P.: Algebra of programming using dependent types. In: Audebaud, P., Paulin-Mohring, C. (eds.) MPC 2008. LNCS, vol. 5133, pp. 268–283. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  12. 12.
    Otto, F., Sokratova, O.: Reduction relations for monoid semirings. Journal of Symbolic Computation 37(3), 343–376 (2004)CrossRefzbMATHMathSciNetGoogle Scholar
  13. 13.
    Snir, M., Gropp, W.: MPI the Complete Reference. MIT Press (1998)Google Scholar
  14. 14.
    Swierstra, W.: More dependent types for distributed arrays. Higher-Order and Symbolic Computation 23(4), 489–506 (2010)CrossRefzbMATHMathSciNetGoogle Scholar
  15. 15.
  16. 16.
    Valiant, L.G.: A bridging model for parallel computation. Commun. ACM 33(8), 103 (1990)CrossRefGoogle Scholar
  17. 17.
    Wadler, P.: Theorems for free! In: Proceedings of the Fourth International Conference on Functional Programming Languages and Computer Architecture, pp. 347–359. ACM (1989)Google Scholar
  18. 18.
    Zhou, J., Chen, Y.: Generating C code from LOGS specifications. In: Van Hung, D., Wirsing, M. (eds.) ICTAC 2005. LNCS, vol. 3722, pp. 195–210. Springer, Heidelberg (2005)CrossRefGoogle Scholar

Copyright information

© Springer International Publishing Switzerland 2014

Authors and Affiliations

  • Kento Emoto
    • 1
  • Frédéric Loulergue
    • 2
  • Julien Tesson
    • 3
  1. 1.Kyushu Institute of TechnologyJapan
  2. 2.Univ. Orléans, INSA Centre Val de Loire, LIFO EA 4022France
  3. 3.Université Paris Est, LACL, UPECFrance

Personalised recommendations