On the Completeness of Selective Unification in Concolic Testing of Logic Programs

  • Fred Mesnard
  • Étienne Payet
  • Germán VidalEmail author
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10184)


Concolic testing is a popular dynamic validation technique that can be used for both model checking and automatic test case generation. We have recently introduced concolic testing in the context of logic programming. In contrast to previous approaches, the key ingredient in this setting is a technique to generate appropriate run-time goals by considering all possible ways an atom can unify with the heads of some program clauses. This is called “selective” unification. In this paper, we show that the existing algorithm is not complete and explore different alternatives in order to have a sound and complete algorithm for selective unification.



We would like to thank the anonymous reviewers and the participants of LOPSTR 2016 for their suggestions to improve this paper.


  1. 1.
    Anand, S., Pasareanu, C.S., Visser, W.: Symbolic execution with abstraction. STTT 11(1), 53–67 (2009)CrossRefGoogle Scholar
  2. 2.
    Apt, K.R.: From Logic Programming to Prolog. Prentice Hall, Englewood Cliffs (1997)Google Scholar
  3. 3.
    Clarke, L.A.: A program testing system. In: Proceedings of the 1976 Annual Conference (ACM 1976), pp. 488–491 (1976)Google Scholar
  4. 4.
    Godefroid, P., Klarlund, N., Sen, K.: DART: directed automated random testing. In: Proceedings of PLDI 2005, pp. 213–223. ACM (2005)Google Scholar
  5. 5.
    Godefroid, P., Levin, M.Y., Molnar, D.A.: Sage: whitebox fuzzing for security testing. CACM 55(3), 40–44 (2012)CrossRefGoogle Scholar
  6. 6.
    King, J.C.: Symbolic execution and program testing. CACM 19(7), 385–394 (1976)MathSciNetCrossRefzbMATHGoogle Scholar
  7. 7.
    Mesnard, F., Payet, É., Vidal, G.: Concolic testing in logic programming. TPLP 15(4–5), 711–725 (2015)MathSciNetGoogle Scholar
  8. 8.
    Mesnard, F., Payet, É., Vidal, G.: Concolic testing in logic programming (extended version). CoRR abs/1507.05454 (2015).
  9. 9.
    Palamidessi, C.: Algebraic properties of idempotent substitutions. In: Paterson, M.S. (ed.) ICALP 1990. LNCS, vol. 443, pp. 386–399. Springer, Heidelberg (1990). doi: 10.1007/BFb0032046 CrossRefGoogle Scholar
  10. 10.
    Pasareanu, C.S., Rungta, N., PathFinder, S.: symbolic execution of Java bytecode. In: Pecheur, C., Andrews, J., Nitto, E.D. (eds.) ASE, pp. 179–180. ACM (2010)Google Scholar
  11. 11.
    Sen, K., Marinov, D., Agha, G.: CUTE: a concolic unit testing engine for C. In: Proceedings of ESEC/SIGSOFT FSE 2005, pp. 263–272. ACM (2005)Google Scholar
  12. 12.
    Ströder, T., Emmes, F., Schneider-Kamp, P., Giesl, J., Fuhs, C.: A linear operational semantics for termination and complexity analysis of ISO Prolog. In: Vidal, G. (ed.) LOPSTR 2011. LNCS, vol. 7225, pp. 237–252. Springer, Heidelberg (2012). doi: 10.1007/978-3-642-32211-2_16 CrossRefGoogle Scholar

Copyright information

© Springer International Publishing AG 2017

Authors and Affiliations

  1. 1.LIM - Université de la RéunionSaint-DenisFrance
  2. 2.MiST, DSICUniversitat Politècnica de ValènciaValenciaSpain

Personalised recommendations