Kaleidoscope: A Constraint Imperative Programming Language

  • Gus Lopez
  • Bjorn Freeman-Benson
  • Alan Borning
Part of the NATO ASI Series book series (NATO ASI F, volume 131)


The Constraint Imperative Programming (CIP) family of languages integrates constraints and imperative, object-oriented programming. In addition to combining the useful features of both paradigms, there are synergistic effects of this integration, such as the ability to define constraints over user-defined domains. We discuss characteristics of the CIP family and provide a rationale for its creation. The synergy of constraints and objects imposes additional challenges for the provision of constructs, such as object identity and class membership, that are well-understood in conventional language paradigms. We discuss the benefits and challenges of combining the constraint and imperative paradigms, and present our current ideas in the context of the design and implementation of the Kaleidoscope’93 language.


Virtual Machine Logic Programming Object Identity Class Constraint Runtime Error 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. Borning, A., B. Freeman-Benson, and M. Wilson (1992, September). Constraint hierarchies. Lisp and Symbolic Computation 5 (3), 223–270.CrossRefGoogle Scholar
  2. Chambers, C. (1992, June). Object-Oriented Multi-Methods in Cecil. In Proceedings of the 1992 European Conference on Object-Oriented Programming, pp. 33–56.Google Scholar
  3. Cohen, J. (1990, July). Constraint logic programming languages. Communications of the ACM 33(7), 52–68.Google Scholar
  4. Colmerauer, A. (1990, July). An introduction to Prolog III. Communications of the ACM, 69–90.Google Scholar
  5. Freeman–Benson, B. ( 1991, July). Constraint Imperative Programming. Ph. D. thesis, University of Washington, Department of Computer Science and Engineering. Published as Department of Computer Science and Engineering Technical Report 91–07–02.Google Scholar
  6. Freeman-Benson, B. and A. Borning (1992a, April). The design and implementation of Kaleidoscope’90, a constraint imperative programming language. In Proceedings of the IEEE Computer Society International Conference on Computer Languages, pp. 174–180.Google Scholar
  7. Freeman-Benson, B. and A. Borning (1992b, June). Integrating constraints with an object-oriented language. In Proceedings of the 1992 European Conference on Object-Oriented Programming, pp. 268–286.Google Scholar
  8. Freeman-Benson, B., J. Maloney, and A. Borning (1990, January). An incremental constraint solver. Communications of the ACM 33(1), 54–63.Google Scholar
  9. Goldberg, A. and D. Robson (1983). Smalltalk-80: The Language and its Implementation. Addison-Wesley.Google Scholar
  10. Horn, B. (1992a, October). Constraint patterns as a basis for object-oriented constraint programming. In Proceedings of the 1992 ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, Vancouver, British Columbia, pp. 218–233.Google Scholar
  11. Horn, B. (1992b). Properties of user interface systems and the Siri programming language. In B. Myers (Ed.), Languages for Developing User Interfaces, pp. 211–236. Boston: Jones and Bartlett.Google Scholar
  12. Jaffar, J. and J.-L. Lassez (1987, January). Constraint logic programming In Pro-ceedings of the Fourteenth ACM Principles of Programming Languages Conference, Munich.Google Scholar
  13. Jaffar, J., S. Michaylov, P. Stuckey, and R. Yap (1992, July). The CLP(R) language and system. ACM Transactions on Programming Languages and Systems 14(3), 339–395.Google Scholar
  14. Leler, W. (1987). Constraint Programming Languages. Addison-Wesley.Google Scholar
  15. Sannella, M. (1993, February). The SkyBlue Constraint Solver. Technical Report 92–07–02, Department of Computer Science and Engineering, University of Washington.Google Scholar
  16. Sannella, M., J. Maloney, B. Freeman-Benson, and A. Borning (1993, May). Multi-way versus One-way Constraints in User Interfaces: Experience with the DeltaBlue Algorithm. Software—Practice and Experience 23(5), 529–566.Google Scholar
  17. Saraswat, V. A. ( 1989, January). Concurrent Constraint Programming Languages. Ph. D. thesis, Carnegie-Mellon University, Computer Science Department.Google Scholar
  18. Steele Jr., G. L. (1980, August). The Definition and Implementation of a Computer Programming Language Based on Constraints. Ph. D. thesis, MIT. Published as MIT-AI TR 595, August 1980.Google Scholar
  19. Steele Jr., G. L. (1990). Common Lisp: The Language ( second ed. ). Bedford, Massachusetts: Digital Press.MATHGoogle Scholar
  20. Van Hentenryck, P. (1989). Constraint Satisfaction in Logic Programming. Cambridge, MA: MIT Press.Google Scholar
  21. Van Hentenryck, P., II. Simonis, and M. Dincbas (1992, December). Constraint satisfaction using constraint logic programming. Artificial Intelligence 58(1–3), 113159.Google Scholar
  22. Warren, D. H. D. (1983, October). An abstract prolog instruction set. Technical Report 309, SRI Internatonal, Menlo Park, California.Google Scholar
  23. Wilson, M. and A. Horning (1993, July, August). Hierarchical constraint logic programming. Journal of Logic Programming 16(3 & 4), 277–318.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1994

Authors and Affiliations

  • Gus Lopez
    • 1
  • Bjorn Freeman-Benson
    • 2
  • Alan Borning
    • 2
  1. 1.Dept of Computer Science & Engineering, FR-35University of WashingtonSeattleUSA
  2. 2.School of Computer ScienceCarleton UniversityOttawaCanada

Personalised recommendations