On the Completeness of Selective Unification in Concolic Testing of Logic Programs
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.
- 2.Apt, K.R.: From Logic Programming to Prolog. Prentice Hall, Englewood Cliffs (1997)Google Scholar
- 3.Clarke, L.A.: A program testing system. In: Proceedings of the 1976 Annual Conference (ACM 1976), pp. 488–491 (1976)Google Scholar
- 4.Godefroid, P., Klarlund, N., Sen, K.: DART: directed automated random testing. In: Proceedings of PLDI 2005, pp. 213–223. ACM (2005)Google Scholar
- 8.Mesnard, F., Payet, É., Vidal, G.: Concolic testing in logic programming (extended version). CoRR abs/1507.05454 (2015). http://arxiv.org/abs/1507.05454
- 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.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