Hostname: page-component-cd9895bd7-7cvxr Total loading time: 0 Render date: 2024-12-25T04:49:45.743Z Has data issue: false hasContentIssue false

Backjumping is Exception Handling

Published online by Cambridge University Press:  16 November 2020

ED ROBBINS
Affiliation:
University of Kent, Canterbury, CT2 7NF, UK, (e-mails: [email protected], [email protected])
ANDY KING
Affiliation:
University of Kent, Canterbury, CT2 7NF, UK, (e-mails: [email protected], [email protected])
JACOB M. HOWE
Affiliation:
City, University of London, EC1V 0HB, UK, (e-mail: [email protected])
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

ISO Prolog provides catch and throw to realize the control flow of exception handling. This pearl demonstrates that catch and throw are inconspicuously amenable to the implementation of backjumping. In fact, they have precisely the semantics required: rewinding the search to a specific point and carrying of a preserved term to that point. The utility of these properties is demonstrated through an implementation of graph coloring with backjumping and a backjumping SAT solver that applies conflict-driven clause learning.

Type
Original Article
Creative Commons
Creative Common License - CCCreative Common License - BY
This is an Open Access article, distributed under the terms of the Creative Commons Attribution licence (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted re-use, distribution, and reproduction in any medium, provided the original work is properly cited.
Copyright
© The Author(s), 2020. Published by Cambridge University Press

References

Baljeu, A. 2005. Using Exceptions to Implement Backjumping? comp.lang.prolog newsgroup discussion. URL: http://coding.derkeiler.com/Archive/Prolog/comp.lang.prolog/2005-09/msg00048.html.Google Scholar
Bentley, J. 1986. Programming Pearls. Addison-Wesley: New Jersey.Google Scholar
Bruynooghe, M. 1980. Analysis of dependencies to improve the behaviour of logic programs. In International Conference on Automated Deduction. Lecture Notes in Artificial Intelligence, vol. 87. Springer, 293–305.Google Scholar
Bruynooghe, M. 2004. Enhancing a search algorithm to perform intelligent backtracking. Theory Practice of Logic Programming 4, 3, 371380.CrossRefGoogle Scholar
Carlsson, M. and Mildner, P. 2012. SICStus Prolog – the first 25 years. Theory and Practice of Logic Programming 12, 1–2, 3566.CrossRefGoogle Scholar
Cooper, K. D., Harvey, T. J. and Kennendy, K. 2006. A Simple, Fast Dominance Algorithm. Technical Report TR-06-33870, Rice University, Computer Science. URL: http://www.cs.rice.edu/~keith/EMBED/dom.pdf.Google Scholar
De Bosschere, K. and Jacquet, J. 1993. Multi-Prolog: Definition, operational semantics and implementation. In International Conference on Logic Programming. MIT Press, 299–313.Google Scholar
De Kleer, J. 1986. An Assumption-based TMS. Artificial Intelligence 28, 2, 127162.CrossRefGoogle Scholar
Dechter, R. 1990. Enhancement schemes for constraint processing: Backjumping, learning, and cutset decomposition. Artificial Intelligence 41, 273312.CrossRefGoogle Scholar
Deransart, P., Ed-Dbali, A. and Cervoni, L. 1996. Prolog: The Standard. Springer.CrossRefGoogle Scholar
Drabent, W. 2018. Logic + Control: On program construction and verification. Theory Practice of Logic Programming 18, 1, 129.Google Scholar
Gaschnig, J. 1979 . Performance Measurement and Analysis of Certain Search Algorithms. Ph.D. thesis, Carnegie Mellon University, Department of Computer Science, Pittsburgh, Pennsylvania 15213. CMU-CS-79-124.Google Scholar
Howe, J. M. and King, A. 2010. A pearl on SAT solving in Prolog. In Functional and Logic Programming. Lecture Notes in Computer Science, vol. 6009. Springer, 165–174.Google Scholar
Howe, J. M. and King, A. 2012. A pearl on SAT and SMT solving in Prolog. Theoretical Computer Science 435, 4355.CrossRefGoogle Scholar
Kondrak, G. and van Beek, P. 1997. A theoretical evaluation of selected backtracking algorithms. Artifical Intelligence 89, 365387.CrossRefGoogle Scholar
Kowalski, R. A. 1979. Algorithm = Logic + Control. Communication of the ACM 22, 7, 424436.CrossRefGoogle Scholar
Marques-Silva, J. P., Lynce, I. and Malik, S. 2009. Conflict-driven clause learning SAT solvers. In Handbook of Satisfiability, Biere, A., Heule, M., Van Maaren, H. and Walsh, T., Eds. IOS Press, 131153.Google Scholar
Marques-Silva, J. P. and Sakallah, K. A. 1996. GRASP – A new search algorithm for satisfiability. In Computer Aided Design. IEEE, 220–227.Google Scholar
Moskewicz, M., Madigan, C., Zhao, Y., Zhang, L. and Malik, S. 2001. Chaff: Engineering an efficient SAT solver. In Design Automation Conference. ACM Press, 530535.Google Scholar
Robbins, E., Howe, J. M. and King, A. 2015. Theory propagation and reification. Science of Computer Programming 111, 1, 322.CrossRefGoogle Scholar
Stallman, R. and Sussman, G. J. 1977. Forward reasoning and dependency-directed backtracking in a system for computer-aided circuit analysis. Artificial Intelligence 9, 135196.CrossRefGoogle Scholar
Wielemaker, J., Schrijvers, T., Triska, M. and Lager, T. 2012. SWI-Prolog. Theory and Practice of Logic Programming 12, 1–2, 6796.CrossRefGoogle Scholar
Supplementary material: File

Robbins et al. supplementary material

Robbins et al. supplementary material
Download Robbins et al. supplementary material(File)
File 77.1 KB