Comfusy: A Tool for Complete Functional Synthesis

(Tool Presentation)
  • Viktor Kuncak
  • Mikaël Mayer
  • Ruzica Piskac
  • Philippe Suter
Part of the Lecture Notes in Computer Science book series (LNCS, volume 6174)

Abstract

Synthesis of program fragments from specifications can make programs easier to write and easier to reason about. We present Comfusy, a tool that extends the compiler for the general-purpose programming language Scala with (non-reactive) functional synthesis over unbounded domains. Comfusy accepts expressions with input and output variables specifying relations on integers and sets. Comfusy symbolically computes the precise domain for the given relation and generates the function from inputs to outputs. The outputs are guaranteed to satisfy the relation whenever the inputs belong to the relation domain. The core of our synthesis algorithm is an extension of quantifier elimination that generates programs to compute witnesses for eliminated variables. We present examples that demonstrate software synthesis using Comfusy and illustrate how synthesis simplifies software development.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Jobstmann, B., Galler, S., Weiglhofer, M., Bloem, R.: Anzu: A tool for property synthesis. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 258–262. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  2. 2.
    Kuncak, V., Mayer, M., Piskac, R., Suter, P.: Complete functional synthesis. In: ACM Conf. Programming Language Design and Implementation, PLDI (2010)Google Scholar
  3. 3.
    Kuncak, V., Nguyen, H.H., Rinard, M.: Deciding Boolean Algebra with Presburger Arithmetic. Journal of Automated Reasoning 36(3), 213–239 (2006)MATHCrossRefMathSciNetGoogle Scholar
  4. 4.
    Manna, Z., Waldinger, R.J.: Toward automatic program synthesis. Communications of the ACM 14(3), 151–165 (1971)MATHCrossRefGoogle Scholar
  5. 5.
    de Moura, L., Bjørner, N.: Z3: An efficient SMT solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  6. 6.
    Pnueli, A., Rosner, R.: On the synthesis of a reactive module. In: ACM Symp. Principles of Programming Languages, POPL (1989)Google Scholar
  7. 7.
    Pugh, W.: A practical algorithm for exact array dependence analysis. Communications of the ACM 35(8), 102–114 (1992)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2010

Authors and Affiliations

  • Viktor Kuncak
    • 1
  • Mikaël Mayer
    • 1
  • Ruzica Piskac
    • 1
  • Philippe Suter
    • 1
  1. 1.Swiss Federal Institute of Technology (EPFL)Switzerland

Personalised recommendations