Skip to main content

The Design of the Zinc Modelling Language


Zinc is a new modelling language developed as part of the G12 project. It has four important characteristics. First, Zinc allows specification of models using a natural mathematical-like notation. To do so it supports overloaded functions and predicates and automatic coercion and provides arithmetic, finite domain and set constraints. Second, while Zinc is a relatively simple and small language, it can be readily extended to different application areas by means of powerful language constructs such as user-defined predicates and functions and constrained types. Third, Zinc provides sophisticated type and instantiation checking which allows early detection of errors in models. Finally, perhaps the main novelty in Zinc is that it is designed to support a modelling methodology in which the same conceptual model can be automatically mapped into different design models, thus allowing modellers to easily “plug and play” with different solving techniques and so choose the most appropriate for that problem. We describe in detail the various language features of Zinc and the many trade-offs we faced in its design.

This is a preview of subscription content, access via your institution.


  1. Apt, K., & Wallace, M. (2007). Constraint logic programming using ECLiPSe. Cambridge: Cambridge University Press.

    MATH  Google Scholar 

  2. Bowen, J. P. (1996). Formal specification and documentation using Z: A case study approach. Boston: International Thomson Computer Press.

    Google Scholar 

  3. Brand, S., Naroditskaya, N., Quimper, C.-G., Stuckey, P. J., & Walsh, T. (2007). Encodings of the sequence constaint. In Proceedings of the 13th international conference on principles and practice of constraint programming (CP2007), Providence, Rhode Island, USA (September).

  4. Demoen, B., García de la Banda, M., Harvey, W., Marriott, K., & Stuckey, P. J. (1999). An overview of HAL. In Jaffar, J. (ed.), Proceedings of the fourth international conference on principles and practices of constraint programming, LNCS, (pp. 174–188). New York: Springer.

    Google Scholar 

  5. DIMACS, (1993). Satisfiability suggested format.

  6. Flener, P., Pearson, J., & Ågren, M. (2003). Introducing ESRA, a relational language for modelling combinatorial problems. In LOPSTR, International Symposium on Logic-based Program Synthesis and Transformation, (pp. 214–232).

  7. Fourer, R., Gay, D. M., & Kernighan, B. W. (2002). AMPL: A modeling language for mathematical programming. Pacific Grove: Duxbury Press.

    Google Scholar 

  8. Frisch, A., Grum, M., Jefferson, C., Martinez Hernandez, B., & Miguel, I. (2007). The design of ESSENCE: A constraint language for specifying combinatorial problems. In Proc. of the 20th international joint conference on artificial intelligence IJCAI.

  9. Frisch, A. M., Jefferson, C., Martinez-Hernandez, B., & Miguel, I. (2005). The rules of constraint modelling. In Proc 19th IJCAI, (pp. 109–116).

  10. Frisch, A. M., Harvey, W., Jefferson, C., Martìnez-Hernàndez, B., & Miguel, I. (2008). Essence: A constraint language for specifying combinatorial problems. Constraints (this issue).

  11. Gervet, C. (2001). Large scale combinatorial optimization: A methodological viewpoint. DIMACS Discrete Mathematics and Theoretical Computer Science, 57, 151–174.

    MathSciNet  Google Scholar 

  12. Hakin, A. (1985). The intractability of resolution. Theoretical Computer Science, 39, 297–308.

    Article  MathSciNet  Google Scholar 

  13. Hnich, B., Miguel, I., Gent, I. P., & Walsh, T. CSPLib: a problem library for constraints.

  14. Jayaraman, B., & Tambay, P. (2002). Modeling engineering structures with constrained objects. In PADL, (pp. 28–46).

  15. Kallrath, J. (2004). Modeling languages in mathematical optimisation. Norwell: Kluwer.

    Google Scholar 

  16. Lauriere, J-L. (1978). ALICE: A language and a program for stating and solving combinatorial problems. Artificial Intelligence, 10(1), 29–127.

    MATH  Article  MathSciNet  Google Scholar 

  17. Marriott, K., Stuckey, P. J., & Wallace, M. (2006). Constraint logic programming. In Handbook of constraint programming (pp. 409–452). Amsterdam: Elsevier.

    Chapter  Google Scholar 

  18. Murtagh, B. A. (1981). Advanced linear programming (pp. 163–170). Columbus: McGraw-Hill.

    MATH  Google Scholar 

  19. Rafeh, R., Garcia de la Banda, M. J., Marriott, K., & Wallace, M. (2007). From Zinc to design model. In Proc. PADL 2007 Number 4354 in LNCS (pp. 215–229). New York: Springer.

    Google Scholar 

  20. Schneider, S. (2001). The B-method: An introduction. Cornerstones of Computing. Hampshire: Palgrave.

    Google Scholar 

  21. Solvers that work with AMPL.

  22. Somogyi, Z., Henderson, F., & Conway, T. (1996). The execution algorithm of Mercury: an efficient purely declarative logic programming language. Journal of Logic Programming, 29(1–3), 17–64.

    MATH  Article  Google Scholar 

  23. Stefik, M. (1981). Planning with constraints (MOLGEN: Part 1). Artificial Intelligence, 16, 111–139.

    Article  Google Scholar 

  24. Stuckey, P. J., García de la Banda, M. J., Maher, M. J., Marriott, K., Slaney, J. K., Somogyi, Z., et al. (2005). The G12 project: Mapping solver independent models to efficient solutions. In CP, (pp. 13–16).

  25. Van Hentenryck, P., Lustig, I., Michel, L. A., & Puget, J.-F. (1999). The OPL optimization programming language. Cambridge: MIT Press.

    Google Scholar 

  26. Van Hentenryck, P. & Michel, L. (2005). Constraint-based local search. Cambridge: MIT Press.

    Google Scholar 

  27. Wallace, M., Novello, S., & Schimpf, J. (1997). ECLiPSe—a platform for constraint programming. ICL Systems Journal, 12(1), 159–200.

    Google Scholar 

  28. Weisstein, E. W. (1999). Perfect square dissection. From MathWorld—A Wolfram Web Resource.

  29. Yeomans, J. (2003). Solving Einstein’s riddle using spreadsheet optimisation. INFORMS Transactions on Education, 3(2).

  30. Yuen B. J., & Richardson K. V. (1995). Establishing the optimality of sequencing heuristics for cutting stock problems. European Journal of Operational Research, 84, 590–598.

    MATH  Article  Google Scholar 

Download references

Author information

Authors and Affiliations


Corresponding author

Correspondence to Kim Marriott.

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Marriott, K., Nethercote, N., Rafeh, R. et al. The Design of the Zinc Modelling Language. Constraints 13, 229–267 (2008).

Download citation

  • Published:

  • Issue Date:

  • DOI:


  • Language design
  • Modelling
  • CSP
  • Optimisation
  • Constraint programming