MiniZinc is a medium-level modelling language. It is high-level enough to express most CP problems easily, but low-level enough that it can be mapped onto existing solvers easily and consistently. It is a subset of the higher-level language Zinc. We hope it will be adapted as a standard by the CP community.
FlatZinc is a low-level solver input language that is the target language for MiniZinc. It is designed to be easy to translate into the form required by a CP solver.
This page holds various MiniZinc and FlatZinc resources that are of wide interest.
MiniZinc: Towards A Standard CP Modelling Language. Paper about MiniZinc, FlatZinc, and the mapping between them.
Specification of Zinc and MiniZinc. The official specification of Zinc and MiniZinc. The two languages are specified in a single document because they have a lot of overlap. Nonetheless, the parts that pertain to MiniZinc are clearly marked.
Converting MiniZinc to FlatZinc. The official specification for the MiniZinc-to-FlatZinc conversion. Has some overlap with the relevant section in the MiniZinc paper, but is more detailed, especially on how built-ins are translated.
FlatZinc lex/yacc grammar. Includes a Makefile. This code is in the public domain, and so can be used by anyone to create a FlatZinc front-end for their solver.