, Volume 4, Issue 2, pp 133–165 | Cite as

Confluence and Semantics of Constraint Simplification Rules

  • Slim Abdennadher
  • Thom Frühwirth
  • Holger Meuss


Constraint Simplification Rules (CSR) is a subset of the Constraint Handling Rules (CHR) language. CHR is a powerful special-purpose declarative programming language for writing constraint solvers. The CSR subset of CHR forms essentially a committed-choice language consisting of guarded rules with multiple heads that replace constraints by simpler ones until they are solved. This paper gives declarative and operational semantics as well as soundness and completeness results for CSR programs.

We also introduce a notion of confluence for CSR programs. Confluence is an essential syntactical property of any constraint solver. It ensures that the solver will always compute the same result for a given set of constraints independent of which rules are applied. It also means that it does not matter for the result in which order the constraints arrive at the constraint solver.

We give a decidable, sufficient and necessary syntactic condition for confluence of terminating CSR programs. Moreover, as shown in this paper, confluence of a program implies consistency of its logical meaning (under a mild restriction).

constraint reasoning semantics of programming languages committed-choice languages confluence determinism program analysis 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Abdennadher, S. (1997). Operational semantics and confluence of constraint propagation rules. In Third International Conference on Principles and Practice of Constraint Programming, CP97 LNCS, Springer.Google Scholar
  2. 2.
    Abdennadher, S. (1998). Analyse von regelbasierten Constraintlösern. PhD thesis, Computer Science Institute, LMU Munich (in German).Google Scholar
  3. 3.
    Aggoun, A., Chan, D., Dufrense, P., Falvey, E., Grant, H., Herold, A., Macartney, G., Maier, M., Miller, D., Perez, B., van Rossum, E., Schimpf, J., Tsahageas, P., & de Villeneuve, D. (1994). ECLiPSe 3.4 User Manual. ECRC Munich.Google Scholar
  4. 4.
    Abdennadher, A. & Frühwirth, T. (1998). On completion of constraint handling rules. Proceedings of the Fourth International Conference on Principles and Practice of Constraint Programming (CP'98), LNCS 1520, Springer.Google Scholar
  5. 5.
    Abdennadher, S., Frühwirth, T., & Meuss, H. (1996). On confluence of constraint handling rules. In E. Freuder, editor, Proceedings of the Second International Conference on Principles and Practice of Constraint Programming, CP96 LNCS 1118, Springer.Google Scholar
  6. 6.
    AÏt-Kaci, H. & Podelski, A. (1994). Functions as passive constraints in LIFE. ACM Transactions on Programming Languages and Systems 16:1279–1318.Google Scholar
  7. 7.
    Codnognet, P. & Diaz, D. (1993). Boolean constraint solving using clp(FD). In Dale Miller, editor, LogicProgramming·Proceedings of the 1993 International Symposium, 525–539, Vancouver, Canada, MIT Press.Google Scholar
  8. 8.
    Codish, M., Falaschi, M., Marriott, K., & Winsborough, W. (1997). A confluent semantic basis for the analysis of concurrent constraint logic programs. Journal of Logic Programming 30:53–81.Google Scholar
  9. 9.
    Clark, K. (1978). Logic and Databases 293–322, Plenum Press, New York.Google Scholar
  10. 10.
    Dershowitz, N., Okada, N., & Sivakumar, G. (1988). Confluence of conditional rewrite systems. In J.-P. Jouannaud and S. Kaplan, editors, Proceedings of the 1st International Workshop on Conditional Term Rewriting Systems LNCS 308:31–44.Google Scholar
  11. 11.
    Falaschi, M. Gabbrielli, M. Marriott, K., & Palamidessi, C. (1995). Confluence in concurrent constraint programming. In V.S. Alagar and M. Nivat, editors, Proceedings of AMAST '95 LNCS 936, Springer.Google Scholar
  12. 12.
    Frühwirth, T., Herold, A., Küchenhoff, V., Le Provost, T., Lim, P., Monfroy, E., & Wallace, M. (1992). Constraint logic programming: An informal introduction. In G. Comyn, N. E. Fuchs, and M. J. Ratcliffe, editors, Logic Programming in Action. LNCS 636:3–35, Springer.Google Scholar
  13. 13.
    Frühwirth, T. (1995). Constraint handling rules. In A. Podelski, editor, Constraint Programming: Basics and Trends. LNCS 910, Springer.Google Scholar
  14. 14.
    Frühwirth, T. (1998). A Declarative Language for Constraint Systems: Theory and Practice of Constraint Handling Rules. Habilitation, Computer Science Institute, LMU Munich.Google Scholar
  15. 15.
    Haridi, S., Janson, S.,& Palamidessi, C. (1992). Structural operational semantics of AKL. Future Generation Computer Systems.Google Scholar
  16. 16.
    Jaffar, J. & Lasseq, J.-L. (1987). Constraint logic programming. In Conference Record of the Fourteenth Annual ACM Symposium on Principles of Programming Languages 111–119.Google Scholar
  17. 17.
    Jaffar, J. & Maher, M. J. (1994). Constraint logic programming: A survey. Journal of Logic Programming 20:503–581.Google Scholar
  18. 18.
    Kirchner, C. & Kirchner, H. (1991). Rewriting: Theory and Applications. North-Holland.Google Scholar
  19. 19.
    Maher, M. J. (1987). Logic semantics for a class of committed-choice programs. In J.-L. Lassez, editor, Proceedings of the Fourth International Conference on Logic Programming 858–876, MIT Press.Google Scholar
  20. 20.
    Marte, M. (1996). Implementation eines Konfluenz-Tests f¨ur CSR-Programme. Advanced practical thesis, Institute of Computer Science, LMU Munich.Google Scholar
  21. 21.
    Meuss, H. (1996). Konfluenz von Constraint-Handling-Rules-Programmen. Master's thesis, Institute of Computer Science, LMU Munich.Google Scholar
  22. 22.
    Marriott, K. & Odersky, M. (1995). A confluent calculus for concurrent constraint programming with guarded choice. In 1st International Conference on Principles and Practice of Constraint Programming, CP95 310–327, Springer.Google Scholar
  23. 23.
    Marriott, K. & Stuckey, P. (1998). Programming with Constraints: An Introduction. MIT Press.Google Scholar
  24. 24.
    Newman, M. H. A. (1942). On theories with a combinatorial definition of equivalence. In Annals of Math, 43:223–243.Google Scholar
  25. 25.
    Plaisted, D. A. (1993). Equational reasoning and term rewriting systems. In D. Gabbay, C. Hogger, J. A. Robinson, and J. Siekmann, editiors, Handbook of Logic in Artificial Intelligence and Logic Programming 1:273–364, Oxford University Press, Oxford.Google Scholar
  26. 26.
    Saraswat, V. A. (1993). Concurrent Constraint Programming MIT Press, Cambridge.Google Scholar
  27. 27.
    Shapiro, E. (1989). The family of concurrent logic programming languages. ACM Computing Surveys 21:413–510.Google Scholar
  28. 28.
    Smolka, G. (1991). Residuation and guarded rules for constraint logic programming. In Digital Equipment Paris Research Laboratory Research Report, France.Google Scholar
  29. 29.
    Saraswat, V. A., Rinard, & Panangaden, P. The semantic foundations of concurrent constraint programming. In Conference Record of the 18th Annual ACM Symposium on Principles of Programming Languages 333–352, ACM Press.Google Scholar
  30. 30.
    van Hentenryck, P. (1991). Constraint logic programming. The Knowledge Engineering Review 6:151–194.Google Scholar

Copyright information

© Kluwer Academic Publishers 1999

Authors and Affiliations

  • Slim Abdennadher
    • 1
  • Thom Frühwirth
    • 1
  • Holger Meuss
    • 2
  1. 1.Computer Science DepartmentLudwig-Maximilians-UniversityMunichGermany
  2. 2.Center for Information and Language ProcessingLudwig-Maximilians-UniversityMunichGermany

Personalised recommendations