Abstract
The number of states a program has tends to grow exponentially in the size of the code. This phenomenon, known as state explosion, hinders the verification and repair of large programs. A key technique for coping with state explosion is using abstractions, where one substitutes a program’s state graph with smaller over-approximations thereof. We show how module-based abstraction-refinement strategies can be applied to the verification of programs written in the recently proposed framework of Behavioral Programming. Further, we demonstrate how — by using a sought-after repair as a means of refining existing abstractions — these techniques can improve the scalability of existing program repair algorithms. Our findings are supported by a proof-of-concept tool.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
BPC: Behavioral Programming in C + + , http://www.wisdom.weizmann.ac.il/~bprogram/bpc/
Supplementral material, http://www.wisdom.weizmann.ac.il/~bprogram/bpc/module_based_abstraction/
Alur, R., Henzinger, T.A., Kupferman, O.: Alternating-Time Temporal Logic. Journal of the ACM 49(5), 672–713 (2002)
Amla, N., McMillan, K.L.: Combining Abstraction Refinement and SAT-Based Model Checking. In: Grumberg, O., Huth, M. (eds.) TACAS 2007. LNCS, vol. 4424, pp. 405–419. Springer, Heidelberg (2007)
Arcuri, A., Yao, X.: A Novel Co-evolutionary Approach to Automatic Software Bug Fixing. In: Proc. 10th IEEE Congress on Evolutionary Computation (CEC), pp. 162–168 (2008)
Baier, C., Katoen, J.-P.: Principles of Model Checking. The MIT Press (2008)
Ball, T., Rajamani, S.K.: Automatically Validating Temporal Safety Properties of Interfaces. In: Dwyer, M.B. (ed.) SPIN 2001. LNCS, vol. 2057, pp. 103–122. Springer, Heidelberg (2001)
Chaki, S., Clarke, E., Groce, A., Jha, S., Veith, H.: Modular Verification of Software Components in C. IEEE Transactions on Software Engineering, 385–395 (2004)
Clarke, E., Groce, A., Ouaknine, J., Strichman, O., Yorav, K.: Efficient Verification of Sequential and Concurrent C Programs. Formal Methods in System Design 25(2-3), 129–166 (2004)
Clarke, E., Grumberg, O., Jha, S., Lu, Y., Veith, H.: Counterexample-guided Abstraction Refinement. In: Proc. 12th Int. Conf. on Computer Aided Verification (CAV), pp. 154–169 (2000)
Clarke, E., Grumberg, O., Long, D.E.: Model Checking and Abstraction. In: Proc. 19th. Symposium on Principles of Programming Languages (POPL), pp. 343–354 (1992)
Damm, W., Harel, D.: LSCs: Breathing Life into Message Sequence Charts. J. on Formal Methods in System Design 19(1), 45–80 (2001)
de Alfaro, L., Roy, P.: Solving Games via Three-Valued Abstraction Refinement. In: Caires, L., Vasconcelos, V.T. (eds.) CONCUR 2007. LNCS, vol. 4703, pp. 74–89. Springer, Heidelberg (2007)
Griesmayer, A., Staber, S., Bloem, R.: Automated fault localization for c programs. In: Proc. 18th Int. Conf. on Computer Aided Verification (CAV), pp. 82–99 (2006)
Harel, D., Katz, G., Marron, A., Weiss, G.: Non-Intrusive Repair of Reactive Programs. In: Proc. 17th IEEE Int. Conf. on Engineering of Complex Computer Systems (ICECCS), pp. 3–12 (2012)
Harel, D., Marelly, R.: Come, Let’s Play: Scenario-Based Programming Using LSCs and the Play-Engine. Springer (2003)
Harel, D., Marron, A., Weiss, G.: Behavioral Programming. Communications of the ACM 55(7), 90–100 (2012)
Henzinger, T.A., Jhala, R., Majumdar, R.: Counterexample-guided Control. In: Baeten, J.C.M., Lenstra, J.K., Parrow, J., Woeginger, G.J. (eds.) ICALP 2003. LNCS, vol. 2719, pp. 886–902. Springer, Heidelberg (2003)
Henzinger, T.A., Jhala, R., Majumdar, R., Sutre, G.: Software Verification with BLAST. In: Ball, T., Rajamani, S.K. (eds.) SPIN 2003. LNCS, vol. 2648, pp. 235–239. Springer, Heidelberg (2003)
Jobstmann, B., Griesmayer, A., Bloem, R.: Program Repair as a Game. In: Etessami, K., Rajamani, S.K. (eds.) CAV 2005. LNCS, vol. 3576, pp. 226–238. Springer, Heidelberg (2005)
Könighofer, R., Bloem, R.: Repair with On-The-Fly Program Analysis. In: Biere, A., Nahir, A., Vos, T. (eds.) HVC. LNCS, vol. 7857, pp. 56–71. Springer, Heidelberg (2013)
McMillan, K.L., Zuck, L.D.: Abstract Counterexamples for Non-disjunctive Abstractions. In: Bournez, O., Potapov, I. (eds.) RP 2009. LNCS, vol. 5797, pp. 176–188. Springer, Heidelberg (2009)
Ramadge, P., Wonham, W.: Supervisory Control of a Class of Discrete Event Processes. SIAM J. on Control and Optimization 25(1), 206–230 (1987)
Staber, S., Jobstmann, B., Bloem, R.: Diagnosis is Repair. In: Proc. 16th Int. Workshop on Principles of Diagnosis (DX), pp. 169–174 (2005)
Weimer, W., Forrest, S., Le Goues, C., Nguyen, T.: Automatic Program Repair with Evolutionary Computation. Communications of the ACM 53, 109–116 (2010)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Katz, G. (2013). On Module-Based Abstraction and Repair of Behavioral Programs. In: McMillan, K., Middeldorp, A., Voronkov, A. (eds) Logic for Programming, Artificial Intelligence, and Reasoning. LPAR 2013. Lecture Notes in Computer Science, vol 8312. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-45221-5_35
Download citation
DOI: https://doi.org/10.1007/978-3-642-45221-5_35
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-45220-8
Online ISBN: 978-3-642-45221-5
eBook Packages: Computer ScienceComputer Science (R0)