POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Constraint satisfaction in logic programming
Constraint satisfaction in logic programming
Communications of the ACM
A logic language for combinatorial optimization
Annals of Operations Research
The CLP( R ) language and system
ACM Transactions on Programming Languages and Systems (TOPLAS)
An abstract machine for CLP(R)
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Finding conflict sets and backtrack points in CLP R
Proceedings of the eleventh international conference on Logic programming
Combining an improvement to PARMA trailing with trailing analysis
Proceedings of the 4th ACM SIGPLAN international conference on Principles and practice of declarative programming
Theory and Practice of Logic Programming
An optimal filtering algorithm for table constraints
CP'12 Proceedings of the 18th international conference on Principles and Practice of Constraint Programming
Hi-index | 0.00 |
Existing CLP languages support backtracking by generalizing traditional Prolog implementations: modifications to the constraint system are trailed and restored on backtracking. Although simple and efficient, trailing may be very demanding in memory space, since the constraint system may potentially be saved at each choice point.This article proposes a new implementation scheme for backtracking in CLP languages over linear (rational or real) arithmetic. The new scheme, called semantic backtracking, does not use trailing but rather exploits the semantics of the constraints to undo the effect of newly added constraints. Semantic backtracking reduces the space complexity compared to implementations based on trailing by making it essentially independent of the number of choice points. In addition, semantic backtracking introduces negligible space and time overhead on deterministic programs. The price for this improvement is an increase in backtracking time, although constraint-solving time may actually decrease. The scheme has been implemented as part of a complete CLP system CLP (RLin) and compared analytically and experimentally with optimized trailing implementations. Experimental results on small and real-life problems indicate that semantic backtracking produces significant reduction in memory space, while keeping the time overhead reasonably small.