A high-level constraint modelling language that allows you to easily express and solve discrete optimisation problems.