Implementing backjumping by means of exception handling
W{\l}odzimierz Drabent

TL;DR
This paper explores implementing backjumping in Prolog using exception handling, revealing limitations and proposing solutions for specific cases, and analyzing the semantics with coroutining.
Contribution
It demonstrates the impossibility of general backjumping via exceptions in Prolog and offers two specialized solutions with detailed semantic analysis.
Findings
Backjumping cannot be generally implemented with exceptions in Prolog.
Two solutions are proposed: one for binary programs, another restricting backjump targets.
Discussion includes semantics with coroutining and database use.
Abstract
We discuss how to implement backjumping (or intelligent backtracking) in Prolog by using the built-ins throw/1 and catch/3. We show that it is impossible in a general case, contrary to a claim that ``backjumping is exception handling". We provide two solutions. One works for binary programs; in a general case it imposes a restriction on where backjumping may originate. The other restricts the class of backjump targets. We also discuss implementing backjumping by using backtracking and the Prolog database. Additionally, we explain the semantics of Prolog exception handling in the presence of coroutining.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Software Engineering Research · Software Testing and Debugging Techniques
