Abstract
In an earlier paper, we described a data structure, called support graph, for efficient incremental evaluation of tabled logic programs. The support graph records the dependencies between answers in the tables, and is crucial for efficiently propagating the changes to the tables when facts are deleted. Incremental computation with support graphs are hundreds of times faster than from-scratch evaluation for small changes in the program. However, the graph typically grows faster than the tables themselves, making it impractical to maintain the full support graph for large applications.
In this paper we present a data structure, called symbolic support graph, which represents support information compactly. For a variety of useful tabled logic programs, the size of the symbolic support graph grows no faster than the table size. We demonstrate its effectiveness using a large application: a logic-programming-based points-to analyzer for C programs. The incremental analyzer shows very good scalability in terms of space usage, and is hundreds of times faster than from-scratch analysis for small changes to the program.
This research was supported in part by NSF grants CCR-020537 and CCR-0311512.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Acar, U.A., Blelloch, G.E., Harper, R.: Adaptive functional programming. In: POPL, pp. 247–259. ACM Press, New York (2002)
Anderson, L.O.: Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, Unversity of Copenhagen (1994)
Apt, K., Pugin, J.M.: Maintenance of stratified databases viewed as a belief revision system. In: Principles of Database Systems, San Diego, California, United States, pp. 136–145. ACM Press, New York (1987)
Basu, S., Kumar, K.N., Pokorny, L.R., Ramakrishnan, C.R.: Resource-constrained model checking of recursive programs. In: Katoen, J.-P., Stevens, P. (eds.) TACAS 2002. LNCS, vol. 2280, pp. 236–250. Springer, Heidelberg (2002)
Bol, R., Degerstadt, L.: Tabulated resolution for well-founded semantics. In: ILPS (1993)
Bryant, R.E.: Graph-based algorithms for Boolean function manipulation. IEEE Transactions on Computers C-35(8), 677–691 (1986)
Chen, W., Warren, D.S.: Tabled evaluation with delaying for general logic programs. JACM 43(1), 20–74 (1996)
Dawson, S., Ramakrishnan, C.R., Warren, D.S.: Practical program analysis using general purpose logic programming systems — a case study. In: ACM PLDI, pp. 117–126 (1996)
Doyle, J.: A truth maintenance system. Artificial Intelligence 12, 231–272 (1979)
Guo, H., Gupta, G.: A simple scheme for implementing tabled logic programming systems based on dynamic reordering of alternatives. In: ICLP, pp. 181–196. Springer, Heidelberg (2001)
Gupta, A., Mumick, I.S., Subrahmanian, V.S.: Maintaining views incrementally. In: SIGMOD, pp. 157–166 (1993)
Gupta, A., Mumick, I.S.: Maintenance of materialized views: Problems, techniques, and appfications. IEEE Data Engineering Bulletin 18(2), 3–18 (1995)
Lu, J., Moerkotte, G., Schue, J., Subrahmanian, V.S.: Efficient maintenance of materialized mediated views. In: ACM SIGMOD, pp. 340–351 (1995)
Necula, G.C., McPeak, S., Rahul, S.P., Weime, W.: CIL: Intermediate language and tools for analysis and transformation of C programs. In: Compiler Construction, pp. 213–228. Springer, Heidelberg (2002)
PAF. Prolangs analysis framework, Available at http://www.prolangs.rutgers.edu/public.html
Pollock, L.L., Soffa, M.L.: An incremental version of iterative data flow analysis. IEEE Trans. Softw. Eng. 15(12), 1537–1549 (1989)
Ramakrishnan, C.R., et al.: XMC: A logic-programming-based verification toolset. In: Emerson, E.A., Sistla, A.P. (eds.) CAV 2000. LNCS, vol. 1855, pp. 576–580. Springer, Heidelberg (2000)
Reps, T., Teitelbaum, T., Demers, A.: Incremental context-dependent analysis for language-based editors. TOPLAS 5(3), 449–477 (1983)
Reps, T.W.: Generating language-based environments. MIT Press, Cambridge (1984)
Rocha, R., Silva, F., Costa, V.S.: YapTab: A Tabling Engine Designed to Support Parallelism. In: Workshop on Tabling in Parsing and Deduction (2000)
Saha, D., Ramakrishnan, C.R.: Incremental evaluation of tabled logic programs. In: Palamidessi, C. (ed.) ICLP 2003. LNCS, vol. 2916, pp. 389–406. Springer, Heidelberg (2003)
Saha, D., Ramakrishnan, C.R.: Incremental and demand-driven points-to analysis using logic programming. In: PPDP, pp. 117–128. ACM Press, New York (2005)
Saha, D., Ramakrishnan, C.R.: A local algorithm for efficient incremental evaluation of tabled logic programs (2005), Available at http://www.lmc.cs.sunysb.edu/~dsaha/local
Saha, D., Ramakrishnan, C.R.: Symbolic support graph: A space efficient data structure for incremental tabled evaluation (2005), Available at http://www.lmc.cs.sunysb.edu/~dsaha/symspt
Sokolsky, O.V., Smolka, S.A.: Incremental model checking in the modal mu-calculus. In: Dill, D.L. (ed.) CAV 1994. LNCS, vol. 818, pp. 351–363. Springer, Heidelberg (1994)
Swamy, G.: Incremental Methods for Formal Verification and Logic Synthesis. PhD thesis, University of California at Berkeley (1996)
Swamy, G., Brayton, R.K., Singhal, V.: Incremental methods for FSM traversal. In: Intl. Conference on Computer Design (ICCD). IEEE Computer Society, Los Alamitos (1995)
Tamaki, H., Sato, T.: OLDT resolution with tabulation. In: ICLP, pp. 84–98 (1986)
XSB. The XSB logic programming system, Available at http://xsb.sourceforge.net
Yur, J., Ryder, B.G., Landi, W.: An incremental flow- and context-sensitive pointer aliasing analysis. In: ICSE, pp. 442–451 (1999)
Zhou, N., Shen, Y., Yuan, L., You, J.: Implementation of a linear tabling mechanism. Journal of Functional and Logic Programming 2001(10) (October 2001)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Saha, D., Ramakrishnan, C.R. (2005). Symbolic Support Graph: A Space Efficient Data Structure for Incremental Tabled Evaluation. In: Gabbrielli, M., Gupta, G. (eds) Logic Programming. ICLP 2005. Lecture Notes in Computer Science, vol 3668. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11562931_19
Download citation
DOI: https://doi.org/10.1007/11562931_19
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-29208-1
Online ISBN: 978-3-540-31947-4
eBook Packages: Computer ScienceComputer Science (R0)