From 9b7e65e00b158a1eb59a26f068332371f47b4612 Mon Sep 17 00:00:00 2001
From: "Jip J. Dekker"
Date: Fri, 18 Jun 2021 09:34:50 +1000
Subject: [PATCH] Squashed 'software/minizinc/' content from commit 5a577826
git-subtree-dir: software/minizinc
git-subtree-split: 5a577826da4d7cf6195f28b5604d8d20a01fbc6e
---
.clang-format | 21 +
.clang-tidy | 40 +
.gitignore | 35 +
.gitlab-ci.yml | 296 +
CMakeLists.txt | 108 +
LICENSE.txt | 377 +
README.md | 168 +
changes.rst | 2259 +
cmake/modules/FindCPlex.cmake | 74 +
cmake/modules/FindGeas.cmake | 38 +
cmake/modules/FindGecode.cmake | 83 +
cmake/modules/FindGurobi.cmake | 82 +
cmake/modules/FindMPFR.cmake | 25 +
cmake/modules/FindOsiCBC.cmake | 91 +
cmake/modules/FindSCIP.cmake | 39 +
cmake/modules/FindXpress.cmake | 23 +
cmake/scripts/md5_gen.cmake | 45 +
cmake/support/ccache_setup.cmake | 25 +
cmake/support/compiler_setup.cmake | 65 +
cmake/support/config_emscripten.cmake | 58 +
cmake/support/config_export.cmake | 91 +
cmake/support/config_output.cmake | 35 +
.../support/emscripten_file_packager_patch.js | 44 +
cmake/support/emscripten_setup.cmake | 8 +
cmake/support/format.cmake | 27 +
cmake/targets/libminizinc_cplex.cmake | 22 +
cmake/targets/libminizinc_fzn.cmake | 14 +
cmake/targets/libminizinc_geas.cmake | 23 +
cmake/targets/libminizinc_gecode.cmake | 33 +
cmake/targets/libminizinc_gurobi.cmake | 21 +
cmake/targets/libminizinc_mip.cmake | 14 +
cmake/targets/libminizinc_nl.cmake | 16 +
cmake/targets/libminizinc_osicbc.cmake | 25 +
cmake/targets/libminizinc_parser.cmake | 114 +
cmake/targets/libminizinc_scip.cmake | 20 +
cmake/targets/libminizinc_xpress.cmake | 21 +
cmake/targets/libmzn.cmake | 158 +
cmake/targets/minizinc.cmake | 12 +
cmake/targets/mzn2doc.cmake | 11 +
cmake/templates/launch-c.in | 3 +
cmake/templates/launch-cxx.in | 3 +
cmake/templates/libminizincConfig.cmake.in | 18 +
.../libminizincConfigVersion.cmake.in | 12 +
docs/LICENSE.txt | 390 +
docs/README.md | 27 +
docs/chi/Makefile | 225 +
.../_static/favicon/android-icon-144x144.png | Bin 0 -> 8887 bytes
.../_static/favicon/android-icon-192x192.png | Bin 0 -> 11650 bytes
.../_static/favicon/android-icon-36x36.png | Bin 0 -> 2393 bytes
.../_static/favicon/android-icon-48x48.png | Bin 0 -> 3014 bytes
.../_static/favicon/android-icon-72x72.png | Bin 0 -> 4304 bytes
.../_static/favicon/android-icon-96x96.png | Bin 0 -> 5628 bytes
.../_static/favicon/apple-icon-114x114.png | Bin 0 -> 6741 bytes
.../_static/favicon/apple-icon-120x120.png | Bin 0 -> 7121 bytes
.../_static/favicon/apple-icon-144x144.png | Bin 0 -> 8887 bytes
.../_static/favicon/apple-icon-152x152.png | Bin 0 -> 9554 bytes
.../_static/favicon/apple-icon-180x180.png | Bin 0 -> 11945 bytes
docs/chi/_static/favicon/apple-icon-57x57.png | Bin 0 -> 3416 bytes
docs/chi/_static/favicon/apple-icon-60x60.png | Bin 0 -> 3538 bytes
docs/chi/_static/favicon/apple-icon-72x72.png | Bin 0 -> 4304 bytes
docs/chi/_static/favicon/apple-icon-76x76.png | Bin 0 -> 4441 bytes
.../favicon/apple-icon-precomposed.png | Bin 0 -> 12224 bytes
docs/chi/_static/favicon/apple-icon.png | Bin 0 -> 12224 bytes
docs/chi/_static/favicon/browserconfig.xml | 2 +
docs/chi/_static/favicon/favicon-16x16.png | Bin 0 -> 1365 bytes
docs/chi/_static/favicon/favicon-32x32.png | Bin 0 -> 2126 bytes
docs/chi/_static/favicon/favicon-96x96.png | Bin 0 -> 5628 bytes
docs/chi/_static/favicon/favicon.ico | Bin 0 -> 1150 bytes
docs/chi/_static/favicon/manifest.json | 41 +
docs/chi/_static/favicon/ms-icon-144x144.png | Bin 0 -> 8887 bytes
docs/chi/_static/favicon/ms-icon-150x150.png | Bin 0 -> 9431 bytes
docs/chi/_static/favicon/ms-icon-310x310.png | Bin 0 -> 25805 bytes
docs/chi/_static/favicon/ms-icon-70x70.png | Bin 0 -> 4102 bytes
docs/chi/_static/js/doc-links.js | 16 +
docs/chi/_static/style.css | 30 +
docs/chi/_templates/footer.html | 4 +
docs/chi/_templates/layout.html | 61 +
docs/chi/api_interfacing.rst | 1 +
docs/chi/basic_steps.rst | 1 +
docs/chi/command_line.rst | 1 +
docs/chi/conf.py | 479 +
docs/chi/efficient.rst | 346 +
docs/chi/examples/allinterval.mzn | 14 +
docs/chi/examples/allinterval2.mzn | 22 +
docs/chi/examples/allinterval3.mzn | 21 +
docs/chi/examples/aust-enum.mzn | 11 +
docs/chi/examples/aust.mzn | 20 +
docs/chi/examples/bboolsum.mzn | 19 +
docs/chi/examples/bddsum.mzn | 18 +
docs/chi/examples/binarysum.mzn | 39 +
docs/chi/examples/cakes.mzn | 21 +
docs/chi/examples/cakes2.mzn | 38 +
docs/chi/examples/cars.mzn | 35 +
docs/chi/examples/cars_data.dzn | 16 +
docs/chi/examples/cnonoverlap.fzn | 19 +
docs/chi/examples/cnonoverlap.mzn | 11 +
docs/chi/examples/command_line/data.dzn | 1 +
docs/chi/examples/command_line/model.mzn | 6 +
docs/chi/examples/count1.mzn | 15 +
docs/chi/examples/count2.mzn | 17 +
docs/chi/examples/count3.mzn | 17 +
docs/chi/examples/cumulative.mzn | 29 +
docs/chi/examples/disjunctive.mzn | 7 +
docs/chi/examples/dummy.mzn | 3 +
docs/chi/examples/flexible-js.mzn | 22 +
docs/chi/examples/golomb.mzn | 18 +
docs/chi/examples/grocery.mzn | 15 +
docs/chi/examples/inverse.mzn | 7 +
docs/chi/examples/jdata.dzn | 7 +
docs/chi/examples/jobshop.fzn | 298 +
docs/chi/examples/jobshop.mzn | 31 +
docs/chi/examples/jobshop.ozn | 7 +
docs/chi/examples/jobshop2.mzn | 34 +
docs/chi/examples/jobshop3.mzn | 30 +
docs/chi/examples/knapsack.mzn | 13 +
docs/chi/examples/laplace.mzn | 41 +
docs/chi/examples/latin.mzn | 11 +
docs/chi/examples/latin_squares.mzn | 24 +
docs/chi/examples/latinbool.mzn | 18 +
docs/chi/examples/layout.dzn | 9 +
docs/chi/examples/lightup.dzn | 9 +
docs/chi/examples/lightup.mzn | 39 +
docs/chi/examples/linear.mzn | 6 +
docs/chi/examples/loan.mzn | 23 +
docs/chi/examples/loan1.dzn | 3 +
docs/chi/examples/loan2.dzn | 3 +
docs/chi/examples/loan3.dzn | 3 +
docs/chi/examples/magic-series.mzn | 9 +
docs/chi/examples/magic-series2.mzn | 11 +
docs/chi/examples/manhattan.mzn | 31 +
docs/chi/examples/meal-zinc.dzn | 22 +
docs/chi/examples/meal.dzn | 20 +
docs/chi/examples/meal.mzn | 36 +
docs/chi/examples/moving.dzn | 10 +
docs/chi/examples/moving.mzn | 22 +
docs/chi/examples/nqueens-ann.mzn | 17 +
docs/chi/examples/nqueens.mzn | 14 +
docs/chi/examples/nqueens_sym.mzn | 34 +
docs/chi/examples/nurse.mzn | 35 +
docs/chi/examples/oesort.mzn | 39 +
docs/chi/examples/pantry.dzn | 5 +
docs/chi/examples/pantry2.dzn | 5 +
docs/chi/examples/reflection.mzn | 6 +
docs/chi/examples/scope.mzn | 7 +
docs/chi/examples/send-more-money.mzn | 22 +
.../examples/simple-prod-planning-data.dzn | 9 +
docs/chi/examples/simple-prod-planning.mzn | 36 +
docs/chi/examples/social-golfers.dzn | 3 +
docs/chi/examples/social-golfers.fzn | 653 +
docs/chi/examples/social-golfers.mzn | 53 +
docs/chi/examples/social-golfers.ozn | 5 +
docs/chi/examples/sonet.dzn | 4 +
docs/chi/examples/stable-marriage.dzn | 14 +
docs/chi/examples/stable-marriage.mzn | 25 +
docs/chi/examples/sudoku.dzn | 11 +
docs/chi/examples/sudoku.mzn | 39 +
docs/chi/examples/uboolsum.mzn | 17 +
docs/chi/examples/unbounded.mzn | 10 +
docs/chi/examples/unconstrained.mzn | 10 +
docs/chi/examples/wedding.mzn | 33 +
docs/chi/examples/wedding2.mzn | 29 +
docs/chi/figures/MiniZn_logo_2.pdf | 347 +
docs/chi/figures/MiniZn_logo_2.svg | 67 +
docs/chi/figures/MiniZn_logo_2_small.pdf | Bin 0 -> 7077 bytes
docs/chi/figures/aust.pdf | Bin 0 -> 7858 bytes
docs/chi/figures/aust.svg | 85 +
docs/chi/figures/chess9x9-3.pdf | Bin 0 -> 516197 bytes
docs/chi/figures/chess9x9-3.svg | 2688 +
docs/chi/figures/chess9x9-4.pdf | Bin 0 -> 535236 bytes
docs/chi/figures/chess9x9-4.svg | 2996 ++
docs/chi/figures/cpprofiler/doc_basic_pt.png | Bin 0 -> 8405 bytes
docs/chi/figures/cpprofiler/doc_bookmark1.png | Bin 0 -> 46127 bytes
.../figures/cpprofiler/doc_bookmark_added.png | Bin 0 -> 35162 bytes
.../figures/cpprofiler/doc_bookmark_list.png | Bin 0 -> 10448 bytes
docs/chi/figures/cpprofiler/doc_collapsed.png | Bin 0 -> 46389 bytes
docs/chi/figures/cpprofiler/doc_conductor.png | Bin 0 -> 18907 bytes
.../cpprofiler/doc_icicle_tree_restarts.png | Bin 0 -> 134565 bytes
.../figures/cpprofiler/doc_merged_tree.png | Bin 0 -> 69675 bytes
.../cpprofiler/doc_ng_analysis_result.png | Bin 0 -> 178885 bytes
.../figures/cpprofiler/doc_pt_compressed.png | Bin 0 -> 58736 bytes
docs/chi/figures/cpprofiler/doc_pt_large.png | Bin 0 -> 67067 bytes
docs/chi/figures/cpprofiler/doc_pt_large2.png | Bin 0 -> 95146 bytes
.../doc_replaying_small_example.png | Bin 0 -> 8626 bytes
docs/chi/figures/cpprofiler/doc_restarts.png | Bin 0 -> 122210 bytes
.../cpprofiler/doc_restarts_lantern.png | Bin 0 -> 55290 bytes
.../figures/cpprofiler/doc_traditional.png | Bin 0 -> 64145 bytes
docs/chi/figures/cpprofiler/doc_two_execs.png | Bin 0 -> 18890 bytes
docs/chi/figures/dfa.graffle | 2009 +
docs/chi/figures/dfa.pdf | Bin 0 -> 24943 bytes
docs/chi/figures/dfa.svg | 461 +
docs/chi/figures/findmus/ide_depth_1.png | Bin 0 -> 59576 bytes
docs/chi/figures/findmus/ide_depth_fzn.png | Bin 0 -> 63094 bytes
docs/chi/figures/findmus/ide_depth_mzn.png | Bin 0 -> 70807 bytes
.../chi/figures/globalizer/ide_globalized.png | Bin 0 -> 74938 bytes
.../figures/globalizer/ide_select_data.png | Bin 0 -> 4891 bytes
docs/chi/figures/handlers.pdf | Bin 0 -> 12939 bytes
docs/chi/figures/handlers.svg | 268 +
docs/chi/figures/ide-data-enter.jpg | Bin 0 -> 42856 bytes
docs/chi/figures/ide-data-file.jpg | Bin 0 -> 46919 bytes
docs/chi/figures/ide-gurobi.jpg | Bin 0 -> 243717 bytes
docs/chi/figures/ide-preferences.jpg | Bin 0 -> 251696 bytes
docs/chi/figures/ide-project-explorer.jpg | Bin 0 -> 74265 bytes
docs/chi/figures/ide-run.jpg | Bin 0 -> 70112 bytes
docs/chi/figures/ide-submit-coursera.jpg | Bin 0 -> 186231 bytes
docs/chi/figures/lightup.pdf | Bin 0 -> 9955 bytes
docs/chi/figures/lightup.svg | 42 +
docs/chi/figures/lightup2.pdf | Bin 0 -> 11830 bytes
docs/chi/figures/lightup2.svg | 42 +
docs/chi/figures/magic-series-profiling.jpg | Bin 0 -> 326428 bytes
docs/chi/figures/mzn-ide-data.jpg | Bin 0 -> 111905 bytes
docs/chi/figures/mzn-ide-playground-data.jpg | Bin 0 -> 188334 bytes
docs/chi/figures/mzn-ide-playground-param.jpg | Bin 0 -> 33100 bytes
docs/chi/figures/mzn-ide-playground.jpg | Bin 0 -> 109952 bytes
docs/chi/figures/mzn-ide-playground2.jpg | Bin 0 -> 131933 bytes
docs/chi/figures/mzn-ide-playground3.jpg | Bin 0 -> 171621 bytes
docs/chi/figures/mzn-ide-playground4.jpg | Bin 0 -> 174961 bytes
docs/chi/figures/mzn-ide-playground5.jpg | Bin 0 -> 184592 bytes
docs/chi/figures/mzn-ide-select-data.jpg | Bin 0 -> 45727 bytes
docs/chi/figures/queens_symm.graffle | 9375 ++++
docs/chi/figures/queens_symm.pdf | Bin 0 -> 25124 bytes
docs/chi/figures/queens_symm.svg | 3 +
docs/chi/figures/queens_symm_unsat.pdf | Bin 0 -> 7222 bytes
docs/chi/figures/queens_symm_unsat.svg | 3 +
docs/chi/figures/solver-conf-window.jpg | Bin 0 -> 383743 bytes
docs/chi/figures/solver-configuration.jpg | Bin 0 -> 281504 bytes
docs/chi/figures/sudoku.pdf | Bin 0 -> 10579 bytes
docs/chi/figures/sudoku.svg | 1090 +
docs/chi/figures/tree-4.pdf | Bin 0 -> 28845 bytes
docs/chi/figures/tree-4.svg | 504 +
docs/chi/figures/trolleys.pdf | Bin 0 -> 12359 bytes
docs/chi/figures/trolleys.svg | 225 +
docs/chi/figures/wedding.pdf | Bin 0 -> 18504 bytes
docs/chi/figures/wedding.svg | 312 +
docs/chi/find_mus.rst | 1 +
docs/chi/flattening.rst | 801 +
docs/chi/fzn-grammar.mzn | 126 +
docs/chi/fzn-spec.rst | 1 +
docs/chi/globalizer.rst | 1 +
docs/chi/grammar.mzn | 231 +
docs/chi/index.rst | 36 +
docs/chi/installation.rst | 1 +
docs/chi/intro.rst | 1 +
docs/chi/jupyter.rst | 1 +
docs/chi/minizinc_ide.rst | 1 +
docs/chi/modelling.rst | 661 +
docs/chi/modelling2.rst | 990 +
docs/chi/mzn_search.rst | 230 +
docs/chi/optiontypes.rst | 112 +
docs/chi/output.mzn | 18 +
docs/chi/part_1_overview.rst | 10 +
docs/chi/part_2_tutorial.rst | 15 +
docs/chi/part_3_user_manual.rst | 15 +
docs/chi/part_4_reference.rst | 11 +
docs/chi/predicates.rst | 662 +
docs/chi/python.rst | 1 +
docs/chi/sat.rst | 151 +
docs/chi/spec.rst | 1 +
docs/en/Makefile | 225 +
.../_static/favicon/android-icon-144x144.png | Bin 0 -> 8887 bytes
.../_static/favicon/android-icon-192x192.png | Bin 0 -> 11650 bytes
.../en/_static/favicon/android-icon-36x36.png | Bin 0 -> 2393 bytes
.../en/_static/favicon/android-icon-48x48.png | Bin 0 -> 3014 bytes
.../en/_static/favicon/android-icon-72x72.png | Bin 0 -> 4304 bytes
.../en/_static/favicon/android-icon-96x96.png | Bin 0 -> 5628 bytes
.../en/_static/favicon/apple-icon-114x114.png | Bin 0 -> 6741 bytes
.../en/_static/favicon/apple-icon-120x120.png | Bin 0 -> 7121 bytes
.../en/_static/favicon/apple-icon-144x144.png | Bin 0 -> 8887 bytes
.../en/_static/favicon/apple-icon-152x152.png | Bin 0 -> 9554 bytes
.../en/_static/favicon/apple-icon-180x180.png | Bin 0 -> 11945 bytes
docs/en/_static/favicon/apple-icon-57x57.png | Bin 0 -> 3416 bytes
docs/en/_static/favicon/apple-icon-60x60.png | Bin 0 -> 3538 bytes
docs/en/_static/favicon/apple-icon-72x72.png | Bin 0 -> 4304 bytes
docs/en/_static/favicon/apple-icon-76x76.png | Bin 0 -> 4441 bytes
.../favicon/apple-icon-precomposed.png | Bin 0 -> 12224 bytes
docs/en/_static/favicon/apple-icon.png | Bin 0 -> 12224 bytes
docs/en/_static/favicon/browserconfig.xml | 2 +
docs/en/_static/favicon/favicon-16x16.png | Bin 0 -> 1365 bytes
docs/en/_static/favicon/favicon-32x32.png | Bin 0 -> 2126 bytes
docs/en/_static/favicon/favicon-96x96.png | Bin 0 -> 5628 bytes
docs/en/_static/favicon/favicon.ico | Bin 0 -> 1150 bytes
docs/en/_static/favicon/manifest.json | 41 +
docs/en/_static/favicon/ms-icon-144x144.png | Bin 0 -> 8887 bytes
docs/en/_static/favicon/ms-icon-150x150.png | Bin 0 -> 9431 bytes
docs/en/_static/favicon/ms-icon-310x310.png | Bin 0 -> 25805 bytes
docs/en/_static/favicon/ms-icon-70x70.png | Bin 0 -> 4102 bytes
docs/en/_static/js/doc-links.js | 16 +
docs/en/_static/style.css | 30 +
docs/en/_templates/footer.html | 4 +
docs/en/_templates/layout.html | 61 +
docs/en/api_interfacing.rst | 2 +
docs/en/basic_steps.rst | 127 +
docs/en/changelog.rst | 1 +
docs/en/checkers.rst | 242 +
docs/en/command_line.rst | 588 +
docs/en/conf.py | 480 +
docs/en/cpprofiler.rst | 404 +
docs/en/efficient.rst | 491 +
docs/en/examples/allinterval.mzn | 14 +
docs/en/examples/allinterval2.mzn | 22 +
docs/en/examples/allinterval3.mzn | 21 +
docs/en/examples/assignment-combine-enums.mzn | 51 +
docs/en/examples/assignment-extend-enum.mzn | 15 +
docs/en/examples/aust-2.mzc.mzn | 25 +
docs/en/examples/aust-3.mzc.mzn | 29 +
docs/en/examples/aust-enum.mzn | 11 +
docs/en/examples/aust.mzc.mzn | 15 +
docs/en/examples/aust.mzn | 20 +
docs/en/examples/bboolsum.mzn | 19 +
docs/en/examples/bddsum.mzn | 18 +
docs/en/examples/binarysum.mzn | 39 +
docs/en/examples/cakes.mzn | 21 +
docs/en/examples/cakes2.mzn | 38 +
docs/en/examples/cars.mzn | 35 +
docs/en/examples/cars_data.dzn | 16 +
docs/en/examples/cnonoverlap.fzn | 19 +
docs/en/examples/cnonoverlap.mzn | 11 +
docs/en/examples/command_line/data.dzn | 1 +
docs/en/examples/command_line/model.mzn | 6 +
docs/en/examples/count1.mzn | 15 +
docs/en/examples/count2.mzn | 17 +
docs/en/examples/count3.mzn | 17 +
docs/en/examples/cumulative.mzn | 29 +
docs/en/examples/disjunctive.mzn | 7 +
docs/en/examples/dummy.mzn | 3 +
docs/en/examples/flexible-js.mzn | 22 +
docs/en/examples/golomb.mzn | 18 +
docs/en/examples/grocery.mzn | 15 +
docs/en/examples/inverse.mzn | 7 +
docs/en/examples/jdata.dzn | 7 +
docs/en/examples/jobshop.fzn | 298 +
docs/en/examples/jobshop.mzn | 31 +
docs/en/examples/jobshop.ozn | 7 +
docs/en/examples/jobshop2.mzn | 34 +
docs/en/examples/jobshop3.mzn | 30 +
docs/en/examples/knapsack.mzn | 13 +
docs/en/examples/laplace.mzn | 41 +
docs/en/examples/latin.mzn | 11 +
docs/en/examples/latin_squares.mzn | 28 +
docs/en/examples/latinbool.mzn | 18 +
docs/en/examples/layout.dzn | 9 +
docs/en/examples/lightup.dzn | 9 +
docs/en/examples/lightup.mzn | 39 +
docs/en/examples/linear.mzn | 6 +
docs/en/examples/loan.mzn | 23 +
docs/en/examples/loan1.dzn | 3 +
docs/en/examples/loan2.dzn | 3 +
docs/en/examples/loan3.dzn | 3 +
docs/en/examples/magic-series.mzn | 9 +
docs/en/examples/magic-series2.mzn | 12 +
docs/en/examples/manhattan.mzn | 31 +
docs/en/examples/meal-zinc.dzn | 22 +
docs/en/examples/meal.dzn | 20 +
docs/en/examples/meal.mzn | 36 +
docs/en/examples/moving.dzn | 10 +
docs/en/examples/moving.mzn | 22 +
docs/en/examples/nqueens-ann.mzn | 17 +
docs/en/examples/nqueens.mzc.mzn | 23 +
docs/en/examples/nqueens.mzn | 14 +
docs/en/examples/nqueens_sym.mzn | 35 +
docs/en/examples/nurse.dzn | 6 +
docs/en/examples/nurse.mzn | 35 +
docs/en/examples/oesort.mzn | 39 +
docs/en/examples/pantry.dzn | 5 +
docs/en/examples/pantry2.dzn | 5 +
docs/en/examples/photo.mzc.mzn | 49 +
docs/en/examples/photo.mzn | 15 +
docs/en/examples/prod-planning-data.dzn | 9 +
docs/en/examples/prod-planning.mzn | 36 +
docs/en/examples/reflection.mzn | 6 +
docs/en/examples/scope.mzn | 7 +
docs/en/examples/send-more-money.mzn | 22 +
docs/en/examples/social-golfers.dzn | 3 +
docs/en/examples/social-golfers.mzn | 45 +
docs/en/examples/sonet.dzn | 4 +
docs/en/examples/stable-marriage.dzn | 14 +
docs/en/examples/stable-marriage.mzn | 25 +
docs/en/examples/sudoku.dzn | 11 +
docs/en/examples/sudoku.mzn | 39 +
docs/en/examples/uboolsum.mzn | 17 +
docs/en/examples/unbounded.mzn | 10 +
docs/en/examples/unconstrained.mzn | 10 +
docs/en/examples/wedding.mzn | 33 +
docs/en/examples/wedding2.mzn | 29 +
docs/en/figures/MiniZn_logo_2.pdf | 347 +
docs/en/figures/MiniZn_logo_2.svg | 67 +
docs/en/figures/MiniZn_logo_2_small.pdf | Bin 0 -> 7077 bytes
docs/en/figures/aust.pdf | Bin 0 -> 7858 bytes
docs/en/figures/aust.svg | 85 +
docs/en/figures/chess9x9-3.pdf | Bin 0 -> 516197 bytes
docs/en/figures/chess9x9-3.svg | 2688 +
docs/en/figures/chess9x9-4.pdf | Bin 0 -> 535236 bytes
docs/en/figures/chess9x9-4.svg | 2996 ++
docs/en/figures/cpprofiler/doc_basic_pt.png | Bin 0 -> 8405 bytes
docs/en/figures/cpprofiler/doc_bookmark1.png | Bin 0 -> 46127 bytes
.../figures/cpprofiler/doc_bookmark_added.png | Bin 0 -> 35162 bytes
.../figures/cpprofiler/doc_bookmark_list.png | Bin 0 -> 10448 bytes
docs/en/figures/cpprofiler/doc_collapsed.png | Bin 0 -> 46389 bytes
docs/en/figures/cpprofiler/doc_conductor.png | Bin 0 -> 18907 bytes
.../cpprofiler/doc_icicle_tree_restarts.png | Bin 0 -> 134565 bytes
.../en/figures/cpprofiler/doc_merged_tree.png | Bin 0 -> 69675 bytes
.../cpprofiler/doc_ng_analysis_result.png | Bin 0 -> 178885 bytes
.../figures/cpprofiler/doc_pt_compressed.png | Bin 0 -> 58736 bytes
docs/en/figures/cpprofiler/doc_pt_large.png | Bin 0 -> 67067 bytes
docs/en/figures/cpprofiler/doc_pt_large2.png | Bin 0 -> 95146 bytes
.../doc_replaying_small_example.png | Bin 0 -> 8626 bytes
docs/en/figures/cpprofiler/doc_restarts.png | Bin 0 -> 122210 bytes
.../cpprofiler/doc_restarts_lantern.png | Bin 0 -> 55290 bytes
.../en/figures/cpprofiler/doc_ss_analysis.png | Bin 0 -> 42085 bytes
.../cpprofiler/doc_ss_analysis_hist.png | Bin 0 -> 43168 bytes
.../en/figures/cpprofiler/doc_traditional.png | Bin 0 -> 64145 bytes
docs/en/figures/cpprofiler/doc_two_execs.png | Bin 0 -> 18890 bytes
docs/en/figures/dfa.graffle | 2009 +
docs/en/figures/dfa.pdf | Bin 0 -> 24943 bytes
docs/en/figures/dfa.svg | 461 +
docs/en/figures/findmus/ide_depth_1.png | Bin 0 -> 107207 bytes
docs/en/figures/findmus/ide_depth_fzn.png | Bin 0 -> 163189 bytes
docs/en/figures/findmus/ide_depth_mzn.png | Bin 0 -> 127949 bytes
docs/en/figures/globalizer/ide_globalized.png | Bin 0 -> 74938 bytes
.../en/figures/globalizer/ide_select_data.png | Bin 0 -> 4891 bytes
docs/en/figures/handlers.pdf | Bin 0 -> 12939 bytes
docs/en/figures/handlers.svg | 268 +
docs/en/figures/ide-data-enter.jpg | Bin 0 -> 42856 bytes
docs/en/figures/ide-data-file.jpg | Bin 0 -> 46919 bytes
docs/en/figures/ide-gurobi.jpg | Bin 0 -> 171386 bytes
docs/en/figures/ide-preferences.jpg | Bin 0 -> 185074 bytes
docs/en/figures/ide-project-explorer.jpg | Bin 0 -> 78945 bytes
docs/en/figures/ide-run.jpg | Bin 0 -> 70112 bytes
docs/en/figures/ide-submit-coursera.jpg | Bin 0 -> 186231 bytes
docs/en/figures/lightup.pdf | Bin 0 -> 9955 bytes
docs/en/figures/lightup.svg | 42 +
docs/en/figures/lightup2.pdf | Bin 0 -> 11830 bytes
docs/en/figures/lightup2.svg | 42 +
docs/en/figures/magic-series-profiling.jpg | Bin 0 -> 326428 bytes
docs/en/figures/mzn-ide-data.jpg | Bin 0 -> 111905 bytes
docs/en/figures/mzn-ide-playground-data.jpg | Bin 0 -> 188334 bytes
docs/en/figures/mzn-ide-playground-param.jpg | Bin 0 -> 33100 bytes
docs/en/figures/mzn-ide-playground.jpg | Bin 0 -> 109952 bytes
docs/en/figures/mzn-ide-playground2.jpg | Bin 0 -> 131933 bytes
docs/en/figures/mzn-ide-playground3.jpg | Bin 0 -> 171621 bytes
docs/en/figures/mzn-ide-playground4.jpg | Bin 0 -> 174961 bytes
docs/en/figures/mzn-ide-playground5.jpg | Bin 0 -> 184592 bytes
docs/en/figures/mzn-ide-select-data.jpg | Bin 0 -> 45727 bytes
docs/en/figures/queens_symm.graffle | 9375 ++++
docs/en/figures/queens_symm.pdf | Bin 0 -> 25124 bytes
docs/en/figures/queens_symm.svg | 3 +
docs/en/figures/queens_symm_unsat.pdf | Bin 0 -> 7222 bytes
docs/en/figures/queens_symm_unsat.svg | 3 +
docs/en/figures/solver-configuration.jpg | Bin 0 -> 189964 bytes
docs/en/figures/sudoku.pdf | Bin 0 -> 10579 bytes
docs/en/figures/sudoku.svg | 1090 +
docs/en/figures/tree-4.pdf | Bin 0 -> 28845 bytes
docs/en/figures/tree-4.svg | 504 +
docs/en/figures/trolleys.pdf | Bin 0 -> 12359 bytes
docs/en/figures/trolleys.svg | 225 +
docs/en/figures/wedding.pdf | Bin 0 -> 18504 bytes
docs/en/figures/wedding.svg | 312 +
docs/en/find_mus.rst | 420 +
docs/en/flattening.rst | 942 +
docs/en/fzn-grammar.mzn | 126 +
docs/en/fzn-spec.rst | 1100 +
docs/en/globalizer.rst | 225 +
docs/en/grammar.mzn | 235 +
docs/en/index.rst | 37 +
docs/en/installation.rst | 111 +
docs/en/installation_detailed.rst | 28 +
docs/en/installation_detailed_linux.rst | 257 +
docs/en/installation_detailed_wasm.rst | 20 +
docs/en/installation_detailed_windows.rst | 163 +
docs/en/intro.rst | 58 +
docs/en/jupyter.rst | 96 +
docs/en/minizinc_ide.rst | 281 +
docs/en/modelling.rst | 792 +
docs/en/modelling2.rst | 1383 +
docs/en/mzn_search.rst | 606 +
docs/en/optiontypes.rst | 149 +
docs/en/output.mzn | 18 +
docs/en/part_1_overview.rst | 10 +
docs/en/part_2_tutorial.rst | 15 +
docs/en/part_3_user_manual.rst | 17 +
docs/en/part_4_reference.rst | 11 +
docs/en/predicates.rst | 945 +
docs/en/python.rst | 14 +
docs/en/sat.rst | 223 +
docs/en/solvers.rst | 289 +
docs/en/spec.rst | 3592 ++
docs/es/Leeme.txt | 29 +
docs/es/Makefile | 225 +
docs/es/_others/tasks_to_be_translated.xlsx | Bin 0 -> 10797 bytes
.../_static/favicon/android-icon-144x144.png | Bin 0 -> 8887 bytes
.../_static/favicon/android-icon-192x192.png | Bin 0 -> 11650 bytes
.../es/_static/favicon/android-icon-36x36.png | Bin 0 -> 2393 bytes
.../es/_static/favicon/android-icon-48x48.png | Bin 0 -> 3014 bytes
.../es/_static/favicon/android-icon-72x72.png | Bin 0 -> 4304 bytes
.../es/_static/favicon/android-icon-96x96.png | Bin 0 -> 5628 bytes
.../es/_static/favicon/apple-icon-114x114.png | Bin 0 -> 6741 bytes
.../es/_static/favicon/apple-icon-120x120.png | Bin 0 -> 7121 bytes
.../es/_static/favicon/apple-icon-144x144.png | Bin 0 -> 8887 bytes
.../es/_static/favicon/apple-icon-152x152.png | Bin 0 -> 9554 bytes
.../es/_static/favicon/apple-icon-180x180.png | Bin 0 -> 11945 bytes
docs/es/_static/favicon/apple-icon-57x57.png | Bin 0 -> 3416 bytes
docs/es/_static/favicon/apple-icon-60x60.png | Bin 0 -> 3538 bytes
docs/es/_static/favicon/apple-icon-72x72.png | Bin 0 -> 4304 bytes
docs/es/_static/favicon/apple-icon-76x76.png | Bin 0 -> 4441 bytes
.../favicon/apple-icon-precomposed.png | Bin 0 -> 12224 bytes
docs/es/_static/favicon/apple-icon.png | Bin 0 -> 12224 bytes
docs/es/_static/favicon/browserconfig.xml | 2 +
docs/es/_static/favicon/favicon-16x16.png | Bin 0 -> 1365 bytes
docs/es/_static/favicon/favicon-32x32.png | Bin 0 -> 2126 bytes
docs/es/_static/favicon/favicon-96x96.png | Bin 0 -> 5628 bytes
docs/es/_static/favicon/favicon.ico | Bin 0 -> 1150 bytes
docs/es/_static/favicon/manifest.json | 41 +
docs/es/_static/favicon/ms-icon-144x144.png | Bin 0 -> 8887 bytes
docs/es/_static/favicon/ms-icon-150x150.png | Bin 0 -> 9431 bytes
docs/es/_static/favicon/ms-icon-310x310.png | Bin 0 -> 25805 bytes
docs/es/_static/favicon/ms-icon-70x70.png | Bin 0 -> 4102 bytes
docs/es/_static/style.css | 24 +
docs/es/_templates/footer.html | 4 +
docs/es/_templates/layout.html | 61 +
docs/es/conf.py | 471 +
docs/es/efficient.rst | 468 +
docs/es/examples/allinterval2_es.mzn | 27 +
docs/es/examples/allinterval3_es.mzn | 27 +
docs/es/examples/allinterval_es.mzn | 17 +
docs/es/examples/aust-enum_es.mzn | 11 +
docs/es/examples/aust_es.mzn | 21 +
docs/es/examples/bboolsum_es.mzn | 20 +
docs/es/examples/bddsum_es.mzn | 18 +
docs/es/examples/binarysum.mzn | 39 +
docs/es/examples/binarysum_es.mzn | 40 +
docs/es/examples/cakes2_es.mzn | 54 +
docs/es/examples/cakes_es.mzn | 29 +
docs/es/examples/cnonoverlap_es.fzn | 20 +
docs/es/examples/cnonoverlap_es.mzn | 19 +
docs/es/examples/count1_es.mzn | 15 +
docs/es/examples/count2_es.mzn | 16 +
docs/es/examples/count3_es.mzn | 17 +
docs/es/examples/cumulative_es.mzn | 28 +
docs/es/examples/disjunctive_es.mzn | 7 +
docs/es/examples/dummy_es.mzn | 3 +
docs/es/examples/flexible-js_es.mzn | 29 +
docs/es/examples/golomb_es.mzn | 23 +
docs/es/examples/grocery_es.mzn | 15 +
docs/es/examples/inverse_es.mzn | 7 +
docs/es/examples/jdata_es.dzn | 7 +
docs/es/examples/jobshop2_es.mzn | 49 +
docs/es/examples/jobshop3_es.mzn | 45 +
docs/es/examples/jobshop_es.fzn | 298 +
docs/es/examples/jobshop_es.mzn | 42 +
docs/es/examples/jobshop_es.ozn | 7 +
docs/es/examples/knapsack_es.mzn | 13 +
docs/es/examples/laplace_es.mzn | 52 +
docs/es/examples/latin_es.mzn | 12 +
docs/es/examples/latinbool_es.mzn | 19 +
docs/es/examples/layout_es.dzn | 9 +
docs/es/examples/lightup_es.dzn | 9 +
docs/es/examples/lightup_es.mzn | 54 +
docs/es/examples/linear_es.mzn | 6 +
docs/es/examples/loan1_es.dzn | 3 +
docs/es/examples/loan2_es.dzn | 3 +
docs/es/examples/loan3_es.dzn | 3 +
docs/es/examples/loan_es.mzn | 40 +
docs/es/examples/magic-series2_es.mzn | 14 +
docs/es/examples/magic-series_es.mzn | 11 +
docs/es/examples/manhattan_es.mzn | 30 +
docs/es/examples/meal-zinc_es.dzn | 22 +
docs/es/examples/meal_es.dzn | 20 +
docs/es/examples/meal_es.mzn | 39 +
docs/es/examples/moving_es.dzn | 10 +
docs/es/examples/moving_es.mzn | 27 +
docs/es/examples/nqueens-ann_es.mzn | 17 +
docs/es/examples/nqueens_es.mzn | 20 +
docs/es/examples/nqueens_sym_es.mzn | 41 +
docs/es/examples/nurse_es.mzn | 36 +
docs/es/examples/oesort.mzn | 39 +
docs/es/examples/oesort_es.mzn | 42 +
docs/es/examples/pantry2_es.dzn | 5 +
docs/es/examples/pantry_es.dzn | 5 +
docs/es/examples/reflection_es.mzn | 6 +
docs/es/examples/scope_es.mzn | 7 +
docs/es/examples/send-more-money_es.mzn | 22 +
.../examples/simple-prod-planning-data_es.dzn | 9 +
docs/es/examples/simple-prod-planning_es.mzn | 39 +
docs/es/examples/social-golfers_es.dzn | 3 +
docs/es/examples/social-golfers_es.fzn | 653 +
docs/es/examples/social-golfers_es.mzn | 54 +
docs/es/examples/social-golfers_es.ozn | 5 +
docs/es/examples/sonet_es.dzn | 4 +
docs/es/examples/stable-marriage_es.dzn | 14 +
docs/es/examples/stable-marriage_es.mzn | 26 +
docs/es/examples/sudoku_es.dzn | 11 +
docs/es/examples/sudoku_es.mzn | 42 +
docs/es/examples/uboolsum_es.mzn | 20 +
docs/es/examples/unbounded_es.mzn | 10 +
docs/es/examples/unconstrained_es.mzn | 10 +
docs/es/examples/wedding2_es.mzn | 30 +
docs/es/examples/wedding_es.mzn | 42 +
docs/es/figures/MiniZn_logo_2.pdf | 347 +
docs/es/figures/MiniZn_logo_2.svg | 67 +
docs/es/figures/MiniZn_logo_2_small.pdf | Bin 0 -> 7077 bytes
docs/es/figures/aust.pdf | Bin 0 -> 7858 bytes
docs/es/figures/aust.svg | 85 +
docs/es/figures/chess9x9-3.pdf | Bin 0 -> 516197 bytes
docs/es/figures/chess9x9-3.svg | 2688 +
docs/es/figures/chess9x9-4.pdf | Bin 0 -> 535236 bytes
docs/es/figures/chess9x9-4.svg | 2996 ++
docs/es/figures/dfa.graffle | 2009 +
docs/es/figures/dfa.pdf | Bin 0 -> 24943 bytes
docs/es/figures/dfa.svg | 461 +
docs/es/figures/handlers_es.pdf | Bin 0 -> 10526 bytes
docs/es/figures/handlers_es.svg | 12 +
docs/es/figures/lightup.pdf | Bin 0 -> 9955 bytes
docs/es/figures/lightup.svg | 42 +
docs/es/figures/lightup2.pdf | Bin 0 -> 11830 bytes
docs/es/figures/lightup2.svg | 42 +
docs/es/figures/queens_symm.graffle | 9375 ++++
docs/es/figures/queens_symm_es.pdf | Bin 0 -> 15047 bytes
docs/es/figures/queens_symm_es.svg | 9 +
docs/es/figures/queens_symm_unsat.pdf | Bin 0 -> 7222 bytes
docs/es/figures/queens_symm_unsat.svg | 3 +
docs/es/figures/sudoku.pdf | Bin 0 -> 10579 bytes
docs/es/figures/sudoku.svg | 1090 +
docs/es/figures/tree-4.pdf | Bin 0 -> 28845 bytes
docs/es/figures/tree-4.svg | 504 +
docs/es/figures/trolleys_es.pdf | Bin 0 -> 10341 bytes
docs/es/figures/trolleys_es.svg | 21 +
docs/es/figures/wedding_es.pdf | Bin 0 -> 14428 bytes
docs/es/figures/wedding_es.svg | 29 +
docs/es/flattening.rst | 790 +
docs/es/grammar.mzn | 231 +
docs/es/index.rst | 27 +
docs/es/installation.rst | 150 +
docs/es/intro.rst | 58 +
docs/es/modelling.rst | 672 +
docs/es/modelling2.rst | 1014 +
docs/es/mzn_search.rst | 266 +
docs/es/optiontypes.rst | 112 +
docs/es/output.mzn | 18 +
docs/es/part_1_introduction.rst | 9 +
docs/es/part_2_tutorial.rst | 15 +
docs/es/part_3_reference.rst | 9 +
docs/es/predicates.rst | 707 +
docs/es/sat.rst | 170 +
docs/es/spec.rst | 3008 ++
docs/utils/bugref.py | 39 +
docs/utils/defblock.py | 31 +
docs/utils/inlinesyntaxhighlight.py | 215 +
docs/utils/minizinc_lexer.py | 348 +
docs/utils/mznstyle.sty | 184 +
docs/utils/sphinxtogithub.py | 411 +
include/minizinc/MIPdomains.hh | 58 +
include/minizinc/_thirdparty/b64/cdecode.h | 25 +
include/minizinc/_thirdparty/b64/cencode.h | 28 +
include/minizinc/_thirdparty/b64/decode.h | 57 +
include/minizinc/_thirdparty/b64/encode.h | 63 +
include/minizinc/_thirdparty/miniz.h | 1528 +
include/minizinc/algorithms/min_cut.h | 22 +
include/minizinc/ast.hh | 2029 +
include/minizinc/ast.hpp | 662 +
include/minizinc/astexception.hh | 83 +
include/minizinc/astiterator.hh | 369 +
include/minizinc/astmap.hh | 52 +
include/minizinc/aststring.hh | 267 +
include/minizinc/astvec.hh | 233 +
include/minizinc/builtins.hh | 21 +
include/minizinc/chain_compressor.hh | 100 +
include/minizinc/config.hh.in | 31 +
include/minizinc/copy.hh | 69 +
include/minizinc/eval_par.hh | 304 +
include/minizinc/exception.hh | 66 +
include/minizinc/file_utils.hh | 112 +
include/minizinc/flat_exp.hh | 42 +
include/minizinc/flatten.hh | 132 +
include/minizinc/flatten_internal.hh | 518 +
include/minizinc/flattener.hh | 135 +
include/minizinc/gc.hh | 295 +
include/minizinc/hash.hh | 202 +
include/minizinc/htmlprinter.hh | 49 +
include/minizinc/interrupt.hh | 105 +
include/minizinc/iter.hh | 823 +
include/minizinc/json_parser.hh | 77 +
include/minizinc/model.hh | 471 +
include/minizinc/optimize.hh | 115 +
include/minizinc/optimize_constraints.hh | 34 +
include/minizinc/output.hh | 42 +
include/minizinc/param_config.hh | 58 +
include/minizinc/parser.hh | 172 +
include/minizinc/passes/compile_pass.hh | 50 +
include/minizinc/passes/gecode_pass.hh | 29 +
include/minizinc/pathfileprinter.hh | 39 +
include/minizinc/plugin.hh | 137 +
include/minizinc/prettyprinter.hh | 102 +
include/minizinc/process.hh | 527 +
include/minizinc/solns2out.hh | 194 +
include/minizinc/solver.hh | 207 +
include/minizinc/solver_config.hh | 309 +
include/minizinc/solver_instance.hh | 38 +
include/minizinc/solver_instance_base.hh | 168 +
include/minizinc/solver_instance_defs.hh | 38 +
.../solvers/MIP/MIP_cplex_solverfactory.hh | 19 +
.../minizinc/solvers/MIP/MIP_cplex_wrap.hh | 300 +
.../solvers/MIP/MIP_gurobi_solverfactory.hh | 19 +
.../minizinc/solvers/MIP/MIP_gurobi_wrap.hh | 329 +
.../solvers/MIP/MIP_osicbc_solverfactory.hh | 19 +
.../minizinc/solvers/MIP/MIP_osicbc_wrap.hh | 174 +
.../solvers/MIP/MIP_scip_solverfactory.hh | 19 +
include/minizinc/solvers/MIP/MIP_scip_wrap.hh | 429 +
.../solvers/MIP/MIP_solverinstance.hh | 159 +
.../solvers/MIP/MIP_solverinstance.hpp | 1170 +
include/minizinc/solvers/MIP/MIP_wrap.hh | 360 +
.../solvers/MIP/MIP_xpress_solverfactory.hh | 19 +
.../minizinc/solvers/MIP/MIP_xpress_wrap.hh | 221 +
include/minizinc/solvers/fzn_solverfactory.hh | 19 +
.../minizinc/solvers/fzn_solverinstance.hh | 95 +
.../minizinc/solvers/geas/geas_constraints.hh | 162 +
.../minizinc/solvers/geas_solverfactory.hh | 19 +
.../minizinc/solvers/geas_solverinstance.hh | 138 +
include/minizinc/solvers/gecode/fzn_space.hh | 100 +
.../solvers/gecode/gecode_constraints.hh | 280 +
.../minizinc/solvers/gecode_solverfactory.hh | 19 +
.../minizinc/solvers/gecode_solverinstance.hh | 373 +
include/minizinc/solvers/mzn_solverfactory.hh | 19 +
.../minizinc/solvers/mzn_solverinstance.hh | 68 +
include/minizinc/solvers/nl/nl_components.hh | 504 +
include/minizinc/solvers/nl/nl_file.hh | 628 +
include/minizinc/solvers/nl/nl_solreader.hh | 119 +
.../minizinc/solvers/nl/nl_solverfactory.hh | 14 +
.../minizinc/solvers/nl/nl_solverinstance.hh | 69 +
include/minizinc/statistics.hh | 48 +
include/minizinc/support/regex.hh | 54 +
include/minizinc/timer.hh | 50 +
include/minizinc/type.hh | 271 +
include/minizinc/typecheck.hh | 105 +
include/minizinc/utils.hh | 215 +
include/minizinc/utils_savestream.hh | 49 +
include/minizinc/values.hh | 973 +
lib/MIPdomains.cpp | 2313 +
lib/algorithms/min_cut.cpp | 72 +
lib/ast.cpp | 1912 +
lib/astexception.cpp | 33 +
lib/astmap.cpp | 41 +
lib/aststring.cpp | 82 +
lib/astvec.cpp | 28 +
lib/builtins.cpp | 3787 ++
lib/cached/lexer.yy.cpp | 3566 ++
lib/cached/md5_cached.cmake | 4 +
lib/cached/minizinc/parser.tab.hh | 237 +
.../minizinc/support/regex_parser.tab.hh | 99 +
lib/cached/parser.tab.cpp | 5424 +++
lib/cached/regex_lexer.yy.cpp | 2076 +
lib/cached/regex_parser.tab.cpp | 1467 +
lib/cdecode.c | 83 +
lib/cencode.c | 98 +
lib/chain_compressor.cpp | 568 +
lib/copy.cpp | 538 +
lib/eval_par.cpp | 3224 ++
lib/file_utils.cpp | 763 +
lib/flatten.cpp | 4520 ++
lib/flatten/flat_exp.cpp | 136 +
lib/flatten/flatten_anon.cpp | 31 +
lib/flatten/flatten_arrayaccess.cpp | 294 +
lib/flatten/flatten_arraylit.cpp | 50 +
lib/flatten/flatten_binop.cpp | 1684 +
lib/flatten/flatten_call.cpp | 1307 +
lib/flatten/flatten_comp.cpp | 274 +
lib/flatten/flatten_id.cpp | 245 +
lib/flatten/flatten_ite.cpp | 515 +
lib/flatten/flatten_let.cpp | 146 +
lib/flatten/flatten_par.cpp | 119 +
lib/flatten/flatten_setlit.cpp | 67 +
lib/flatten/flatten_unop.cpp | 69 +
lib/flatten/flatten_vardecl.cpp | 83 +
lib/flattener.cpp | 972 +
lib/gc.cpp | 800 +
lib/htmlprinter.cpp | 1423 +
lib/json_parser.cpp | 715 +
lib/lexer.lxx | 423 +
lib/model.cpp | 688 +
lib/optimize.cpp | 1750 +
lib/optimize_constraints.cpp | 500 +
lib/output.cpp | 1337 +
lib/param_config.cpp | 164 +
lib/parser.cpp | 357 +
lib/parser.yxx | 1833 +
lib/passes/compile_pass.cpp | 216 +
lib/passes/gecode_pass.cpp | 29 +
lib/pathfileprinter.cpp | 193 +
lib/prettyprinter.cpp | 2075 +
lib/solns2out.cpp | 653 +
lib/solver.cpp | 971 +
lib/solver_config.cpp | 875 +
lib/solver_instance_base.cpp | 232 +
lib/statistics.cpp | 44 +
lib/support/regex/lexer.lxx | 49 +
lib/support/regex/parser.yxx | 209 +
lib/thirdparty/miniz.c | 7563 +++
lib/type.cpp | 151 +
lib/typecheck.cpp | 3655 ++
lib/utils_savestream.cpp | 51 +
lib/values.cpp | 34 +
minizinc.cpp | 93 +
mzn2doc.cpp | 338 +
share/minizinc/Preferences.json | 14 +
share/minizinc/g12_fd/all_different_int.mzn | 21 +
share/minizinc/g12_fd/cumulative.mzn | 39 +
.../g12_fd/global_cardinality_low_up.mzn | 23 +
.../minizinc/g12_lazyfd/all_different_int.mzn | 21 +
share/minizinc/g12_lazyfd/redefinitions.mzn | 51 +
share/minizinc/geas/fzn_all_different_int.mzn | 2 +
.../geas/fzn_alldifferent_except_0.mzn | 2 +
share/minizinc/geas/fzn_cumulative.mzn | 23 +
share/minizinc/geas/fzn_disjunctive.mzn | 9 +
.../minizinc/geas/fzn_global_cardinality.mzn | 15 +
share/minizinc/geas/fzn_inverse.mzn | 5 +
share/minizinc/geas/fzn_table_int.mzn | 8 +
share/minizinc/geas/fzn_value_precede_int.mzn | 9 +
share/minizinc/geas/redefinitions-2.0.mzn | 29 +
share/minizinc/geas/redefinitions.mzn | 84 +
.../fzn_all_different_int.mzn | 48 +
.../gecode_presolver/fzn_all_equal_int.mzn | 37 +
share/minizinc/gecode_presolver/fzn_among.mzn | 37 +
.../gecode_presolver/fzn_arg_max_int.mzn | 4 +
.../gecode_presolver/fzn_arg_min_int.mzn | 4 +
.../gecode_presolver/fzn_at_least_int.mzn | 37 +
.../gecode_presolver/fzn_at_least_set.mzn | 38 +
.../gecode_presolver/fzn_at_most_int.mzn | 37 +
.../gecode_presolver/fzn_at_most_set.mzn | 38 +
.../gecode_presolver/fzn_bin_packing.mzn | 46 +
.../gecode_presolver/fzn_bin_packing_capa.mzn | 47 +
.../gecode_presolver/fzn_bin_packing_load.mzn | 45 +
.../minizinc/gecode_presolver/fzn_circuit.mzn | 44 +
.../gecode_presolver/fzn_count_eq.mzn | 40 +
.../gecode_presolver/fzn_count_eq_reif.mzn | 42 +
.../gecode_presolver/fzn_cumulative.mzn | 53 +
.../gecode_presolver/fzn_decreasing_bool.mzn | 37 +
.../gecode_presolver/fzn_decreasing_int.mzn | 37 +
share/minizinc/gecode_presolver/fzn_diffn.mzn | 44 +
.../gecode_presolver/fzn_disjoint.mzn | 37 +
.../gecode_presolver/fzn_distribute.mzn | 46 +
.../gecode_presolver/fzn_exactly_int.mzn | 40 +
.../gecode_presolver/fzn_exactly_set.mzn | 38 +
.../fzn_global_cardinality.mzn | 43 +
.../fzn_global_cardinality_closed.mzn | 39 +
.../fzn_global_cardinality_low_up.mzn | 40 +
.../fzn_global_cardinality_low_up_closed.mzn | 40 +
.../gecode_presolver/fzn_increasing_bool.mzn | 37 +
.../gecode_presolver/fzn_increasing_int.mzn | 37 +
.../gecode_presolver/fzn_int_set_channel.mzn | 49 +
.../minizinc/gecode_presolver/fzn_inverse.mzn | 42 +
.../gecode_presolver/fzn_inverse_set.mzn | 53 +
.../gecode_presolver/fzn_lex_less_bool.mzn | 42 +
.../gecode_presolver/fzn_lex_less_int.mzn | 42 +
.../gecode_presolver/fzn_lex_lesseq_bool.mzn | 42 +
.../gecode_presolver/fzn_lex_lesseq_int.mzn | 42 +
.../fzn_link_set_to_booleans.mzn | 44 +
.../gecode_presolver/fzn_member_bool.mzn | 37 +
.../gecode_presolver/fzn_member_bool_reif.mzn | 40 +
.../gecode_presolver/fzn_member_int.mzn | 37 +
.../gecode_presolver/fzn_member_int_reif.mzn | 40 +
.../minizinc/gecode_presolver/fzn_nvalue.mzn | 37 +
.../gecode_presolver/fzn_partition_set.mzn | 42 +
share/minizinc/gecode_presolver/fzn_range.mzn | 51 +
.../minizinc/gecode_presolver/fzn_regular.mzn | 38 +
share/minizinc/gecode_presolver/fzn_roots.mzn | 63 +
share/minizinc/gecode_presolver/fzn_sort.mzn | 37 +
.../gecode_presolver/fzn_sum_pred.mzn | 42 +
.../gecode_presolver/fzn_table_bool.mzn | 37 +
.../gecode_presolver/fzn_table_int.mzn | 39 +
.../fzn_value_precede_int.mzn | 40 +
.../fzn_value_precede_set.mzn | 40 +
share/minizinc/gecode_presolver/gecode.mzn | 170 +
.../minizinc/gecode_presolver/precedence.mzn | 41 +
.../gecode_presolver/redefinitions-2.0.mzn | 33 +
.../gecode_presolver/redefinitions.mzn | 75 +
share/minizinc/linear/CHANGELOG.txt | 6 +
share/minizinc/linear/domain_encodings.mzn | 111 +
.../minizinc/linear/fzn_all_different_int.mzn | 23 +
.../linear/fzn_alldifferent_except_0.mzn | 17 +
share/minizinc/linear/fzn_circuit.mzn | 43 +
share/minizinc/linear/fzn_cumulative.mzn | 102 +
.../linear/fzn_if_then_else_float.mzn | 7 +
.../minizinc/linear/fzn_if_then_else_int.mzn | 7 +
share/minizinc/linear/fzn_inverse.mzn | 14 +
.../minizinc/linear/fzn_inverse_in_range.mzn | 5 +
.../linear/fzn_inverse_in_range_reif.mzn | 6 +
share/minizinc/linear/fzn_inverse_reif.mzn | 8 +
.../linear/fzn_lex_chain_lesseq_bool.mzn | 4 +
.../linear/fzn_lex_chain_lesseq_int.mzn | 23 +
.../linear/fzn_lex_chain_lesseq_orbitope.mzn | 40 +
share/minizinc/linear/fzn_lex_less_bool.mzn | 12 +
share/minizinc/linear/fzn_lex_less_float.mzn | 38 +
share/minizinc/linear/fzn_lex_less_int.mzn | 39 +
share/minizinc/linear/fzn_lex_lesseq_bool.mzn | 12 +
.../minizinc/linear/fzn_lex_lesseq_float.mzn | 38 +
share/minizinc/linear/fzn_lex_lesseq_int.mzn | 77 +
share/minizinc/linear/fzn_regular.mzn | 99 +
share/minizinc/linear/fzn_sliding_sum.mzn | 14 +
share/minizinc/linear/fzn_subcircuit.mzn | 68 +
share/minizinc/linear/fzn_table_int.mzn | 18 +
share/minizinc/linear/options.mzn | 194 +
share/minizinc/linear/redefinitions-2.0.2.mzn | 29 +
share/minizinc/linear/redefinitions-2.0.mzn | 27 +
share/minizinc/linear/redefinitions-2.2.1.mzn | 7 +
share/minizinc/linear/redefinitions.mzn | 712 +
share/minizinc/linear/redefs_bool_imp.mzn | 76 +
share/minizinc/linear/redefs_bool_reifs.mzn | 190 +
.../minizinc/linear/redefs_lin_halfreifs.mzn | 227 +
share/minizinc/linear/redefs_lin_imp.mzn | 194 +
share/minizinc/linear/redefs_lin_reifs.mzn | 504 +
share/minizinc/linear/subcircuit_wDummy.mzn | 86 +
.../minizinc/linear_old/all_different_int.mzn | 19 +
.../minizinc/linear_old/domain_encodings.mzn | 57 +
share/minizinc/linear_old/inverse.mzn | 16 +
.../linear_old/linear/all_different_int.mzn | 19 +
.../linear_old/linear/domain_encodings.mzn | 57 +
share/minizinc/linear_old/linear/inverse.mzn | 16 +
.../linear_old/linear/redefinitions-2.0.2.mzn | 21 +
.../linear_old/linear/redefinitions-2.0.mzn | 6 +
.../linear_old/linear/redefinitions.mzn | 615 +
.../minizinc/linear_old/linear/table_int.mzn | 21 +
.../linear_old/redefinitions-2.0.2.mzn | 21 +
.../minizinc/linear_old/redefinitions-2.0.mzn | 6 +
share/minizinc/linear_old/redefinitions.mzn | 615 +
share/minizinc/linear_old/table_int.mzn | 21 +
share/minizinc/std/all_different.mzn | 33 +
share/minizinc/std/all_different_int.mzn | 12 +
share/minizinc/std/all_different_set.mzn | 12 +
share/minizinc/std/all_disjoint.mzn | 11 +
share/minizinc/std/all_equal.mzn | 22 +
share/minizinc/std/all_equal_int.mzn | 12 +
share/minizinc/std/all_equal_set.mzn | 12 +
share/minizinc/std/alldifferent.mzn | 5 +
share/minizinc/std/alldifferent_except.mzn | 13 +
share/minizinc/std/alldifferent_except_0.mzn | 12 +
share/minizinc/std/alternative.mzn | 23 +
share/minizinc/std/among.mzn | 13 +
share/minizinc/std/among_fn.mzn | 9 +
share/minizinc/std/analyse_all_different.mzn | 1 +
share/minizinc/std/arg_max.mzn | 67 +
share/minizinc/std/arg_max_bool.mzn | 7 +
share/minizinc/std/arg_max_float.mzn | 7 +
share/minizinc/std/arg_max_int.mzn | 7 +
share/minizinc/std/arg_min.mzn | 69 +
share/minizinc/std/arg_min_bool.mzn | 7 +
share/minizinc/std/arg_min_float.mzn | 7 +
share/minizinc/std/arg_min_int.mzn | 7 +
share/minizinc/std/arg_sort.mzn | 56 +
share/minizinc/std/arg_sort_float.mzn | 17 +
share/minizinc/std/arg_sort_int.mzn | 17 +
share/minizinc/std/at_least.mzn | 33 +
.../minizinc/std/at_least.mzn.deprecated.mzn | 1 +
share/minizinc/std/at_least_int.mzn | 12 +
share/minizinc/std/at_least_set.mzn | 12 +
share/minizinc/std/at_most.mzn | 31 +
share/minizinc/std/at_most.mzn.deprecated.mzn | 1 +
share/minizinc/std/at_most1.mzn | 14 +
share/minizinc/std/at_most_int.mzn | 12 +
share/minizinc/std/at_most_set.mzn | 13 +
share/minizinc/std/atleast.mzn | 5 +
share/minizinc/std/atmost.mzn | 5 +
share/minizinc/std/atmost1.mzn | 5 +
share/minizinc/std/bin_packing.mzn | 38 +
share/minizinc/std/bin_packing_capa.mzn | 39 +
share/minizinc/std/bin_packing_load.mzn | 35 +
share/minizinc/std/bin_packing_load_fn.mzn | 19 +
share/minizinc/std/bounded_path.mzn | 101 +
share/minizinc/std/circuit.mzn | 14 +
share/minizinc/std/comparison_rel_array.mzn | 23 +
share/minizinc/std/connected.mzn | 39 +
share/minizinc/std/cost_mdd.mzn | 83 +
share/minizinc/std/cost_regular.mzn | 40 +
share/minizinc/std/count.mzn | 7 +
share/minizinc/std/count_eq.mzn | 36 +
share/minizinc/std/count_fn.mzn | 9 +
share/minizinc/std/count_geq.mzn | 25 +
share/minizinc/std/count_gt.mzn | 25 +
share/minizinc/std/count_leq.mzn | 25 +
share/minizinc/std/count_lt.mzn | 25 +
share/minizinc/std/count_neq.mzn | 25 +
share/minizinc/std/cumulative.mzn | 40 +
share/minizinc/std/cumulative_opt.mzn | 25 +
share/minizinc/std/dag.mzn | 18 +
share/minizinc/std/decreasing.mzn | 20 +
share/minizinc/std/decreasing_bool.mzn | 9 +
share/minizinc/std/decreasing_float.mzn | 8 +
share/minizinc/std/decreasing_int.mzn | 9 +
share/minizinc/std/decreasing_set.mzn | 9 +
share/minizinc/std/diffn.mzn | 21 +
share/minizinc/std/diffn_k.mzn | 17 +
share/minizinc/std/diffn_nonstrict.mzn | 19 +
share/minizinc/std/diffn_nonstrict_k.mzn | 17 +
share/minizinc/std/disjoint.mzn | 6 +
share/minizinc/std/disjunctive.mzn | 23 +
share/minizinc/std/disjunctive_opt.mzn | 25 +
share/minizinc/std/disjunctive_strict.mzn | 19 +
share/minizinc/std/disjunctive_strict_opt.mzn | 19 +
share/minizinc/std/distribute.mzn | 14 +
share/minizinc/std/distribute_fn.mzn | 12 +
share/minizinc/std/element.mzn | 21 +
share/minizinc/std/element_bool.mzn | 6 +
share/minizinc/std/element_float.mzn | 6 +
share/minizinc/std/element_int.mzn | 6 +
share/minizinc/std/element_set.mzn | 7 +
share/minizinc/std/exactly.mzn | 17 +
share/minizinc/std/exactly.mzn.deprecated.mzn | 1 +
share/minizinc/std/exactly_int.mzn | 9 +
share/minizinc/std/exactly_set.mzn | 9 +
share/minizinc/std/experimental.mzn | 39 +
share/minizinc/std/flatzinc_builtins.mzn | 438 +
share/minizinc/std/fzn_all_different_int.mzn | 6 +
.../std/fzn_all_different_int_reif.mzn | 6 +
share/minizinc/std/fzn_all_different_set.mzn | 6 +
.../std/fzn_all_different_set_reif.mzn | 6 +
share/minizinc/std/fzn_all_disjoint.mzn | 4 +
share/minizinc/std/fzn_all_disjoint_reif.mzn | 4 +
share/minizinc/std/fzn_all_equal_int.mzn | 6 +
share/minizinc/std/fzn_all_equal_int_reif.mzn | 6 +
share/minizinc/std/fzn_all_equal_set.mzn | 6 +
share/minizinc/std/fzn_all_equal_set_reif.mzn | 6 +
.../minizinc/std/fzn_alldifferent_except.mzn | 11 +
.../std/fzn_alldifferent_except_0.mzn | 5 +
.../std/fzn_alldifferent_except_0_reif.mzn | 4 +
.../std/fzn_alldifferent_except_reif.mzn | 4 +
share/minizinc/std/fzn_alternative.mzn | 7 +
share/minizinc/std/fzn_alternative_reif.mzn | 7 +
share/minizinc/std/fzn_among.mzn | 3 +
share/minizinc/std/fzn_among_reif.mzn | 2 +
share/minizinc/std/fzn_arg_max_bool.mzn | 13 +
share/minizinc/std/fzn_arg_max_float.mzn | 21 +
share/minizinc/std/fzn_arg_max_int.mzn | 12 +
share/minizinc/std/fzn_arg_min_bool.mzn | 11 +
share/minizinc/std/fzn_arg_min_float.mzn | 21 +
share/minizinc/std/fzn_arg_min_int.mzn | 11 +
share/minizinc/std/fzn_arg_sort_float.mzn | 7 +
.../minizinc/std/fzn_arg_sort_float_reif.mzn | 9 +
share/minizinc/std/fzn_arg_sort_int.mzn | 7 +
share/minizinc/std/fzn_arg_sort_int_reif.mzn | 9 +
share/minizinc/std/fzn_at_least_int.mzn | 9 +
share/minizinc/std/fzn_at_least_int_reif.mzn | 8 +
share/minizinc/std/fzn_at_least_set.mzn | 7 +
share/minizinc/std/fzn_at_least_set_reif.mzn | 7 +
share/minizinc/std/fzn_at_most1.mzn | 4 +
share/minizinc/std/fzn_at_most1_reif.mzn | 4 +
share/minizinc/std/fzn_at_most_int.mzn | 9 +
share/minizinc/std/fzn_at_most_int_reif.mzn | 9 +
share/minizinc/std/fzn_at_most_set.mzn | 7 +
share/minizinc/std/fzn_at_most_set_reif.mzn | 7 +
share/minizinc/std/fzn_bin_packing.mzn | 12 +
share/minizinc/std/fzn_bin_packing_capa.mzn | 14 +
.../std/fzn_bin_packing_capa_reif.mzn | 16 +
share/minizinc/std/fzn_bin_packing_load.mzn | 14 +
.../std/fzn_bin_packing_load_reif.mzn | 16 +
share/minizinc/std/fzn_bin_packing_reif.mzn | 11 +
share/minizinc/std/fzn_bounded_dpath_enum.mzn | 6 +
.../std/fzn_bounded_dpath_enum_reif.mzn | 6 +
share/minizinc/std/fzn_bounded_dpath_int.mzn | 6 +
.../std/fzn_bounded_dpath_int_reif.mzn | 6 +
share/minizinc/std/fzn_bounded_path_enum.mzn | 6 +
.../std/fzn_bounded_path_enum_reif.mzn | 6 +
share/minizinc/std/fzn_bounded_path_int.mzn | 6 +
.../std/fzn_bounded_path_int_reif.mzn | 6 +
share/minizinc/std/fzn_circuit.mzn | 17 +
share/minizinc/std/fzn_circuit_reif.mzn | 4 +
share/minizinc/std/fzn_connected.mzn | 9 +
share/minizinc/std/fzn_connected_reif.mzn | 5 +
share/minizinc/std/fzn_cost_mdd.mzn | 50 +
share/minizinc/std/fzn_cost_mdd_reif.mzn | 12 +
share/minizinc/std/fzn_cost_regular.mzn | 23 +
share/minizinc/std/fzn_cost_regular_reif.mzn | 4 +
share/minizinc/std/fzn_count_eq.mzn | 4 +
share/minizinc/std/fzn_count_eq_par.mzn | 6 +
share/minizinc/std/fzn_count_eq_par_reif.mzn | 6 +
share/minizinc/std/fzn_count_eq_reif.mzn | 4 +
share/minizinc/std/fzn_count_geq.mzn | 15 +
share/minizinc/std/fzn_count_geq_par.mzn | 6 +
share/minizinc/std/fzn_count_geq_par_reif.mzn | 6 +
share/minizinc/std/fzn_count_geq_reif.mzn | 8 +
share/minizinc/std/fzn_count_gt.mzn | 15 +
share/minizinc/std/fzn_count_gt_par.mzn | 6 +
share/minizinc/std/fzn_count_gt_par_reif.mzn | 6 +
share/minizinc/std/fzn_count_gt_reif.mzn | 8 +
share/minizinc/std/fzn_count_leq.mzn | 8 +
share/minizinc/std/fzn_count_leq_par.mzn | 6 +
share/minizinc/std/fzn_count_leq_par_reif.mzn | 6 +
share/minizinc/std/fzn_count_leq_reif.mzn | 8 +
share/minizinc/std/fzn_count_lt.mzn | 8 +
share/minizinc/std/fzn_count_lt_par.mzn | 6 +
share/minizinc/std/fzn_count_lt_par_reif.mzn | 6 +
share/minizinc/std/fzn_count_lt_reif.mzn | 8 +
share/minizinc/std/fzn_count_neq.mzn | 8 +
share/minizinc/std/fzn_count_neq_par.mzn | 6 +
share/minizinc/std/fzn_count_neq_par_reif.mzn | 6 +
share/minizinc/std/fzn_count_neq_reif.mzn | 8 +
share/minizinc/std/fzn_cumulative.mzn | 53 +
share/minizinc/std/fzn_cumulative_opt.mzn | 52 +
.../minizinc/std/fzn_cumulative_opt_reif.mzn | 52 +
share/minizinc/std/fzn_cumulative_reif.mzn | 53 +
share/minizinc/std/fzn_dag.mzn | 15 +
share/minizinc/std/fzn_dag_reif.mzn | 3 +
share/minizinc/std/fzn_dconnected.mzn | 8 +
share/minizinc/std/fzn_dconnected_reif.mzn | 6 +
share/minizinc/std/fzn_decreasing_bool.mzn | 6 +
.../minizinc/std/fzn_decreasing_bool_reif.mzn | 6 +
share/minizinc/std/fzn_decreasing_float.mzn | 6 +
.../std/fzn_decreasing_float_reif.mzn | 6 +
share/minizinc/std/fzn_decreasing_int.mzn | 7 +
.../minizinc/std/fzn_decreasing_int_reif.mzn | 7 +
share/minizinc/std/fzn_decreasing_set.mzn | 7 +
.../minizinc/std/fzn_decreasing_set_reif.mzn | 7 +
share/minizinc/std/fzn_diffn.mzn | 10 +
share/minizinc/std/fzn_diffn_k.mzn | 16 +
share/minizinc/std/fzn_diffn_k_reif.mzn | 16 +
share/minizinc/std/fzn_diffn_nonstrict.mzn | 9 +
share/minizinc/std/fzn_diffn_nonstrict_k.mzn | 17 +
.../std/fzn_diffn_nonstrict_k_reif.mzn | 17 +
.../minizinc/std/fzn_diffn_nonstrict_reif.mzn | 10 +
share/minizinc/std/fzn_diffn_reif.mzn | 11 +
share/minizinc/std/fzn_disjoint.mzn | 2 +
share/minizinc/std/fzn_disjoint_reif.mzn | 2 +
share/minizinc/std/fzn_disjunctive.mzn | 6 +
share/minizinc/std/fzn_disjunctive_opt.mzn | 8 +
.../minizinc/std/fzn_disjunctive_opt_reif.mzn | 9 +
share/minizinc/std/fzn_disjunctive_reif.mzn | 8 +
share/minizinc/std/fzn_disjunctive_strict.mzn | 6 +
.../std/fzn_disjunctive_strict_opt.mzn | 8 +
.../std/fzn_disjunctive_strict_opt_reif.mzn | 10 +
.../std/fzn_disjunctive_strict_reif.mzn | 8 +
share/minizinc/std/fzn_distribute.mzn | 8 +
share/minizinc/std/fzn_distribute_reif.mzn | 9 +
share/minizinc/std/fzn_dpath_enum.mzn | 32 +
share/minizinc/std/fzn_dpath_enum_reif.mzn | 5 +
share/minizinc/std/fzn_dpath_int.mzn | 9 +
share/minizinc/std/fzn_dpath_int_reif.mzn | 10 +
share/minizinc/std/fzn_dreachable_enum.mzn | 26 +
.../minizinc/std/fzn_dreachable_enum_reif.mzn | 6 +
share/minizinc/std/fzn_dreachable_int.mzn | 26 +
.../minizinc/std/fzn_dreachable_int_reif.mzn | 6 +
share/minizinc/std/fzn_dsteiner.mzn | 8 +
share/minizinc/std/fzn_dsteiner_reif.mzn | 5 +
share/minizinc/std/fzn_dtree_enum.mzn | 30 +
share/minizinc/std/fzn_dtree_enum_reif.mzn | 6 +
share/minizinc/std/fzn_dtree_int.mzn | 30 +
share/minizinc/std/fzn_dtree_int_reif.mzn | 5 +
share/minizinc/std/fzn_dwst.mzn | 9 +
share/minizinc/std/fzn_dwst_reif.mzn | 5 +
share/minizinc/std/fzn_exactly_int.mzn | 8 +
share/minizinc/std/fzn_exactly_int_reif.mzn | 8 +
share/minizinc/std/fzn_exactly_set.mzn | 6 +
share/minizinc/std/fzn_exactly_set_reif.mzn | 6 +
share/minizinc/std/fzn_geost.mzn | 31 +
share/minizinc/std/fzn_geost_bb.mzn | 28 +
share/minizinc/std/fzn_geost_bb_reif.mzn | 33 +
share/minizinc/std/fzn_geost_nonoverlap_k.mzn | 10 +
.../std/fzn_geost_nonoverlap_k_reif.mzn | 11 +
share/minizinc/std/fzn_geost_reif.mzn | 33 +
share/minizinc/std/fzn_geost_smallest_bb.mzn | 35 +
.../std/fzn_geost_smallest_bb_reif.mzn | 39 +
share/minizinc/std/fzn_global_cardinality.mzn | 9 +
.../std/fzn_global_cardinality_closed.mzn | 8 +
.../fzn_global_cardinality_closed_reif.mzn | 11 +
.../std/fzn_global_cardinality_low_up.mzn | 15 +
.../fzn_global_cardinality_low_up_closed.mzn | 13 +
..._global_cardinality_low_up_closed_reif.mzn | 14 +
.../fzn_global_cardinality_low_up_reif.mzn | 10 +
.../std/fzn_global_cardinality_reif.mzn | 12 +
share/minizinc/std/fzn_if_then_else_bool.mzn | 9 +
share/minizinc/std/fzn_if_then_else_float.mzn | 9 +
share/minizinc/std/fzn_if_then_else_int.mzn | 9 +
.../std/fzn_if_then_else_opt_bool.mzn | 9 +
.../std/fzn_if_then_else_opt_float.mzn | 9 +
.../minizinc/std/fzn_if_then_else_opt_int.mzn | 9 +
.../std/fzn_if_then_else_partiality.mzn | 11 +
share/minizinc/std/fzn_if_then_else_set.mzn | 9 +
.../std/fzn_if_then_else_var_bool.mzn | 9 +
.../std/fzn_if_then_else_var_float.mzn | 9 +
.../minizinc/std/fzn_if_then_else_var_int.mzn | 9 +
.../std/fzn_if_then_else_var_opt_bool.mzn | 9 +
.../std/fzn_if_then_else_var_opt_float.mzn | 9 +
.../std/fzn_if_then_else_var_opt_int.mzn | 9 +
.../minizinc/std/fzn_if_then_else_var_set.mzn | 9 +
share/minizinc/std/fzn_increasing_bool.mzn | 6 +
.../minizinc/std/fzn_increasing_bool_reif.mzn | 6 +
share/minizinc/std/fzn_increasing_float.mzn | 6 +
.../std/fzn_increasing_float_reif.mzn | 6 +
share/minizinc/std/fzn_increasing_int.mzn | 6 +
.../minizinc/std/fzn_increasing_int_reif.mzn | 6 +
share/minizinc/std/fzn_increasing_set.mzn | 6 +
.../minizinc/std/fzn_increasing_set_reif.mzn | 6 +
share/minizinc/std/fzn_int_set_channel.mzn | 7 +
.../minizinc/std/fzn_int_set_channel_reif.mzn | 10 +
share/minizinc/std/fzn_inverse.mzn | 10 +
share/minizinc/std/fzn_inverse_in_range.mzn | 26 +
.../std/fzn_inverse_in_range_reif.mzn | 14 +
share/minizinc/std/fzn_inverse_reif.mzn | 14 +
share/minizinc/std/fzn_inverse_set.mzn | 11 +
share/minizinc/std/fzn_inverse_set_reif.mzn | 14 +
share/minizinc/std/fzn_knapsack.mzn | 6 +
share/minizinc/std/fzn_knapsack_reif.mzn | 8 +
share/minizinc/std/fzn_lex2.mzn | 10 +
share/minizinc/std/fzn_lex2_reif.mzn | 12 +
.../minizinc/std/fzn_lex_chain_less_bool.mzn | 11 +
.../std/fzn_lex_chain_less_bool_reif.mzn | 12 +
share/minizinc/std/fzn_lex_chain_less_int.mzn | 11 +
.../std/fzn_lex_chain_less_int_reif.mzn | 12 +
.../std/fzn_lex_chain_lesseq_bool.mzn | 11 +
.../std/fzn_lex_chain_lesseq_bool_reif.mzn | 12 +
.../minizinc/std/fzn_lex_chain_lesseq_int.mzn | 11 +
.../std/fzn_lex_chain_lesseq_int_reif.mzn | 12 +
.../std/fzn_lex_chain_lesseq_orbitope.mzn | 23 +
.../fzn_lex_chain_lesseq_orbitope_reif.mzn | 23 +
share/minizinc/std/fzn_lex_less_bool.mzn | 25 +
share/minizinc/std/fzn_lex_less_bool_reif.mzn | 26 +
share/minizinc/std/fzn_lex_less_float.mzn | 25 +
.../minizinc/std/fzn_lex_less_float_reif.mzn | 26 +
share/minizinc/std/fzn_lex_less_int.mzn | 25 +
share/minizinc/std/fzn_lex_less_int_reif.mzn | 26 +
share/minizinc/std/fzn_lex_less_set.mzn | 25 +
share/minizinc/std/fzn_lex_less_set_reif.mzn | 26 +
share/minizinc/std/fzn_lex_lesseq_bool.mzn | 25 +
.../minizinc/std/fzn_lex_lesseq_bool_reif.mzn | 26 +
share/minizinc/std/fzn_lex_lesseq_float.mzn | 28 +
.../std/fzn_lex_lesseq_float_reif.mzn | 29 +
share/minizinc/std/fzn_lex_lesseq_int.mzn | 26 +
.../minizinc/std/fzn_lex_lesseq_int_reif.mzn | 30 +
share/minizinc/std/fzn_lex_lesseq_set.mzn | 28 +
.../minizinc/std/fzn_lex_lesseq_set_reif.mzn | 29 +
.../minizinc/std/fzn_link_set_to_booleans.mzn | 2 +
.../std/fzn_link_set_to_booleans_reif.mzn | 2 +
share/minizinc/std/fzn_mdd.mzn | 33 +
share/minizinc/std/fzn_mdd_nondet.mzn | 28 +
share/minizinc/std/fzn_mdd_nondet_reif.mzn | 29 +
share/minizinc/std/fzn_mdd_reif.mzn | 40 +
share/minizinc/std/fzn_member_bool.mzn | 6 +
share/minizinc/std/fzn_member_bool_reif.mzn | 6 +
share/minizinc/std/fzn_member_float.mzn | 6 +
share/minizinc/std/fzn_member_float_reif.mzn | 6 +
share/minizinc/std/fzn_member_int.mzn | 6 +
share/minizinc/std/fzn_member_int_reif.mzn | 6 +
share/minizinc/std/fzn_member_set.mzn | 6 +
share/minizinc/std/fzn_member_set_reif.mzn | 6 +
share/minizinc/std/fzn_network_flow.mzn | 14 +
share/minizinc/std/fzn_network_flow_cost.mzn | 17 +
.../std/fzn_network_flow_cost_reif.mzn | 19 +
share/minizinc/std/fzn_network_flow_reif.mzn | 15 +
share/minizinc/std/fzn_neural_net.mzn | 50 +
share/minizinc/std/fzn_neural_net_reif.mzn | 11 +
share/minizinc/std/fzn_nvalue.mzn | 7 +
share/minizinc/std/fzn_nvalue_reif.mzn | 7 +
share/minizinc/std/fzn_partition_set.mzn | 6 +
share/minizinc/std/fzn_partition_set_reif.mzn | 6 +
share/minizinc/std/fzn_path_enum.mzn | 16 +
share/minizinc/std/fzn_path_enum_reif.mzn | 9 +
share/minizinc/std/fzn_path_int.mzn | 15 +
share/minizinc/std/fzn_path_int_reif.mzn | 9 +
share/minizinc/std/fzn_piecewise_linear.mzn | 32 +
.../fzn_piecewise_linear_non_continuous.mzn | 37 +
...n_piecewise_linear_non_continuous_reif.mzn | 7 +
.../std/fzn_piecewise_linear_reif.mzn | 6 +
share/minizinc/std/fzn_range.mzn | 10 +
share/minizinc/std/fzn_range_reif.mzn | 13 +
share/minizinc/std/fzn_reachable_enum.mzn | 17 +
.../minizinc/std/fzn_reachable_enum_reif.mzn | 16 +
share/minizinc/std/fzn_reachable_int.mzn | 13 +
share/minizinc/std/fzn_reachable_int_reif.mzn | 12 +
share/minizinc/std/fzn_regular.mzn | 16 +
share/minizinc/std/fzn_regular_nfa.mzn | 16 +
share/minizinc/std/fzn_regular_nfa_reif.mzn | 4 +
share/minizinc/std/fzn_regular_nfa_set.mzn | 16 +
.../minizinc/std/fzn_regular_nfa_set_reif.mzn | 4 +
share/minizinc/std/fzn_regular_regexp.mzn | 1 +
share/minizinc/std/fzn_regular_reif.mzn | 4 +
share/minizinc/std/fzn_regular_set.mzn | 16 +
share/minizinc/std/fzn_regular_set_reif.mzn | 4 +
share/minizinc/std/fzn_roots.mzn | 9 +
share/minizinc/std/fzn_roots_reif.mzn | 11 +
.../std/fzn_seq_precede_chain_int.mzn | 11 +
.../std/fzn_seq_precede_chain_int_reif.mzn | 2 +
.../std/fzn_seq_precede_chain_set.mzn | 2 +
.../std/fzn_seq_precede_chain_set_reif.mzn | 2 +
share/minizinc/std/fzn_set_member.mzn | 6 +
share/minizinc/std/fzn_set_member_reif.mzn | 6 +
share/minizinc/std/fzn_sliding_sum.mzn | 15 +
share/minizinc/std/fzn_sliding_sum_reif.mzn | 17 +
share/minizinc/std/fzn_sort.mzn | 14 +
share/minizinc/std/fzn_sort_reif.mzn | 4 +
share/minizinc/std/fzn_span.mzn | 7 +
share/minizinc/std/fzn_span_reif.mzn | 10 +
share/minizinc/std/fzn_steiner.mzn | 9 +
share/minizinc/std/fzn_steiner_reif.mzn | 6 +
share/minizinc/std/fzn_strict_lex2.mzn | 10 +
share/minizinc/std/fzn_strict_lex2_reif.mzn | 12 +
.../std/fzn_strictly_decreasing_bool.mzn | 6 +
.../std/fzn_strictly_decreasing_bool_reif.mzn | 6 +
.../std/fzn_strictly_decreasing_int.mzn | 6 +
.../std/fzn_strictly_decreasing_int_opt.mzn | 8 +
.../std/fzn_strictly_decreasing_int_reif.mzn | 6 +
.../std/fzn_strictly_increasing_bool.mzn | 6 +
.../std/fzn_strictly_increasing_bool_reif.mzn | 6 +
.../std/fzn_strictly_increasing_int.mzn | 6 +
.../std/fzn_strictly_increasing_int_opt.mzn | 20 +
.../std/fzn_strictly_increasing_int_reif.mzn | 6 +
share/minizinc/std/fzn_subcircuit.mzn | 50 +
share/minizinc/std/fzn_subcircuit_reif.mzn | 6 +
share/minizinc/std/fzn_subgraph_enum.mzn | 7 +
share/minizinc/std/fzn_subgraph_enum_reif.mzn | 8 +
share/minizinc/std/fzn_subgraph_int.mzn | 7 +
share/minizinc/std/fzn_subgraph_int_reif.mzn | 8 +
share/minizinc/std/fzn_sum_pred.mzn | 6 +
share/minizinc/std/fzn_sum_pred_reif.mzn | 6 +
share/minizinc/std/fzn_sum_set.mzn | 3 +
share/minizinc/std/fzn_sum_set_reif.mzn | 3 +
.../std/fzn_symmetric_all_different.mzn | 5 +
.../std/fzn_symmetric_all_different_reif.mzn | 5 +
share/minizinc/std/fzn_table_bool.mzn | 24 +
share/minizinc/std/fzn_table_bool_reif.mzn | 8 +
share/minizinc/std/fzn_table_int.mzn | 26 +
share/minizinc/std/fzn_table_int_opt.mzn | 16 +
share/minizinc/std/fzn_table_int_reif.mzn | 109 +
share/minizinc/std/fzn_transitive_closure.mzn | 25 +
share/minizinc/std/fzn_tree_enum.mzn | 14 +
share/minizinc/std/fzn_tree_enum_reif.mzn | 6 +
share/minizinc/std/fzn_tree_int.mzn | 15 +
share/minizinc/std/fzn_tree_int_reif.mzn | 5 +
.../std/fzn_value_precede_chain_int.mzn | 17 +
.../std/fzn_value_precede_chain_int_reif.mzn | 2 +
.../std/fzn_value_precede_chain_set.mzn | 6 +
.../std/fzn_value_precede_chain_set_reif.mzn | 2 +
share/minizinc/std/fzn_value_precede_int.mzn | 16 +
.../std/fzn_value_precede_int_opt.mzn | 2 +
.../std/fzn_value_precede_int_reif.mzn | 3 +
share/minizinc/std/fzn_value_precede_set.mzn | 16 +
.../std/fzn_value_precede_set_reif.mzn | 3 +
share/minizinc/std/fzn_write.mzn | 6 +
share/minizinc/std/fzn_write_reif.mzn | 6 +
share/minizinc/std/fzn_writes.mzn | 9 +
share/minizinc/std/fzn_writes_reif.mzn | 12 +
share/minizinc/std/fzn_writes_seq.mzn | 12 +
share/minizinc/std/fzn_writes_seq_reif.mzn | 13 +
share/minizinc/std/fzn_wst.mzn | 10 +
share/minizinc/std/fzn_wst_reif.mzn | 5 +
share/minizinc/std/geost.mzn | 212 +
share/minizinc/std/global_cardinality.mzn | 17 +
.../std/global_cardinality_closed.mzn | 20 +
.../std/global_cardinality_closed_fn.mzn | 13 +
share/minizinc/std/global_cardinality_fn.mzn | 11 +
.../std/global_cardinality_low_up.mzn | 25 +
.../std/global_cardinality_low_up_closed.mzn | 31 +
share/minizinc/std/globals.mzn | 147 +
share/minizinc/std/increasing.mzn | 21 +
share/minizinc/std/increasing_bool.mzn | 9 +
share/minizinc/std/increasing_float.mzn | 9 +
share/minizinc/std/increasing_int.mzn | 9 +
share/minizinc/std/increasing_set.mzn | 9 +
share/minizinc/std/int_set_channel.mzn | 12 +
share/minizinc/std/inverse.mzn | 19 +
share/minizinc/std/inverse_fn.mzn | 15 +
share/minizinc/std/inverse_in_range.mzn | 16 +
share/minizinc/std/inverse_set.mzn | 11 +
share/minizinc/std/knapsack.mzn | 27 +
share/minizinc/std/lex2.mzn | 9 +
share/minizinc/std/lex2_strict.mzn | 8 +
share/minizinc/std/lex_chain_greater.mzn | 28 +
share/minizinc/std/lex_chain_greatereq.mzn | 28 +
.../std/lex_chain_greatereq_orbitope.mzn | 19 +
share/minizinc/std/lex_chain_less.mzn | 19 +
share/minizinc/std/lex_chain_less_bool.mzn | 12 +
share/minizinc/std/lex_chain_less_int.mzn | 12 +
share/minizinc/std/lex_chain_lesseq.mzn | 33 +
share/minizinc/std/lex_chain_lesseq_bool.mzn | 12 +
share/minizinc/std/lex_chain_lesseq_int.mzn | 12 +
.../std/lex_chain_lesseq_orbitope.mzn | 18 +
share/minizinc/std/lex_greater.mzn | 33 +
share/minizinc/std/lex_greatereq.mzn | 33 +
share/minizinc/std/lex_less.mzn | 67 +
share/minizinc/std/lex_less_bool.mzn | 18 +
share/minizinc/std/lex_less_float.mzn | 18 +
share/minizinc/std/lex_less_int.mzn | 18 +
share/minizinc/std/lex_less_set.mzn | 18 +
share/minizinc/std/lex_lesseq.mzn | 64 +
share/minizinc/std/lex_lesseq_bool.mzn | 17 +
share/minizinc/std/lex_lesseq_float.mzn | 17 +
share/minizinc/std/lex_lesseq_int.mzn | 17 +
share/minizinc/std/lex_lesseq_set.mzn | 17 +
share/minizinc/std/link_set_to_booleans.mzn | 14 +
share/minizinc/std/maximum.mzn | 13 +
share/minizinc/std/mdd.mzn | 60 +
share/minizinc/std/mdd_nondet.mzn | 57 +
share/minizinc/std/member.mzn | 35 +
share/minizinc/std/member_bool.mzn | 9 +
share/minizinc/std/member_float.mzn | 9 +
share/minizinc/std/member_int.mzn | 9 +
share/minizinc/std/member_set.mzn | 9 +
share/minizinc/std/minimum.mzn | 13 +
share/minizinc/std/network_flow.mzn | 55 +
share/minizinc/std/neural_net.mzn | 76 +
share/minizinc/std/nosets.mzn | 417 +
share/minizinc/std/nvalue.mzn | 8 +
share/minizinc/std/nvalue_fn.mzn | 7 +
share/minizinc/std/partition_set.mzn | 9 +
share/minizinc/std/path.mzn | 86 +
share/minizinc/std/piecewise_linear.mzn | 23 +
.../std/piecewise_linear_non_continuous.mzn | 29 +
share/minizinc/std/range.mzn | 14 +
share/minizinc/std/range_fn.mzn | 13 +
share/minizinc/std/reachable.mzn | 82 +
share/minizinc/std/redefinitions-2.0.2.mzn | 18 +
share/minizinc/std/redefinitions-2.0.mzn | 54 +
share/minizinc/std/redefinitions-2.1.1.mzn | 58 +
share/minizinc/std/redefinitions-2.1.mzn | 10 +
share/minizinc/std/redefinitions-2.2.1.mzn | 6 +
share/minizinc/std/redefinitions-2.3.3.mzn | 10 +
share/minizinc/std/redefinitions-2.5.2.mzn | 27 +
share/minizinc/std/redefinitions.mzn | 2 +
share/minizinc/std/regular.mzn | 35 +
share/minizinc/std/regular_nfa.mzn | 73 +
share/minizinc/std/regular_regexp.mzn | 34 +
share/minizinc/std/regular_set.mzn | 34 +
share/minizinc/std/roots.mzn | 12 +
share/minizinc/std/roots_fn.mzn | 10 +
share/minizinc/std/seq_precede_chain.mzn | 16 +
share/minizinc/std/set_member.mzn | 9 +
share/minizinc/std/sliding_sum.mzn | 9 +
share/minizinc/std/solver_redefinitions.mzn | 38 +
share/minizinc/std/sort.mzn | 12 +
share/minizinc/std/sort_fn.mzn | 11 +
share/minizinc/std/span.mzn | 14 +
share/minizinc/std/stdlib.mzn | 49 +
share/minizinc/std/stdlib/stdlib_ann.mzn | 402 +
share/minizinc/std/stdlib/stdlib_array.mzn | 478 +
share/minizinc/std/stdlib/stdlib_coercion.mzn | 154 +
share/minizinc/std/stdlib/stdlib_compare.mzn | 310 +
share/minizinc/std/stdlib/stdlib_debug.mzn | 94 +
share/minizinc/std/stdlib/stdlib_enum.mzn | 82 +
share/minizinc/std/stdlib/stdlib_internal.mzn | 1249 +
share/minizinc/std/stdlib/stdlib_ite.mzn | 123 +
share/minizinc/std/stdlib/stdlib_language.mzn | 68 +
share/minizinc/std/stdlib/stdlib_logic.mzn | 83 +
share/minizinc/std/stdlib/stdlib_math.mzn | 597 +
share/minizinc/std/stdlib/stdlib_opt.mzn | 267 +
share/minizinc/std/stdlib/stdlib_random.mzn | 82 +
share/minizinc/std/stdlib/stdlib_reflect.mzn | 114 +
share/minizinc/std/stdlib/stdlib_set.mzn | 116 +
share/minizinc/std/stdlib/stdlib_sort.mzn | 67 +
share/minizinc/std/stdlib/stdlib_string.mzn | 167 +
share/minizinc/std/steiner.mzn | 58 +
share/minizinc/std/strict_lex2.mzn | 9 +
share/minizinc/std/strictly_decreasing.mzn | 31 +
share/minizinc/std/strictly_increasing.mzn | 32 +
share/minizinc/std/subcircuit.mzn | 15 +
share/minizinc/std/subgraph.mzn | 40 +
share/minizinc/std/sum_pred.mzn | 13 +
share/minizinc/std/sum_set.mzn | 11 +
.../minizinc/std/symmetric_all_different.mzn | 14 +
share/minizinc/std/table.mzn | 37 +
share/minizinc/std/table_bool.mzn | 16 +
share/minizinc/std/table_int.mzn | 16 +
share/minizinc/std/tree.mzn | 82 +
share/minizinc/std/value_precede.mzn | 33 +
share/minizinc/std/value_precede_chain.mzn | 22 +
.../minizinc/std/value_precede_chain_int.mzn | 5 +
.../minizinc/std/value_precede_chain_set.mzn | 5 +
share/minizinc/std/value_precede_int.mzn | 5 +
share/minizinc/std/value_precede_set.mzn | 5 +
share/minizinc/std/weighted_spanning_tree.mzn | 45 +
share/minizinc/std/write.mzn | 22 +
share/minizinc/std/writes.mzn | 26 +
share/minizinc/std/writes_seq.mzn | 27 +
solvers/MIP/MIP_cplex_solverfactory.cpp | 10 +
solvers/MIP/MIP_cplex_wrap.cpp | 1336 +
solvers/MIP/MIP_gurobi_solverfactory.cpp | 10 +
solvers/MIP/MIP_gurobi_wrap.cpp | 1095 +
solvers/MIP/MIP_osicbc_solverfactory.cpp | 10 +
solvers/MIP/MIP_osicbc_wrap.cpp | 1208 +
solvers/MIP/MIP_scip_solverfactory.cpp | 10 +
solvers/MIP/MIP_scip_wrap.cpp | 941 +
solvers/MIP/MIP_solverinstance.cpp | 208 +
solvers/MIP/MIP_wrap.cpp | 25 +
solvers/MIP/MIP_xpress_solverfactory.cpp | 10 +
solvers/MIP/MIP_xpress_wrap.cpp | 678 +
solvers/fzn/fzn_solverfactory.cpp | 9 +
solvers/fzn/fzn_solverinstance.cpp | 341 +
solvers/geas/geas_constraints.cpp | 781 +
solvers/geas/geas_solverfactory.cpp | 20 +
solvers/geas/geas_solverinstance.cpp | 776 +
solvers/gecode/aux_brancher.hh | 190 +
solvers/gecode/fzn_space.cpp | 124 +
solvers/gecode/gecode_constraints.cpp | 1927 +
solvers/gecode/gecode_solverfactory.cpp | 9 +
solvers/gecode/gecode_solverinstance.cpp | 2478 +
solvers/mzn/mzn_solverfactory.cpp | 9 +
solvers/mzn/mzn_solverinstance.cpp | 191 +
solvers/nl/nl_components.cpp | 626 +
solvers/nl/nl_file.cpp | 1543 +
solvers/nl/nl_solreader.cpp | 280 +
solvers/nl/nl_solverfactory.cpp | 16 +
solvers/nl/nl_solverinstance.cpp | 311 +
tests/README.md | 161 +
tests/benchmarking/README.md | 31 +
tests/benchmarking/cmp_result_logs.py | 525 +
tests/benchmarking/json_config.py | 39 +
tests/benchmarking/json_log.py | 41 +
tests/benchmarking/mzn-test.py | 991 +
tests/benchmarking/mzn_exec.py | 163 +
tests/benchmarking/utils.py | 125 +
tests/conftest.py | 288 +
tests/minizinc_testing/__init__.py | 3 +
tests/minizinc_testing/create.py | 150 +
tests/minizinc_testing/helpers.py | 65 +
tests/minizinc_testing/spec.py | 383 +
tests/minizinc_testing/static/index.html | 376 +
tests/minizinc_testing/yaml.py | 192 +
tests/pytest.ini | 10 +
tests/requirements.txt | 7 +
tests/spec/examples/2DPacking.mzn | 134 +
tests/spec/examples/alpha.mzn | 128 +
tests/spec/examples/battleships.mzn.model | 155 +
tests/spec/examples/battleships10.mzn | 54 +
tests/spec/examples/battleships_1.mzn | 55 +
tests/spec/examples/battleships_2.mzn | 87 +
tests/spec/examples/battleships_3.mzn | 55 +
tests/spec/examples/battleships_4.mzn | 1062 +
tests/spec/examples/battleships_5.mzn | 54 +
tests/spec/examples/battleships_7.mzn | 1402 +
tests/spec/examples/battleships_9.mzn | 52 +
tests/spec/examples/blocksworld.model | 120 +
.../spec/examples/blocksworld_instance_1.mzn | 42 +
.../spec/examples/blocksworld_instance_2.mzn | 51 +
tests/spec/examples/cutstock.mzn | 91 +
tests/spec/examples/eq20.mzn | 94 +
.../examples/factory_planning_instance.mzn | 240 +
tests/spec/examples/golomb.mzn | 50 +
tests/spec/examples/halfreif.mzn | 26 +
tests/spec/examples/jobshop2x2.mzn | 68 +
tests/spec/examples/knights.mzn | 81 +
tests/spec/examples/langford.mzn | 112 +
tests/spec/examples/langford2.mzn | 118 +
tests/spec/examples/latin_squares_fd.mzn | 363 +
tests/spec/examples/magicsq.mzn.model | 35 +
tests/spec/examples/magicsq_3.mzn | 44 +
tests/spec/examples/magicsq_4.mzn | 51 +
tests/spec/examples/magicsq_5.mzn | 57 +
.../spec/examples/multidimknapsack_simple.mzn | 53 +
tests/spec/examples/oss.mzn | 163 +
tests/spec/examples/packing.mzn | 93 +
tests/spec/examples/perfsq.mzn | 66 +
tests/spec/examples/perfsq2.mzn | 43 +
tests/spec/examples/photo.mzn | 102 +
tests/spec/examples/product_fd.mzn | 90 +
tests/spec/examples/product_lp.mzn | 87 +
tests/spec/examples/quasigroup_qg5.mzn | 76 +
tests/spec/examples/queen_cp2.mzn | 60 +
tests/spec/examples/queen_ip.mzn | 83 +
tests/spec/examples/radiation.mzn | 141 +
tests/spec/examples/simple_sat.mzn | 74 +
tests/spec/examples/singHoist2.mzn | 122 +
tests/spec/examples/steiner-triples.mzn | 84 +
tests/spec/examples/sudoku.mzn | 72 +
tests/spec/examples/template_design.mzn | 152 +
tests/spec/examples/tenpenki.mzn.model | 96 +
tests/spec/examples/tenpenki_1.mzn | 38 +
tests/spec/examples/tenpenki_2.mzn | 58 +
tests/spec/examples/tenpenki_3.mzn | 38 +
tests/spec/examples/tenpenki_4.mzn | 30 +
tests/spec/examples/tenpenki_5.mzn | 59 +
tests/spec/examples/tenpenki_6.mzn | 44 +
tests/spec/examples/timetabling.mzn | 95 +
tests/spec/examples/trucking.mzn | 110 +
tests/spec/examples/warehouses.mzn | 143 +
tests/spec/examples/wolf_goat_cabbage.mzn | 987 +
tests/spec/examples/zebra.mzn | 154 +
tests/spec/sudoku/sudoku.mzn | 153 +
tests/spec/sudoku/sudoku_1_16x16.dzn | 19 +
tests/spec/sudoku/sudoku_2_16x16.dzn | 19 +
tests/spec/sudoku/sudoku_3_16x16.dzn | 19 +
tests/spec/sudoku/sudoku_4_16x16.dzn | 19 +
tests/spec/sudoku/sudoku_5_16x16.dzn | 19 +
tests/spec/suites.yml | 39 +
tests/spec/unit/compilation/aggregation.fzn | 6 +
tests/spec/unit/compilation/aggregation.mzn | 18 +
tests/spec/unit/compilation/cv_domain.mzn | 16 +
tests/spec/unit/compilation/has_ann.mzn | 16 +
tests/spec/unit/compilation/optimization.mzn | 35 +
.../spec/unit/compilation/optimization_0.fzn | 32 +
.../spec/unit/compilation/optimization_1.fzn | 11 +
.../spec/unit/compilation/optimization_2.fzn | 10 +
.../spec/unit/compilation/optimization_3.fzn | 10 +
tests/spec/unit/division/test_div1.mzn | 13 +
tests/spec/unit/division/test_div10.mzn | 14 +
tests/spec/unit/division/test_div11.mzn | 20 +
tests/spec/unit/division/test_div12.mzn | 62 +
tests/spec/unit/division/test_div2.mzn | 13 +
tests/spec/unit/division/test_div3.mzn | 15 +
tests/spec/unit/division/test_div4.mzn | 13 +
tests/spec/unit/division/test_div5.mzn | 12 +
tests/spec/unit/division/test_div6.mzn | 13 +
tests/spec/unit/division/test_div7.mzn | 13 +
tests/spec/unit/division/test_div8.mzn | 19 +
tests/spec/unit/division/test_div9.mzn | 13 +
.../spec/unit/fdlp/test_lp_solve_satisfy.mzn | 24 +
tests/spec/unit/general/anon_var_flatten.mzn | 19 +
tests/spec/unit/general/array_string_gen.mzn | 12 +
tests/spec/unit/general/assert_bad_1.mzn | 20 +
tests/spec/unit/general/assert_bad_2.mzn | 21 +
tests/spec/unit/general/assert_good.mzn | 27 +
tests/spec/unit/general/bin_pack_multiobj.mzn | 26 +
tests/spec/unit/general/builtins_arg_max.mzn | 31 +
tests/spec/unit/general/builtins_debug.mzn | 80 +
tests/spec/unit/general/iffall_bv.mzn | 18 +
tests/spec/unit/general/json_ignore.json | 4 +
tests/spec/unit/general/json_ignore.mzc.mzn | 1 +
tests/spec/unit/general/json_ignore.mzn | 14 +
tests/spec/unit/general/md_exists.mzn | 72 +
tests/spec/unit/general/md_forall.mzn | 25 +
tests/spec/unit/general/md_iffall.mzn | 405 +
tests/spec/unit/general/md_product_int.mzn | 30 +
tests/spec/unit/general/md_sum_float.mzn | 19 +
tests/spec/unit/general/md_sum_int.mzn | 132 +
tests/spec/unit/general/md_xorall.mzn | 399 +
tests/spec/unit/general/mortgage.mzn | 74 +
tests/spec/unit/general/mzn-implicit1.mzn | 9 +
tests/spec/unit/general/mzn-implicit2.mzn | 16 +
tests/spec/unit/general/mzn-implicit3.mzn | 17 +
tests/spec/unit/general/mzn-implicit4.mzn | 17 +
tests/spec/unit/general/mzn-implicit5.mzn | 9 +
tests/spec/unit/general/mzn-implicit6.mzn | 11 +
tests/spec/unit/general/mzn-implicit7.mzn | 10 +
tests/spec/unit/general/mzn-implicit8.mzn | 47 +
tests/spec/unit/general/mzn_div.mzn | 12 +
tests/spec/unit/general/mzn_mod.mzn | 13 +
tests/spec/unit/general/test-search1.mzn | 22 +
tests/spec/unit/general/test_array1.mzn | 16 +
tests/spec/unit/general/test_array1and2d.mzn | 13 +
.../spec/unit/general/test_array1d_bad_1.mzn | 9 +
.../spec/unit/general/test_array1d_bad_2.mzn | 9 +
.../spec/unit/general/test_array1d_bad_3.mzn | 9 +
.../spec/unit/general/test_array1d_bad_4.mzn | 11 +
tests/spec/unit/general/test_array2.mzn | 15 +
.../unit/general/test_array_as_generator.mzn | 9 +
.../unit/general/test_bad_array_size-bad.mzn | 8 +
.../unit/general/test_bad_lb_ub_dom-bad.mzn | 11 +
.../general/test_bool_var_array_access.mzn | 20 +
tests/spec/unit/general/test_concat1.mzn | 11 +
tests/spec/unit/general/test_concat2.mzn | 11 +
tests/spec/unit/general/test_concat3.mzn | 13 +
tests/spec/unit/general/test_empty_enum.mzn | 9 +
tests/spec/unit/general/test_is_fixed.mzn | 92 +
tests/spec/unit/general/test_join1.mzn | 11 +
tests/spec/unit/general/test_join2.mzn | 11 +
tests/spec/unit/general/test_join3.mzn | 13 +
.../unit/general/test_lb_ub_array_int.mzn | 17 +
.../spec/unit/general/test_lb_ub_dom_int.mzn | 29 +
tests/spec/unit/general/test_lb_ub_float.mzn | 20 +
tests/spec/unit/general/test_let_complex.mzn | 30 +
.../spec/unit/general/test_let_par_array.mzn | 15 +
tests/spec/unit/general/test_let_simple.mzn | 14 +
.../spec/unit/general/test_let_var_array.mzn | 19 +
.../unit/general/test_let_with_annotation.mzn | 22 +
.../spec/unit/general/test_min_var_array.mzn | 21 +
tests/spec/unit/general/test_negated_and.mzn | 45 +
.../spec/unit/general/test_negated_and_or.mzn | 29 +
.../unit/general/test_negated_let_bad.mzn | 9 +
.../unit/general/test_negated_let_good.mzn | 17 +
.../unit/general/test_negated_let_good_2.mzn | 19 +
tests/spec/unit/general/test_negated_or.mzn | 21 +
.../unit/general/test_par_set_element.mzn | 24 +
.../test_par_set_id_array_index_sets.mzn | 18 +
tests/spec/unit/general/test_queens.mzn | 46 +
.../test_reified_element_constraint.mzn | 35 +
.../unit/general/test_reified_let_bad.mzn | 10 +
.../unit/general/test_reified_let_good.mzn | 17 +
tests/spec/unit/general/test_same.mzn | 65 +
.../unit/general/test_set_inequality_par.mzn | 16 +
tests/spec/unit/general/test_set_lt_1.mzn | 46 +
tests/spec/unit/general/test_set_lt_2.mzn | 46 +
tests/spec/unit/general/test_set_lt_3.mzn | 15 +
.../unit/general/test_string_array_var.mzn | 11 +
tests/spec/unit/general/test_string_cmp.mzn | 16 +
tests/spec/unit/general/test_string_var.mzn | 11 +
.../unit/general/test_string_with_quote.mzn | 11 +
.../unit/general/test_times_int_float_eq.mzn | 32 +
.../test_times_int_float_eq__defaultopt.mzn | 31 +
tests/spec/unit/general/test_to_enum.mzn | 37 +
.../spec/unit/general/test_undefined_enum.fzn | 0
.../spec/unit/general/test_undefined_enum.mzn | 19 +
tests/spec/unit/general/test_var_array.mzn | 11 +
.../unit/general/test_var_array_access.mzn | 16 +
tests/spec/unit/general/test_var_prod.mzn | 34 +
.../unit/general/test_var_set_assignment.mzn | 12 +
.../unit/general/test_var_set_element.mzn | 19 +
.../spec/unit/general/unicode_file_name_μ.mzn | 9 +
tests/spec/unit/general/wolfgoatetc.mzn | 117 +
tests/spec/unit/general/xorall_bv.mzn | 18 +
.../all_disjoint/globals_all_disjoint.mzn | 1907 +
.../all_equal/globals_all_equal_int.mzn | 23 +
.../all_equal/globals_all_equal_set.mzn | 33 +
.../globals_all_different_int.mzn | 21 +
.../globals_all_different_set.mzn | 30 +
.../globals_alldiff_set_nosets.mzn | 45 +
.../test_alldiff_except0.mzn | 18 +
.../test_alldiff_except0b.mzn | 161 +
.../spec/unit/globals/among/globals_among.mzn | 33 +
.../unit/globals/atleast/globals_at_least.mzn | 32 +
.../unit/globals/atmost1/globals_at_most1.mzn | 44 +
.../bin_packing/globals_bin_packing.mzn | 2422 +
.../globals_bin_packing_capa.mzn | 26 +
.../unit/globals/circuit/test_circuit.mzn | 131 +
.../spec/unit/globals/count/globals_count.mzn | 43 +
.../globals/cumulative/globals_cumulative.mzn | 23 +
.../globals/decreasing/globals_decreasing.mzn | 38 +
.../globals/disjoint/globals_disjoint.mzn | 22 +
.../globals/distribute/globals_distribute.mzn | 28 +
.../globals_global_cardinality.mzn | 27 +
.../globals_global_cardinality_closed.mzn | 23 +
.../globals_global_cardinality_low_up.mzn | 34 +
...obals_global_cardinality_low_up_closed.mzn | 41 +
.../globals/increasing/globals_increasing.mzn | 41 +
.../globals_strictly_increasing_opt.mzn | 14 +
.../globals_int_set_channel.mzn | 31 +
.../int_set_channel/test_int_set_channel2.mzn | 57 +
.../unit/globals/inverse/globals_inverse.mzn | 29 +
.../globals_inverse_in_range.mzn | 49 +
.../inverse_set/globals_inverse_set.mzn | 83 +
tests/spec/unit/globals/lex2/globals_lex2.mzn | 101 +
.../globals/lex_chain/globals_lex_chain.mzn | 53 +
.../lex_chain/globals_lex_chain__orbitope.mzn | 48 +
.../lex_greater/globals_lex_greater.mzn | 45 +
.../lex_greatereq/globals_lex_greatereq.mzn | 118 +
.../globals/lex_less/globals_lex_less.mzn | 49 +
.../globals/lex_less/test_bool_lex_less.mzn | 64 +
.../globals/lex_lesseq/globals_lex_lesseq.mzn | 36 +
.../lex_lesseq/test_bool_lex_lesseq.mzn | 92 +
.../globals_link_set_to_booleans.mzn | 32 +
.../globals/maximum/globals_maximum_int.mzn | 27 +
.../globals/minimum/globals_minimum_int.mzn | 27 +
.../unit/globals/nvalue/globals_nvalue.mzn | 2549 +
.../partition_set/globals_partition_set.mzn | 25 +
.../spec/unit/globals/range/globals_range.mzn | 51 +
.../unit/globals/regular/globals_regular.mzn | 62 +
.../regular/globals_regular_regex_1.mzn | 12 +
.../regular/globals_regular_regex_2.mzn | 22 +
.../regular/globals_regular_regex_3.mzn | 20 +
.../regular/globals_regular_regex_4.mzn | 19 +
.../regular/globals_regular_regex_5.mzn | 18 +
.../regular/globals_regular_regex_6.mzn | 16 +
tests/spec/unit/globals/roots/roots_bad.mzn | 16 +
tests/spec/unit/globals/roots/test_roots.mzn | 22 +
tests/spec/unit/globals/roots/test_roots2.mzn | 118 +
tests/spec/unit/globals/roots/test_roots3.mzn | 19 +
.../sliding_sum/globals_sliding_sum.mzn | 26 +
tests/spec/unit/globals/sort/globals_sort.mzn | 20 +
.../strict_lex2/globals_strict_lex2.mzn | 33 +
.../globals/subcircuit/test_subcircuit.mzn | 280 +
.../globals/sum_pred/globals_sum_pred.mzn | 23 +
.../spec/unit/globals/table/globals_table.mzn | 50 +
.../unit/globals/table/globals_table_opt.mzn | 32 +
.../globals_value_precede_int.mzn | 42 +
.../globals_value_precede_int_opt.mzn | 88 +
.../globals_value_precede_set.mzn | 1461 +
.../globals_value_precede_chain_int.mzn | 49 +
.../globals_value_precede_chain_set.mzn | 339 +
tests/spec/unit/json/coerce_enum_str.json | 5 +
tests/spec/unit/json/coerce_enum_str.mzn | 16 +
tests/spec/unit/json/coerce_enum_str_err.json | 3 +
tests/spec/unit/json/coerce_enum_str_err.mzn | 12 +
tests/spec/unit/json/coerce_indices.json | 8 +
tests/spec/unit/json/coerce_indices.mzn | 24 +
tests/spec/unit/json/coerce_set.json | 3 +
tests/spec/unit/json/coerce_set.mzn | 11 +
tests/spec/unit/json/enum_array_xd.mzn | 16 +
tests/spec/unit/json/json_enum_def.json | 6 +
tests/spec/unit/json/json_enum_def.mzn | 24 +
tests/spec/unit/json/json_input_1.json | 12 +
tests/spec/unit/json/json_input_1.mzn | 32 +
tests/spec/unit/json/json_input_set.json | 4 +
tests/spec/unit/json/json_input_set.mzn | 13 +
tests/spec/unit/json/json_input_str.json | 4 +
tests/spec/unit/json/json_input_str.mzn | 13 +
.../unit/optional/test-opt-binop-flatten.mzn | 15 +
tests/spec/unit/optional/test-opt-bool-1.mzn | 21 +
tests/spec/unit/optional/test-opt-bool-2.mzn | 26 +
tests/spec/unit/optional/test-opt-bool-3.mzn | 29 +
tests/spec/unit/optional/test-opt-bool-4.mzn | 21 +
tests/spec/unit/optional/test-opt-bool-5.mzn | 51 +
tests/spec/unit/optional/test-opt-bool-6.mzn | 88 +
.../unit/optional/test-opt-compute-bounds.mzn | 14 +
tests/spec/unit/optional/test-opt-float-1.mzn | 30 +
tests/spec/unit/optional/test-opt-float-2.mzn | 27 +
.../unit/optional/test-opt-if-then-else.mzn | 52 +
tests/spec/unit/optional/test-opt-int-1.mzn | 27 +
tests/spec/unit/optional/test-opt-int-2.mzn | 3 +
tests/spec/unit/optional/test-opt-int-3.mzn | 3 +
tests/spec/unit/optional/test_bug_456.fzn | 4 +
tests/spec/unit/optional/test_bug_456.mzn | 15 +
.../optional/test_if_then_else_opt_bool.mzn | 27 +
.../optional/test_if_then_else_opt_float.mzn | 27 +
.../optional/test_if_then_else_opt_int.mzn | 27 +
.../test_if_then_else_var_opt_bool.mzn | 31 +
.../test_if_then_else_var_opt_float.mzn | 31 +
.../test_if_then_else_var_opt_int.mzn | 31 +
tests/spec/unit/output/arg-reif-output.mzn | 9 +
tests/spec/unit/output/array-ann.mzn | 15 +
tests/spec/unit/output/bug288a.mzn | 15 +
tests/spec/unit/output/bug288b.mzn | 15 +
tests/spec/unit/output/bug288c.mzn | 17 +
tests/spec/unit/output/dzn_output_array.mzn | 20 +
tests/spec/unit/output/dzn_output_array.ozn | 11 +
tests/spec/unit/output/mzn_bottom1.mzn | 10 +
tests/spec/unit/output/mzn_bottom2.mzn | 10 +
tests/spec/unit/output/mzn_bottom3.mzn | 10 +
tests/spec/unit/output/mzn_bottom4.mzn | 11 +
tests/spec/unit/output/mzn_bottom5.mzn | 11 +
tests/spec/unit/output/mzn_bottom6.mzn | 10 +
tests/spec/unit/output/show_empty.mzn | 10 +
tests/spec/unit/output/show_float.mzn | 15 +
tests/spec/unit/output/show_float_set.mzn | 58 +
tests/spec/unit/output/show_int.mzn | 19 +
tests/spec/unit/output/show_int_set.mzn | 58 +
tests/spec/unit/output/test-in-output.mzn | 37 +
tests/spec/unit/output/very_empty.mzn | 14 +
tests/spec/unit/output/very_empty_set.mzn | 14 +
.../file_resolution/includes/included.mzn | 1 +
.../inner_directory/data_file.dzn | 1 +
.../inner_directory/data_file.json | 3 +
.../inner_directory/model_file.mzn | 1 +
.../param_file_resolution_inner.mpc | 8 +
.../unit/param_file/param_file_array.json | 6 +
.../spec/unit/param_file/param_file_array.mzn | 15 +
.../unit/param_file/param_file_blacklist.mzn | 16 +
.../param_file/param_file_blacklist_1.mpc | 3 +
.../param_file/param_file_blacklist_2.mpc | 3 +
.../param_file/param_file_nested_object.mpc | 5 +
.../param_file/param_file_nested_object.mzn | 18 +
.../unit/param_file/param_file_recursive.mpc | 3 +
.../unit/param_file/param_file_recursive.mzn | 9 +
.../unit/param_file/param_file_resolution.mpc | 3 +
.../unit/param_file/param_file_resolution.mzn | 14 +
tests/spec/unit/regression/abs_bug.mzn | 47 +
.../spec/unit/regression/absent_id_crash.mzn | 13 +
.../unit/regression/arg-reif-array-float.mzn | 24 +
.../unit/regression/arg-reif-array-int.mzn | 24 +
tests/spec/unit/regression/arg-reif-float.mzn | 24 +
.../spec/unit/regression/arg-reif-int-set.mzn | 24 +
tests/spec/unit/regression/arg-reif-int.mzn | 24 +
.../regression/array_set_element_nosets.mzn | 25 +
.../array_var_set_element_nosets.mzn | 20 +
.../unit/regression/assign_reverse_map.mzn | 33 +
tests/spec/unit/regression/big_array_lit.mzn | 40338 ++++++++++++++++
tests/spec/unit/regression/bizarre.mzn | 63 +
tests/spec/unit/regression/bool2float_let.mzn | 15 +
tests/spec/unit/regression/bug109.mzn | 62 +
tests/spec/unit/regression/bug110.mzn | 40 +
tests/spec/unit/regression/bug131.mzn | 65 +
tests/spec/unit/regression/bug141.mzn | 43 +
tests/spec/unit/regression/bug202.mzn | 28 +
tests/spec/unit/regression/bug212.mzn | 18 +
tests/spec/unit/regression/bug222.mzn | 30 +
tests/spec/unit/regression/bug244.mzn | 43 +
tests/spec/unit/regression/bug256.mzn | 21 +
tests/spec/unit/regression/bug256b.mzn | 17 +
tests/spec/unit/regression/bug258.dzn | 19 +
tests/spec/unit/regression/bug259.mzn | 363 +
tests/spec/unit/regression/bug269.mzn | 40 +
tests/spec/unit/regression/bug282.mzn | 35 +
tests/spec/unit/regression/bug283.mzn | 26 +
tests/spec/unit/regression/bug284.mzn | 24 +
tests/spec/unit/regression/bug287.mzn | 23 +
tests/spec/unit/regression/bug290_orig.mzn | 26 +
tests/spec/unit/regression/bug290_simple.mzn | 22 +
tests/spec/unit/regression/bug312.mzn | 32 +
tests/spec/unit/regression/bug318_orig.mzn | 33 +
tests/spec/unit/regression/bug335.mzn | 82 +
tests/spec/unit/regression/bug337.mzn | 22 +
tests/spec/unit/regression/bug337_mod.mzn | 23 +
tests/spec/unit/regression/bug341.mzn | 32 +
tests/spec/unit/regression/bug347.mzn | 65 +
tests/spec/unit/regression/bug380.mzn | 57 +
tests/spec/unit/regression/bug45.mzn | 12 +
tests/spec/unit/regression/bug52.mzn | 26 +
tests/spec/unit/regression/bug67.mzn | 29 +
tests/spec/unit/regression/bug68b.mzn | 20 +
tests/spec/unit/regression/bug69_1.mzn | 14 +
tests/spec/unit/regression/bug69_2.mzn | 18 +
tests/spec/unit/regression/bug69_3.mzn | 18 +
tests/spec/unit/regression/bug69_4.mzn | 19 +
tests/spec/unit/regression/bug70.mzn | 80 +
tests/spec/unit/regression/bug71_1.mzn | 13 +
tests/spec/unit/regression/bug71_2.mzn | 13 +
tests/spec/unit/regression/bug82.mzn | 89 +
tests/spec/unit/regression/bug85.mzn | 35 +
tests/spec/unit/regression/bug_08.mzn | 14 +
tests/spec/unit/regression/bug_r7995.mzn | 69 +
.../spec/unit/regression/card_flatten_lb.mzn | 18 +
.../cardinality_atmost_partition.mzn | 146 +
.../spec/unit/regression/change_partition.mzn | 143 +
.../unit/regression/checker_var_bug.mzc.mzn | 1 +
.../spec/unit/regression/checker_var_bug.mzn | 15 +
.../unit/regression/coerce_set_to_array_1.mzn | 11 +
.../unit/regression/coerce_set_to_array_2.mzn | 10 +
tests/spec/unit/regression/coercion_par.mzn | 15 +
.../unit/regression/comprehension_where.mzn | 14 +
tests/spec/unit/regression/cse_array_lit.fzn | 5 +
tests/spec/unit/regression/cse_array_lit.mzn | 17 +
.../unit/regression/decision_tree_binary.mzn | 160 +
tests/spec/unit/regression/empty-array1d.mzn | 15 +
tests/spec/unit/regression/enigma_1568.mzn | 135 +
.../regression/error_in_comprehension.mzn | 11 +
tests/spec/unit/regression/flat_cv_call.mzn | 20 +
tests/spec/unit/regression/flat_cv_let.mzn | 16 +
tests/spec/unit/regression/flat_set_lit.mzn | 16 +
.../spec/unit/regression/flatten_comp_in.mzn | 15 +
.../spec/unit/regression/flatten_comp_in2.mzn | 22 +
.../spec/unit/regression/flipstrip_simple.mzn | 20 +
.../spec/unit/regression/float_div_crash.mzn | 7 +
.../spec/unit/regression/float_mod_crash.mzn | 9 +
.../spec/unit/regression/float_opt_crash.mzn | 20 +
.../regression/follow_id_absent_crash.mzn | 13 +
.../regression/hundred_doors_unoptimized.mzn | 202 +
tests/spec/unit/regression/int_times.mzn | 15 +
tests/spec/unit/regression/is_fixed.mzn | 11 +
tests/spec/unit/regression/is_fixed_comp.mzn | 14 +
.../unit/regression/linear_bool_elem_bug.mzn | 45 +
tests/spec/unit/regression/makepar_output.mzn | 15 +
tests/spec/unit/regression/nested_clause.mzn | 15 +
tests/spec/unit/regression/no_macro.mzn | 15 +
.../regression/non-set-array-ti-location.mzn | 10 +
tests/spec/unit/regression/nosets_369.mzn | 11 +
.../regression/opt_noncontiguous_domain.mzn | 20 +
.../unit/regression/opt_removed_items.mzn | 39 +
tests/spec/unit/regression/output_only_fn.mzn | 12 +
tests/spec/unit/regression/output_only_fn.ozn | 3 +
.../unit/regression/output_only_no_rhs.mzn | 8 +
tests/spec/unit/regression/overloading.mzn | 17 +
tests/spec/unit/regression/par_opt_equal.mzn | 15 +
.../unit/regression/parse_assignments.mzc.mzn | 3 +
.../unit/regression/parse_assignments.mzn | 15 +
.../spec/unit/regression/parser_location.mzn | 8 +
.../spec/unit/regression/pred_param_r7550.mzn | 163 +
tests/spec/unit/regression/round.mzn | 15 +
tests/spec/unit/regression/seq_search_bug.mzn | 61 +
.../unit/regression/set_inequality_par.mzn | 7 +
.../spec/unit/regression/string-test-arg.mzn | 21 +
tests/spec/unit/regression/subsets_100.mzn | 100 +
tests/spec/unit/regression/test_bool2int.mzn | 17 +
tests/spec/unit/regression/test_bug218.mzn | 21 +
.../spec/unit/regression/test_bug218_inc.mzn | 6 +
tests/spec/unit/regression/test_bug359.mzn | 33 +
tests/spec/unit/regression/test_bug45.mzn | 12 +
tests/spec/unit/regression/test_bug53.mzn | 10 +
tests/spec/unit/regression/test_bug54.mzn | 44 +
tests/spec/unit/regression/test_bug55.mzn | 18 +
tests/spec/unit/regression/test_bug57.mzn | 15 +
tests/spec/unit/regression/test_bug65.mzn | 14 +
tests/spec/unit/regression/test_bug66.mzn | 15 +
tests/spec/unit/regression/test_bug67.mzn | 11 +
tests/spec/unit/regression/test_bug70.mzn | 16 +
tests/spec/unit/regression/test_bug71.mzn | 9 +
tests/spec/unit/regression/test_bug72.mzn | 27 +
tests/spec/unit/regression/test_bug_129.mzn | 12 +
.../test_equality_of_indirect_annotations.mzn | 19 +
tests/spec/unit/regression/test_github_30.mzn | 24 +
.../spec/unit/regression/test_multioutput.mzn | 13 +
tests/spec/unit/regression/test_not_in.mzn | 16 +
.../regression/test_output_array_of_set.mzn | 10 +
.../regression/test_output_string_var.mzn | 13 +
tests/spec/unit/regression/test_parout.mzn | 25 +
.../unit/regression/test_slice_1d_array.mzn | 12 +
.../unit/regression/ti_error_location.mzn | 8 +
tests/spec/unit/regression/ts_bug.mzn | 115 +
.../unit/regression/var_opt_unconstrained.mzn | 17 +
.../unit/regression/var_self_assign_bug.mzn | 34 +
.../spec/unit/regression/where-forall-bug.mzn | 20 +
.../unit/regression/xor_mixed_context.mzn | 14 +
tests/spec/unit/search/int_choice_1.mzn | 31 +
tests/spec/unit/search/int_choice_2.mzn | 31 +
tests/spec/unit/search/int_choice_6.mzn | 33 +
tests/spec/unit/search/int_var_select_1.mzn | 33 +
tests/spec/unit/search/int_var_select_2.mzn | 33 +
tests/spec/unit/search/int_var_select_3.mzn | 37 +
tests/spec/unit/search/int_var_select_4.mzn | 35 +
tests/spec/unit/search/int_var_select_6.mzn | 31 +
tests/spec/unit/search/test-ff1.mzn | 17 +
tests/spec/unit/search/test-ff2.mzn | 21 +
tests/spec/unit/search/test-ff3.mzn | 24 +
tests/spec/unit/search/test-large1.mzn | 22 +
tests/spec/unit/search/test-med1.mzn | 16 +
tests/spec/unit/search/test-small1.mzn | 17 +
tests/spec/unit/test-globals-float.mzn | 59 +
tests/style.css | 100 +
1987 files changed, 296196 insertions(+)
create mode 100644 .clang-format
create mode 100644 .clang-tidy
create mode 100644 .gitignore
create mode 100644 .gitlab-ci.yml
create mode 100644 CMakeLists.txt
create mode 100644 LICENSE.txt
create mode 100644 README.md
create mode 100644 changes.rst
create mode 100644 cmake/modules/FindCPlex.cmake
create mode 100644 cmake/modules/FindGeas.cmake
create mode 100644 cmake/modules/FindGecode.cmake
create mode 100644 cmake/modules/FindGurobi.cmake
create mode 100644 cmake/modules/FindMPFR.cmake
create mode 100644 cmake/modules/FindOsiCBC.cmake
create mode 100644 cmake/modules/FindSCIP.cmake
create mode 100644 cmake/modules/FindXpress.cmake
create mode 100644 cmake/scripts/md5_gen.cmake
create mode 100644 cmake/support/ccache_setup.cmake
create mode 100644 cmake/support/compiler_setup.cmake
create mode 100644 cmake/support/config_emscripten.cmake
create mode 100644 cmake/support/config_export.cmake
create mode 100644 cmake/support/config_output.cmake
create mode 100644 cmake/support/emscripten_file_packager_patch.js
create mode 100644 cmake/support/emscripten_setup.cmake
create mode 100644 cmake/support/format.cmake
create mode 100644 cmake/targets/libminizinc_cplex.cmake
create mode 100644 cmake/targets/libminizinc_fzn.cmake
create mode 100644 cmake/targets/libminizinc_geas.cmake
create mode 100644 cmake/targets/libminizinc_gecode.cmake
create mode 100644 cmake/targets/libminizinc_gurobi.cmake
create mode 100644 cmake/targets/libminizinc_mip.cmake
create mode 100644 cmake/targets/libminizinc_nl.cmake
create mode 100644 cmake/targets/libminizinc_osicbc.cmake
create mode 100644 cmake/targets/libminizinc_parser.cmake
create mode 100644 cmake/targets/libminizinc_scip.cmake
create mode 100644 cmake/targets/libminizinc_xpress.cmake
create mode 100644 cmake/targets/libmzn.cmake
create mode 100644 cmake/targets/minizinc.cmake
create mode 100644 cmake/targets/mzn2doc.cmake
create mode 100644 cmake/templates/launch-c.in
create mode 100644 cmake/templates/launch-cxx.in
create mode 100644 cmake/templates/libminizincConfig.cmake.in
create mode 100644 cmake/templates/libminizincConfigVersion.cmake.in
create mode 100644 docs/LICENSE.txt
create mode 100644 docs/README.md
create mode 100644 docs/chi/Makefile
create mode 100644 docs/chi/_static/favicon/android-icon-144x144.png
create mode 100644 docs/chi/_static/favicon/android-icon-192x192.png
create mode 100644 docs/chi/_static/favicon/android-icon-36x36.png
create mode 100644 docs/chi/_static/favicon/android-icon-48x48.png
create mode 100644 docs/chi/_static/favicon/android-icon-72x72.png
create mode 100644 docs/chi/_static/favicon/android-icon-96x96.png
create mode 100644 docs/chi/_static/favicon/apple-icon-114x114.png
create mode 100644 docs/chi/_static/favicon/apple-icon-120x120.png
create mode 100644 docs/chi/_static/favicon/apple-icon-144x144.png
create mode 100644 docs/chi/_static/favicon/apple-icon-152x152.png
create mode 100644 docs/chi/_static/favicon/apple-icon-180x180.png
create mode 100644 docs/chi/_static/favicon/apple-icon-57x57.png
create mode 100644 docs/chi/_static/favicon/apple-icon-60x60.png
create mode 100644 docs/chi/_static/favicon/apple-icon-72x72.png
create mode 100644 docs/chi/_static/favicon/apple-icon-76x76.png
create mode 100644 docs/chi/_static/favicon/apple-icon-precomposed.png
create mode 100644 docs/chi/_static/favicon/apple-icon.png
create mode 100644 docs/chi/_static/favicon/browserconfig.xml
create mode 100644 docs/chi/_static/favicon/favicon-16x16.png
create mode 100644 docs/chi/_static/favicon/favicon-32x32.png
create mode 100644 docs/chi/_static/favicon/favicon-96x96.png
create mode 100644 docs/chi/_static/favicon/favicon.ico
create mode 100644 docs/chi/_static/favicon/manifest.json
create mode 100644 docs/chi/_static/favicon/ms-icon-144x144.png
create mode 100644 docs/chi/_static/favicon/ms-icon-150x150.png
create mode 100644 docs/chi/_static/favicon/ms-icon-310x310.png
create mode 100644 docs/chi/_static/favicon/ms-icon-70x70.png
create mode 100644 docs/chi/_static/js/doc-links.js
create mode 100644 docs/chi/_static/style.css
create mode 100644 docs/chi/_templates/footer.html
create mode 100644 docs/chi/_templates/layout.html
create mode 100644 docs/chi/api_interfacing.rst
create mode 100644 docs/chi/basic_steps.rst
create mode 100644 docs/chi/command_line.rst
create mode 100755 docs/chi/conf.py
create mode 100644 docs/chi/efficient.rst
create mode 100644 docs/chi/examples/allinterval.mzn
create mode 100644 docs/chi/examples/allinterval2.mzn
create mode 100644 docs/chi/examples/allinterval3.mzn
create mode 100644 docs/chi/examples/aust-enum.mzn
create mode 100644 docs/chi/examples/aust.mzn
create mode 100644 docs/chi/examples/bboolsum.mzn
create mode 100644 docs/chi/examples/bddsum.mzn
create mode 100644 docs/chi/examples/binarysum.mzn
create mode 100644 docs/chi/examples/cakes.mzn
create mode 100644 docs/chi/examples/cakes2.mzn
create mode 100644 docs/chi/examples/cars.mzn
create mode 100644 docs/chi/examples/cars_data.dzn
create mode 100644 docs/chi/examples/cnonoverlap.fzn
create mode 100644 docs/chi/examples/cnonoverlap.mzn
create mode 100644 docs/chi/examples/command_line/data.dzn
create mode 100644 docs/chi/examples/command_line/model.mzn
create mode 100644 docs/chi/examples/count1.mzn
create mode 100644 docs/chi/examples/count2.mzn
create mode 100644 docs/chi/examples/count3.mzn
create mode 100644 docs/chi/examples/cumulative.mzn
create mode 100644 docs/chi/examples/disjunctive.mzn
create mode 100644 docs/chi/examples/dummy.mzn
create mode 100644 docs/chi/examples/flexible-js.mzn
create mode 100644 docs/chi/examples/golomb.mzn
create mode 100644 docs/chi/examples/grocery.mzn
create mode 100644 docs/chi/examples/inverse.mzn
create mode 100644 docs/chi/examples/jdata.dzn
create mode 100644 docs/chi/examples/jobshop.fzn
create mode 100644 docs/chi/examples/jobshop.mzn
create mode 100644 docs/chi/examples/jobshop.ozn
create mode 100644 docs/chi/examples/jobshop2.mzn
create mode 100644 docs/chi/examples/jobshop3.mzn
create mode 100644 docs/chi/examples/knapsack.mzn
create mode 100644 docs/chi/examples/laplace.mzn
create mode 100644 docs/chi/examples/latin.mzn
create mode 100644 docs/chi/examples/latin_squares.mzn
create mode 100644 docs/chi/examples/latinbool.mzn
create mode 100644 docs/chi/examples/layout.dzn
create mode 100644 docs/chi/examples/lightup.dzn
create mode 100644 docs/chi/examples/lightup.mzn
create mode 100644 docs/chi/examples/linear.mzn
create mode 100644 docs/chi/examples/loan.mzn
create mode 100644 docs/chi/examples/loan1.dzn
create mode 100644 docs/chi/examples/loan2.dzn
create mode 100644 docs/chi/examples/loan3.dzn
create mode 100644 docs/chi/examples/magic-series.mzn
create mode 100644 docs/chi/examples/magic-series2.mzn
create mode 100644 docs/chi/examples/manhattan.mzn
create mode 100644 docs/chi/examples/meal-zinc.dzn
create mode 100644 docs/chi/examples/meal.dzn
create mode 100644 docs/chi/examples/meal.mzn
create mode 100644 docs/chi/examples/moving.dzn
create mode 100644 docs/chi/examples/moving.mzn
create mode 100644 docs/chi/examples/nqueens-ann.mzn
create mode 100644 docs/chi/examples/nqueens.mzn
create mode 100644 docs/chi/examples/nqueens_sym.mzn
create mode 100644 docs/chi/examples/nurse.mzn
create mode 100644 docs/chi/examples/oesort.mzn
create mode 100644 docs/chi/examples/pantry.dzn
create mode 100644 docs/chi/examples/pantry2.dzn
create mode 100644 docs/chi/examples/reflection.mzn
create mode 100644 docs/chi/examples/scope.mzn
create mode 100644 docs/chi/examples/send-more-money.mzn
create mode 100644 docs/chi/examples/simple-prod-planning-data.dzn
create mode 100644 docs/chi/examples/simple-prod-planning.mzn
create mode 100644 docs/chi/examples/social-golfers.dzn
create mode 100644 docs/chi/examples/social-golfers.fzn
create mode 100644 docs/chi/examples/social-golfers.mzn
create mode 100644 docs/chi/examples/social-golfers.ozn
create mode 100644 docs/chi/examples/sonet.dzn
create mode 100644 docs/chi/examples/stable-marriage.dzn
create mode 100644 docs/chi/examples/stable-marriage.mzn
create mode 100644 docs/chi/examples/sudoku.dzn
create mode 100644 docs/chi/examples/sudoku.mzn
create mode 100644 docs/chi/examples/uboolsum.mzn
create mode 100644 docs/chi/examples/unbounded.mzn
create mode 100644 docs/chi/examples/unconstrained.mzn
create mode 100644 docs/chi/examples/wedding.mzn
create mode 100644 docs/chi/examples/wedding2.mzn
create mode 100644 docs/chi/figures/MiniZn_logo_2.pdf
create mode 100644 docs/chi/figures/MiniZn_logo_2.svg
create mode 100644 docs/chi/figures/MiniZn_logo_2_small.pdf
create mode 100644 docs/chi/figures/aust.pdf
create mode 100644 docs/chi/figures/aust.svg
create mode 100644 docs/chi/figures/chess9x9-3.pdf
create mode 100644 docs/chi/figures/chess9x9-3.svg
create mode 100644 docs/chi/figures/chess9x9-4.pdf
create mode 100644 docs/chi/figures/chess9x9-4.svg
create mode 100644 docs/chi/figures/cpprofiler/doc_basic_pt.png
create mode 100644 docs/chi/figures/cpprofiler/doc_bookmark1.png
create mode 100644 docs/chi/figures/cpprofiler/doc_bookmark_added.png
create mode 100644 docs/chi/figures/cpprofiler/doc_bookmark_list.png
create mode 100644 docs/chi/figures/cpprofiler/doc_collapsed.png
create mode 100644 docs/chi/figures/cpprofiler/doc_conductor.png
create mode 100644 docs/chi/figures/cpprofiler/doc_icicle_tree_restarts.png
create mode 100644 docs/chi/figures/cpprofiler/doc_merged_tree.png
create mode 100644 docs/chi/figures/cpprofiler/doc_ng_analysis_result.png
create mode 100644 docs/chi/figures/cpprofiler/doc_pt_compressed.png
create mode 100644 docs/chi/figures/cpprofiler/doc_pt_large.png
create mode 100644 docs/chi/figures/cpprofiler/doc_pt_large2.png
create mode 100644 docs/chi/figures/cpprofiler/doc_replaying_small_example.png
create mode 100644 docs/chi/figures/cpprofiler/doc_restarts.png
create mode 100644 docs/chi/figures/cpprofiler/doc_restarts_lantern.png
create mode 100644 docs/chi/figures/cpprofiler/doc_traditional.png
create mode 100644 docs/chi/figures/cpprofiler/doc_two_execs.png
create mode 100644 docs/chi/figures/dfa.graffle
create mode 100644 docs/chi/figures/dfa.pdf
create mode 100644 docs/chi/figures/dfa.svg
create mode 100644 docs/chi/figures/findmus/ide_depth_1.png
create mode 100644 docs/chi/figures/findmus/ide_depth_fzn.png
create mode 100644 docs/chi/figures/findmus/ide_depth_mzn.png
create mode 100644 docs/chi/figures/globalizer/ide_globalized.png
create mode 100644 docs/chi/figures/globalizer/ide_select_data.png
create mode 100644 docs/chi/figures/handlers.pdf
create mode 100644 docs/chi/figures/handlers.svg
create mode 100644 docs/chi/figures/ide-data-enter.jpg
create mode 100644 docs/chi/figures/ide-data-file.jpg
create mode 100644 docs/chi/figures/ide-gurobi.jpg
create mode 100644 docs/chi/figures/ide-preferences.jpg
create mode 100644 docs/chi/figures/ide-project-explorer.jpg
create mode 100644 docs/chi/figures/ide-run.jpg
create mode 100644 docs/chi/figures/ide-submit-coursera.jpg
create mode 100644 docs/chi/figures/lightup.pdf
create mode 100644 docs/chi/figures/lightup.svg
create mode 100644 docs/chi/figures/lightup2.pdf
create mode 100644 docs/chi/figures/lightup2.svg
create mode 100644 docs/chi/figures/magic-series-profiling.jpg
create mode 100644 docs/chi/figures/mzn-ide-data.jpg
create mode 100644 docs/chi/figures/mzn-ide-playground-data.jpg
create mode 100644 docs/chi/figures/mzn-ide-playground-param.jpg
create mode 100644 docs/chi/figures/mzn-ide-playground.jpg
create mode 100644 docs/chi/figures/mzn-ide-playground2.jpg
create mode 100644 docs/chi/figures/mzn-ide-playground3.jpg
create mode 100644 docs/chi/figures/mzn-ide-playground4.jpg
create mode 100644 docs/chi/figures/mzn-ide-playground5.jpg
create mode 100644 docs/chi/figures/mzn-ide-select-data.jpg
create mode 100644 docs/chi/figures/queens_symm.graffle
create mode 100644 docs/chi/figures/queens_symm.pdf
create mode 100644 docs/chi/figures/queens_symm.svg
create mode 100644 docs/chi/figures/queens_symm_unsat.pdf
create mode 100644 docs/chi/figures/queens_symm_unsat.svg
create mode 100644 docs/chi/figures/solver-conf-window.jpg
create mode 100644 docs/chi/figures/solver-configuration.jpg
create mode 100644 docs/chi/figures/sudoku.pdf
create mode 100644 docs/chi/figures/sudoku.svg
create mode 100644 docs/chi/figures/tree-4.pdf
create mode 100644 docs/chi/figures/tree-4.svg
create mode 100644 docs/chi/figures/trolleys.pdf
create mode 100644 docs/chi/figures/trolleys.svg
create mode 100644 docs/chi/figures/wedding.pdf
create mode 100644 docs/chi/figures/wedding.svg
create mode 100644 docs/chi/find_mus.rst
create mode 100644 docs/chi/flattening.rst
create mode 100644 docs/chi/fzn-grammar.mzn
create mode 100644 docs/chi/fzn-spec.rst
create mode 100644 docs/chi/globalizer.rst
create mode 100644 docs/chi/grammar.mzn
create mode 100644 docs/chi/index.rst
create mode 100644 docs/chi/installation.rst
create mode 100644 docs/chi/intro.rst
create mode 100644 docs/chi/jupyter.rst
create mode 100644 docs/chi/minizinc_ide.rst
create mode 100644 docs/chi/modelling.rst
create mode 100644 docs/chi/modelling2.rst
create mode 100644 docs/chi/mzn_search.rst
create mode 100644 docs/chi/optiontypes.rst
create mode 100644 docs/chi/output.mzn
create mode 100644 docs/chi/part_1_overview.rst
create mode 100644 docs/chi/part_2_tutorial.rst
create mode 100644 docs/chi/part_3_user_manual.rst
create mode 100644 docs/chi/part_4_reference.rst
create mode 100644 docs/chi/predicates.rst
create mode 100644 docs/chi/python.rst
create mode 100644 docs/chi/sat.rst
create mode 100644 docs/chi/spec.rst
create mode 100644 docs/en/Makefile
create mode 100644 docs/en/_static/favicon/android-icon-144x144.png
create mode 100644 docs/en/_static/favicon/android-icon-192x192.png
create mode 100644 docs/en/_static/favicon/android-icon-36x36.png
create mode 100644 docs/en/_static/favicon/android-icon-48x48.png
create mode 100644 docs/en/_static/favicon/android-icon-72x72.png
create mode 100644 docs/en/_static/favicon/android-icon-96x96.png
create mode 100644 docs/en/_static/favicon/apple-icon-114x114.png
create mode 100644 docs/en/_static/favicon/apple-icon-120x120.png
create mode 100644 docs/en/_static/favicon/apple-icon-144x144.png
create mode 100644 docs/en/_static/favicon/apple-icon-152x152.png
create mode 100644 docs/en/_static/favicon/apple-icon-180x180.png
create mode 100644 docs/en/_static/favicon/apple-icon-57x57.png
create mode 100644 docs/en/_static/favicon/apple-icon-60x60.png
create mode 100644 docs/en/_static/favicon/apple-icon-72x72.png
create mode 100644 docs/en/_static/favicon/apple-icon-76x76.png
create mode 100644 docs/en/_static/favicon/apple-icon-precomposed.png
create mode 100644 docs/en/_static/favicon/apple-icon.png
create mode 100644 docs/en/_static/favicon/browserconfig.xml
create mode 100644 docs/en/_static/favicon/favicon-16x16.png
create mode 100644 docs/en/_static/favicon/favicon-32x32.png
create mode 100644 docs/en/_static/favicon/favicon-96x96.png
create mode 100644 docs/en/_static/favicon/favicon.ico
create mode 100644 docs/en/_static/favicon/manifest.json
create mode 100644 docs/en/_static/favicon/ms-icon-144x144.png
create mode 100644 docs/en/_static/favicon/ms-icon-150x150.png
create mode 100644 docs/en/_static/favicon/ms-icon-310x310.png
create mode 100644 docs/en/_static/favicon/ms-icon-70x70.png
create mode 100644 docs/en/_static/js/doc-links.js
create mode 100644 docs/en/_static/style.css
create mode 100644 docs/en/_templates/footer.html
create mode 100644 docs/en/_templates/layout.html
create mode 100644 docs/en/api_interfacing.rst
create mode 100644 docs/en/basic_steps.rst
create mode 100644 docs/en/changelog.rst
create mode 100644 docs/en/checkers.rst
create mode 100644 docs/en/command_line.rst
create mode 100755 docs/en/conf.py
create mode 100644 docs/en/cpprofiler.rst
create mode 100644 docs/en/efficient.rst
create mode 100644 docs/en/examples/allinterval.mzn
create mode 100644 docs/en/examples/allinterval2.mzn
create mode 100644 docs/en/examples/allinterval3.mzn
create mode 100644 docs/en/examples/assignment-combine-enums.mzn
create mode 100644 docs/en/examples/assignment-extend-enum.mzn
create mode 100644 docs/en/examples/aust-2.mzc.mzn
create mode 100644 docs/en/examples/aust-3.mzc.mzn
create mode 100644 docs/en/examples/aust-enum.mzn
create mode 100644 docs/en/examples/aust.mzc.mzn
create mode 100644 docs/en/examples/aust.mzn
create mode 100644 docs/en/examples/bboolsum.mzn
create mode 100644 docs/en/examples/bddsum.mzn
create mode 100644 docs/en/examples/binarysum.mzn
create mode 100644 docs/en/examples/cakes.mzn
create mode 100644 docs/en/examples/cakes2.mzn
create mode 100644 docs/en/examples/cars.mzn
create mode 100644 docs/en/examples/cars_data.dzn
create mode 100644 docs/en/examples/cnonoverlap.fzn
create mode 100644 docs/en/examples/cnonoverlap.mzn
create mode 100644 docs/en/examples/command_line/data.dzn
create mode 100644 docs/en/examples/command_line/model.mzn
create mode 100644 docs/en/examples/count1.mzn
create mode 100644 docs/en/examples/count2.mzn
create mode 100644 docs/en/examples/count3.mzn
create mode 100644 docs/en/examples/cumulative.mzn
create mode 100644 docs/en/examples/disjunctive.mzn
create mode 100644 docs/en/examples/dummy.mzn
create mode 100644 docs/en/examples/flexible-js.mzn
create mode 100644 docs/en/examples/golomb.mzn
create mode 100644 docs/en/examples/grocery.mzn
create mode 100644 docs/en/examples/inverse.mzn
create mode 100644 docs/en/examples/jdata.dzn
create mode 100644 docs/en/examples/jobshop.fzn
create mode 100644 docs/en/examples/jobshop.mzn
create mode 100644 docs/en/examples/jobshop.ozn
create mode 100644 docs/en/examples/jobshop2.mzn
create mode 100644 docs/en/examples/jobshop3.mzn
create mode 100644 docs/en/examples/knapsack.mzn
create mode 100644 docs/en/examples/laplace.mzn
create mode 100644 docs/en/examples/latin.mzn
create mode 100644 docs/en/examples/latin_squares.mzn
create mode 100644 docs/en/examples/latinbool.mzn
create mode 100644 docs/en/examples/layout.dzn
create mode 100644 docs/en/examples/lightup.dzn
create mode 100644 docs/en/examples/lightup.mzn
create mode 100644 docs/en/examples/linear.mzn
create mode 100644 docs/en/examples/loan.mzn
create mode 100644 docs/en/examples/loan1.dzn
create mode 100644 docs/en/examples/loan2.dzn
create mode 100644 docs/en/examples/loan3.dzn
create mode 100644 docs/en/examples/magic-series.mzn
create mode 100644 docs/en/examples/magic-series2.mzn
create mode 100644 docs/en/examples/manhattan.mzn
create mode 100644 docs/en/examples/meal-zinc.dzn
create mode 100644 docs/en/examples/meal.dzn
create mode 100644 docs/en/examples/meal.mzn
create mode 100644 docs/en/examples/moving.dzn
create mode 100644 docs/en/examples/moving.mzn
create mode 100644 docs/en/examples/nqueens-ann.mzn
create mode 100644 docs/en/examples/nqueens.mzc.mzn
create mode 100644 docs/en/examples/nqueens.mzn
create mode 100644 docs/en/examples/nqueens_sym.mzn
create mode 100644 docs/en/examples/nurse.dzn
create mode 100644 docs/en/examples/nurse.mzn
create mode 100644 docs/en/examples/oesort.mzn
create mode 100644 docs/en/examples/pantry.dzn
create mode 100644 docs/en/examples/pantry2.dzn
create mode 100644 docs/en/examples/photo.mzc.mzn
create mode 100644 docs/en/examples/photo.mzn
create mode 100644 docs/en/examples/prod-planning-data.dzn
create mode 100644 docs/en/examples/prod-planning.mzn
create mode 100644 docs/en/examples/reflection.mzn
create mode 100644 docs/en/examples/scope.mzn
create mode 100644 docs/en/examples/send-more-money.mzn
create mode 100644 docs/en/examples/social-golfers.dzn
create mode 100644 docs/en/examples/social-golfers.mzn
create mode 100644 docs/en/examples/sonet.dzn
create mode 100644 docs/en/examples/stable-marriage.dzn
create mode 100644 docs/en/examples/stable-marriage.mzn
create mode 100644 docs/en/examples/sudoku.dzn
create mode 100644 docs/en/examples/sudoku.mzn
create mode 100644 docs/en/examples/uboolsum.mzn
create mode 100644 docs/en/examples/unbounded.mzn
create mode 100644 docs/en/examples/unconstrained.mzn
create mode 100644 docs/en/examples/wedding.mzn
create mode 100644 docs/en/examples/wedding2.mzn
create mode 100644 docs/en/figures/MiniZn_logo_2.pdf
create mode 100644 docs/en/figures/MiniZn_logo_2.svg
create mode 100644 docs/en/figures/MiniZn_logo_2_small.pdf
create mode 100644 docs/en/figures/aust.pdf
create mode 100644 docs/en/figures/aust.svg
create mode 100644 docs/en/figures/chess9x9-3.pdf
create mode 100644 docs/en/figures/chess9x9-3.svg
create mode 100644 docs/en/figures/chess9x9-4.pdf
create mode 100644 docs/en/figures/chess9x9-4.svg
create mode 100644 docs/en/figures/cpprofiler/doc_basic_pt.png
create mode 100644 docs/en/figures/cpprofiler/doc_bookmark1.png
create mode 100644 docs/en/figures/cpprofiler/doc_bookmark_added.png
create mode 100644 docs/en/figures/cpprofiler/doc_bookmark_list.png
create mode 100644 docs/en/figures/cpprofiler/doc_collapsed.png
create mode 100644 docs/en/figures/cpprofiler/doc_conductor.png
create mode 100644 docs/en/figures/cpprofiler/doc_icicle_tree_restarts.png
create mode 100644 docs/en/figures/cpprofiler/doc_merged_tree.png
create mode 100644 docs/en/figures/cpprofiler/doc_ng_analysis_result.png
create mode 100644 docs/en/figures/cpprofiler/doc_pt_compressed.png
create mode 100644 docs/en/figures/cpprofiler/doc_pt_large.png
create mode 100644 docs/en/figures/cpprofiler/doc_pt_large2.png
create mode 100644 docs/en/figures/cpprofiler/doc_replaying_small_example.png
create mode 100644 docs/en/figures/cpprofiler/doc_restarts.png
create mode 100644 docs/en/figures/cpprofiler/doc_restarts_lantern.png
create mode 100644 docs/en/figures/cpprofiler/doc_ss_analysis.png
create mode 100644 docs/en/figures/cpprofiler/doc_ss_analysis_hist.png
create mode 100644 docs/en/figures/cpprofiler/doc_traditional.png
create mode 100644 docs/en/figures/cpprofiler/doc_two_execs.png
create mode 100644 docs/en/figures/dfa.graffle
create mode 100644 docs/en/figures/dfa.pdf
create mode 100644 docs/en/figures/dfa.svg
create mode 100644 docs/en/figures/findmus/ide_depth_1.png
create mode 100644 docs/en/figures/findmus/ide_depth_fzn.png
create mode 100644 docs/en/figures/findmus/ide_depth_mzn.png
create mode 100644 docs/en/figures/globalizer/ide_globalized.png
create mode 100644 docs/en/figures/globalizer/ide_select_data.png
create mode 100644 docs/en/figures/handlers.pdf
create mode 100644 docs/en/figures/handlers.svg
create mode 100644 docs/en/figures/ide-data-enter.jpg
create mode 100644 docs/en/figures/ide-data-file.jpg
create mode 100644 docs/en/figures/ide-gurobi.jpg
create mode 100644 docs/en/figures/ide-preferences.jpg
create mode 100644 docs/en/figures/ide-project-explorer.jpg
create mode 100644 docs/en/figures/ide-run.jpg
create mode 100644 docs/en/figures/ide-submit-coursera.jpg
create mode 100644 docs/en/figures/lightup.pdf
create mode 100644 docs/en/figures/lightup.svg
create mode 100644 docs/en/figures/lightup2.pdf
create mode 100644 docs/en/figures/lightup2.svg
create mode 100644 docs/en/figures/magic-series-profiling.jpg
create mode 100644 docs/en/figures/mzn-ide-data.jpg
create mode 100644 docs/en/figures/mzn-ide-playground-data.jpg
create mode 100644 docs/en/figures/mzn-ide-playground-param.jpg
create mode 100644 docs/en/figures/mzn-ide-playground.jpg
create mode 100644 docs/en/figures/mzn-ide-playground2.jpg
create mode 100644 docs/en/figures/mzn-ide-playground3.jpg
create mode 100644 docs/en/figures/mzn-ide-playground4.jpg
create mode 100644 docs/en/figures/mzn-ide-playground5.jpg
create mode 100644 docs/en/figures/mzn-ide-select-data.jpg
create mode 100644 docs/en/figures/queens_symm.graffle
create mode 100644 docs/en/figures/queens_symm.pdf
create mode 100644 docs/en/figures/queens_symm.svg
create mode 100644 docs/en/figures/queens_symm_unsat.pdf
create mode 100644 docs/en/figures/queens_symm_unsat.svg
create mode 100644 docs/en/figures/solver-configuration.jpg
create mode 100644 docs/en/figures/sudoku.pdf
create mode 100644 docs/en/figures/sudoku.svg
create mode 100644 docs/en/figures/tree-4.pdf
create mode 100644 docs/en/figures/tree-4.svg
create mode 100644 docs/en/figures/trolleys.pdf
create mode 100644 docs/en/figures/trolleys.svg
create mode 100644 docs/en/figures/wedding.pdf
create mode 100644 docs/en/figures/wedding.svg
create mode 100644 docs/en/find_mus.rst
create mode 100644 docs/en/flattening.rst
create mode 100644 docs/en/fzn-grammar.mzn
create mode 100644 docs/en/fzn-spec.rst
create mode 100644 docs/en/globalizer.rst
create mode 100644 docs/en/grammar.mzn
create mode 100644 docs/en/index.rst
create mode 100644 docs/en/installation.rst
create mode 100644 docs/en/installation_detailed.rst
create mode 100644 docs/en/installation_detailed_linux.rst
create mode 100644 docs/en/installation_detailed_wasm.rst
create mode 100644 docs/en/installation_detailed_windows.rst
create mode 100644 docs/en/intro.rst
create mode 100644 docs/en/jupyter.rst
create mode 100644 docs/en/minizinc_ide.rst
create mode 100644 docs/en/modelling.rst
create mode 100644 docs/en/modelling2.rst
create mode 100644 docs/en/mzn_search.rst
create mode 100644 docs/en/optiontypes.rst
create mode 100644 docs/en/output.mzn
create mode 100644 docs/en/part_1_overview.rst
create mode 100644 docs/en/part_2_tutorial.rst
create mode 100644 docs/en/part_3_user_manual.rst
create mode 100644 docs/en/part_4_reference.rst
create mode 100644 docs/en/predicates.rst
create mode 100644 docs/en/python.rst
create mode 100644 docs/en/sat.rst
create mode 100644 docs/en/solvers.rst
create mode 100644 docs/en/spec.rst
create mode 100644 docs/es/Leeme.txt
create mode 100644 docs/es/Makefile
create mode 100644 docs/es/_others/tasks_to_be_translated.xlsx
create mode 100644 docs/es/_static/favicon/android-icon-144x144.png
create mode 100644 docs/es/_static/favicon/android-icon-192x192.png
create mode 100644 docs/es/_static/favicon/android-icon-36x36.png
create mode 100644 docs/es/_static/favicon/android-icon-48x48.png
create mode 100644 docs/es/_static/favicon/android-icon-72x72.png
create mode 100644 docs/es/_static/favicon/android-icon-96x96.png
create mode 100644 docs/es/_static/favicon/apple-icon-114x114.png
create mode 100644 docs/es/_static/favicon/apple-icon-120x120.png
create mode 100644 docs/es/_static/favicon/apple-icon-144x144.png
create mode 100644 docs/es/_static/favicon/apple-icon-152x152.png
create mode 100644 docs/es/_static/favicon/apple-icon-180x180.png
create mode 100644 docs/es/_static/favicon/apple-icon-57x57.png
create mode 100644 docs/es/_static/favicon/apple-icon-60x60.png
create mode 100644 docs/es/_static/favicon/apple-icon-72x72.png
create mode 100644 docs/es/_static/favicon/apple-icon-76x76.png
create mode 100644 docs/es/_static/favicon/apple-icon-precomposed.png
create mode 100644 docs/es/_static/favicon/apple-icon.png
create mode 100644 docs/es/_static/favicon/browserconfig.xml
create mode 100644 docs/es/_static/favicon/favicon-16x16.png
create mode 100644 docs/es/_static/favicon/favicon-32x32.png
create mode 100644 docs/es/_static/favicon/favicon-96x96.png
create mode 100644 docs/es/_static/favicon/favicon.ico
create mode 100644 docs/es/_static/favicon/manifest.json
create mode 100644 docs/es/_static/favicon/ms-icon-144x144.png
create mode 100644 docs/es/_static/favicon/ms-icon-150x150.png
create mode 100644 docs/es/_static/favicon/ms-icon-310x310.png
create mode 100644 docs/es/_static/favicon/ms-icon-70x70.png
create mode 100644 docs/es/_static/style.css
create mode 100644 docs/es/_templates/footer.html
create mode 100644 docs/es/_templates/layout.html
create mode 100755 docs/es/conf.py
create mode 100644 docs/es/efficient.rst
create mode 100644 docs/es/examples/allinterval2_es.mzn
create mode 100644 docs/es/examples/allinterval3_es.mzn
create mode 100644 docs/es/examples/allinterval_es.mzn
create mode 100644 docs/es/examples/aust-enum_es.mzn
create mode 100644 docs/es/examples/aust_es.mzn
create mode 100644 docs/es/examples/bboolsum_es.mzn
create mode 100644 docs/es/examples/bddsum_es.mzn
create mode 100644 docs/es/examples/binarysum.mzn
create mode 100644 docs/es/examples/binarysum_es.mzn
create mode 100644 docs/es/examples/cakes2_es.mzn
create mode 100644 docs/es/examples/cakes_es.mzn
create mode 100644 docs/es/examples/cnonoverlap_es.fzn
create mode 100644 docs/es/examples/cnonoverlap_es.mzn
create mode 100644 docs/es/examples/count1_es.mzn
create mode 100644 docs/es/examples/count2_es.mzn
create mode 100644 docs/es/examples/count3_es.mzn
create mode 100644 docs/es/examples/cumulative_es.mzn
create mode 100644 docs/es/examples/disjunctive_es.mzn
create mode 100644 docs/es/examples/dummy_es.mzn
create mode 100644 docs/es/examples/flexible-js_es.mzn
create mode 100644 docs/es/examples/golomb_es.mzn
create mode 100644 docs/es/examples/grocery_es.mzn
create mode 100644 docs/es/examples/inverse_es.mzn
create mode 100644 docs/es/examples/jdata_es.dzn
create mode 100644 docs/es/examples/jobshop2_es.mzn
create mode 100644 docs/es/examples/jobshop3_es.mzn
create mode 100644 docs/es/examples/jobshop_es.fzn
create mode 100644 docs/es/examples/jobshop_es.mzn
create mode 100644 docs/es/examples/jobshop_es.ozn
create mode 100644 docs/es/examples/knapsack_es.mzn
create mode 100644 docs/es/examples/laplace_es.mzn
create mode 100644 docs/es/examples/latin_es.mzn
create mode 100644 docs/es/examples/latinbool_es.mzn
create mode 100644 docs/es/examples/layout_es.dzn
create mode 100644 docs/es/examples/lightup_es.dzn
create mode 100644 docs/es/examples/lightup_es.mzn
create mode 100644 docs/es/examples/linear_es.mzn
create mode 100644 docs/es/examples/loan1_es.dzn
create mode 100644 docs/es/examples/loan2_es.dzn
create mode 100644 docs/es/examples/loan3_es.dzn
create mode 100644 docs/es/examples/loan_es.mzn
create mode 100644 docs/es/examples/magic-series2_es.mzn
create mode 100644 docs/es/examples/magic-series_es.mzn
create mode 100644 docs/es/examples/manhattan_es.mzn
create mode 100644 docs/es/examples/meal-zinc_es.dzn
create mode 100644 docs/es/examples/meal_es.dzn
create mode 100644 docs/es/examples/meal_es.mzn
create mode 100644 docs/es/examples/moving_es.dzn
create mode 100644 docs/es/examples/moving_es.mzn
create mode 100644 docs/es/examples/nqueens-ann_es.mzn
create mode 100644 docs/es/examples/nqueens_es.mzn
create mode 100644 docs/es/examples/nqueens_sym_es.mzn
create mode 100644 docs/es/examples/nurse_es.mzn
create mode 100644 docs/es/examples/oesort.mzn
create mode 100644 docs/es/examples/oesort_es.mzn
create mode 100644 docs/es/examples/pantry2_es.dzn
create mode 100644 docs/es/examples/pantry_es.dzn
create mode 100644 docs/es/examples/reflection_es.mzn
create mode 100644 docs/es/examples/scope_es.mzn
create mode 100644 docs/es/examples/send-more-money_es.mzn
create mode 100644 docs/es/examples/simple-prod-planning-data_es.dzn
create mode 100644 docs/es/examples/simple-prod-planning_es.mzn
create mode 100644 docs/es/examples/social-golfers_es.dzn
create mode 100644 docs/es/examples/social-golfers_es.fzn
create mode 100644 docs/es/examples/social-golfers_es.mzn
create mode 100644 docs/es/examples/social-golfers_es.ozn
create mode 100644 docs/es/examples/sonet_es.dzn
create mode 100644 docs/es/examples/stable-marriage_es.dzn
create mode 100644 docs/es/examples/stable-marriage_es.mzn
create mode 100644 docs/es/examples/sudoku_es.dzn
create mode 100644 docs/es/examples/sudoku_es.mzn
create mode 100644 docs/es/examples/uboolsum_es.mzn
create mode 100644 docs/es/examples/unbounded_es.mzn
create mode 100644 docs/es/examples/unconstrained_es.mzn
create mode 100644 docs/es/examples/wedding2_es.mzn
create mode 100644 docs/es/examples/wedding_es.mzn
create mode 100644 docs/es/figures/MiniZn_logo_2.pdf
create mode 100644 docs/es/figures/MiniZn_logo_2.svg
create mode 100644 docs/es/figures/MiniZn_logo_2_small.pdf
create mode 100644 docs/es/figures/aust.pdf
create mode 100644 docs/es/figures/aust.svg
create mode 100644 docs/es/figures/chess9x9-3.pdf
create mode 100644 docs/es/figures/chess9x9-3.svg
create mode 100644 docs/es/figures/chess9x9-4.pdf
create mode 100644 docs/es/figures/chess9x9-4.svg
create mode 100644 docs/es/figures/dfa.graffle
create mode 100644 docs/es/figures/dfa.pdf
create mode 100644 docs/es/figures/dfa.svg
create mode 100644 docs/es/figures/handlers_es.pdf
create mode 100644 docs/es/figures/handlers_es.svg
create mode 100644 docs/es/figures/lightup.pdf
create mode 100644 docs/es/figures/lightup.svg
create mode 100644 docs/es/figures/lightup2.pdf
create mode 100644 docs/es/figures/lightup2.svg
create mode 100644 docs/es/figures/queens_symm.graffle
create mode 100644 docs/es/figures/queens_symm_es.pdf
create mode 100644 docs/es/figures/queens_symm_es.svg
create mode 100644 docs/es/figures/queens_symm_unsat.pdf
create mode 100644 docs/es/figures/queens_symm_unsat.svg
create mode 100644 docs/es/figures/sudoku.pdf
create mode 100644 docs/es/figures/sudoku.svg
create mode 100644 docs/es/figures/tree-4.pdf
create mode 100644 docs/es/figures/tree-4.svg
create mode 100644 docs/es/figures/trolleys_es.pdf
create mode 100644 docs/es/figures/trolleys_es.svg
create mode 100644 docs/es/figures/wedding_es.pdf
create mode 100644 docs/es/figures/wedding_es.svg
create mode 100644 docs/es/flattening.rst
create mode 100644 docs/es/grammar.mzn
create mode 100644 docs/es/index.rst
create mode 100644 docs/es/installation.rst
create mode 100644 docs/es/intro.rst
create mode 100644 docs/es/modelling.rst
create mode 100644 docs/es/modelling2.rst
create mode 100644 docs/es/mzn_search.rst
create mode 100644 docs/es/optiontypes.rst
create mode 100644 docs/es/output.mzn
create mode 100644 docs/es/part_1_introduction.rst
create mode 100644 docs/es/part_2_tutorial.rst
create mode 100644 docs/es/part_3_reference.rst
create mode 100644 docs/es/predicates.rst
create mode 100644 docs/es/sat.rst
create mode 100644 docs/es/spec.rst
create mode 100644 docs/utils/bugref.py
create mode 100644 docs/utils/defblock.py
create mode 100644 docs/utils/inlinesyntaxhighlight.py
create mode 100644 docs/utils/minizinc_lexer.py
create mode 100644 docs/utils/mznstyle.sty
create mode 100755 docs/utils/sphinxtogithub.py
create mode 100644 include/minizinc/MIPdomains.hh
create mode 100644 include/minizinc/_thirdparty/b64/cdecode.h
create mode 100644 include/minizinc/_thirdparty/b64/cencode.h
create mode 100644 include/minizinc/_thirdparty/b64/decode.h
create mode 100644 include/minizinc/_thirdparty/b64/encode.h
create mode 100644 include/minizinc/_thirdparty/miniz.h
create mode 100644 include/minizinc/algorithms/min_cut.h
create mode 100644 include/minizinc/ast.hh
create mode 100644 include/minizinc/ast.hpp
create mode 100644 include/minizinc/astexception.hh
create mode 100644 include/minizinc/astiterator.hh
create mode 100644 include/minizinc/astmap.hh
create mode 100644 include/minizinc/aststring.hh
create mode 100644 include/minizinc/astvec.hh
create mode 100644 include/minizinc/builtins.hh
create mode 100644 include/minizinc/chain_compressor.hh
create mode 100644 include/minizinc/config.hh.in
create mode 100644 include/minizinc/copy.hh
create mode 100644 include/minizinc/eval_par.hh
create mode 100644 include/minizinc/exception.hh
create mode 100644 include/minizinc/file_utils.hh
create mode 100644 include/minizinc/flat_exp.hh
create mode 100644 include/minizinc/flatten.hh
create mode 100644 include/minizinc/flatten_internal.hh
create mode 100644 include/minizinc/flattener.hh
create mode 100644 include/minizinc/gc.hh
create mode 100644 include/minizinc/hash.hh
create mode 100644 include/minizinc/htmlprinter.hh
create mode 100644 include/minizinc/interrupt.hh
create mode 100644 include/minizinc/iter.hh
create mode 100644 include/minizinc/json_parser.hh
create mode 100644 include/minizinc/model.hh
create mode 100644 include/minizinc/optimize.hh
create mode 100644 include/minizinc/optimize_constraints.hh
create mode 100644 include/minizinc/output.hh
create mode 100644 include/minizinc/param_config.hh
create mode 100644 include/minizinc/parser.hh
create mode 100644 include/minizinc/passes/compile_pass.hh
create mode 100644 include/minizinc/passes/gecode_pass.hh
create mode 100644 include/minizinc/pathfileprinter.hh
create mode 100644 include/minizinc/plugin.hh
create mode 100644 include/minizinc/prettyprinter.hh
create mode 100644 include/minizinc/process.hh
create mode 100644 include/minizinc/solns2out.hh
create mode 100644 include/minizinc/solver.hh
create mode 100644 include/minizinc/solver_config.hh
create mode 100644 include/minizinc/solver_instance.hh
create mode 100644 include/minizinc/solver_instance_base.hh
create mode 100644 include/minizinc/solver_instance_defs.hh
create mode 100644 include/minizinc/solvers/MIP/MIP_cplex_solverfactory.hh
create mode 100644 include/minizinc/solvers/MIP/MIP_cplex_wrap.hh
create mode 100644 include/minizinc/solvers/MIP/MIP_gurobi_solverfactory.hh
create mode 100644 include/minizinc/solvers/MIP/MIP_gurobi_wrap.hh
create mode 100644 include/minizinc/solvers/MIP/MIP_osicbc_solverfactory.hh
create mode 100644 include/minizinc/solvers/MIP/MIP_osicbc_wrap.hh
create mode 100644 include/minizinc/solvers/MIP/MIP_scip_solverfactory.hh
create mode 100644 include/minizinc/solvers/MIP/MIP_scip_wrap.hh
create mode 100644 include/minizinc/solvers/MIP/MIP_solverinstance.hh
create mode 100644 include/minizinc/solvers/MIP/MIP_solverinstance.hpp
create mode 100644 include/minizinc/solvers/MIP/MIP_wrap.hh
create mode 100644 include/minizinc/solvers/MIP/MIP_xpress_solverfactory.hh
create mode 100644 include/minizinc/solvers/MIP/MIP_xpress_wrap.hh
create mode 100644 include/minizinc/solvers/fzn_solverfactory.hh
create mode 100644 include/minizinc/solvers/fzn_solverinstance.hh
create mode 100644 include/minizinc/solvers/geas/geas_constraints.hh
create mode 100644 include/minizinc/solvers/geas_solverfactory.hh
create mode 100644 include/minizinc/solvers/geas_solverinstance.hh
create mode 100644 include/minizinc/solvers/gecode/fzn_space.hh
create mode 100644 include/minizinc/solvers/gecode/gecode_constraints.hh
create mode 100644 include/minizinc/solvers/gecode_solverfactory.hh
create mode 100644 include/minizinc/solvers/gecode_solverinstance.hh
create mode 100644 include/minizinc/solvers/mzn_solverfactory.hh
create mode 100644 include/minizinc/solvers/mzn_solverinstance.hh
create mode 100644 include/minizinc/solvers/nl/nl_components.hh
create mode 100644 include/minizinc/solvers/nl/nl_file.hh
create mode 100644 include/minizinc/solvers/nl/nl_solreader.hh
create mode 100644 include/minizinc/solvers/nl/nl_solverfactory.hh
create mode 100644 include/minizinc/solvers/nl/nl_solverinstance.hh
create mode 100644 include/minizinc/statistics.hh
create mode 100644 include/minizinc/support/regex.hh
create mode 100644 include/minizinc/timer.hh
create mode 100644 include/minizinc/type.hh
create mode 100644 include/minizinc/typecheck.hh
create mode 100644 include/minizinc/utils.hh
create mode 100644 include/minizinc/utils_savestream.hh
create mode 100644 include/minizinc/values.hh
create mode 100644 lib/MIPdomains.cpp
create mode 100644 lib/algorithms/min_cut.cpp
create mode 100644 lib/ast.cpp
create mode 100644 lib/astexception.cpp
create mode 100644 lib/astmap.cpp
create mode 100644 lib/aststring.cpp
create mode 100644 lib/astvec.cpp
create mode 100644 lib/builtins.cpp
create mode 100644 lib/cached/lexer.yy.cpp
create mode 100644 lib/cached/md5_cached.cmake
create mode 100644 lib/cached/minizinc/parser.tab.hh
create mode 100644 lib/cached/minizinc/support/regex_parser.tab.hh
create mode 100644 lib/cached/parser.tab.cpp
create mode 100644 lib/cached/regex_lexer.yy.cpp
create mode 100644 lib/cached/regex_parser.tab.cpp
create mode 100644 lib/cdecode.c
create mode 100644 lib/cencode.c
create mode 100644 lib/chain_compressor.cpp
create mode 100644 lib/copy.cpp
create mode 100644 lib/eval_par.cpp
create mode 100644 lib/file_utils.cpp
create mode 100644 lib/flatten.cpp
create mode 100644 lib/flatten/flat_exp.cpp
create mode 100644 lib/flatten/flatten_anon.cpp
create mode 100644 lib/flatten/flatten_arrayaccess.cpp
create mode 100644 lib/flatten/flatten_arraylit.cpp
create mode 100644 lib/flatten/flatten_binop.cpp
create mode 100644 lib/flatten/flatten_call.cpp
create mode 100644 lib/flatten/flatten_comp.cpp
create mode 100644 lib/flatten/flatten_id.cpp
create mode 100644 lib/flatten/flatten_ite.cpp
create mode 100644 lib/flatten/flatten_let.cpp
create mode 100644 lib/flatten/flatten_par.cpp
create mode 100644 lib/flatten/flatten_setlit.cpp
create mode 100644 lib/flatten/flatten_unop.cpp
create mode 100644 lib/flatten/flatten_vardecl.cpp
create mode 100644 lib/flattener.cpp
create mode 100644 lib/gc.cpp
create mode 100644 lib/htmlprinter.cpp
create mode 100644 lib/json_parser.cpp
create mode 100644 lib/lexer.lxx
create mode 100644 lib/model.cpp
create mode 100644 lib/optimize.cpp
create mode 100644 lib/optimize_constraints.cpp
create mode 100644 lib/output.cpp
create mode 100644 lib/param_config.cpp
create mode 100644 lib/parser.cpp
create mode 100644 lib/parser.yxx
create mode 100644 lib/passes/compile_pass.cpp
create mode 100644 lib/passes/gecode_pass.cpp
create mode 100644 lib/pathfileprinter.cpp
create mode 100644 lib/prettyprinter.cpp
create mode 100644 lib/solns2out.cpp
create mode 100644 lib/solver.cpp
create mode 100644 lib/solver_config.cpp
create mode 100644 lib/solver_instance_base.cpp
create mode 100644 lib/statistics.cpp
create mode 100644 lib/support/regex/lexer.lxx
create mode 100644 lib/support/regex/parser.yxx
create mode 100644 lib/thirdparty/miniz.c
create mode 100644 lib/type.cpp
create mode 100644 lib/typecheck.cpp
create mode 100644 lib/utils_savestream.cpp
create mode 100644 lib/values.cpp
create mode 100644 minizinc.cpp
create mode 100644 mzn2doc.cpp
create mode 100644 share/minizinc/Preferences.json
create mode 100644 share/minizinc/g12_fd/all_different_int.mzn
create mode 100644 share/minizinc/g12_fd/cumulative.mzn
create mode 100644 share/minizinc/g12_fd/global_cardinality_low_up.mzn
create mode 100644 share/minizinc/g12_lazyfd/all_different_int.mzn
create mode 100644 share/minizinc/g12_lazyfd/redefinitions.mzn
create mode 100644 share/minizinc/geas/fzn_all_different_int.mzn
create mode 100644 share/minizinc/geas/fzn_alldifferent_except_0.mzn
create mode 100644 share/minizinc/geas/fzn_cumulative.mzn
create mode 100644 share/minizinc/geas/fzn_disjunctive.mzn
create mode 100644 share/minizinc/geas/fzn_global_cardinality.mzn
create mode 100644 share/minizinc/geas/fzn_inverse.mzn
create mode 100644 share/minizinc/geas/fzn_table_int.mzn
create mode 100644 share/minizinc/geas/fzn_value_precede_int.mzn
create mode 100644 share/minizinc/geas/redefinitions-2.0.mzn
create mode 100644 share/minizinc/geas/redefinitions.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_all_different_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_all_equal_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_among.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_arg_max_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_arg_min_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_at_least_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_at_least_set.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_at_most_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_at_most_set.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_bin_packing.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_bin_packing_capa.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_bin_packing_load.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_circuit.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_count_eq.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_count_eq_reif.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_cumulative.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_decreasing_bool.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_decreasing_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_diffn.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_disjoint.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_distribute.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_exactly_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_exactly_set.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_global_cardinality.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_global_cardinality_closed.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_global_cardinality_low_up.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_global_cardinality_low_up_closed.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_increasing_bool.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_increasing_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_int_set_channel.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_inverse.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_inverse_set.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_lex_less_bool.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_lex_less_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_lex_lesseq_bool.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_lex_lesseq_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_link_set_to_booleans.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_member_bool.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_member_bool_reif.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_member_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_member_int_reif.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_nvalue.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_partition_set.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_range.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_regular.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_roots.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_sort.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_sum_pred.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_table_bool.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_table_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_value_precede_int.mzn
create mode 100644 share/minizinc/gecode_presolver/fzn_value_precede_set.mzn
create mode 100644 share/minizinc/gecode_presolver/gecode.mzn
create mode 100644 share/minizinc/gecode_presolver/precedence.mzn
create mode 100644 share/minizinc/gecode_presolver/redefinitions-2.0.mzn
create mode 100644 share/minizinc/gecode_presolver/redefinitions.mzn
create mode 100644 share/minizinc/linear/CHANGELOG.txt
create mode 100644 share/minizinc/linear/domain_encodings.mzn
create mode 100644 share/minizinc/linear/fzn_all_different_int.mzn
create mode 100644 share/minizinc/linear/fzn_alldifferent_except_0.mzn
create mode 100644 share/minizinc/linear/fzn_circuit.mzn
create mode 100644 share/minizinc/linear/fzn_cumulative.mzn
create mode 100644 share/minizinc/linear/fzn_if_then_else_float.mzn
create mode 100644 share/minizinc/linear/fzn_if_then_else_int.mzn
create mode 100644 share/minizinc/linear/fzn_inverse.mzn
create mode 100644 share/minizinc/linear/fzn_inverse_in_range.mzn
create mode 100644 share/minizinc/linear/fzn_inverse_in_range_reif.mzn
create mode 100644 share/minizinc/linear/fzn_inverse_reif.mzn
create mode 100644 share/minizinc/linear/fzn_lex_chain_lesseq_bool.mzn
create mode 100644 share/minizinc/linear/fzn_lex_chain_lesseq_int.mzn
create mode 100644 share/minizinc/linear/fzn_lex_chain_lesseq_orbitope.mzn
create mode 100644 share/minizinc/linear/fzn_lex_less_bool.mzn
create mode 100644 share/minizinc/linear/fzn_lex_less_float.mzn
create mode 100644 share/minizinc/linear/fzn_lex_less_int.mzn
create mode 100644 share/minizinc/linear/fzn_lex_lesseq_bool.mzn
create mode 100644 share/minizinc/linear/fzn_lex_lesseq_float.mzn
create mode 100644 share/minizinc/linear/fzn_lex_lesseq_int.mzn
create mode 100644 share/minizinc/linear/fzn_regular.mzn
create mode 100644 share/minizinc/linear/fzn_sliding_sum.mzn
create mode 100644 share/minizinc/linear/fzn_subcircuit.mzn
create mode 100644 share/minizinc/linear/fzn_table_int.mzn
create mode 100644 share/minizinc/linear/options.mzn
create mode 100644 share/minizinc/linear/redefinitions-2.0.2.mzn
create mode 100644 share/minizinc/linear/redefinitions-2.0.mzn
create mode 100644 share/minizinc/linear/redefinitions-2.2.1.mzn
create mode 100644 share/minizinc/linear/redefinitions.mzn
create mode 100644 share/minizinc/linear/redefs_bool_imp.mzn
create mode 100644 share/minizinc/linear/redefs_bool_reifs.mzn
create mode 100644 share/minizinc/linear/redefs_lin_halfreifs.mzn
create mode 100644 share/minizinc/linear/redefs_lin_imp.mzn
create mode 100644 share/minizinc/linear/redefs_lin_reifs.mzn
create mode 100644 share/minizinc/linear/subcircuit_wDummy.mzn
create mode 100644 share/minizinc/linear_old/all_different_int.mzn
create mode 100644 share/minizinc/linear_old/domain_encodings.mzn
create mode 100644 share/minizinc/linear_old/inverse.mzn
create mode 100644 share/minizinc/linear_old/linear/all_different_int.mzn
create mode 100644 share/minizinc/linear_old/linear/domain_encodings.mzn
create mode 100644 share/minizinc/linear_old/linear/inverse.mzn
create mode 100644 share/minizinc/linear_old/linear/redefinitions-2.0.2.mzn
create mode 100644 share/minizinc/linear_old/linear/redefinitions-2.0.mzn
create mode 100644 share/minizinc/linear_old/linear/redefinitions.mzn
create mode 100644 share/minizinc/linear_old/linear/table_int.mzn
create mode 100644 share/minizinc/linear_old/redefinitions-2.0.2.mzn
create mode 100644 share/minizinc/linear_old/redefinitions-2.0.mzn
create mode 100644 share/minizinc/linear_old/redefinitions.mzn
create mode 100644 share/minizinc/linear_old/table_int.mzn
create mode 100644 share/minizinc/std/all_different.mzn
create mode 100644 share/minizinc/std/all_different_int.mzn
create mode 100644 share/minizinc/std/all_different_set.mzn
create mode 100644 share/minizinc/std/all_disjoint.mzn
create mode 100644 share/minizinc/std/all_equal.mzn
create mode 100644 share/minizinc/std/all_equal_int.mzn
create mode 100644 share/minizinc/std/all_equal_set.mzn
create mode 100644 share/minizinc/std/alldifferent.mzn
create mode 100644 share/minizinc/std/alldifferent_except.mzn
create mode 100644 share/minizinc/std/alldifferent_except_0.mzn
create mode 100644 share/minizinc/std/alternative.mzn
create mode 100644 share/minizinc/std/among.mzn
create mode 100644 share/minizinc/std/among_fn.mzn
create mode 100644 share/minizinc/std/analyse_all_different.mzn
create mode 100644 share/minizinc/std/arg_max.mzn
create mode 100644 share/minizinc/std/arg_max_bool.mzn
create mode 100644 share/minizinc/std/arg_max_float.mzn
create mode 100644 share/minizinc/std/arg_max_int.mzn
create mode 100644 share/minizinc/std/arg_min.mzn
create mode 100644 share/minizinc/std/arg_min_bool.mzn
create mode 100644 share/minizinc/std/arg_min_float.mzn
create mode 100644 share/minizinc/std/arg_min_int.mzn
create mode 100644 share/minizinc/std/arg_sort.mzn
create mode 100644 share/minizinc/std/arg_sort_float.mzn
create mode 100644 share/minizinc/std/arg_sort_int.mzn
create mode 100644 share/minizinc/std/at_least.mzn
create mode 100644 share/minizinc/std/at_least.mzn.deprecated.mzn
create mode 100644 share/minizinc/std/at_least_int.mzn
create mode 100644 share/minizinc/std/at_least_set.mzn
create mode 100644 share/minizinc/std/at_most.mzn
create mode 100644 share/minizinc/std/at_most.mzn.deprecated.mzn
create mode 100644 share/minizinc/std/at_most1.mzn
create mode 100644 share/minizinc/std/at_most_int.mzn
create mode 100644 share/minizinc/std/at_most_set.mzn
create mode 100644 share/minizinc/std/atleast.mzn
create mode 100644 share/minizinc/std/atmost.mzn
create mode 100644 share/minizinc/std/atmost1.mzn
create mode 100644 share/minizinc/std/bin_packing.mzn
create mode 100644 share/minizinc/std/bin_packing_capa.mzn
create mode 100644 share/minizinc/std/bin_packing_load.mzn
create mode 100644 share/minizinc/std/bin_packing_load_fn.mzn
create mode 100644 share/minizinc/std/bounded_path.mzn
create mode 100644 share/minizinc/std/circuit.mzn
create mode 100644 share/minizinc/std/comparison_rel_array.mzn
create mode 100644 share/minizinc/std/connected.mzn
create mode 100644 share/minizinc/std/cost_mdd.mzn
create mode 100644 share/minizinc/std/cost_regular.mzn
create mode 100644 share/minizinc/std/count.mzn
create mode 100644 share/minizinc/std/count_eq.mzn
create mode 100644 share/minizinc/std/count_fn.mzn
create mode 100644 share/minizinc/std/count_geq.mzn
create mode 100644 share/minizinc/std/count_gt.mzn
create mode 100644 share/minizinc/std/count_leq.mzn
create mode 100644 share/minizinc/std/count_lt.mzn
create mode 100644 share/minizinc/std/count_neq.mzn
create mode 100644 share/minizinc/std/cumulative.mzn
create mode 100644 share/minizinc/std/cumulative_opt.mzn
create mode 100644 share/minizinc/std/dag.mzn
create mode 100644 share/minizinc/std/decreasing.mzn
create mode 100644 share/minizinc/std/decreasing_bool.mzn
create mode 100644 share/minizinc/std/decreasing_float.mzn
create mode 100644 share/minizinc/std/decreasing_int.mzn
create mode 100644 share/minizinc/std/decreasing_set.mzn
create mode 100644 share/minizinc/std/diffn.mzn
create mode 100644 share/minizinc/std/diffn_k.mzn
create mode 100644 share/minizinc/std/diffn_nonstrict.mzn
create mode 100644 share/minizinc/std/diffn_nonstrict_k.mzn
create mode 100644 share/minizinc/std/disjoint.mzn
create mode 100644 share/minizinc/std/disjunctive.mzn
create mode 100644 share/minizinc/std/disjunctive_opt.mzn
create mode 100644 share/minizinc/std/disjunctive_strict.mzn
create mode 100644 share/minizinc/std/disjunctive_strict_opt.mzn
create mode 100644 share/minizinc/std/distribute.mzn
create mode 100644 share/minizinc/std/distribute_fn.mzn
create mode 100644 share/minizinc/std/element.mzn
create mode 100644 share/minizinc/std/element_bool.mzn
create mode 100644 share/minizinc/std/element_float.mzn
create mode 100644 share/minizinc/std/element_int.mzn
create mode 100644 share/minizinc/std/element_set.mzn
create mode 100644 share/minizinc/std/exactly.mzn
create mode 100644 share/minizinc/std/exactly.mzn.deprecated.mzn
create mode 100644 share/minizinc/std/exactly_int.mzn
create mode 100644 share/minizinc/std/exactly_set.mzn
create mode 100644 share/minizinc/std/experimental.mzn
create mode 100644 share/minizinc/std/flatzinc_builtins.mzn
create mode 100644 share/minizinc/std/fzn_all_different_int.mzn
create mode 100644 share/minizinc/std/fzn_all_different_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_all_different_set.mzn
create mode 100644 share/minizinc/std/fzn_all_different_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_all_disjoint.mzn
create mode 100644 share/minizinc/std/fzn_all_disjoint_reif.mzn
create mode 100644 share/minizinc/std/fzn_all_equal_int.mzn
create mode 100644 share/minizinc/std/fzn_all_equal_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_all_equal_set.mzn
create mode 100644 share/minizinc/std/fzn_all_equal_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_alldifferent_except.mzn
create mode 100644 share/minizinc/std/fzn_alldifferent_except_0.mzn
create mode 100644 share/minizinc/std/fzn_alldifferent_except_0_reif.mzn
create mode 100644 share/minizinc/std/fzn_alldifferent_except_reif.mzn
create mode 100644 share/minizinc/std/fzn_alternative.mzn
create mode 100644 share/minizinc/std/fzn_alternative_reif.mzn
create mode 100644 share/minizinc/std/fzn_among.mzn
create mode 100644 share/minizinc/std/fzn_among_reif.mzn
create mode 100644 share/minizinc/std/fzn_arg_max_bool.mzn
create mode 100644 share/minizinc/std/fzn_arg_max_float.mzn
create mode 100644 share/minizinc/std/fzn_arg_max_int.mzn
create mode 100644 share/minizinc/std/fzn_arg_min_bool.mzn
create mode 100644 share/minizinc/std/fzn_arg_min_float.mzn
create mode 100644 share/minizinc/std/fzn_arg_min_int.mzn
create mode 100644 share/minizinc/std/fzn_arg_sort_float.mzn
create mode 100644 share/minizinc/std/fzn_arg_sort_float_reif.mzn
create mode 100644 share/minizinc/std/fzn_arg_sort_int.mzn
create mode 100644 share/minizinc/std/fzn_arg_sort_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_at_least_int.mzn
create mode 100644 share/minizinc/std/fzn_at_least_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_at_least_set.mzn
create mode 100644 share/minizinc/std/fzn_at_least_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_at_most1.mzn
create mode 100644 share/minizinc/std/fzn_at_most1_reif.mzn
create mode 100644 share/minizinc/std/fzn_at_most_int.mzn
create mode 100644 share/minizinc/std/fzn_at_most_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_at_most_set.mzn
create mode 100644 share/minizinc/std/fzn_at_most_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_bin_packing.mzn
create mode 100644 share/minizinc/std/fzn_bin_packing_capa.mzn
create mode 100644 share/minizinc/std/fzn_bin_packing_capa_reif.mzn
create mode 100644 share/minizinc/std/fzn_bin_packing_load.mzn
create mode 100644 share/minizinc/std/fzn_bin_packing_load_reif.mzn
create mode 100644 share/minizinc/std/fzn_bin_packing_reif.mzn
create mode 100644 share/minizinc/std/fzn_bounded_dpath_enum.mzn
create mode 100644 share/minizinc/std/fzn_bounded_dpath_enum_reif.mzn
create mode 100644 share/minizinc/std/fzn_bounded_dpath_int.mzn
create mode 100644 share/minizinc/std/fzn_bounded_dpath_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_bounded_path_enum.mzn
create mode 100644 share/minizinc/std/fzn_bounded_path_enum_reif.mzn
create mode 100644 share/minizinc/std/fzn_bounded_path_int.mzn
create mode 100644 share/minizinc/std/fzn_bounded_path_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_circuit.mzn
create mode 100644 share/minizinc/std/fzn_circuit_reif.mzn
create mode 100644 share/minizinc/std/fzn_connected.mzn
create mode 100644 share/minizinc/std/fzn_connected_reif.mzn
create mode 100644 share/minizinc/std/fzn_cost_mdd.mzn
create mode 100644 share/minizinc/std/fzn_cost_mdd_reif.mzn
create mode 100644 share/minizinc/std/fzn_cost_regular.mzn
create mode 100644 share/minizinc/std/fzn_cost_regular_reif.mzn
create mode 100644 share/minizinc/std/fzn_count_eq.mzn
create mode 100644 share/minizinc/std/fzn_count_eq_par.mzn
create mode 100644 share/minizinc/std/fzn_count_eq_par_reif.mzn
create mode 100644 share/minizinc/std/fzn_count_eq_reif.mzn
create mode 100644 share/minizinc/std/fzn_count_geq.mzn
create mode 100644 share/minizinc/std/fzn_count_geq_par.mzn
create mode 100644 share/minizinc/std/fzn_count_geq_par_reif.mzn
create mode 100644 share/minizinc/std/fzn_count_geq_reif.mzn
create mode 100644 share/minizinc/std/fzn_count_gt.mzn
create mode 100644 share/minizinc/std/fzn_count_gt_par.mzn
create mode 100644 share/minizinc/std/fzn_count_gt_par_reif.mzn
create mode 100644 share/minizinc/std/fzn_count_gt_reif.mzn
create mode 100644 share/minizinc/std/fzn_count_leq.mzn
create mode 100644 share/minizinc/std/fzn_count_leq_par.mzn
create mode 100644 share/minizinc/std/fzn_count_leq_par_reif.mzn
create mode 100644 share/minizinc/std/fzn_count_leq_reif.mzn
create mode 100644 share/minizinc/std/fzn_count_lt.mzn
create mode 100644 share/minizinc/std/fzn_count_lt_par.mzn
create mode 100644 share/minizinc/std/fzn_count_lt_par_reif.mzn
create mode 100644 share/minizinc/std/fzn_count_lt_reif.mzn
create mode 100644 share/minizinc/std/fzn_count_neq.mzn
create mode 100644 share/minizinc/std/fzn_count_neq_par.mzn
create mode 100644 share/minizinc/std/fzn_count_neq_par_reif.mzn
create mode 100644 share/minizinc/std/fzn_count_neq_reif.mzn
create mode 100644 share/minizinc/std/fzn_cumulative.mzn
create mode 100644 share/minizinc/std/fzn_cumulative_opt.mzn
create mode 100644 share/minizinc/std/fzn_cumulative_opt_reif.mzn
create mode 100644 share/minizinc/std/fzn_cumulative_reif.mzn
create mode 100644 share/minizinc/std/fzn_dag.mzn
create mode 100644 share/minizinc/std/fzn_dag_reif.mzn
create mode 100644 share/minizinc/std/fzn_dconnected.mzn
create mode 100644 share/minizinc/std/fzn_dconnected_reif.mzn
create mode 100644 share/minizinc/std/fzn_decreasing_bool.mzn
create mode 100644 share/minizinc/std/fzn_decreasing_bool_reif.mzn
create mode 100644 share/minizinc/std/fzn_decreasing_float.mzn
create mode 100644 share/minizinc/std/fzn_decreasing_float_reif.mzn
create mode 100644 share/minizinc/std/fzn_decreasing_int.mzn
create mode 100644 share/minizinc/std/fzn_decreasing_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_decreasing_set.mzn
create mode 100644 share/minizinc/std/fzn_decreasing_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_diffn.mzn
create mode 100644 share/minizinc/std/fzn_diffn_k.mzn
create mode 100644 share/minizinc/std/fzn_diffn_k_reif.mzn
create mode 100644 share/minizinc/std/fzn_diffn_nonstrict.mzn
create mode 100644 share/minizinc/std/fzn_diffn_nonstrict_k.mzn
create mode 100644 share/minizinc/std/fzn_diffn_nonstrict_k_reif.mzn
create mode 100644 share/minizinc/std/fzn_diffn_nonstrict_reif.mzn
create mode 100644 share/minizinc/std/fzn_diffn_reif.mzn
create mode 100644 share/minizinc/std/fzn_disjoint.mzn
create mode 100644 share/minizinc/std/fzn_disjoint_reif.mzn
create mode 100644 share/minizinc/std/fzn_disjunctive.mzn
create mode 100644 share/minizinc/std/fzn_disjunctive_opt.mzn
create mode 100644 share/minizinc/std/fzn_disjunctive_opt_reif.mzn
create mode 100644 share/minizinc/std/fzn_disjunctive_reif.mzn
create mode 100644 share/minizinc/std/fzn_disjunctive_strict.mzn
create mode 100644 share/minizinc/std/fzn_disjunctive_strict_opt.mzn
create mode 100644 share/minizinc/std/fzn_disjunctive_strict_opt_reif.mzn
create mode 100644 share/minizinc/std/fzn_disjunctive_strict_reif.mzn
create mode 100644 share/minizinc/std/fzn_distribute.mzn
create mode 100644 share/minizinc/std/fzn_distribute_reif.mzn
create mode 100644 share/minizinc/std/fzn_dpath_enum.mzn
create mode 100644 share/minizinc/std/fzn_dpath_enum_reif.mzn
create mode 100644 share/minizinc/std/fzn_dpath_int.mzn
create mode 100644 share/minizinc/std/fzn_dpath_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_dreachable_enum.mzn
create mode 100644 share/minizinc/std/fzn_dreachable_enum_reif.mzn
create mode 100644 share/minizinc/std/fzn_dreachable_int.mzn
create mode 100644 share/minizinc/std/fzn_dreachable_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_dsteiner.mzn
create mode 100644 share/minizinc/std/fzn_dsteiner_reif.mzn
create mode 100644 share/minizinc/std/fzn_dtree_enum.mzn
create mode 100644 share/minizinc/std/fzn_dtree_enum_reif.mzn
create mode 100644 share/minizinc/std/fzn_dtree_int.mzn
create mode 100644 share/minizinc/std/fzn_dtree_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_dwst.mzn
create mode 100644 share/minizinc/std/fzn_dwst_reif.mzn
create mode 100644 share/minizinc/std/fzn_exactly_int.mzn
create mode 100644 share/minizinc/std/fzn_exactly_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_exactly_set.mzn
create mode 100644 share/minizinc/std/fzn_exactly_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_geost.mzn
create mode 100644 share/minizinc/std/fzn_geost_bb.mzn
create mode 100644 share/minizinc/std/fzn_geost_bb_reif.mzn
create mode 100644 share/minizinc/std/fzn_geost_nonoverlap_k.mzn
create mode 100644 share/minizinc/std/fzn_geost_nonoverlap_k_reif.mzn
create mode 100644 share/minizinc/std/fzn_geost_reif.mzn
create mode 100644 share/minizinc/std/fzn_geost_smallest_bb.mzn
create mode 100644 share/minizinc/std/fzn_geost_smallest_bb_reif.mzn
create mode 100644 share/minizinc/std/fzn_global_cardinality.mzn
create mode 100644 share/minizinc/std/fzn_global_cardinality_closed.mzn
create mode 100644 share/minizinc/std/fzn_global_cardinality_closed_reif.mzn
create mode 100644 share/minizinc/std/fzn_global_cardinality_low_up.mzn
create mode 100644 share/minizinc/std/fzn_global_cardinality_low_up_closed.mzn
create mode 100644 share/minizinc/std/fzn_global_cardinality_low_up_closed_reif.mzn
create mode 100644 share/minizinc/std/fzn_global_cardinality_low_up_reif.mzn
create mode 100644 share/minizinc/std/fzn_global_cardinality_reif.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_bool.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_float.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_int.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_opt_bool.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_opt_float.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_opt_int.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_partiality.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_set.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_var_bool.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_var_float.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_var_int.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_var_opt_bool.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_var_opt_float.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_var_opt_int.mzn
create mode 100644 share/minizinc/std/fzn_if_then_else_var_set.mzn
create mode 100644 share/minizinc/std/fzn_increasing_bool.mzn
create mode 100644 share/minizinc/std/fzn_increasing_bool_reif.mzn
create mode 100644 share/minizinc/std/fzn_increasing_float.mzn
create mode 100644 share/minizinc/std/fzn_increasing_float_reif.mzn
create mode 100644 share/minizinc/std/fzn_increasing_int.mzn
create mode 100644 share/minizinc/std/fzn_increasing_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_increasing_set.mzn
create mode 100644 share/minizinc/std/fzn_increasing_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_int_set_channel.mzn
create mode 100644 share/minizinc/std/fzn_int_set_channel_reif.mzn
create mode 100644 share/minizinc/std/fzn_inverse.mzn
create mode 100644 share/minizinc/std/fzn_inverse_in_range.mzn
create mode 100644 share/minizinc/std/fzn_inverse_in_range_reif.mzn
create mode 100644 share/minizinc/std/fzn_inverse_reif.mzn
create mode 100644 share/minizinc/std/fzn_inverse_set.mzn
create mode 100644 share/minizinc/std/fzn_inverse_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_knapsack.mzn
create mode 100644 share/minizinc/std/fzn_knapsack_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex2.mzn
create mode 100644 share/minizinc/std/fzn_lex2_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_chain_less_bool.mzn
create mode 100644 share/minizinc/std/fzn_lex_chain_less_bool_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_chain_less_int.mzn
create mode 100644 share/minizinc/std/fzn_lex_chain_less_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_chain_lesseq_bool.mzn
create mode 100644 share/minizinc/std/fzn_lex_chain_lesseq_bool_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_chain_lesseq_int.mzn
create mode 100644 share/minizinc/std/fzn_lex_chain_lesseq_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_chain_lesseq_orbitope.mzn
create mode 100644 share/minizinc/std/fzn_lex_chain_lesseq_orbitope_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_less_bool.mzn
create mode 100644 share/minizinc/std/fzn_lex_less_bool_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_less_float.mzn
create mode 100644 share/minizinc/std/fzn_lex_less_float_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_less_int.mzn
create mode 100644 share/minizinc/std/fzn_lex_less_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_less_set.mzn
create mode 100644 share/minizinc/std/fzn_lex_less_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_lesseq_bool.mzn
create mode 100644 share/minizinc/std/fzn_lex_lesseq_bool_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_lesseq_float.mzn
create mode 100644 share/minizinc/std/fzn_lex_lesseq_float_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_lesseq_int.mzn
create mode 100644 share/minizinc/std/fzn_lex_lesseq_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_lex_lesseq_set.mzn
create mode 100644 share/minizinc/std/fzn_lex_lesseq_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_link_set_to_booleans.mzn
create mode 100644 share/minizinc/std/fzn_link_set_to_booleans_reif.mzn
create mode 100644 share/minizinc/std/fzn_mdd.mzn
create mode 100644 share/minizinc/std/fzn_mdd_nondet.mzn
create mode 100644 share/minizinc/std/fzn_mdd_nondet_reif.mzn
create mode 100644 share/minizinc/std/fzn_mdd_reif.mzn
create mode 100644 share/minizinc/std/fzn_member_bool.mzn
create mode 100644 share/minizinc/std/fzn_member_bool_reif.mzn
create mode 100644 share/minizinc/std/fzn_member_float.mzn
create mode 100644 share/minizinc/std/fzn_member_float_reif.mzn
create mode 100644 share/minizinc/std/fzn_member_int.mzn
create mode 100644 share/minizinc/std/fzn_member_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_member_set.mzn
create mode 100644 share/minizinc/std/fzn_member_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_network_flow.mzn
create mode 100644 share/minizinc/std/fzn_network_flow_cost.mzn
create mode 100644 share/minizinc/std/fzn_network_flow_cost_reif.mzn
create mode 100644 share/minizinc/std/fzn_network_flow_reif.mzn
create mode 100644 share/minizinc/std/fzn_neural_net.mzn
create mode 100644 share/minizinc/std/fzn_neural_net_reif.mzn
create mode 100644 share/minizinc/std/fzn_nvalue.mzn
create mode 100644 share/minizinc/std/fzn_nvalue_reif.mzn
create mode 100644 share/minizinc/std/fzn_partition_set.mzn
create mode 100644 share/minizinc/std/fzn_partition_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_path_enum.mzn
create mode 100644 share/minizinc/std/fzn_path_enum_reif.mzn
create mode 100644 share/minizinc/std/fzn_path_int.mzn
create mode 100644 share/minizinc/std/fzn_path_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_piecewise_linear.mzn
create mode 100644 share/minizinc/std/fzn_piecewise_linear_non_continuous.mzn
create mode 100644 share/minizinc/std/fzn_piecewise_linear_non_continuous_reif.mzn
create mode 100644 share/minizinc/std/fzn_piecewise_linear_reif.mzn
create mode 100644 share/minizinc/std/fzn_range.mzn
create mode 100644 share/minizinc/std/fzn_range_reif.mzn
create mode 100644 share/minizinc/std/fzn_reachable_enum.mzn
create mode 100644 share/minizinc/std/fzn_reachable_enum_reif.mzn
create mode 100644 share/minizinc/std/fzn_reachable_int.mzn
create mode 100644 share/minizinc/std/fzn_reachable_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_regular.mzn
create mode 100644 share/minizinc/std/fzn_regular_nfa.mzn
create mode 100644 share/minizinc/std/fzn_regular_nfa_reif.mzn
create mode 100644 share/minizinc/std/fzn_regular_nfa_set.mzn
create mode 100644 share/minizinc/std/fzn_regular_nfa_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_regular_regexp.mzn
create mode 100644 share/minizinc/std/fzn_regular_reif.mzn
create mode 100644 share/minizinc/std/fzn_regular_set.mzn
create mode 100644 share/minizinc/std/fzn_regular_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_roots.mzn
create mode 100644 share/minizinc/std/fzn_roots_reif.mzn
create mode 100644 share/minizinc/std/fzn_seq_precede_chain_int.mzn
create mode 100644 share/minizinc/std/fzn_seq_precede_chain_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_seq_precede_chain_set.mzn
create mode 100644 share/minizinc/std/fzn_seq_precede_chain_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_set_member.mzn
create mode 100644 share/minizinc/std/fzn_set_member_reif.mzn
create mode 100644 share/minizinc/std/fzn_sliding_sum.mzn
create mode 100644 share/minizinc/std/fzn_sliding_sum_reif.mzn
create mode 100644 share/minizinc/std/fzn_sort.mzn
create mode 100644 share/minizinc/std/fzn_sort_reif.mzn
create mode 100644 share/minizinc/std/fzn_span.mzn
create mode 100644 share/minizinc/std/fzn_span_reif.mzn
create mode 100644 share/minizinc/std/fzn_steiner.mzn
create mode 100644 share/minizinc/std/fzn_steiner_reif.mzn
create mode 100644 share/minizinc/std/fzn_strict_lex2.mzn
create mode 100644 share/minizinc/std/fzn_strict_lex2_reif.mzn
create mode 100644 share/minizinc/std/fzn_strictly_decreasing_bool.mzn
create mode 100644 share/minizinc/std/fzn_strictly_decreasing_bool_reif.mzn
create mode 100644 share/minizinc/std/fzn_strictly_decreasing_int.mzn
create mode 100644 share/minizinc/std/fzn_strictly_decreasing_int_opt.mzn
create mode 100644 share/minizinc/std/fzn_strictly_decreasing_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_strictly_increasing_bool.mzn
create mode 100644 share/minizinc/std/fzn_strictly_increasing_bool_reif.mzn
create mode 100644 share/minizinc/std/fzn_strictly_increasing_int.mzn
create mode 100644 share/minizinc/std/fzn_strictly_increasing_int_opt.mzn
create mode 100644 share/minizinc/std/fzn_strictly_increasing_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_subcircuit.mzn
create mode 100644 share/minizinc/std/fzn_subcircuit_reif.mzn
create mode 100644 share/minizinc/std/fzn_subgraph_enum.mzn
create mode 100644 share/minizinc/std/fzn_subgraph_enum_reif.mzn
create mode 100644 share/minizinc/std/fzn_subgraph_int.mzn
create mode 100644 share/minizinc/std/fzn_subgraph_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_sum_pred.mzn
create mode 100644 share/minizinc/std/fzn_sum_pred_reif.mzn
create mode 100644 share/minizinc/std/fzn_sum_set.mzn
create mode 100644 share/minizinc/std/fzn_sum_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_symmetric_all_different.mzn
create mode 100644 share/minizinc/std/fzn_symmetric_all_different_reif.mzn
create mode 100644 share/minizinc/std/fzn_table_bool.mzn
create mode 100644 share/minizinc/std/fzn_table_bool_reif.mzn
create mode 100644 share/minizinc/std/fzn_table_int.mzn
create mode 100644 share/minizinc/std/fzn_table_int_opt.mzn
create mode 100644 share/minizinc/std/fzn_table_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_transitive_closure.mzn
create mode 100644 share/minizinc/std/fzn_tree_enum.mzn
create mode 100644 share/minizinc/std/fzn_tree_enum_reif.mzn
create mode 100644 share/minizinc/std/fzn_tree_int.mzn
create mode 100644 share/minizinc/std/fzn_tree_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_value_precede_chain_int.mzn
create mode 100644 share/minizinc/std/fzn_value_precede_chain_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_value_precede_chain_set.mzn
create mode 100644 share/minizinc/std/fzn_value_precede_chain_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_value_precede_int.mzn
create mode 100644 share/minizinc/std/fzn_value_precede_int_opt.mzn
create mode 100644 share/minizinc/std/fzn_value_precede_int_reif.mzn
create mode 100644 share/minizinc/std/fzn_value_precede_set.mzn
create mode 100644 share/minizinc/std/fzn_value_precede_set_reif.mzn
create mode 100644 share/minizinc/std/fzn_write.mzn
create mode 100644 share/minizinc/std/fzn_write_reif.mzn
create mode 100644 share/minizinc/std/fzn_writes.mzn
create mode 100644 share/minizinc/std/fzn_writes_reif.mzn
create mode 100644 share/minizinc/std/fzn_writes_seq.mzn
create mode 100644 share/minizinc/std/fzn_writes_seq_reif.mzn
create mode 100644 share/minizinc/std/fzn_wst.mzn
create mode 100644 share/minizinc/std/fzn_wst_reif.mzn
create mode 100644 share/minizinc/std/geost.mzn
create mode 100644 share/minizinc/std/global_cardinality.mzn
create mode 100644 share/minizinc/std/global_cardinality_closed.mzn
create mode 100644 share/minizinc/std/global_cardinality_closed_fn.mzn
create mode 100644 share/minizinc/std/global_cardinality_fn.mzn
create mode 100644 share/minizinc/std/global_cardinality_low_up.mzn
create mode 100644 share/minizinc/std/global_cardinality_low_up_closed.mzn
create mode 100644 share/minizinc/std/globals.mzn
create mode 100644 share/minizinc/std/increasing.mzn
create mode 100644 share/minizinc/std/increasing_bool.mzn
create mode 100644 share/minizinc/std/increasing_float.mzn
create mode 100644 share/minizinc/std/increasing_int.mzn
create mode 100644 share/minizinc/std/increasing_set.mzn
create mode 100644 share/minizinc/std/int_set_channel.mzn
create mode 100644 share/minizinc/std/inverse.mzn
create mode 100644 share/minizinc/std/inverse_fn.mzn
create mode 100644 share/minizinc/std/inverse_in_range.mzn
create mode 100644 share/minizinc/std/inverse_set.mzn
create mode 100644 share/minizinc/std/knapsack.mzn
create mode 100644 share/minizinc/std/lex2.mzn
create mode 100644 share/minizinc/std/lex2_strict.mzn
create mode 100644 share/minizinc/std/lex_chain_greater.mzn
create mode 100644 share/minizinc/std/lex_chain_greatereq.mzn
create mode 100644 share/minizinc/std/lex_chain_greatereq_orbitope.mzn
create mode 100644 share/minizinc/std/lex_chain_less.mzn
create mode 100644 share/minizinc/std/lex_chain_less_bool.mzn
create mode 100644 share/minizinc/std/lex_chain_less_int.mzn
create mode 100644 share/minizinc/std/lex_chain_lesseq.mzn
create mode 100644 share/minizinc/std/lex_chain_lesseq_bool.mzn
create mode 100644 share/minizinc/std/lex_chain_lesseq_int.mzn
create mode 100644 share/minizinc/std/lex_chain_lesseq_orbitope.mzn
create mode 100644 share/minizinc/std/lex_greater.mzn
create mode 100644 share/minizinc/std/lex_greatereq.mzn
create mode 100644 share/minizinc/std/lex_less.mzn
create mode 100644 share/minizinc/std/lex_less_bool.mzn
create mode 100644 share/minizinc/std/lex_less_float.mzn
create mode 100644 share/minizinc/std/lex_less_int.mzn
create mode 100644 share/minizinc/std/lex_less_set.mzn
create mode 100644 share/minizinc/std/lex_lesseq.mzn
create mode 100644 share/minizinc/std/lex_lesseq_bool.mzn
create mode 100644 share/minizinc/std/lex_lesseq_float.mzn
create mode 100644 share/minizinc/std/lex_lesseq_int.mzn
create mode 100644 share/minizinc/std/lex_lesseq_set.mzn
create mode 100644 share/minizinc/std/link_set_to_booleans.mzn
create mode 100644 share/minizinc/std/maximum.mzn
create mode 100644 share/minizinc/std/mdd.mzn
create mode 100644 share/minizinc/std/mdd_nondet.mzn
create mode 100644 share/minizinc/std/member.mzn
create mode 100644 share/minizinc/std/member_bool.mzn
create mode 100644 share/minizinc/std/member_float.mzn
create mode 100644 share/minizinc/std/member_int.mzn
create mode 100644 share/minizinc/std/member_set.mzn
create mode 100644 share/minizinc/std/minimum.mzn
create mode 100644 share/minizinc/std/network_flow.mzn
create mode 100644 share/minizinc/std/neural_net.mzn
create mode 100644 share/minizinc/std/nosets.mzn
create mode 100644 share/minizinc/std/nvalue.mzn
create mode 100644 share/minizinc/std/nvalue_fn.mzn
create mode 100644 share/minizinc/std/partition_set.mzn
create mode 100644 share/minizinc/std/path.mzn
create mode 100644 share/minizinc/std/piecewise_linear.mzn
create mode 100644 share/minizinc/std/piecewise_linear_non_continuous.mzn
create mode 100644 share/minizinc/std/range.mzn
create mode 100644 share/minizinc/std/range_fn.mzn
create mode 100644 share/minizinc/std/reachable.mzn
create mode 100644 share/minizinc/std/redefinitions-2.0.2.mzn
create mode 100644 share/minizinc/std/redefinitions-2.0.mzn
create mode 100644 share/minizinc/std/redefinitions-2.1.1.mzn
create mode 100644 share/minizinc/std/redefinitions-2.1.mzn
create mode 100644 share/minizinc/std/redefinitions-2.2.1.mzn
create mode 100644 share/minizinc/std/redefinitions-2.3.3.mzn
create mode 100644 share/minizinc/std/redefinitions-2.5.2.mzn
create mode 100644 share/minizinc/std/redefinitions.mzn
create mode 100644 share/minizinc/std/regular.mzn
create mode 100644 share/minizinc/std/regular_nfa.mzn
create mode 100644 share/minizinc/std/regular_regexp.mzn
create mode 100644 share/minizinc/std/regular_set.mzn
create mode 100644 share/minizinc/std/roots.mzn
create mode 100644 share/minizinc/std/roots_fn.mzn
create mode 100644 share/minizinc/std/seq_precede_chain.mzn
create mode 100644 share/minizinc/std/set_member.mzn
create mode 100644 share/minizinc/std/sliding_sum.mzn
create mode 100644 share/minizinc/std/solver_redefinitions.mzn
create mode 100644 share/minizinc/std/sort.mzn
create mode 100644 share/minizinc/std/sort_fn.mzn
create mode 100644 share/minizinc/std/span.mzn
create mode 100644 share/minizinc/std/stdlib.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_ann.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_array.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_coercion.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_compare.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_debug.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_enum.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_internal.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_ite.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_language.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_logic.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_math.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_opt.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_random.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_reflect.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_set.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_sort.mzn
create mode 100644 share/minizinc/std/stdlib/stdlib_string.mzn
create mode 100644 share/minizinc/std/steiner.mzn
create mode 100644 share/minizinc/std/strict_lex2.mzn
create mode 100644 share/minizinc/std/strictly_decreasing.mzn
create mode 100644 share/minizinc/std/strictly_increasing.mzn
create mode 100644 share/minizinc/std/subcircuit.mzn
create mode 100644 share/minizinc/std/subgraph.mzn
create mode 100644 share/minizinc/std/sum_pred.mzn
create mode 100644 share/minizinc/std/sum_set.mzn
create mode 100644 share/minizinc/std/symmetric_all_different.mzn
create mode 100644 share/minizinc/std/table.mzn
create mode 100644 share/minizinc/std/table_bool.mzn
create mode 100644 share/minizinc/std/table_int.mzn
create mode 100644 share/minizinc/std/tree.mzn
create mode 100644 share/minizinc/std/value_precede.mzn
create mode 100644 share/minizinc/std/value_precede_chain.mzn
create mode 100644 share/minizinc/std/value_precede_chain_int.mzn
create mode 100644 share/minizinc/std/value_precede_chain_set.mzn
create mode 100644 share/minizinc/std/value_precede_int.mzn
create mode 100644 share/minizinc/std/value_precede_set.mzn
create mode 100644 share/minizinc/std/weighted_spanning_tree.mzn
create mode 100644 share/minizinc/std/write.mzn
create mode 100644 share/minizinc/std/writes.mzn
create mode 100644 share/minizinc/std/writes_seq.mzn
create mode 100644 solvers/MIP/MIP_cplex_solverfactory.cpp
create mode 100644 solvers/MIP/MIP_cplex_wrap.cpp
create mode 100644 solvers/MIP/MIP_gurobi_solverfactory.cpp
create mode 100644 solvers/MIP/MIP_gurobi_wrap.cpp
create mode 100644 solvers/MIP/MIP_osicbc_solverfactory.cpp
create mode 100644 solvers/MIP/MIP_osicbc_wrap.cpp
create mode 100644 solvers/MIP/MIP_scip_solverfactory.cpp
create mode 100644 solvers/MIP/MIP_scip_wrap.cpp
create mode 100644 solvers/MIP/MIP_solverinstance.cpp
create mode 100644 solvers/MIP/MIP_wrap.cpp
create mode 100644 solvers/MIP/MIP_xpress_solverfactory.cpp
create mode 100644 solvers/MIP/MIP_xpress_wrap.cpp
create mode 100644 solvers/fzn/fzn_solverfactory.cpp
create mode 100644 solvers/fzn/fzn_solverinstance.cpp
create mode 100644 solvers/geas/geas_constraints.cpp
create mode 100644 solvers/geas/geas_solverfactory.cpp
create mode 100644 solvers/geas/geas_solverinstance.cpp
create mode 100644 solvers/gecode/aux_brancher.hh
create mode 100644 solvers/gecode/fzn_space.cpp
create mode 100644 solvers/gecode/gecode_constraints.cpp
create mode 100644 solvers/gecode/gecode_solverfactory.cpp
create mode 100644 solvers/gecode/gecode_solverinstance.cpp
create mode 100644 solvers/mzn/mzn_solverfactory.cpp
create mode 100644 solvers/mzn/mzn_solverinstance.cpp
create mode 100644 solvers/nl/nl_components.cpp
create mode 100644 solvers/nl/nl_file.cpp
create mode 100644 solvers/nl/nl_solreader.cpp
create mode 100644 solvers/nl/nl_solverfactory.cpp
create mode 100644 solvers/nl/nl_solverinstance.cpp
create mode 100644 tests/README.md
create mode 100644 tests/benchmarking/README.md
create mode 100644 tests/benchmarking/cmp_result_logs.py
create mode 100644 tests/benchmarking/json_config.py
create mode 100644 tests/benchmarking/json_log.py
create mode 100755 tests/benchmarking/mzn-test.py
create mode 100644 tests/benchmarking/mzn_exec.py
create mode 100644 tests/benchmarking/utils.py
create mode 100644 tests/conftest.py
create mode 100644 tests/minizinc_testing/__init__.py
create mode 100644 tests/minizinc_testing/create.py
create mode 100644 tests/minizinc_testing/helpers.py
create mode 100644 tests/minizinc_testing/spec.py
create mode 100644 tests/minizinc_testing/static/index.html
create mode 100644 tests/minizinc_testing/yaml.py
create mode 100644 tests/pytest.ini
create mode 100644 tests/requirements.txt
create mode 100644 tests/spec/examples/2DPacking.mzn
create mode 100644 tests/spec/examples/alpha.mzn
create mode 100644 tests/spec/examples/battleships.mzn.model
create mode 100644 tests/spec/examples/battleships10.mzn
create mode 100644 tests/spec/examples/battleships_1.mzn
create mode 100644 tests/spec/examples/battleships_2.mzn
create mode 100644 tests/spec/examples/battleships_3.mzn
create mode 100644 tests/spec/examples/battleships_4.mzn
create mode 100644 tests/spec/examples/battleships_5.mzn
create mode 100644 tests/spec/examples/battleships_7.mzn
create mode 100644 tests/spec/examples/battleships_9.mzn
create mode 100644 tests/spec/examples/blocksworld.model
create mode 100644 tests/spec/examples/blocksworld_instance_1.mzn
create mode 100644 tests/spec/examples/blocksworld_instance_2.mzn
create mode 100644 tests/spec/examples/cutstock.mzn
create mode 100644 tests/spec/examples/eq20.mzn
create mode 100644 tests/spec/examples/factory_planning_instance.mzn
create mode 100644 tests/spec/examples/golomb.mzn
create mode 100644 tests/spec/examples/halfreif.mzn
create mode 100644 tests/spec/examples/jobshop2x2.mzn
create mode 100644 tests/spec/examples/knights.mzn
create mode 100644 tests/spec/examples/langford.mzn
create mode 100644 tests/spec/examples/langford2.mzn
create mode 100644 tests/spec/examples/latin_squares_fd.mzn
create mode 100644 tests/spec/examples/magicsq.mzn.model
create mode 100644 tests/spec/examples/magicsq_3.mzn
create mode 100644 tests/spec/examples/magicsq_4.mzn
create mode 100644 tests/spec/examples/magicsq_5.mzn
create mode 100644 tests/spec/examples/multidimknapsack_simple.mzn
create mode 100644 tests/spec/examples/oss.mzn
create mode 100644 tests/spec/examples/packing.mzn
create mode 100644 tests/spec/examples/perfsq.mzn
create mode 100644 tests/spec/examples/perfsq2.mzn
create mode 100644 tests/spec/examples/photo.mzn
create mode 100644 tests/spec/examples/product_fd.mzn
create mode 100644 tests/spec/examples/product_lp.mzn
create mode 100644 tests/spec/examples/quasigroup_qg5.mzn
create mode 100644 tests/spec/examples/queen_cp2.mzn
create mode 100644 tests/spec/examples/queen_ip.mzn
create mode 100644 tests/spec/examples/radiation.mzn
create mode 100644 tests/spec/examples/simple_sat.mzn
create mode 100644 tests/spec/examples/singHoist2.mzn
create mode 100644 tests/spec/examples/steiner-triples.mzn
create mode 100644 tests/spec/examples/sudoku.mzn
create mode 100644 tests/spec/examples/template_design.mzn
create mode 100644 tests/spec/examples/tenpenki.mzn.model
create mode 100644 tests/spec/examples/tenpenki_1.mzn
create mode 100644 tests/spec/examples/tenpenki_2.mzn
create mode 100644 tests/spec/examples/tenpenki_3.mzn
create mode 100644 tests/spec/examples/tenpenki_4.mzn
create mode 100644 tests/spec/examples/tenpenki_5.mzn
create mode 100644 tests/spec/examples/tenpenki_6.mzn
create mode 100644 tests/spec/examples/timetabling.mzn
create mode 100644 tests/spec/examples/trucking.mzn
create mode 100644 tests/spec/examples/warehouses.mzn
create mode 100644 tests/spec/examples/wolf_goat_cabbage.mzn
create mode 100644 tests/spec/examples/zebra.mzn
create mode 100644 tests/spec/sudoku/sudoku.mzn
create mode 100644 tests/spec/sudoku/sudoku_1_16x16.dzn
create mode 100644 tests/spec/sudoku/sudoku_2_16x16.dzn
create mode 100644 tests/spec/sudoku/sudoku_3_16x16.dzn
create mode 100644 tests/spec/sudoku/sudoku_4_16x16.dzn
create mode 100644 tests/spec/sudoku/sudoku_5_16x16.dzn
create mode 100644 tests/spec/suites.yml
create mode 100644 tests/spec/unit/compilation/aggregation.fzn
create mode 100644 tests/spec/unit/compilation/aggregation.mzn
create mode 100644 tests/spec/unit/compilation/cv_domain.mzn
create mode 100644 tests/spec/unit/compilation/has_ann.mzn
create mode 100644 tests/spec/unit/compilation/optimization.mzn
create mode 100644 tests/spec/unit/compilation/optimization_0.fzn
create mode 100644 tests/spec/unit/compilation/optimization_1.fzn
create mode 100644 tests/spec/unit/compilation/optimization_2.fzn
create mode 100644 tests/spec/unit/compilation/optimization_3.fzn
create mode 100644 tests/spec/unit/division/test_div1.mzn
create mode 100644 tests/spec/unit/division/test_div10.mzn
create mode 100644 tests/spec/unit/division/test_div11.mzn
create mode 100644 tests/spec/unit/division/test_div12.mzn
create mode 100644 tests/spec/unit/division/test_div2.mzn
create mode 100644 tests/spec/unit/division/test_div3.mzn
create mode 100644 tests/spec/unit/division/test_div4.mzn
create mode 100644 tests/spec/unit/division/test_div5.mzn
create mode 100644 tests/spec/unit/division/test_div6.mzn
create mode 100644 tests/spec/unit/division/test_div7.mzn
create mode 100644 tests/spec/unit/division/test_div8.mzn
create mode 100644 tests/spec/unit/division/test_div9.mzn
create mode 100644 tests/spec/unit/fdlp/test_lp_solve_satisfy.mzn
create mode 100644 tests/spec/unit/general/anon_var_flatten.mzn
create mode 100644 tests/spec/unit/general/array_string_gen.mzn
create mode 100644 tests/spec/unit/general/assert_bad_1.mzn
create mode 100644 tests/spec/unit/general/assert_bad_2.mzn
create mode 100644 tests/spec/unit/general/assert_good.mzn
create mode 100644 tests/spec/unit/general/bin_pack_multiobj.mzn
create mode 100644 tests/spec/unit/general/builtins_arg_max.mzn
create mode 100644 tests/spec/unit/general/builtins_debug.mzn
create mode 100644 tests/spec/unit/general/iffall_bv.mzn
create mode 100644 tests/spec/unit/general/json_ignore.json
create mode 100644 tests/spec/unit/general/json_ignore.mzc.mzn
create mode 100644 tests/spec/unit/general/json_ignore.mzn
create mode 100644 tests/spec/unit/general/md_exists.mzn
create mode 100644 tests/spec/unit/general/md_forall.mzn
create mode 100644 tests/spec/unit/general/md_iffall.mzn
create mode 100644 tests/spec/unit/general/md_product_int.mzn
create mode 100644 tests/spec/unit/general/md_sum_float.mzn
create mode 100644 tests/spec/unit/general/md_sum_int.mzn
create mode 100644 tests/spec/unit/general/md_xorall.mzn
create mode 100644 tests/spec/unit/general/mortgage.mzn
create mode 100644 tests/spec/unit/general/mzn-implicit1.mzn
create mode 100644 tests/spec/unit/general/mzn-implicit2.mzn
create mode 100644 tests/spec/unit/general/mzn-implicit3.mzn
create mode 100644 tests/spec/unit/general/mzn-implicit4.mzn
create mode 100644 tests/spec/unit/general/mzn-implicit5.mzn
create mode 100644 tests/spec/unit/general/mzn-implicit6.mzn
create mode 100644 tests/spec/unit/general/mzn-implicit7.mzn
create mode 100644 tests/spec/unit/general/mzn-implicit8.mzn
create mode 100644 tests/spec/unit/general/mzn_div.mzn
create mode 100644 tests/spec/unit/general/mzn_mod.mzn
create mode 100644 tests/spec/unit/general/test-search1.mzn
create mode 100644 tests/spec/unit/general/test_array1.mzn
create mode 100644 tests/spec/unit/general/test_array1and2d.mzn
create mode 100644 tests/spec/unit/general/test_array1d_bad_1.mzn
create mode 100644 tests/spec/unit/general/test_array1d_bad_2.mzn
create mode 100644 tests/spec/unit/general/test_array1d_bad_3.mzn
create mode 100644 tests/spec/unit/general/test_array1d_bad_4.mzn
create mode 100644 tests/spec/unit/general/test_array2.mzn
create mode 100644 tests/spec/unit/general/test_array_as_generator.mzn
create mode 100644 tests/spec/unit/general/test_bad_array_size-bad.mzn
create mode 100644 tests/spec/unit/general/test_bad_lb_ub_dom-bad.mzn
create mode 100644 tests/spec/unit/general/test_bool_var_array_access.mzn
create mode 100644 tests/spec/unit/general/test_concat1.mzn
create mode 100644 tests/spec/unit/general/test_concat2.mzn
create mode 100644 tests/spec/unit/general/test_concat3.mzn
create mode 100644 tests/spec/unit/general/test_empty_enum.mzn
create mode 100644 tests/spec/unit/general/test_is_fixed.mzn
create mode 100644 tests/spec/unit/general/test_join1.mzn
create mode 100644 tests/spec/unit/general/test_join2.mzn
create mode 100644 tests/spec/unit/general/test_join3.mzn
create mode 100644 tests/spec/unit/general/test_lb_ub_array_int.mzn
create mode 100644 tests/spec/unit/general/test_lb_ub_dom_int.mzn
create mode 100644 tests/spec/unit/general/test_lb_ub_float.mzn
create mode 100644 tests/spec/unit/general/test_let_complex.mzn
create mode 100644 tests/spec/unit/general/test_let_par_array.mzn
create mode 100644 tests/spec/unit/general/test_let_simple.mzn
create mode 100644 tests/spec/unit/general/test_let_var_array.mzn
create mode 100644 tests/spec/unit/general/test_let_with_annotation.mzn
create mode 100644 tests/spec/unit/general/test_min_var_array.mzn
create mode 100644 tests/spec/unit/general/test_negated_and.mzn
create mode 100644 tests/spec/unit/general/test_negated_and_or.mzn
create mode 100644 tests/spec/unit/general/test_negated_let_bad.mzn
create mode 100644 tests/spec/unit/general/test_negated_let_good.mzn
create mode 100644 tests/spec/unit/general/test_negated_let_good_2.mzn
create mode 100644 tests/spec/unit/general/test_negated_or.mzn
create mode 100644 tests/spec/unit/general/test_par_set_element.mzn
create mode 100644 tests/spec/unit/general/test_par_set_id_array_index_sets.mzn
create mode 100644 tests/spec/unit/general/test_queens.mzn
create mode 100644 tests/spec/unit/general/test_reified_element_constraint.mzn
create mode 100644 tests/spec/unit/general/test_reified_let_bad.mzn
create mode 100644 tests/spec/unit/general/test_reified_let_good.mzn
create mode 100644 tests/spec/unit/general/test_same.mzn
create mode 100644 tests/spec/unit/general/test_set_inequality_par.mzn
create mode 100644 tests/spec/unit/general/test_set_lt_1.mzn
create mode 100644 tests/spec/unit/general/test_set_lt_2.mzn
create mode 100644 tests/spec/unit/general/test_set_lt_3.mzn
create mode 100644 tests/spec/unit/general/test_string_array_var.mzn
create mode 100644 tests/spec/unit/general/test_string_cmp.mzn
create mode 100644 tests/spec/unit/general/test_string_var.mzn
create mode 100644 tests/spec/unit/general/test_string_with_quote.mzn
create mode 100644 tests/spec/unit/general/test_times_int_float_eq.mzn
create mode 100644 tests/spec/unit/general/test_times_int_float_eq__defaultopt.mzn
create mode 100644 tests/spec/unit/general/test_to_enum.mzn
create mode 100644 tests/spec/unit/general/test_undefined_enum.fzn
create mode 100644 tests/spec/unit/general/test_undefined_enum.mzn
create mode 100644 tests/spec/unit/general/test_var_array.mzn
create mode 100644 tests/spec/unit/general/test_var_array_access.mzn
create mode 100644 tests/spec/unit/general/test_var_prod.mzn
create mode 100644 tests/spec/unit/general/test_var_set_assignment.mzn
create mode 100644 tests/spec/unit/general/test_var_set_element.mzn
create mode 100644 tests/spec/unit/general/unicode_file_name_μ.mzn
create mode 100644 tests/spec/unit/general/wolfgoatetc.mzn
create mode 100644 tests/spec/unit/general/xorall_bv.mzn
create mode 100644 tests/spec/unit/globals/all_disjoint/globals_all_disjoint.mzn
create mode 100644 tests/spec/unit/globals/all_equal/globals_all_equal_int.mzn
create mode 100644 tests/spec/unit/globals/all_equal/globals_all_equal_set.mzn
create mode 100644 tests/spec/unit/globals/alldifferent/globals_all_different_int.mzn
create mode 100644 tests/spec/unit/globals/alldifferent/globals_all_different_set.mzn
create mode 100644 tests/spec/unit/globals/alldifferent/globals_alldiff_set_nosets.mzn
create mode 100644 tests/spec/unit/globals/alldifferent_except_0/test_alldiff_except0.mzn
create mode 100644 tests/spec/unit/globals/alldifferent_except_0/test_alldiff_except0b.mzn
create mode 100644 tests/spec/unit/globals/among/globals_among.mzn
create mode 100644 tests/spec/unit/globals/atleast/globals_at_least.mzn
create mode 100644 tests/spec/unit/globals/atmost1/globals_at_most1.mzn
create mode 100644 tests/spec/unit/globals/bin_packing/globals_bin_packing.mzn
create mode 100644 tests/spec/unit/globals/bin_packing_capa/globals_bin_packing_capa.mzn
create mode 100644 tests/spec/unit/globals/circuit/test_circuit.mzn
create mode 100644 tests/spec/unit/globals/count/globals_count.mzn
create mode 100644 tests/spec/unit/globals/cumulative/globals_cumulative.mzn
create mode 100644 tests/spec/unit/globals/decreasing/globals_decreasing.mzn
create mode 100644 tests/spec/unit/globals/disjoint/globals_disjoint.mzn
create mode 100644 tests/spec/unit/globals/distribute/globals_distribute.mzn
create mode 100644 tests/spec/unit/globals/global_cardinality/globals_global_cardinality.mzn
create mode 100644 tests/spec/unit/globals/global_cardinality_closed/globals_global_cardinality_closed.mzn
create mode 100644 tests/spec/unit/globals/global_cardinality_low_up/globals_global_cardinality_low_up.mzn
create mode 100644 tests/spec/unit/globals/global_cardinality_low_up_closed/globals_global_cardinality_low_up_closed.mzn
create mode 100644 tests/spec/unit/globals/increasing/globals_increasing.mzn
create mode 100644 tests/spec/unit/globals/increasing/globals_strictly_increasing_opt.mzn
create mode 100644 tests/spec/unit/globals/int_set_channel/globals_int_set_channel.mzn
create mode 100644 tests/spec/unit/globals/int_set_channel/test_int_set_channel2.mzn
create mode 100644 tests/spec/unit/globals/inverse/globals_inverse.mzn
create mode 100644 tests/spec/unit/globals/inverse_in_range/globals_inverse_in_range.mzn
create mode 100644 tests/spec/unit/globals/inverse_set/globals_inverse_set.mzn
create mode 100644 tests/spec/unit/globals/lex2/globals_lex2.mzn
create mode 100644 tests/spec/unit/globals/lex_chain/globals_lex_chain.mzn
create mode 100644 tests/spec/unit/globals/lex_chain/globals_lex_chain__orbitope.mzn
create mode 100644 tests/spec/unit/globals/lex_greater/globals_lex_greater.mzn
create mode 100644 tests/spec/unit/globals/lex_greatereq/globals_lex_greatereq.mzn
create mode 100644 tests/spec/unit/globals/lex_less/globals_lex_less.mzn
create mode 100644 tests/spec/unit/globals/lex_less/test_bool_lex_less.mzn
create mode 100644 tests/spec/unit/globals/lex_lesseq/globals_lex_lesseq.mzn
create mode 100644 tests/spec/unit/globals/lex_lesseq/test_bool_lex_lesseq.mzn
create mode 100644 tests/spec/unit/globals/link_set_to_booleans/globals_link_set_to_booleans.mzn
create mode 100644 tests/spec/unit/globals/maximum/globals_maximum_int.mzn
create mode 100644 tests/spec/unit/globals/minimum/globals_minimum_int.mzn
create mode 100644 tests/spec/unit/globals/nvalue/globals_nvalue.mzn
create mode 100644 tests/spec/unit/globals/partition_set/globals_partition_set.mzn
create mode 100644 tests/spec/unit/globals/range/globals_range.mzn
create mode 100644 tests/spec/unit/globals/regular/globals_regular.mzn
create mode 100644 tests/spec/unit/globals/regular/globals_regular_regex_1.mzn
create mode 100644 tests/spec/unit/globals/regular/globals_regular_regex_2.mzn
create mode 100644 tests/spec/unit/globals/regular/globals_regular_regex_3.mzn
create mode 100644 tests/spec/unit/globals/regular/globals_regular_regex_4.mzn
create mode 100644 tests/spec/unit/globals/regular/globals_regular_regex_5.mzn
create mode 100644 tests/spec/unit/globals/regular/globals_regular_regex_6.mzn
create mode 100644 tests/spec/unit/globals/roots/roots_bad.mzn
create mode 100644 tests/spec/unit/globals/roots/test_roots.mzn
create mode 100644 tests/spec/unit/globals/roots/test_roots2.mzn
create mode 100644 tests/spec/unit/globals/roots/test_roots3.mzn
create mode 100644 tests/spec/unit/globals/sliding_sum/globals_sliding_sum.mzn
create mode 100644 tests/spec/unit/globals/sort/globals_sort.mzn
create mode 100644 tests/spec/unit/globals/strict_lex2/globals_strict_lex2.mzn
create mode 100644 tests/spec/unit/globals/subcircuit/test_subcircuit.mzn
create mode 100644 tests/spec/unit/globals/sum_pred/globals_sum_pred.mzn
create mode 100644 tests/spec/unit/globals/table/globals_table.mzn
create mode 100644 tests/spec/unit/globals/table/globals_table_opt.mzn
create mode 100644 tests/spec/unit/globals/value_precede/globals_value_precede_int.mzn
create mode 100644 tests/spec/unit/globals/value_precede/globals_value_precede_int_opt.mzn
create mode 100644 tests/spec/unit/globals/value_precede/globals_value_precede_set.mzn
create mode 100644 tests/spec/unit/globals/value_precede_chain/globals_value_precede_chain_int.mzn
create mode 100644 tests/spec/unit/globals/value_precede_chain/globals_value_precede_chain_set.mzn
create mode 100644 tests/spec/unit/json/coerce_enum_str.json
create mode 100644 tests/spec/unit/json/coerce_enum_str.mzn
create mode 100644 tests/spec/unit/json/coerce_enum_str_err.json
create mode 100644 tests/spec/unit/json/coerce_enum_str_err.mzn
create mode 100644 tests/spec/unit/json/coerce_indices.json
create mode 100644 tests/spec/unit/json/coerce_indices.mzn
create mode 100644 tests/spec/unit/json/coerce_set.json
create mode 100644 tests/spec/unit/json/coerce_set.mzn
create mode 100644 tests/spec/unit/json/enum_array_xd.mzn
create mode 100644 tests/spec/unit/json/json_enum_def.json
create mode 100644 tests/spec/unit/json/json_enum_def.mzn
create mode 100644 tests/spec/unit/json/json_input_1.json
create mode 100644 tests/spec/unit/json/json_input_1.mzn
create mode 100644 tests/spec/unit/json/json_input_set.json
create mode 100644 tests/spec/unit/json/json_input_set.mzn
create mode 100644 tests/spec/unit/json/json_input_str.json
create mode 100644 tests/spec/unit/json/json_input_str.mzn
create mode 100644 tests/spec/unit/optional/test-opt-binop-flatten.mzn
create mode 100644 tests/spec/unit/optional/test-opt-bool-1.mzn
create mode 100644 tests/spec/unit/optional/test-opt-bool-2.mzn
create mode 100644 tests/spec/unit/optional/test-opt-bool-3.mzn
create mode 100644 tests/spec/unit/optional/test-opt-bool-4.mzn
create mode 100644 tests/spec/unit/optional/test-opt-bool-5.mzn
create mode 100644 tests/spec/unit/optional/test-opt-bool-6.mzn
create mode 100644 tests/spec/unit/optional/test-opt-compute-bounds.mzn
create mode 100644 tests/spec/unit/optional/test-opt-float-1.mzn
create mode 100644 tests/spec/unit/optional/test-opt-float-2.mzn
create mode 100644 tests/spec/unit/optional/test-opt-if-then-else.mzn
create mode 100644 tests/spec/unit/optional/test-opt-int-1.mzn
create mode 100644 tests/spec/unit/optional/test-opt-int-2.mzn
create mode 100644 tests/spec/unit/optional/test-opt-int-3.mzn
create mode 100644 tests/spec/unit/optional/test_bug_456.fzn
create mode 100644 tests/spec/unit/optional/test_bug_456.mzn
create mode 100644 tests/spec/unit/optional/test_if_then_else_opt_bool.mzn
create mode 100644 tests/spec/unit/optional/test_if_then_else_opt_float.mzn
create mode 100644 tests/spec/unit/optional/test_if_then_else_opt_int.mzn
create mode 100644 tests/spec/unit/optional/test_if_then_else_var_opt_bool.mzn
create mode 100644 tests/spec/unit/optional/test_if_then_else_var_opt_float.mzn
create mode 100644 tests/spec/unit/optional/test_if_then_else_var_opt_int.mzn
create mode 100644 tests/spec/unit/output/arg-reif-output.mzn
create mode 100644 tests/spec/unit/output/array-ann.mzn
create mode 100644 tests/spec/unit/output/bug288a.mzn
create mode 100644 tests/spec/unit/output/bug288b.mzn
create mode 100644 tests/spec/unit/output/bug288c.mzn
create mode 100644 tests/spec/unit/output/dzn_output_array.mzn
create mode 100644 tests/spec/unit/output/dzn_output_array.ozn
create mode 100644 tests/spec/unit/output/mzn_bottom1.mzn
create mode 100644 tests/spec/unit/output/mzn_bottom2.mzn
create mode 100644 tests/spec/unit/output/mzn_bottom3.mzn
create mode 100644 tests/spec/unit/output/mzn_bottom4.mzn
create mode 100644 tests/spec/unit/output/mzn_bottom5.mzn
create mode 100644 tests/spec/unit/output/mzn_bottom6.mzn
create mode 100644 tests/spec/unit/output/show_empty.mzn
create mode 100644 tests/spec/unit/output/show_float.mzn
create mode 100644 tests/spec/unit/output/show_float_set.mzn
create mode 100644 tests/spec/unit/output/show_int.mzn
create mode 100644 tests/spec/unit/output/show_int_set.mzn
create mode 100644 tests/spec/unit/output/test-in-output.mzn
create mode 100644 tests/spec/unit/output/very_empty.mzn
create mode 100644 tests/spec/unit/output/very_empty_set.mzn
create mode 100644 tests/spec/unit/param_file/file_resolution/includes/included.mzn
create mode 100644 tests/spec/unit/param_file/file_resolution/inner_directory/data_file.dzn
create mode 100644 tests/spec/unit/param_file/file_resolution/inner_directory/data_file.json
create mode 100644 tests/spec/unit/param_file/file_resolution/inner_directory/model_file.mzn
create mode 100644 tests/spec/unit/param_file/file_resolution/param_file_resolution_inner.mpc
create mode 100644 tests/spec/unit/param_file/param_file_array.json
create mode 100644 tests/spec/unit/param_file/param_file_array.mzn
create mode 100644 tests/spec/unit/param_file/param_file_blacklist.mzn
create mode 100644 tests/spec/unit/param_file/param_file_blacklist_1.mpc
create mode 100644 tests/spec/unit/param_file/param_file_blacklist_2.mpc
create mode 100644 tests/spec/unit/param_file/param_file_nested_object.mpc
create mode 100644 tests/spec/unit/param_file/param_file_nested_object.mzn
create mode 100644 tests/spec/unit/param_file/param_file_recursive.mpc
create mode 100644 tests/spec/unit/param_file/param_file_recursive.mzn
create mode 100644 tests/spec/unit/param_file/param_file_resolution.mpc
create mode 100644 tests/spec/unit/param_file/param_file_resolution.mzn
create mode 100644 tests/spec/unit/regression/abs_bug.mzn
create mode 100644 tests/spec/unit/regression/absent_id_crash.mzn
create mode 100644 tests/spec/unit/regression/arg-reif-array-float.mzn
create mode 100644 tests/spec/unit/regression/arg-reif-array-int.mzn
create mode 100644 tests/spec/unit/regression/arg-reif-float.mzn
create mode 100644 tests/spec/unit/regression/arg-reif-int-set.mzn
create mode 100644 tests/spec/unit/regression/arg-reif-int.mzn
create mode 100644 tests/spec/unit/regression/array_set_element_nosets.mzn
create mode 100644 tests/spec/unit/regression/array_var_set_element_nosets.mzn
create mode 100644 tests/spec/unit/regression/assign_reverse_map.mzn
create mode 100644 tests/spec/unit/regression/big_array_lit.mzn
create mode 100644 tests/spec/unit/regression/bizarre.mzn
create mode 100644 tests/spec/unit/regression/bool2float_let.mzn
create mode 100644 tests/spec/unit/regression/bug109.mzn
create mode 100644 tests/spec/unit/regression/bug110.mzn
create mode 100644 tests/spec/unit/regression/bug131.mzn
create mode 100644 tests/spec/unit/regression/bug141.mzn
create mode 100644 tests/spec/unit/regression/bug202.mzn
create mode 100644 tests/spec/unit/regression/bug212.mzn
create mode 100644 tests/spec/unit/regression/bug222.mzn
create mode 100644 tests/spec/unit/regression/bug244.mzn
create mode 100644 tests/spec/unit/regression/bug256.mzn
create mode 100644 tests/spec/unit/regression/bug256b.mzn
create mode 100644 tests/spec/unit/regression/bug258.dzn
create mode 100644 tests/spec/unit/regression/bug259.mzn
create mode 100644 tests/spec/unit/regression/bug269.mzn
create mode 100644 tests/spec/unit/regression/bug282.mzn
create mode 100644 tests/spec/unit/regression/bug283.mzn
create mode 100644 tests/spec/unit/regression/bug284.mzn
create mode 100644 tests/spec/unit/regression/bug287.mzn
create mode 100644 tests/spec/unit/regression/bug290_orig.mzn
create mode 100644 tests/spec/unit/regression/bug290_simple.mzn
create mode 100644 tests/spec/unit/regression/bug312.mzn
create mode 100644 tests/spec/unit/regression/bug318_orig.mzn
create mode 100644 tests/spec/unit/regression/bug335.mzn
create mode 100644 tests/spec/unit/regression/bug337.mzn
create mode 100644 tests/spec/unit/regression/bug337_mod.mzn
create mode 100644 tests/spec/unit/regression/bug341.mzn
create mode 100644 tests/spec/unit/regression/bug347.mzn
create mode 100644 tests/spec/unit/regression/bug380.mzn
create mode 100644 tests/spec/unit/regression/bug45.mzn
create mode 100644 tests/spec/unit/regression/bug52.mzn
create mode 100644 tests/spec/unit/regression/bug67.mzn
create mode 100644 tests/spec/unit/regression/bug68b.mzn
create mode 100644 tests/spec/unit/regression/bug69_1.mzn
create mode 100644 tests/spec/unit/regression/bug69_2.mzn
create mode 100644 tests/spec/unit/regression/bug69_3.mzn
create mode 100644 tests/spec/unit/regression/bug69_4.mzn
create mode 100644 tests/spec/unit/regression/bug70.mzn
create mode 100644 tests/spec/unit/regression/bug71_1.mzn
create mode 100644 tests/spec/unit/regression/bug71_2.mzn
create mode 100644 tests/spec/unit/regression/bug82.mzn
create mode 100644 tests/spec/unit/regression/bug85.mzn
create mode 100644 tests/spec/unit/regression/bug_08.mzn
create mode 100644 tests/spec/unit/regression/bug_r7995.mzn
create mode 100644 tests/spec/unit/regression/card_flatten_lb.mzn
create mode 100644 tests/spec/unit/regression/cardinality_atmost_partition.mzn
create mode 100644 tests/spec/unit/regression/change_partition.mzn
create mode 100644 tests/spec/unit/regression/checker_var_bug.mzc.mzn
create mode 100644 tests/spec/unit/regression/checker_var_bug.mzn
create mode 100644 tests/spec/unit/regression/coerce_set_to_array_1.mzn
create mode 100644 tests/spec/unit/regression/coerce_set_to_array_2.mzn
create mode 100644 tests/spec/unit/regression/coercion_par.mzn
create mode 100644 tests/spec/unit/regression/comprehension_where.mzn
create mode 100644 tests/spec/unit/regression/cse_array_lit.fzn
create mode 100644 tests/spec/unit/regression/cse_array_lit.mzn
create mode 100644 tests/spec/unit/regression/decision_tree_binary.mzn
create mode 100644 tests/spec/unit/regression/empty-array1d.mzn
create mode 100644 tests/spec/unit/regression/enigma_1568.mzn
create mode 100644 tests/spec/unit/regression/error_in_comprehension.mzn
create mode 100644 tests/spec/unit/regression/flat_cv_call.mzn
create mode 100644 tests/spec/unit/regression/flat_cv_let.mzn
create mode 100644 tests/spec/unit/regression/flat_set_lit.mzn
create mode 100644 tests/spec/unit/regression/flatten_comp_in.mzn
create mode 100644 tests/spec/unit/regression/flatten_comp_in2.mzn
create mode 100644 tests/spec/unit/regression/flipstrip_simple.mzn
create mode 100644 tests/spec/unit/regression/float_div_crash.mzn
create mode 100644 tests/spec/unit/regression/float_mod_crash.mzn
create mode 100644 tests/spec/unit/regression/float_opt_crash.mzn
create mode 100644 tests/spec/unit/regression/follow_id_absent_crash.mzn
create mode 100644 tests/spec/unit/regression/hundred_doors_unoptimized.mzn
create mode 100644 tests/spec/unit/regression/int_times.mzn
create mode 100644 tests/spec/unit/regression/is_fixed.mzn
create mode 100644 tests/spec/unit/regression/is_fixed_comp.mzn
create mode 100644 tests/spec/unit/regression/linear_bool_elem_bug.mzn
create mode 100644 tests/spec/unit/regression/makepar_output.mzn
create mode 100644 tests/spec/unit/regression/nested_clause.mzn
create mode 100644 tests/spec/unit/regression/no_macro.mzn
create mode 100644 tests/spec/unit/regression/non-set-array-ti-location.mzn
create mode 100644 tests/spec/unit/regression/nosets_369.mzn
create mode 100644 tests/spec/unit/regression/opt_noncontiguous_domain.mzn
create mode 100644 tests/spec/unit/regression/opt_removed_items.mzn
create mode 100644 tests/spec/unit/regression/output_only_fn.mzn
create mode 100644 tests/spec/unit/regression/output_only_fn.ozn
create mode 100644 tests/spec/unit/regression/output_only_no_rhs.mzn
create mode 100644 tests/spec/unit/regression/overloading.mzn
create mode 100644 tests/spec/unit/regression/par_opt_equal.mzn
create mode 100644 tests/spec/unit/regression/parse_assignments.mzc.mzn
create mode 100644 tests/spec/unit/regression/parse_assignments.mzn
create mode 100644 tests/spec/unit/regression/parser_location.mzn
create mode 100644 tests/spec/unit/regression/pred_param_r7550.mzn
create mode 100644 tests/spec/unit/regression/round.mzn
create mode 100644 tests/spec/unit/regression/seq_search_bug.mzn
create mode 100644 tests/spec/unit/regression/set_inequality_par.mzn
create mode 100644 tests/spec/unit/regression/string-test-arg.mzn
create mode 100644 tests/spec/unit/regression/subsets_100.mzn
create mode 100644 tests/spec/unit/regression/test_bool2int.mzn
create mode 100644 tests/spec/unit/regression/test_bug218.mzn
create mode 100644 tests/spec/unit/regression/test_bug218_inc.mzn
create mode 100644 tests/spec/unit/regression/test_bug359.mzn
create mode 100644 tests/spec/unit/regression/test_bug45.mzn
create mode 100644 tests/spec/unit/regression/test_bug53.mzn
create mode 100644 tests/spec/unit/regression/test_bug54.mzn
create mode 100644 tests/spec/unit/regression/test_bug55.mzn
create mode 100644 tests/spec/unit/regression/test_bug57.mzn
create mode 100644 tests/spec/unit/regression/test_bug65.mzn
create mode 100644 tests/spec/unit/regression/test_bug66.mzn
create mode 100644 tests/spec/unit/regression/test_bug67.mzn
create mode 100644 tests/spec/unit/regression/test_bug70.mzn
create mode 100644 tests/spec/unit/regression/test_bug71.mzn
create mode 100644 tests/spec/unit/regression/test_bug72.mzn
create mode 100644 tests/spec/unit/regression/test_bug_129.mzn
create mode 100644 tests/spec/unit/regression/test_equality_of_indirect_annotations.mzn
create mode 100644 tests/spec/unit/regression/test_github_30.mzn
create mode 100644 tests/spec/unit/regression/test_multioutput.mzn
create mode 100644 tests/spec/unit/regression/test_not_in.mzn
create mode 100644 tests/spec/unit/regression/test_output_array_of_set.mzn
create mode 100644 tests/spec/unit/regression/test_output_string_var.mzn
create mode 100644 tests/spec/unit/regression/test_parout.mzn
create mode 100644 tests/spec/unit/regression/test_slice_1d_array.mzn
create mode 100644 tests/spec/unit/regression/ti_error_location.mzn
create mode 100644 tests/spec/unit/regression/ts_bug.mzn
create mode 100644 tests/spec/unit/regression/var_opt_unconstrained.mzn
create mode 100644 tests/spec/unit/regression/var_self_assign_bug.mzn
create mode 100644 tests/spec/unit/regression/where-forall-bug.mzn
create mode 100644 tests/spec/unit/regression/xor_mixed_context.mzn
create mode 100644 tests/spec/unit/search/int_choice_1.mzn
create mode 100644 tests/spec/unit/search/int_choice_2.mzn
create mode 100644 tests/spec/unit/search/int_choice_6.mzn
create mode 100644 tests/spec/unit/search/int_var_select_1.mzn
create mode 100644 tests/spec/unit/search/int_var_select_2.mzn
create mode 100644 tests/spec/unit/search/int_var_select_3.mzn
create mode 100644 tests/spec/unit/search/int_var_select_4.mzn
create mode 100644 tests/spec/unit/search/int_var_select_6.mzn
create mode 100644 tests/spec/unit/search/test-ff1.mzn
create mode 100644 tests/spec/unit/search/test-ff2.mzn
create mode 100644 tests/spec/unit/search/test-ff3.mzn
create mode 100644 tests/spec/unit/search/test-large1.mzn
create mode 100644 tests/spec/unit/search/test-med1.mzn
create mode 100644 tests/spec/unit/search/test-small1.mzn
create mode 100644 tests/spec/unit/test-globals-float.mzn
create mode 100644 tests/style.css
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000..b74e54c
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,21 @@
+---
+BasedOnStyle: Google
+
+ColumnLimit: 100
+DerivePointerAlignment: false
+AccessModifierOffset: -2
+
+IncludeBlocks: Regroup
+IncludeCategories:
+ - Regex: '^( download.sh
+ - sh download.sh vendor master vendor:${MZNARCH} vendor.zip
+ - unzip -q vendor.zip
+
+.download_vendor_win: &download_vendor_win
+ - curl -o download.sh --location --header "PRIVATE-TOKEN:%ACCESS_TOKEN%" --silent https://gitlab.com/api/v4/snippets/1796163/raw
+ - dos2unix download.sh
+ - sh download.sh vendor master vendor:%MZNARCH% vendor.zip
+ - unzip -q vendor.zip
+
+.download_bundle: &download_bundle
+ - curl --location --header "PRIVATE-TOKEN:$ACCESS_TOKEN" --silent https://gitlab.com/api/v4/snippets/1796163/raw | tr -d '\r' > download.sh
+ - sh download.sh vendor master bundle:${MZNARCH} vendor.zip
+ - unzip -q vendor.zip
+
+.download_bundle_win: &download_bundle_win
+ - curl -o download.sh --location --header "PRIVATE-TOKEN:%ACCESS_TOKEN%" --silent https://gitlab.com/api/v4/snippets/1796163/raw
+ - dos2unix download.sh
+ - sh download.sh vendor master bundle:%MZNARCH% vendor.zip
+ - unzip -q vendor.zip
+
+variables:
+ # CCache settings
+ CCACHE_DIR: "$CI_PROJECT_DIR/.ccache"
+ CCACHE_MAXSIZE: "100M"
+
+default:
+ interruptible: true
+
+# ----------- Build MiniZinc -----------
+
+.build:
+ stage: build
+ before_script:
+ - *download_vendor
+ script:
+ - cmake -S . -B build -G"$CMAKE_ARCH" -DCMAKE_BUILD_TYPE=Release -DBUILD_REF=$CI_PIPELINE_ID -DUSE_PROPRIETARY=OFF -DGecode_ROOT="$CI_PROJECT_DIR/vendor/gecode" -DGurobi_ROOT="$CI_PROJECT_DIR/vendor/gurobi" -DCPlex_ROOT="$CI_PROJECT_DIR/vendor/CPLEX_Studio/cplex" -DOsiCBC_ROOT="$CI_PROJECT_DIR/vendor/cbc" -DSCIP_ROOT="$CI_PROJECT_DIR/vendor/scip" -DXpress_ROOT="$CI_PROJECT_DIR/vendor/xpressmp" -DCMAKE_INSTALL_PREFIX="$CI_PROJECT_DIR/minizinc"
+ - cmake --build build --config Release --target install
+ artifacts:
+ paths: [minizinc/]
+ cache:
+ key: "$CI_JOB_STAGE:$CI_JOB_NAME"
+ paths: [.ccache, vendor.zip*]
+ only: [tags, merge_requests, pipelines, develop, master]
+
+build:linux:
+ extends: .build
+ image: minizinc/build-environment:cpp
+ variables:
+ MZNARCH: "linux"
+ CMAKE_ARCH: "Ninja"
+ tags: [linux, docker]
+
+build:musl:
+ extends: .build
+ image: minizinc/build-environment:alpine
+ variables:
+ MZNARCH: "musl"
+ CMAKE_ARCH: "Ninja"
+ tags: [linux, docker]
+
+build:osx:
+ extends: .build
+ variables:
+ MZNARCH: "osx"
+ CMAKE_ARCH: "Ninja"
+ tags: [osx, cmake, cpp]
+
+build:win64:
+ extends: .build
+ variables:
+ MZNARCH: "win64"
+ CMAKE_ARCH: "Ninja"
+ BUILDCACHE_DIR: "$CI_PROJECT_DIR/.ccache"
+ BUILDCACHE_MAX_CACHE_SIZE: "104857600"
+ before_script:
+ - *download_vendor_win
+ script:
+ - cmake -S . -B build -G"%CMAKE_ARCH%" -DCMAKE_BUILD_TYPE=Release -DBUILD_REF=%CI_PIPELINE_ID% -DCCACHE_PROGRAM:STRING=buildcache -DUSE_PROPRIETARY=OFF -DGecode_ROOT="%CI_PROJECT_DIR%/vendor/gecode" -DGurobi_ROOT="%CI_PROJECT_DIR%/vendor/gurobi" -DCPlex_ROOT="%CI_PROJECT_DIR%/vendor/CPLEX_Studio/cplex" -DOsiCBC_ROOT="%CI_PROJECT_DIR%/vendor/cbc" -DSCIP_ROOT="%CI_PROJECT_DIR%/vendor/scip" -DXpress_ROOT="%CI_PROJECT_DIR%/vendor/xpressmp" -DCMAKE_INSTALL_PREFIX="%CI_PROJECT_DIR%/minizinc"
+ - cmake --build build --config Release --target install
+ cache:
+ key: "build_win64"
+ tags: [win64, cmake, cpp, ninja, buildcache]
+
+build:wasm_complete:
+ extends: .build
+ image: emscripten/emsdk
+ variables:
+ MZNARCH: "wasm"
+ CMAKE_ARCH: "Unix Makefiles"
+ script:
+ - apt-get update && apt-get install -qq python3
+ - emcmake cmake -S . -B build -G"$CMAKE_ARCH" -DCMAKE_FIND_ROOT_PATH="/" -DCMAKE_BUILD_TYPE=MinSizeRel -v -DBUILD_REF=$CI_PIPELINE_ID -DUSE_PROPRIETARY=OFF -DGecode_ROOT="$CI_PROJECT_DIR/vendor/gecode" -DGurobi_ROOT="$CI_PROJECT_DIR/vendor/gurobi" -DCPlex_ROOT="$CI_PROJECT_DIR/vendor/CPLEX_Studio/cplex" -DOsiCBC_ROOT="$CI_PROJECT_DIR/vendor/cbc" -DSCIP_ROOT="$CI_PROJECT_DIR/vendor/scip" -DXpress_ROOT="$CI_PROJECT_DIR/vendor/xpressmp" -DCMAKE_INSTALL_PREFIX="$CI_PROJECT_DIR/minizinc"
+ - cmake --build build --config MinSizeRel --target install
+ tags: [docker, high-mem]
+ when: manual
+
+build:wasm_minimal:
+ extends: .build
+ image: emscripten/emsdk
+ variables:
+ MZNARCH: "wasm"
+ CMAKE_ARCH: "Unix Makefiles"
+ script:
+ - apt-get update && apt-get install -qq python3
+ - emcmake cmake -S . -B build -G"$CMAKE_ARCH" -DCMAKE_BUILD_TYPE=MinSizeRel -v -DBUILD_REF=$CI_PIPELINE_ID -DUSE_PROPRIETARY=OFF -DGecode_ROOT="$CI_PROJECT_DIR/vendor/gecode" -DGurobi_ROOT="$CI_PROJECT_DIR/vendor/gurobi" -DCPlex_ROOT="$CI_PROJECT_DIR/vendor/CPLEX_Studio/cplex" -DOsiCBC_ROOT="$CI_PROJECT_DIR/vendor/cbc" -DSCIP_ROOT="$CI_PROJECT_DIR/vendor/scip" -DXpress_ROOT="$CI_PROJECT_DIR/vendor/xpressmp" -DCMAKE_INSTALL_PREFIX="$CI_PROJECT_DIR/minizinc"
+ - cmake --build build --config MinSizeRel --target install
+ tags: [docker]
+ when: manual
+
+# ----------- Test Suite -----------
+
+test:format:
+ stage: test
+ image: minizinc/build-environment:clang-format
+ script:
+ - cmake -S . -B build -GNinja -DCLANG_FORMAT_EXECUTABLE="run-clang-format" -DCLANG_FORMAT_FLAGS="--color always"
+ - cmake --build build --target format
+ tags: [linux, docker]
+ only:
+ changes:
+ - "**/*.{cpp,c,h,hh,hpp}"
+ - .clang-format
+ refs:
+ - merge_requests
+ needs: []
+
+test:analyse:
+ extends: .build
+ stage: test
+ image: minizinc/build-environment:clang-tidy
+ variables:
+ MZNARCH: "linux"
+ CMAKE_ARCH: "Ninja"
+ script:
+ - cmake -S . -B build -G"$CMAKE_ARCH" -DCMAKE_CXX_CLANG_TIDY="clang-tidy" -DCMAKE_BUILD_TYPE="Debug" -DGecode_ROOT="$CI_PROJECT_DIR/vendor/gecode" -DGurobi_ROOT="$CI_PROJECT_DIR/vendor/gurobi" -DCPlex_ROOT="$CI_PROJECT_DIR/vendor/CPLEX_Studio/cplex" -DOsiCBC_ROOT="$CI_PROJECT_DIR/vendor/cbc" -DSCIP_ROOT="$CI_PROJECT_DIR/vendor/scip" -DXpress_ROOT="$CI_PROJECT_DIR/vendor/xpressmp"
+ - cmake --build build --config Debug
+ tags: [linux, docker]
+ only:
+ changes:
+ - "**/*.{cpp,c,h,hh,hpp}"
+ - .clang-tidy
+ refs:
+ - merge_requests
+ needs: []
+
+.tests:
+ stage: test
+ variables:
+ PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
+ MZN_SOLVER_PATH: "$CI_PROJECT_DIR/vendor/chuffed/share/minizinc/solvers/:$CI_PROJECT_DIR/vendor/gecode"
+ before_script:
+ - *download_bundle
+ # TODO: Add gecode configuration to the Gecode solver
+ - 'echo ''{"id":"org.gecode.gecode","name":"Gecode","description":"Gecode FlatZinc executable","version":"6.1.1","mznlib":"share/gecode/mznlib","executable":"bin/fzn-gecode","tags":["cp","int","float","set","restart"],"stdFlags":["-a","-f","-n","-p","-r","-s","-t"],"extraFlags":[["-c-d","Recomputation commit distance","int","8"],["-a-d","Recomputation adaption distance","int","2"],["-decay","Decay factor","float","0.99"],["-node","Node cutoff","int","0"],["-fail","Failure cutoff","int","0"],["-restart","Restart sequence type","opt:none:constant:linear:luby:geometric","none"],["-restart-base","Base for geometric restart sequence","float","1.5"],["-restart-scale","Scale factor for restart sequence","int","250"],["-nogoods","Use no-goods from restarts","bool","false"],["-nogoods-limit","Depth limit for no-good extraction","int","128"]],"supportsMzn":false,"supportsFzn":true,"needsSolns2Out":true,"needsMznExecutable":false,"needsStdlibDir":false,"isGUIApplication":false}'' > vendor/gecode/gecode.msc'
+ - export PATH=$CI_PROJECT_DIR/minizinc/bin:$PATH
+ - minizinc --solvers
+ - cd tests
+ - python3 -m venv env
+ - source env/bin/activate
+ - pip install -r requirements.txt
+ after_script:
+ - echo "Test results at https://minizinc.gitlab.io/-/minizinc/-/jobs/${CI_JOB_ID}/artifacts/tests/output/report.html"
+ artifacts:
+ when: always
+ paths:
+ - tests/output
+ reports:
+ junit: tests/output/junit*.xml
+ cache:
+ key: "$CI_JOB_STAGE:$CI_JOB_NAME"
+ paths: [.cache/pip, vendor.zip*]
+ only: [merge_requests, pipelines, master]
+
+# Linux specific config
+.tests_linux:
+ extends: .tests
+ image: python:latest
+ variables:
+ MZNARCH: "linux"
+ tags: [linux, docker]
+ dependencies: ["build:linux"]
+ needs: ["build:linux"]
+
+# OSX specific config
+.tests_osx:
+ extends: .tests
+ variables:
+ MZNARCH: "osx"
+ tags: [osx]
+ dependencies: ["build:osx"]
+ needs: ["build:osx"]
+
+# Windows specific config
+.tests_win64:
+ extends: .tests
+ variables:
+ MZNARCH: "win64"
+ MZN_SOLVER_PATH: "$CI_PROJECT_DIR/vendor/chuffed/share/minizinc/solvers;$CI_PROJECT_DIR/vendor/gecode"
+ before_script:
+ - *download_bundle_win
+ # TODO: Add gecode configuration to the Gecode solver
+ - 'echo {"id":"org.gecode.gecode","name":"Gecode","description":"Gecode FlatZinc executable","version":"6.1.1","mznlib":"share/gecode/mznlib","executable":"bin/fzn-gecode","tags":["cp","int","float","set","restart"],"stdFlags":["-a","-f","-n","-p","-r","-s","-t"],"extraFlags":[["-c-d","Recomputation commit distance","int","8"],["-a-d","Recomputation adaption distance","int","2"],["-decay","Decay factor","float","0.99"],["-node","Node cutoff","int","0"],["-fail","Failure cutoff","int","0"],["-restart","Restart sequence type","opt:none:constant:linear:luby:geometric","none"],["-restart-base","Base for geometric restart sequence","float","1.5"],["-restart-scale","Scale factor for restart sequence","int","250"],["-nogoods","Use no-goods from restarts","bool","false"],["-nogoods-limit","Depth limit for no-good extraction","int","128"]],"supportsMzn":false,"supportsFzn":true,"needsSolns2Out":true,"needsMznExecutable":false,"needsStdlibDir":false,"isGUIApplication":false} > vendor/gecode/gecode.msc'
+ - set PATH=%CI_PROJECT_DIR%/minizinc/bin;%PATH%
+ - cd tests
+ - python -m venv env
+ - call env\Scripts\activate.bat
+ - pip install -r requirements.txt
+ after_script:
+ - "echo Test results at https://minizinc.gitlab.io/-/minizinc/-/jobs/%CI_JOB_ID%/artifacts/tests/output/report.html"
+ tags: [win64]
+ dependencies: ["build:win64"]
+ needs: ["build:win64"]
+ cache:
+ key: test_win64
+
+.tests_fast:
+ script:
+ - pytest
+
+.tests_full:
+ script:
+ - pytest --all-suites
+ when: manual
+
+test:linux:fast:
+ extends: [.tests_linux, .tests_fast]
+
+test:linux:full:
+ extends: [.tests_linux, .tests_full]
+
+test:osx:fast:
+ extends: [.tests_osx, .tests_fast]
+
+test:osx:full:
+ extends: [.tests_osx, .tests_full]
+
+test:win64:fast:
+ extends: [.tests_win64, .tests_fast]
+ cache:
+ key: test_win64_fast
+
+test:win64:full:
+ extends: [.tests_win64, .tests_full]
+ cache:
+ key: test_win64_full
+
+# ----------- Documentation -----------
+
+documentation:
+ stage: test
+ image: guidotack/sphinx-doc:latest
+ variables:
+ MZNARCH: "linux"
+ before_script:
+ - *download_bundle
+ script:
+ - cp $CI_PROJECT_DIR/share/minizinc/gecode_presolver/gecode.mzn $CI_PROJECT_DIR/share/minizinc/std/
+ - cp $CI_PROJECT_DIR/vendor/chuffed/share/minizinc/chuffed/chuffed.mzn $CI_PROJECT_DIR/share/minizinc/std/
+ - echo 'include "globals.mzn"; include "gecode.mzn"; include "chuffed.mzn";' > $CI_PROJECT_DIR/share/minizinc/std/all.mzn
+ - ./minizinc/bin/mzn2doc --rst-output --include-stdlib --output-base $CI_PROJECT_DIR/docs/en/lib $CI_PROJECT_DIR/share/minizinc/std/all.mzn
+ - ./minizinc/bin/mzn2doc --rst-output --include-stdlib --output-base $CI_PROJECT_DIR/docs/chi/lib $CI_PROJECT_DIR/share/minizinc/std/all.mzn
+ - cd $CI_PROJECT_DIR/docs/en
+ - make html latexpdf
+ - cd $CI_PROJECT_DIR/docs/chi
+ - make html latexpdf
+ - mkdir -p $CI_PROJECT_DIR/docs-deploy/en
+ - mkdir -p $CI_PROJECT_DIR/docs-deploy/chi
+ - cp -r $CI_PROJECT_DIR/docs/en/_build/html/* $CI_PROJECT_DIR/docs-deploy/en/
+ - cp $CI_PROJECT_DIR/docs/en/_build/latex/MiniZinc.pdf $CI_PROJECT_DIR/docs-deploy/en/MiniZinc\ Handbook.pdf
+ - cp -r $CI_PROJECT_DIR/docs/chi/_build/html/* $CI_PROJECT_DIR/docs-deploy/chi/
+ - cp $CI_PROJECT_DIR/docs/chi/_build/latex/MiniZinc.pdf $CI_PROJECT_DIR/docs-deploy/chi/MiniZinc\ Handbook.pdf
+ artifacts:
+ paths:
+ - docs-deploy
+ tags:
+ - linux
+ - docker
+ only: [tags, merge_requests, pipelines, develop, master]
+ dependencies: ["build:linux"]
+ needs: ["build:linux"]
+
+# ----------- Trigger FindMUS pipeline -----------
+
+trigger:findmus:
+ stage: trigger
+ trigger:
+ project: minizinc/FindMUS
+ branch: develop
+ only: [develop]
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..29795e9
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,108 @@
+cmake_minimum_required(VERSION 3.4.0)
+set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum OS X deployment version") # Must be before project()
+
+# -------------------------------------------------------------------------------------------------------------------
+# -- Project information and versioning.
+
+project(libminizinc
+ VERSION 2.5.6
+ LANGUAGES CXX C)
+
+if(NOT BUILD_REF)
+ set(BUILD_REF "")
+endif()
+
+# -------------------------------------------------------------------------------------------------------------------
+# -- Project build options
+
+# Static vs. Dynamic linking
+option(CPlex_PLUGIN "Build CPLEX binding as a plugin" ON)
+option(Gurobi_PLUGIN "Build Gurobi binding as a plugin" ON)
+
+# Enforce non proprietary build
+option(USE_PROPRIETARY "Enable static linking of proprietary solvers" OFF)
+if(NOT USE_PROPRIETARY)
+ set(CPLEX_PLUGIN ON)
+ set(GUROBI_PLUGIN ON)
+endif()
+
+# CMake options default value
+option(CMAKE_POSITION_INDEPENDENT_CODE "Default value for POSITION_INDEPENDENT_CODE of targets" TRUE)
+
+# -------------------------------------------------------------------------------------------------------------------
+# -- CMake initialisation
+
+include(GNUInstallDirs)
+
+# Fix library suffixes for Web Assembly platform
+include(cmake/support/emscripten_setup.cmake)
+
+# Try to find possible dependencies
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
+if(POLICY CMP0074)
+ cmake_policy(SET CMP0074 NEW)
+endif(POLICY CMP0074)
+find_package(CPlex)
+find_package(Geas)
+find_package(Gecode 6.0 COMPONENTS Driver Float Int Kernel Minimodel Search Set Support)
+find_package(Gurobi)
+find_package(OsiCBC)
+find_package(SCIP)
+find_package(Xpress)
+
+# Set build type when none is selected
+set(DEFAULT_BUILD_TYPE "Release")
+if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
+ message(STATUS "Setting build type to '${DEFAULT_BUILD_TYPE}' as none was specified.")
+ set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE STRING "Choose the type of build." FORCE)
+ # Set the possible values of build type for cmake-gui
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
+ "Debug"
+ "Release"
+ "MinSizeRel"
+ "RelWithDebInfo")
+endif()
+
+# -------------------------------------------------------------------------------------------------------------------
+# -- Compiler configuration
+
+include(cmake/support/ccache_setup.cmake)
+include(cmake/support/compiler_setup.cmake)
+
+configure_file(
+ ${PROJECT_SOURCE_DIR}/include/minizinc/config.hh.in
+ ${PROJECT_BINARY_DIR}/include/minizinc/config.hh
+)
+
+install(
+ FILES ${PROJECT_BINARY_DIR}/include/minizinc/config.hh
+ DESTINATION include/minizinc
+)
+
+# -------------------------------------------------------------------------------------------------------------------
+# -- MiniZinc compilation targets.
+
+find_package(Threads REQUIRED)
+include_directories(${PROJECT_SOURCE_DIR}/include)
+include_directories(${PROJECT_BINARY_DIR}/include)
+
+# Libraries
+include(cmake/targets/libmzn.cmake)
+
+# Executables
+include(cmake/targets/minizinc.cmake)
+include(cmake/targets/mzn2doc.cmake)
+
+# -------------------------------------------------------------------------------------------------------------------
+# -- Platform Specific configuration
+include(cmake/support/config_emscripten.cmake)
+
+# -------------------------------------------------------------------------------------------------------------------
+# -- CMake configuration generation
+
+include(cmake/support/config_export.cmake)
+include(cmake/support/config_output.cmake)
+
+# -------------------------------------------------------------------------------------------------------------------
+# -- Support Actions
+include(cmake/support/format.cmake)
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..dec4bbc
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,377 @@
+If not noted otherwise in individual file headers, all files that make up
+the libminizinc distribution are released under the Mozilla Public License
+Version 2.0, a copy of which can be found below.
+
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..4dbf6c3
--- /dev/null
+++ b/README.md
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
MiniZinc
+
+
+ A high-level constraint modelling language that allows you to easily
+ express and solve discrete optimisation problems.
+
+ Visit our website »
+
+
+ View Documentation
+ ·
+ Report Bug
+ ·
+ Request Feature
+
+
+
+
+
+## Table of Contents
+
+* [About the Project](#about-the-project)
+* [Getting Started](#getting-started)
+ * [Installation](#installation)
+ * [Usage](#usage)
+* [Building](#building)
+ * [Prerequisites](#prerequisites)
+ * [Compilation](#compilation)
+* [Testing](#testing)
+* [License](#license)
+* [Contact](#contact)
+
+
+
+## About The Project
+
+MiniZinc is a free and open-source constraint modeling language.
+
+You can use MiniZinc to model constraint satisfaction and optimisation problems
+in a high-level, solver-independent way, taking advantage of a large library of
+pre-defined constraints. Your model is then compiled into FlatZinc, a solver
+input language that is understood by a wide range of solvers.
+
+MiniZinc is developed at Monash University in collaboration with Data61
+Decision Sciences.
+
+
+## Getting Started
+
+To get a MiniZinc up and running follow these simple steps.
+
+### Installation
+
+The recommended way to install _MiniZinc_ is by the use of the bundled binary
+packages. These packages are available for machines running Linux, Mac, and
+Windows.
+
+The latest release can be found on [the MiniZinc
+website](http://www.minizinc.org/software.html).
+
+### Usage
+
+Once the MiniZinc bundle is installed on your machine, you can start expressing
+and solving discrete optimisation problems. The following code segment shows a
+MiniZinc model for the well known n-queens problem.
+
+```minizinc
+int: n = 8; % The number of queens.
+
+array [1..n] of var 1..n: q;
+
+include "alldifferent.mzn";
+
+constraint alldifferent(q);
+constraint alldifferent(i in 1..n)(q[i] + i);
+constraint alldifferent(i in 1..n)(q[i] - i);
+```
+
+You have two easy options to solve this model:
+ - In the MiniZincIDE: Select your preferred solver and press the "Run" button.
+ - With the `minizinc` executable available on your path: run `minizinc --solver gecode nqueens.mzn`.
+
+_For more example MiniZinc models and more information about working with
+MiniZinc, please refer to our
+[Documentation](https://www.minizinc.org/doc-latest/)_
+
+
+## Building
+
+The following instructions will help you compile the MiniZinc compiler. Note
+that this repository does not include the IDE, findMUS, or any solvers that are
+part of the MiniZinc project. These can be found in the following repositories:
+
+ - [MiniZincIDE](https://github.com/MiniZinc/MiniZincIDE)
+ - [Gecode](https://github.com/Gecode/gecode)
+ - [Chuffed](https://github.com/chuffed/chuffed)
+
+### Prerequisites
+
+- [CMake](https://cmake.org/) (>=3.4)
+- A recent C++ compiler - Compilation is tested with recent versions of Clang,
+ GCC, and Microsoft Visual C++.
+- (optional) [Bison](https://www.gnu.org/software/bison/) (>=3.4) and
+ [Flex](https://github.com/westes/flex) (>=2.5) - To make changes to the
+ MiniZinc lexer or parser.
+- (optional) [Gecode](https://www.gecode.org/) - To compile the internal Gecode
+ solver interface (included in the MiniZinc bundle)
+- (optional) [Coin OR's CBC](https://www.coin-or.org/) - To compile the
+ internal CBC solver interface (included in the MiniZinc bundle)
+- (optional) Proprietary solver headers
+ ([CPLEX](https://www.ibm.com/analytics/cplex-optimizer),
+ [Gurobi](https://www.gurobi.com/), [SCIP](https://www.scipopt.org/),
+ [Xpress](https://www.fico.com/)) - To load these solvers at runtime (included
+ in the MiniZinc bundle)
+
+### Compilation
+
+The MiniZinc compiler is compiled as a CMake project. CMake's [User Interaction
+Guide](https://cmake.org/cmake/help/latest/guide/user-interaction/index.html)
+can provide you with a quick introduction to compiling CMake projects. The
+following CMake variables can be used in the MiniZinc project to instruct the
+compilation behaviour:
+
+| Variable | Default | Description |
+|----------------------------------------------|---------|-------------------------------------------------------------|
+| CMAKE_BUILD_TYPE | Release | Build type of single-configuration generators. |
+| CMAKE_INSTALL_PREFIX | | Install directory used by `--target install`. |
+| CMAKE_POSITION_INDEPENDENT_CODE | TRUE | Whether to create a position-independent targets |
+| ****_ROOT | | Additional directory to look for **** |
+| CMAKE_DISABLE_FIND_PACKAGE_**** | FALSE | Disable compilation of ****'s solver interface |
+| USE_PROPRIETARY | FALSE | Allow static linking of proprietary solvers |
+| ****_PLUGIN | TRUE | Load solver at runtime (instead of static compilation) |
+
+Possible values for **** are `CPlex`, `Geas`, `Gecode`, `Gurobi`,
+`OsiCBC`, `SCIP`, and `Xpress`.
+
+
+## Testing
+
+The correctness of the MiniZinc compiler is tested using a
+[PyTest](https://docs.pytest.org/en/stable/) test suite. Instruction on how to
+run the test suite and how to add new tests can be found
+[here](https://github.com/MiniZinc/libminizinc/tree/master/tests)
+
+
+
+## License
+
+Distributed under the Mozilla Public License Version 2.0. See `LICENSE` for more information.
+
+
+
+## Contact
+
+🛠**MiniZinc Community**
+ - Website: [https://www.minizinc.org/](https://www.minizinc.org/)
+ - StackOverflow: [https://stackoverflow.com/questions/tagged/minizinc](https://stackoverflow.com/questions/tagged/minizinc)
+ - Google Groups: [https://groups.google.com/g/minizinc](https://groups.google.com/g/minizinc)
+
+🛠**Monash Optimisation Group**
+ - Website: [https://www.monash.edu/it/dsai/optimisation](https://www.monash.edu/it/dsai/optimisation)
diff --git a/changes.rst b/changes.rst
new file mode 100644
index 0000000..416e7a9
--- /dev/null
+++ b/changes.rst
@@ -0,0 +1,2259 @@
+MiniZinc Change Log
+-------------------
+
+For detailed bug reports consult the issue tracker at
+https://github.com/MiniZinc/libminizinc/issues.
+
+.. _v2.5.5:
+
+`Version 2.5.5 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 19 March 2021)
+
+Changes:
+^^^^^^^^
+
+- Make min/max on an array of optional variables return a non-optional var,
+ behaving as if absent values are not in the array.
+
+Bug fixes:
+^^^^^^^^^^
+
+- Insert par array literals in the common subexpression elimination map, fixing
+ a FlatZinc code bloat issue (:bugref:`458`).
+
+Changes in the IDE:
+^^^^^^^^^^^^^^^^^^^
+
+- Fix editing of custom string parameters so they don't get converted to
+ floats.
+- Fix crash on Windows caused when the ``PATH`` environment contains unicode
+ characters.
+
+.. _v2.5.4:
+
+`Version 2.5.4 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 16 March 2021)
+
+Changes:
+^^^^^^^^
+
+- Allow empty arrays in global cardinality constraints (:bugref:`440`).
+- Add piecewise_linear for non-continuous intervals.
+- Fail on empty variable domains in agenda.
+- Allow coercion of JSON lists to enum definitions (:bugref:`441`).
+- Update strictly_decreasing with documentation and opt version (:bugref:`454`).
+- Remove MIP-specific ``fzn_less(eq)_bool(_reif).mzn``.
+- Add ``mzn_in_symmetry_breaking_constraint()`` for internal use.
+- Add MIP decompositions for ``lex_less[eq]_*``.
+- Add ``lex_chain_*`` globals, and use them in ``lex2[_strict]``.
+- Improve detection of variable declarations which are actually par to allow
+ more use of overloaded par versions of predicates.
+- Update documentation on installation of OR-Tools.
+- Report CPU time in ``solveTime`` statistic for MIP solvers.
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix handling of bad Xpress licenses when collecting extra flags.
+- Don't propagate annotations into annotation calls to infinite recursion.
+- Add missing par opt versions of coercion functions.
+- Revert incorrect renaming of ``has_output_item`` to ``has_outputItem`` in
+ model interface output.
+- Fix incorrect grammar specification in documentation (:bugref:`453`).
+- Fix crash when defining enums with no members (:bugref:`443`, :bugref:`444`).
+- Support undefined enums in the type checker.
+- Fix CPLEX solver ID in documentation.
+- Never insert par expressions in the common subexpression elimination map.
+- Fix cv flag propagation when the body of a let or function is cv.
+- Fix equality test for annotations involving indirection.
+- Don't modify the infinite domain of optional variables (:bugref:`456`).
+- Don't immediately evaluate output_only arrays when generating dzn output.
+- Coerce boolean objectives to integers.
+- Don't create copies of global declarations when creating par versions of
+ functions.
+- Compile infinite domains with holes into constraints (:bugref:`457`).
+- Use generic flattening inside generators, disallowing free boolean variables
+ inside ``in`` expressions (:bugref:`451`).
+- Strip library paths from includes in multi-pass compilation (:bugref:`455`).
+- Canonicalise file names of includes to ensure the same file is not included
+ multiple times.
+- Escape paths in printed ``include`` items, fixing backslash problems on
+ Windows.
+- Follow ids to declarations when flattening par arrays (:bugref:`448`).
+- Ignore par constants during chain compression.
+- Fix flattening of all-par set literals.
+
+Changes in the IDE:
+^^^^^^^^^^^^^^^^^^^
+
+- Fix possible crash due to incorrect use of WriteFile on Windows.
+- Ensure Gecode Gist dependencies are present in the Linux bundle and AppImage
+ (:idebugref:`132`).
+- Fix crash when stopping solver during exit.
+- Don't show irrelevant context menu entries in the project explorer.
+- Add support for HTTP/S links in the output pane.
+- Fix crash when saving CP Profiler executions where there is no info
+ associated with a node.
+- Show a warning when there are open files which are not part of a MOOC
+ submission.
+- Fix double spinbox precision issues (:idebugref:`134`).
+- Include Gecode Gist and CP Profiler dependencies in Snap package.
+- Allow opening of multiple files through the open file menu option.
+- Ensure file dialogs save last path when opening files.
+- Make the escape key close the find/replace dialog when focussed on any child
+ widget.
+- Allow setting MOOC submission items as mandatory.
+
+.. _v2.5.3:
+
+`Version 2.5.3 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 24 November 2020)
+
+Changes:
+^^^^^^^^
+
+- Fully reify -> (x != y) in the linear library.
+- Allow printing of comprehensions using introduced variables.
+- Allow increasing/decreasing over multidimensional arrays.
+- Add mzn_ignore_symmetry_breaking_constraints and mzn_ignore_redundant_constraints
+ options, allowing the symmetry_breaking_constraint and redundant_constraint
+ predicates to be overridden, so that those constraints can be disabled independent
+ of the solver library that's being used (:bugref:`429`).
+- Add automatic coercion of strings in JSON input data to enum constants where needed.
+- Add automatic coercion of lists in JSON input data to sets where needed.
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix int_lin_eq_imp in the linear library.
+- Use variable declaration location for invalid type-inst error messages without
+ locations.
+- Rewrite par versions of fzn_count_* into var versions, allowing solvers that
+ only redefine the bar version to use their built-in propagators even if the
+ value to count is fixed at compile time (:bugref:`427`).
+- Add multi-level array construction for enumerated types when outputting in
+ JSON format.
+- Ensure that functions can only be used as par if their return type is par
+ (:bugref:`431`).
+- Fix parser default location macro, preventing loss of location filenames
+ in some cases.
+- Fix parser rule for non-opt sets to give the correct starting location.
+- Fix fzn_bin_packing_capa_reif.mzn and fzn_bin_packing_load_reif.mzn
+ (:bugref:`435`).
+- Update decl for binary and unary operators when creating par versions of
+ functions (:bugref:`437`).
+- Only throw type errors for enum type identifier mismatch in strict enums mode.
+- Only post cumulative constraints if there is at least one task, preventing an
+ assertion about the lower bound from failing.
+
+Changes in the IDE:
+^^^^^^^^^^^^^^^^^^^
+
+- Only reset config window item focus if it is still focused, preventing spurious
+ changes in focus during code checking.
+- Fix handling of final statuses, including UNSAT (:idebugref:`123`).
+- Remove -s flag support from Gecode Gist solver configuration (:idebugref:`125`).
+- Fix crash when saving a project with no solver selected (:idebugref:`127`).
+- Correctly remove temporary parameter configuration files after use
+ (:idebugref:`128`, :idebugref:`129`).
+- Fix the time limit readout in the status bar when solving.
+
+.. _v2.5.2:
+
+`Version 2.5.2 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 6 November 2020)
+
+Changes:
+^^^^^^^^
+
+- Use full reification in int_ne_imp.
+- Add support for redefining 2d element constraints in the solver library.
+- Produce warning when shadowing a variable in a let or comprehension in the
+ same function (or toplevel) scope (:bugref:`419`).
+- Rewrite symmetric_all_different to inverse (:bugref:`426`).
+- Add link icons to globals etc in the reference documentation (:bugref:`425`).
+- Make the nodes statistic show the total number of nodes across all restarts
+ for SCIP.
+- Add support for multidimensional arrays in counting constraints (:bugref:`413`).
+- Allow .json files to be specified using the --data option (in addition to
+ .dzn files).
+- When specifying relative paths inside parameter configuration files,
+ resolve them relative to the config file.
+
+Bug fixes:
+^^^^^^^^^^
+
+- Correctly add file extension to plugin libraries when omitted.
+- Fix JSON array index coercion when the first index is undefined.
+- Catch ResultUndefined exception when evaluating cv par expressions,
+ and turn into undefined result.
+- Fix trailing for lets and comprehensions, resolving some issues with
+ recursive functions containing lets and/or comprehensions.
+- Only create par version of functions that do not refer to any toplevel
+ variables (:bugref:`418`).
+- Keep correct location information for identifiers.
+- Print warnings from solns2out.
+- Fix the removal of reverse mapped arrays when they contain aliases.
+- Disallow macro replacement when call has reification implementation.
+- Fix the behaviour of passing an invalid version hint to --solver.
+
+Changes in the IDE:
+^^^^^^^^^^^^^^^^^^^
+
+- Properly resize extra flags table after adding parameters (:idebugref:`119`).
+- Use the minimal configuration to check the model interface
+ (:idebugref:`118`).
+- Allow omitting builtin solver version in project JSON.
+- Don't mark as modified when loading non-synced solver configurations.
+- Ensure the last open configuration in a project is selected when loaded.
+- Fix the default values of solution truncation and output window clearing.
+- Process unrecognised extra flags from old project configurations.
+- Fix watching for modification of the additional data box.
+- Fix the alignment of line numbers.
+- Make behaviour controls more narrow to accommodate smaller window sizes.
+- Defocus config window widgets when updating solver config so values of
+ currently edited fields are updated.
+- Pass user input data correctly during compilation.
+- Remove solns2out options from MiniZinc call when compiling.
+
+.. _v2.5.1:
+
+`Version 2.5.1 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 22 October 2020)
+
+Changes:
+^^^^^^^^
+
+- Rewrite alldifferent_except_0 to fzn_alldifferent_except_0, to enable
+ solvers to implement that constraint if it is available (:bugref:`414`).
+- Propagate domains for variables even when reverse-mapped. This
+ ensures that variables with multiple encodings can be created with
+ the tightest possible bounds.
+- Fail instead of producing empty domains when simplifying int_le
+ constraints.
+- Allow parsing of nested objects in parameter configuration files.
+- Add --backend-flags option to provide a uniform way of passing flags
+ to an underlying solver.
+- Add extra flags support to the MIP solver interfaces, allowing
+ parameters to be set in the IDE.
+- Improve automatic detection of the Xpress solver and license file.
+- Allow the use of spaces in the --solver flag argument.
+- Automatically add the last part of the solver ID as a tag.
+- Improve handling of var functions in output, automatically creating
+ par versions of var functions if possible.
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix parsing of empty multidimensional JSON arrays.
+- Allow use of --parallel long form option in MIP solvers.
+- Fix item lookup when increasing annotation usage in annotate builtin.
+- Fix JSON array coercion to handle arrays with 1 unknown index.
+- Don't try to access array dimensions for output of empty
+ multi-dimensional arrays.
+- Print verbose version information to stderr instead of stdout.
+- Fix context handling when flattening par expressions that contain
+ variables (:bugref:`415`).
+- Flatten string expressions if they contain variable parts in
+ assert/abort/trace calls.
+- Fix breakage on older versions of Windows due to UTF-8 conversion
+ failing.
+- Remove defines_var/is_defined_var annotations when simplifying
+ boolean constraints.
+- Fix transfer of cv status from where parts to newly generated
+ conjunctions during typechecking.
+- Fix multiple issues with the defined_var / is_defined_var
+ annotations.
+- Move all included files from stdlib into solver_redefinitions.mzn, so
+ that solver redefinitions are not marked as belonging to the standard
+ library (:bugref:`416`).
+- Fix documentation group for standard annotations (:bugref:`417`).
+- Show correct version of solver plugins which have their DLLs
+ specified using a command-line parameter (:bugref:`411`).
+- Fix arbitrary flag support for NL solvers.
+- Kill child processes if exception occurs during solns2out on
+ Unix-like platforms.
+
+Changes in the IDE:
+^^^^^^^^^^^^^^^^^^^
+
+- Fix typo when passing solver statistics option to minizinc (:idebugref:`112`).
+- Fix missing statistics output (:idebugref:`112`).
+- Add support for colour themes (:idebugref:`110`).
+- Don't prompt for saving after adding/removing files from the Untitled
+ project.
+- Fix running of compiled FlatZinc files.
+- Show error message when trying to load an invalid configuration file.
+- Ensure all output is sent to the output console, and that fragments
+ in standard error output appear when a newline is written to standard
+ output (:idebugref:`114`).
+- Fix running of solver configurations from the project explorer.
+- Improve performance of adding a large number of extra flags at once.
+- Add support for 64-bit integer extra flags.
+- Add support for setting both solver backend flags and MiniZinc
+ command flags (:idebugref:`113`).
+- Improve interface for adding extra parameters, allowing search/filter
+ and multiselection of known parameters.
+
+.. _v2.5.0:
+
+`Version 2.5.0 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 6 October 2020)
+
+Language, tool and library changes:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Allow `reading command line arguments from JSON config
+ file `__.
+- Add support for `enum
+ constructors `__.
+- Put subprocesses in their own process group so that they don't
+ receive signals from both the console and MiniZinc.
+- Implement soft and hard process timeouts on Windows, allow triggering
+ of shutdown from named pipe on Windows for the IDE.
+- Make MiniZinc unicode-aware on Windows.
+- Better error messages for index set mismatches.
+- Report similar identifiers when matching fails.
+- Better error messages when a call cannot be matched to an existing
+ function or predicate.
+- Print error stack if top of stack is a single identifier (i.e., error
+ occurred while flattening a variable declaration).
+- Add new separate flags for intermediate and all solutions. -i enables
+ intermediate solutions for optimisation problems and
+ --all-satisfaction enables all solutions for satisfaction problems.
+
+Changes in interfaces to solvers:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Solvers which only support intermediate solutions now can now support
+ the standard flag -i rather than -a.
+- Restructure the `MiniZinc standard
+ library `__.
+
+Changes in MIP solver backends:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Remove non-conforming -n flags for MIP solver configs standard flags.
+- Improve autodetection of Gurobi DLL.
+- Find Gurobi 9.0.2 when building.
+- Don't create gurobi log.
+- Interface to concurrent solves in Gurobi (--readConcurrentParam).
+- Add -DMinMaxGeneral option for min/max as fzn_array_float_minimum for
+ Gurobi
+- Find SCIP 7.0 on Windows
+- Use -Glinear library, built-in cumulative by default for SCIP.
+- Use quadratics in Gurobi and SCIP by default.
+- Add options --xpress-root and --xpress-password for finding Xpress
+ installation directory and licence file.
+- Add MIQCP quadratic constraints for Gurobi and SCIP.
+
+Changes dealing with option types:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Add opt versions of several globals.
+- Define weak equality for var opt bool.
+- Add set_in definitions for var opt int.
+- Add opt versions of enumerated type functions (to_enum, enum_next,
+ enum_prev etc).
+- Enable set literals with optional values (which will be ignored),
+ including var set literals with var opt int elements.
+- Add opt version of float_dom to stdlib.
+- Change unary not for opt bool to use absorption lifting.
+- Add array2set functions on var opt int arrays.
+- Add opt versions of dom, dom_array and dom_bounds_array.
+- Add missing logical operators to var opt bool.
+
+Changes in the MiniZinc IDE:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Remove support for the old binary storage format of projects. These
+ must be opened and re-saved with version 2.4.3 to remain compatible.
+- Include experimental CP-profiler through the \*MiniZinc\* > \*Profile
+ search\* option for supported solvers.
+- Redesign the solver configuration window.
+- Use parameter configuration files rather than passing command-line
+ options directly.
+- Show solver configurations and checkers in their own sections in the
+ project explorer.
+- Allow multiselection in the project explorer for running particular
+ sets of files.
+- Allow MiniZinc to manage subprocesses by itself.
+- Allow non-privileged installs of the IDE on Windows.
+- Correctly remove files from old installations of the IDE on Windows.
+- Enable scroll bars in the preferences dialog to allow for low
+ resolution displays.
+- Prompt to save modified files before performing MOOC submissions or
+ running models.
+- Fix infinite recursion when a model file for a MOOC submission
+ doesn't exist.
+- Use --output-mode checker for MOOC solution submission where
+ supported.
+- Fully support unicode on Windows.
+
+Minor changes:
+^^^^^^^^^^^^^^
+
+- Clean up code base and format using clang-format and clang-tidy.
+- Update WebAssembly build for new versions of emscripten.
+- Support --cp-profiler option to activate search profiler for IDE.
+- Add --solver-json to output single solver config as JSON.
+- Coerce JSON arrays to match the MiniZinc TypeInst.
+- Add more informative README file.
+- Split shared MIP cpp code into seperate CMake object target.
+- Compile with POSITION_INDEPENDENT_CODE targets by default.
+- Change ASTString to use String Interning.
+- Add included_files output to model interface.
+- Update Bison parsers to be compatible with Bison 3.7.
+- Allow annotating enum declarations.
+- Add support for --c_d and --a_d options to set recomputation
+ commit/adaption distance for Gecode presolver.
+- Place float_set_in in a version redefinition documentation group.
+- Place int_pow_fixed into a version redefinitions group.
+- Move set_in(var int, set of int) to the Integer FlatZinc Builtins.
+- Make "show" display contents of arrays rather than array identifiers
+ if the array is var
+- Add support for checking statistics after solving has finished.
+- Include preferences set by IDE repository.
+- Add has_ann(var, ann) annotation introspection builtin.
+- Use reverse mapped version for output if FlatZinc contains an aliased
+ variable.
+- Remove NDEBUG flag from the compile flags added by CPLEX and Gurobi.
+- Use integer variables in decomposition for array_int_element,
+ array_var_int_element, array_int_minimum, and array_int_maximum.
+- More preprocessing for pow(int, int).
+- Add is_same builtin.
+- Add multiobjective annotation for Gurobi and Yuck (in
+ std/experimental.mzn).
+- Add --output-mode checker, which outputs exactly the variables that
+ are required for a given solution checker.
+- Improve propagation of annotations, especially for redefined forall,
+ exists, clause, xor
+- Make omitting RHS from output_only variable a type error.
+- Add support for var set comprehensions
+- Make sets inside set literals a type error (rather than evaluation
+ error).
+- Aggregate bool_not into exists/clause, use bool_not(e) for
+ clause([],[e]) expressions
+- Cleanup the common-subexpression elimination table.
+- Generate bool_not calls (instead of bool_eq_reif) and add both "x=not
+ y" and "y=not x" into the CSE map, to avoid double negations.
+- Add arg_max and arg_min builtins for boolean arrays.
+- Remove -O flag from ozn file naming.
+- Allow var items in checkers to be omitted from the model.
+- Add builtins for binary operators that have a var redefinition.
+- When an integer or bool variable has a singleton domain, use the
+ value. This enables more overloading to par functions.
+- Check if domain becomes empty when binding variable to value,
+ avoiding empty domains (such as 1..0) in FlatZinc.
+- Ignore unknown JSON data items instead of throwing an error.
+- Add trace_logstream and logstream_to_string builtins. These can be
+ used for writing model checkers/graders, but also for general
+ logging.
+- Clean up CMake configuration
+- Allow any installed solver to be used with the test suite, add
+ ability to test for expected ozn output.
+
+.. _bug-fixes-1:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix error message for type errors in domains that are integer
+ literals (:bugref:`408`).
+- Fix comprehensions over option types, which could cause crashes and
+ incorrect flattening (:bugref:`407`).
+- Fix the usage count of annotations added using the annotate function
+- Flatten "in" expressions in comprehensions when required.
+- Check if operator is built-in after evaluating arguments, to make
+ sure it is rewritten into the correct predicate.
+- Use dom(x) instead of lb(x)..ub(x) for opt int.
+- Use eval_par to compute bounds for par expressions since they might
+ be opt.
+- Use library defined operators where available.
+- Fix -O flag parsing for optimisation level.
+- Fix par set inequality calculation.
+- Flatten domain expressions that contain variables.
+- Catch ResultUndefined when flattening an array with an undefined
+ expression in a generator
+- Fix source paths in MD5 generation scripts.
+- Fix crash when reporting undefined result in assignment generator.
+- Only add coercion for normal generators, not for assignment
+ generators.
+- Check output var status on actual item being removed.
+- Include absolute path instead of filename in multipass processing.
+- Coerce comprehension generators if necessary, so that slicing
+ notation can be used there.
+- Fix copying of comprehensions with followIds.
+- Fix the method signature of printStatistics for Geas.
+- Ensure the definition of reverse mappers are copied into the output
+ model.
+- Print solns2out statistics to stdout to comply with MiniZinc spec.
+- Minor doc-fix for global_cardinality_closed.
+- Make statistics output comply with MiniZinc spec.
+- Fix reverse function to work with empty arrays
+- Fix the coercion of boolean sum in aggregation.
+- Remove eval_par on var expressions in show builtin.
+- Fix the table construction for the Geas solver interface
+- Fixed wrong sign in Boolean linear constraints in Geas solver
+ interface.
+- Fix istrue and isfalse by using flat_cv_exp if necessary.
+- Fix the excess flattening of items marked for removal.
+- Do not add newline to output when killing FlatZinc solver process,
+ since this may be in the middle of a line
+- Fix typo in loop for Geas solver instance.
+- Don't call doAddVars when there are no variables, fixing a crash in
+ MIP solvers for empty models.
+- Do not copy type of lhs onto rhs when parsing solutions. This tagged
+ some literals as cv(), which broke the evaluation.
+- Fix flattening of all par set literals.
+- Fix error macro to be compatible with newer versions of Bison (:bugref:`389`).
+- Fix printing of if-then-else expressions without an else branch.
+- Fix allowed solvers option in test suite.
+- Make bind only create an int_eq constraint if a variable has a
+ reverse mapper.
+- Fix automatic coercions to keep cv type attribute of their argument
+ (:bugref:`387`).
+- Fix copying of output_only variables to the output model.
+- Only print checker output for unique solutions.
+- Fix rewriting of lin_exp into int/float_lin_eq.
+- Fix flattening of calls and let expressions that have par type but
+ contain var expressions.
+- Use eval_bool instead of eval_par for boolean evaluation.
+- Remove the direct assignment to a domain if it has a reverse mapper.
+- Fix arg_max and arg_min for array index sets not starting at 1.
+- Add missing set_superset_reif FlatZinc predicate.
+- Fix counting of non-fixed variables in Boolean constraints. Could
+ previously lead to incorrect simplifications.
+- Enable eval_floatset for SetLits that contain an IntSetVal. This is
+ used during chain compression and could previously result in
+ incorrect domains.
+- Fix bugs in chain compressor caused by modifying multimaps while
+ iterating over them.
+- Fix crash when cleaning up after running builtin Gecode.
+- MIPdomains: don't assume equations have no literals.
+- Only fix domain after flattening bool_eq.
+- Only return singleton domain as value for non-optional variables.
+- When evaluating identifier that is bound to a fixed value, check that
+ the value is inside the domain to correctly detect model
+ inconsistency.
+- Add missing assert and trace builtin overloads.
+- Flatten expressions that may contain variables in par where clauses.
+- Fix segmentation fault when the declaration of an array is passed to
+ setComputedDomains with the -g parameter.
+- Consider single-valued domain variables to be fixed
+- Add missing definition of to_enum for arrays of sets.
+- Evaluate partiality of arguments even if call was already in CSE
+ table (:bugref:`374`).
+
+.. _v2.4.3:
+
+`Version 2.4.3 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 4 March 2020)
+
+.. _changes-1:
+
+Changes:
+^^^^^^^^
+
+- Enable CPLEX 12.10.
+- Add checker output to generated output items.
+- Short-circuit evaluation for mixed par/var conjunctions,
+ disjunctions, and clauses.
+- Add inverse_in_range global.
+- Pretty printing set ranges now uses union instead of ++ to be
+ compatible with DZN.
+- Add array2set for par bool and float arrays
+- The \_objective variable is no longer added to FlatZinc input files.
+- JSON representation of sets with ranges can now be parsed (previously
+ they could only be output).
+- Check index sets to arguments of global_cardinality_low_up.
+- Xpress and SCIP are not compiled as plugins and no longer require
+ recompilation to enable.
+- If-then-else for opt are no longer written in terms of the non-opt
+ version, allowing them to return absent.
+
+.. _bug-fixes-2:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix checking of domains and index sets in par arrays inside lets.
+- Remove duplicate call stack items to improve error messages.
+- Ignore absent values when computing domains.
+- Generate call for actual binary operator (after optimising double
+ negation). Fixes :bugref:`364`.
+- Fix non-associative operators on optional values.
+- Only output optional parameters in model interface if they were
+ undefined (rather than assigned to <>).
+- Fix some issues with evaluating par opt expressions.
+- Make solution checkers work for multi-dimensional arrays and arrays
+ with enum index sets
+- Fix Boolean aggregation for expressions that are defined recursively.
+- Use correct index set for nosets set_lt and similar (partial fix for
+ :bugref:`369`)
+- Fix coercion of sets to arrays (previously, coercing a set of X to an
+ array of X to an array of Y did not work correctly).
+- Fix infinite loop when printing infinite set range
+- Add assertion so that array2set can only be used for arrays with
+ bounds (:bugref:`370`, :bugref:`371`).
+- Fix typing and pretty printing of par bool sets.
+- Use output_array dims for output vars in FlatZinc files (previously,
+ a type-checker error would occur when running a solver through
+ MiniZinc on a FlatZinc file with multidimensional arrays).
+- The Xpress backend was made functional again.
+- Fix segmentation fault in output_only type-checking.
+- Compute correct array enum type for array slices (:bugref:`372`).
+- Fix behaviour of using undefined expressions in var comprehensions
+ guarded against by where clauses (previously, these undefined
+ expressions would bubble up regardless of the where clause,
+ constraining the model).
+- IDE: Disable menu items that don't make sense when all tabs are
+ closed, fix behaviour of stop button when all tabs closed (fixes
+ several crashes).
+- IDE: Add x86_64 suffix to linux package name (:idebugref:`96`).
+- IDE: Make boolean extra solver options with a default of true
+ functional.
+- IDE: Only read linter results if it exited normally (:idebugref:`97`).
+- IDE: Resolve paths in \_mooc to paths (allowing submission of models
+ in subdirectories).
+
+.. _v2.4.2:
+
+`Version 2.4.2 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 10 January 2020)
+
+.. _changes-2:
+
+Changes:
+^^^^^^^^
+
+- The test suite is now integrated into the continuous integration
+ system.
+
+.. _bug-fixes-3:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix flattening of negated disjunctions (:bugref:`359`).
+- Fix simplification of Boolean constraints (repeated simplification
+ could sometimes crash).
+- Fix memory management during flattening of conditionals (:bugref:`358`).
+- Fix type inference for rewriting of sums into count constraints, and
+ only apply the rewriting for var type-insts.
+- Fix handling of solution checkers (these used to produce spurious
+ error messages).
+- IDE: Fix syntax highlighting of keywords, and add syntax highlighting
+ for interpolated strings.
+- IDE: Redraw when switching to/from dark mode, and fix dark mode
+ header colours.
+- IDE: Fix "Select all" menu item.
+
+.. _v2.4.1:
+
+`Version 2.4.1 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 20 December 2019)
+
+.. _changes-3:
+
+Changes:
+^^^^^^^^
+
+- Improve compiler optimisation for some linear, multiplication and
+ Boolean constraints.
+- Improved translation of lex and all_equal constraints when the arrays
+ have no or only one variable.
+- IDE: Display error message when submission to MOOC provider fails.
+- IDE: Make "previous tab" and "next tab" actions cycle rather than
+ stop at first/last tab.
+
+.. _bug-fixes-4:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fixed regular expression constraint for expressions containing
+ negated character classes (^ operator).
+- Fix element constraint in nosets.mzn library when set domains are not
+ contiguous.
+- Correctly identify Windows paths starting with // or \\\\ as absolute
+ (this enables the parser to open files stored on network drives).
+- Use set_in constraints (rather than int_in) for internal Gecode-based
+ presolver. This fixes some issues when compiling with -O3.
+- The optimisation phase of the compiler now fully substitutes par bool
+ variables (these can be introduced into the FlatZinc during multipass
+ compilation). (:bugref:`357`)
+- Fixed the reference counting for variables that are re-used in
+ multipass compilation. (:bugref:`357`)
+- Remove incorrect error handling when parsing from strings rather than
+ files. Partially fixes (:bugref:`357`)
+- Made the is_fixed builtin work for more types. (:bugref:`356`)
+- Enable rewriting of sum(i in x)(i=c) op d and count(x,y) op z into
+ global counting constraints.
+- Split up count global constraints into separate files for reified
+ versions.
+- Use contiguous range for array index set in set_lt for nosets.mzn.
+- Negate results of conditionals if required. (:bugref:`355`)
+- Partiality of conditional needs to be translated in root context
+ (even if conditional itself is negated). (:bugref:`355`)
+- Don't copy function into output again if it was already copied (and
+ made par) before. (:bugref:`323`)
+- Define card function on var sets in terms of set_card FlatZinc
+ builtin.
+- Don't set bounds for set variables in internal Gecode presolver.
+- IDE: Fix shift left and shift right indentation behaviour when
+ selecting text backwards.
+- IDE: Fix OpenSSL library in binary distribution to enable update
+ checks and submission to MOOCs again.
+
+.. _v2.4.0:
+
+`Version 2.4.0 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 13 December 2019)
+
+.. _changes-4:
+
+Changes:
+^^^^^^^^
+
+- The compiler now detects counting constraints in expressions such as
+ count(i in x)(i=3) <= 4 and rewrites them into global counting
+ constraints. This is now the preferred way to specify counting. The
+ atmost/atleast/exactly constraints on integer variables have been
+ deprecated, and versions of count predicates with par variables have
+ been added. FlatZinc solvers that supported atmost/atleast/exactly
+ should now support the corresponding fzn_count_?_par predicates.
+- The compiler now supports the command line option
+ --output-detailed-timing, which provides timing information for each
+ toplevel constraint item, or for each line of code when used in
+ conjunction with the --keep-paths option.
+- The library now contains annotations for deprecated library
+ functions.
+- A par version of the inverse function has been added (include
+ inverse_fn.mzn to use it).
+- The common case of sums of optional variables is now handled more
+ efficiently. This case often arises from generator expressions with
+ variable where clauses.
+- Added set_to_ranges built-ins to enable efficient iteration over
+ sets. These are used to implement set_in for float variables, which
+ was missing before.
+- The Gurobi and CPLEX backends now support the --random-seed command
+ line option.
+- The Gurobi and CPLEX backends now use nodefile for search trees
+ exceeding 500 MB (--nodefilestart can change this value and
+ --nodefiledir the folder.)
+- The MIPDomains optimisations have been switched back on by default.
+ The optimisations have also been strengthened for some special cases.
+- Without the MIPdomains postprocessing, linearisation of variable
+ domains with holes now uses set_in instead of individual not-equal
+ constraints, which may result in more compact FlatZinc.
+- Linearisation of multiplication can now consider the exact domain of
+ a factor.
+- The product functions have been made non-recursive in order to
+ support longer arrays.
+- Bounds inference for results of if-then-else expressions has been
+ improved.
+- Support for optional float variables has been added.
+- The interfaces to CBC, CPLEX and Gurobi now report correctly that
+ they support verbose output during solving (so that the "verbose
+ solving" option is available from the MiniZinc IDE).
+- IDE: Parse timing and statistics output produced by compiler, and
+ display as profiling information next to each line in the model.
+- IDE: Enable run/compile action on data files. This automatically
+ selects the model file if there is only one, or presents a dialog for
+ selecting the model if there are multiple.
+- IDE: Select first data file in parameter dialog if there was no
+ previous selection, and always focus parameter dialog.
+- IDE: Highlight current line.
+- IDE: Support .json as file extension for data files.
+- IDE: Remember whether wrap around, case sensitivity and regular
+ expression was selected in find/replace dialog, pre-select the
+ find/replace text when find/replace widget is openend, and close
+ find/replace widget when ESC is pressed while editor has focus.
+
+.. _bug-fixes-5:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fixed output handling on Windows (output is now processed on the main
+ thread, so that exceptions thrown during output are printed
+ correctly, and memory management is thread safe).
+- Fixed decomposition of reified mdd constraint, and strengthened
+ decompositions of mdd and cost_mdd.
+- Fix handling of variable re-definitions (e.g. converting sets to
+ arrays of bools), which would previously sometimes result in
+ variables being removed although they were required for output, or
+ the reverse mapping function not being available in the output model.
+- Include regular.mzn from regular_regexp.mzn. (:bugref:`351`)
+- Inlining of function calls has been moved from the flattener into the
+ type checker, and it now is more strict about which functions can be
+ inlined in order to avoid overloading issues.
+- Updated fzn_count_{neq,leq,lt,geq,gt},
+ fzn_global_cardinality_low_up{,_reif} to use use the count_eq
+ predicate. (:bugref:`334`, :bugref:`335`)
+- Fixed the documentation for several constraints, which did not
+ display as bullet point lists as intended.
+- Copy function/predicate declarations into FlatZinc without
+ annotations, since most FlatZinc parsers would not expect annotations
+ and fail to parse.
+- Process right hand side of par VarDecls to make sure any identifiers
+ it uses are copied into the output model. Fixes :bugref:`336`.
+- Fix type checking for conditionals where the else branch has enum
+ type but the then branch has int type.
+- Make the deopt function return correct enum instead of int type.
+- Fix for path handling when 'needRangeDomains' is active. Avoids
+ infinite recursion in the compiler.
+- Fix race condition in temporary file generator for Windows. (:bugref:`349`)
+- Register fzn\_ names for Gecode presolver. Fixes command line flags
+ -O3 and above.
+- Fix par evaluation of float and bool set comprehensions.
+- Fix documentation of array_bool_xor. Fixes :docbugref:`13`.
+- Fix the round() built-in to correctly round negative numbers
+- Fix computation of intersection of domains when assigning an array to
+ an array variable. Fixes :bugref:`310`.
+- Add defines_var annotations for functional global constraints. Fixes
+ :bugref:`345`.
+- Add set_lt_reif/set_le_reif to flatzinc builtins library. Fixes :bugref:`338`.
+- Clarify set order based on spec. Fixes :bugref:`339`.
+- Don't return already removed VarDecl objects from CSE. Fixes :bugref:`346`.
+- Do not post y!=0 constraint if 0 is not in the domain (workaround for
+ a limitation in the handling of basic float constraints). Fixes :bugref:`344`.
+- Help type checker by making deopt/occurs argument types explicit.
+ Fixes :bugref:`331`.
+- Fix transfer of domains when aliasing one variable to another
+- MIP: fix for aux_float_ne_if_1
+- MIP: int_(eq/ne)_imp: don't force eq_encode without MIPdomains
+- Fix a typo in the definition of fzn_at_least_int{,_reif}
+- Fix dependency problem in the gecode_presolver table specification
+- Add seq_precede_chain.mzn to globals.mzn. Fixes :bugref:`332`.
+- Don't assign right hand side of set variables if domain is singleton.
+ Fixes :bugref:`330`.
+- Don't invalidate float bound just because an expression contains an
+ integer.
+- Fix copying of let expressions.
+- Put lexer and parser helper functions into MiniZinc namespace to
+ avoid linker issues. Fixes :bugref:`325`.
+- Reset array index sets defined in lets inside recursive function
+ calls.
+- Arrays copied into output model need to have par type-inst. Fixes :bugref:`322`.
+- Don't complain when same function is registered twice. Fixes :bugref:`323`.
+- Fix partiality handling of if-then-else expressions.
+- Track whether variable is used in an output array before making
+ decision to compress implication chains. Fixes :bugref:`318`.
+- IDE: Fix dark mode detection on macOS 10.15, improve dark mode colors
+ a bit and fixed some dark mode bugs.
+- IDE: Make background compilation of a model (used to display syntax
+ and type errors) a bit more stable.
+- IDE: Avoid infinite loop in wrap around replace all.
+- IDE: Fix memory management for HTML visualisation windows, and resize
+ docked HTML visualisation widgets to take up equal space.
+
+.. _v2.3.2:
+
+`Version 2.3.2 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 12 September 2019)
+
+.. _changes-5:
+
+Changes:
+^^^^^^^^
+
+- Add warm starts and subtour cuts to CBC interface.
+- Add documentation and assertion requiring that mdds are
+ deterministic, and add nondeterministic variant of mdd constraint.
+- Add -s to the standard flags supported by MIP interfaces.
+- Add flag --output-output-item to include user specified output item
+ in the formatted JSON and DZN output.
+
+.. _bug-fixes-6:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix a bug that could leave unused variables in the resulting
+ FlatZinc.
+- bounded_dpath should rewrite to fzn_bounded_dpath. Fixes :bugref:`300`.
+- Fix definition of sum_set.
+- Check if overloaded function required for output. Fixes :bugref:`303`.
+- Move regular constraint with set argument to its own file.
+- Flatten assignment generators if necessary.
+- Simplify fzn_value_precede_chain_int and avoid use of element
+ predicate. Fixes :bugref:`307`.
+- Only initialise par opt variables as absent if they are not arrays.
+- Fix the description of the neural_net predicate.
+- Fix regular constraint with regular expressions (stopped working in
+ 2.3.0).
+- Fix the model interface output to include the same variables as the
+ generated output statement.
+- Fix CSE for removed variable declarations. Could lead to reified
+ constraints not being compiled correctly when the control variable
+ got fixed to true.
+
+.. _v2.3.1:
+
+`Version 2.3.1 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 10 July 2019)
+
+.. _bug-fixes-7:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Report error when trying to assign an array literal to an array
+ variable with incompatible index set.
+- Fix partial evaluation of expressions, so that only par expressions
+ are fully evaluated. Fixes :bugref:`298`.
+- Remove carriage returns when reading piped solver output on Windows.
+- Canonicalize paths of executables to avoid spurious warnings about
+ multiple executables for the same solver.
+- Add implementations for != on arrays.
+- Compute quotient bounds before decomposition of int_div in
+ linearisation library.
+- Propagate domain constraints on variables that are aliased
+ (previously domain constraints could get lost).
+- Propagate domain constraints from left-hand-side to right-hand-side
+ in variable assignments.
+- piecewise-linear: reuse decomposition for X when only Y-values
+ change.
+- nosets: add set_in_imp(var set) and simplify set_in_reif, set_eq(var
+ set, var set).
+- linearisation: improved compilation of set_in constraints.
+- MiniZinc IDE: Remove incorrect symbolic link and fix qt.conf for some
+ bundled distributions.
+- MiniZinc IDE: Fix check for availability of dark mode on older
+ versions of macOS.
+- MiniZinc IDE: Fix a typo in the cheat sheet.
+- MiniZinc IDE: Provide more robust solution for checking the model
+ parameters, which will get rid of some "internal error" messages.
+- MiniZinc IDE: Always show directory selection dialog in the Windows
+ installer. Addresses :idebugref:`89`.
+- MiniZinc IDE: Improved the configuration files for some bundled
+ solvers, provides nicer configuration interface.
+
+.. _v2.3.0:
+
+`Version 2.3.0 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 26 June 2019)
+
+Major changes:
+^^^^^^^^^^^^^^
+
+- The compiler can now generate FlatZinc with half reified constraints.
+ See
+ https://www.minizinc.org/doc-2.3.0/en/fzn-spec.html#reified-and-half-reified-predicates
+ for more details.
+- The standard library of global constraints has been reorganised,
+ making it easier for solvers to override just the bits that they
+ support. See
+ https://www.minizinc.org/doc-2.3.0/en/fzn-spec.html#solver-specific-libraries
+ for more details.
+- There is experimental support for solvers that can read AMPL NL
+ files. See
+ https://www.minizinc.org/doc-2.3.0/en/solvers.html#non-linear-solvers
+ for details.
+
+.. _minor-changes-1:
+
+Minor changes:
+^^^^^^^^^^^^^^
+
+- The JSON input and output has been improved, with full support for
+ enums and optional types.
+- A new compiler option -g has been added, which turns variable domain
+ changes into constraints (useful for debugging models).
+- The SCIP interface has been updated, with support for indicator
+ constraints, bounds disjunctions and a native cumulative constraint.
+- Error reporting has been improved, with location information
+ available for errors in par float expressions as well as include
+ items.
+- The timeout command line parameter now also applies to compilation
+ itself (:bugref:`281`).
+- Operations on par float values are now checked for overflows.
+- The arg_min/arg_max constraints have been improved, with new special
+ versions for Boolean variables, and a better standard decomposition.
+- if-then-else-endif expressions with variable conditions are now
+ compiled to a predicate call (rather than handled by the compiler),
+ which enables solver libraries to implement these as native
+ constraints or special decompositions.
+- Dividing a variable by a constant is now translated as a
+ multiplication (to keep the constraints linear).
+- A new piecewise_linear predicate has been added to the library to
+ make it easier to specify piecewise linear constraints.
+- Print number of solutions as mzn-stat after solving (:bugref:`244`).
+- Make search annotations work for arbitrary array index sets.
+- MiniZinc IDE: The IDE will now check MiniZinc code for syntax and
+ type errors, and the editor performs simple code completion for
+ MiniZinc keywords
+- MiniZinc IDE: The find/replace dialog is now an inline widget and
+ supports incremental search.
+- MiniZinc IDE: Now supports dark mode on macOS.
+- MiniZinc IDE: Add support for extra solver flags (parsed from solver
+ configuration).
+
+.. _bug-fixes-8:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Translate let expressions that contain constraints or variables as
+ var type-inst. Fixes :bugref:`263`.
+- Fix JSON array parsing by counting elements instead of commas.
+- Fix parsing of the -p flag (:bugref:`271`).
+- Fix type checking for array declarations with single enum type inst
+ identifier. E.g. array[$$T] of $U previously matched any
+ multi-dimensional array, and now only matches one-dimensional arrays
+ with any enum index set.
+- Fix computation of function return type when using type inst
+ variables (:bugref:`272`).
+- Evaluate each variable declaration only once in a par let expression.
+- Check domain constraints on variable declarations in par let
+ expressions.
+- Try .exe/.bat on windows when using (constructed) absolute paths.
+- Fix array slicing to support empty slices (:bugref:`275`).
+- Fix a bug in the parser that could cause crashes on certain syntax
+ errors.
+- Fix the type of bool2int for arrays.
+- Initialise counter for introduced variable ids based on names in
+ original model. This avoids reusing variable names if the user model
+ contains names such as X_INTRODUCED_0_.
+- Fix compilation of nested clause/exist constraints, and improve
+ handling of negation. Tries to use primitive negation instead of
+ creating negated constraints. Should help with half-reification by
+ creating more positive contexts.
+- Reorder fields in basic data structures to reduce padding on 64 bit
+ platforms (improved memory footprint).
+- Perform type coercion after desugaring array slicing.
+- Translate arguments to bool2int, exists, forall in positive context
+ even if those functions are redefined.
+- Don't evaluate par array literals twice (inefficient, and can lead to
+ incorrect results when using random number generators).
+- Terminate child processes when minizinc process is terminated by
+ signal.
+- Fix function return value array index check for empty arrays (:bugref:`286`).
+- Fix translation of constant false where clause in array
+ comprehension.
+- Report error when json multi-dimensional array is not rectangular.
+- Check index sets of function arguments (:bugref:`273`).
+- Ignore partiality variables from CSE table when compiling \_reif and
+ \_imp predicates (:bugref:`269`).
+- Flatten comprehensions with variable generators or where conditions
+ before evaluating any par functions on them (:bugref:`259`).
+- Add missing redefinitions of basic operators and search annotations
+ for optional integers.
+- Resolve filenames given on the command line relative to working
+ directory, and warn if file in working directory has same name as
+ included file from the library. Fixes :bugref:`276`.
+- Update nosets library with a valid redefinition of set_less over
+ booleans.
+- Fix translation of showJSON (:bugref:`294`).
+- Only apply set2array coercion for supported types, otherwise report
+ error (:bugref:`295`).
+- Improve special case reasoning for abs on strictly negative
+ variables.
+- Add bounds for floating point min/max result in the standard library.
+- MiniZinc IDE: Ensure cursor is visible (editor scrolls to cursor
+ position) when pressing tab or enter. Fixes :idebugref:`71` :idebugref:`71`.
+- MiniZinc IDE: Re-dock configuration editor when closing un-docked
+ window.
+- MiniZinc IDE: Handle quotes when parsing additional solver command
+ line arguments. Fixes :idebugref:`77`.
+- MiniZinc IDE: Add workaround for the missing libnss requirements.
+ Fixes :idebugref:`79`.
+- MiniZinc IDE: Allow spaces in $DIR in MiniZincIDE.sh Fixes :idebugref:`81`.
+
+.. _v2.2.3:
+
+`Version 2.2.3 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 31 October 2018)
+
+.. _bug-fixes-9:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix some typos in the library documentation.
+- Fix solution checking.
+- Fix line numbers in parsed locations on 64 bit platforms.
+- Fix bounds computation for calls.
+- Fix translation of var where clauses with more than 3 par components.
+- IDE: Only run solution checker if it is enabled in the solver
+ configuration dialog.
+
+.. _v2.2.2:
+
+`Version 2.2.2 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 26 October 2018)
+
+.. _changes-6:
+
+Changes:
+^^^^^^^^
+
+- Some changes to the optimisation phase of the compiler, to take into
+ account more variables and constraints.
+- Preliminary support for MIP cuts based on graph algorithms (only
+ available when compiled with boost C++ libraries; not part of the
+ binary distribution).
+- Set Release as default build type when nothing is specified (for
+ CMake platforms that do not support multiple build types, like
+ Makefiles).
+- Add builtins outputJSON() and outputJSONParameters() for creating an
+ array of strings that capture the output and parameters of the model
+ as JSON.
+- On Linux and macOS, add /usr/share/minizinc/solvers and
+ /usr/local/share/minizinc/solvers to list of paths where solver
+ configuration files can be placed.
+- Add OSICBC_INCLUDEDIR and OSICBC_LIBDIR cmake flags.
+- Output search paths for solver configurations using --solvers command
+ line option.
+- Add support for Gurobi 8.1
+- Support parsing from stdin and files at the same time.
+- IDE: Add line/column display in status bar.
+- IDE: Optional parameters don't have to be defined in input dialog.
+- IDE: Provide mzn-json-init / mzn-json-init-end handlers to initialise
+ HTML window before first solution is produced.
+- IDE: Add version information and minimum system version into
+ Info.plist on macOS.
+- IDE: Manage multiple open visualisation windows, and implement
+ re-solve function that can be initiated from a visualisation.
+- Binary bundle: Gecode updated to version 6.1.0, Chuffed updated to
+ version 0.10.3
+
+.. _bug-fixes-10:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix crash when flattening top-level array comprehensions with var
+ where clauses.
+- Support input files with more than 1M lines.
+- Special case handling for array literals in top-level foralls:
+ flatten in root context.
+- Fix translation of if-then-else for branches with undefined right
+ hand sides.
+- Only propagate defines_var annotation to the variable that's actually
+ being defined (not others that arise from the same decomposition).
+- Don't flatten arguments of predicates like
+ symmetry_breaking_constraint.
+- Remove output_var and output_array annotations from user models
+ (these could cause crashes).
+- Fix precedences for weak operators (~+, ~-, ~=, ~*).
+- Fix min and max for opt var arrays to work when the bounds of the
+ arrays are unknown.
+- Fix a bug in bounds computations for function calls.
+- Add missing superset FlatZinc builtin.
+- Fix includes in file values.hh for some platforms.
+- Fix a garbage collection issue when printing solutions.
+- Deal with the case that a variable that's required for output is
+ assigned to a par variable.
+- Throw type error when an array has only absent values.
+- Flatten all arrays in FlatZinc, also those coming from functional
+ definitions.
+- Use list of strings as mzn_solver_path entry in the preferences json
+ file.
+- Fix crash when output variable is defined using recursive function
+- IDE: Fix race condition in constructor of HTMLWindow.
+
+.. _v2.2.1:
+
+`Version 2.2.1 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 6 September 2018)
+
+.. _changes-7:
+
+Changes:
+^^^^^^^^
+
+- all_different, all_equal, {int,set,float,bool}_search now accept
+ multi-dimensional arrays.
+- Add exponentiation operator (^).
+- Improve layout of generated library documentation for some
+ constraints.
+- Relax typechecking to allow assignment of empty array ([]) to
+ multi-dimensional array variables. This is required to make empty
+ arrays work in JSON data files.
+- Enumerated types can now be initialised using lists of strings. This
+ enables enumerated type support in JSON.
+
+.. _bug-fixes-11:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Cumulative constraint for linear solvers now accepts empty arrays.
+- show2d/show3d functions now do not add quotes around array elements
+ and work for empty arrays.
+- Add support for slicing of arrays with enumerated types.
+- Fix slicing of 1d arrays.
+- Fix bounds computation for float variable declarations.
+- When FlatZinc solver is terminated due to a timeout, do not report
+ this as an error.
+- Fix pretty-printing of multi-dimensional arrays where dimensions
+ other than the first one are empty.
+- Add support for where clauses on generator assignment expressions.
+- MiniZinc IDE: Improve dark mode by changing line numbers to dark
+ background.
+- MiniZinc IDE: Make parameter input dialog scrollable.
+- MiniZinc IDE: Fix solution compression limit, and output one solution
+ per block of compressed solutions.
+
+.. _v2.2.0:
+
+`Version 2.2.0 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 24 August 2018)
+
+This is a major release of MiniZinc, introducing many new features and
+improvements.
+
+Major new features:
+^^^^^^^^^^^^^^^^^^^
+
+- **New minizinc command line tool**
+ Previous releases contained a ``minizinc`` command line tool that was
+ not much more than a simple script that could execute the compiler,
+ solver and output processor. The ``minizinc`` executable in version
+ 2.2.0 is now the main frontend to compilation and solving and
+ integrates all of the functionality. It has access to all installed
+ MiniZinc solvers (both internal solvers and those interfaced through
+ FlatZinc files), and can automatically select the required options
+ (e.g., to include the solver-specific MiniZinc globals library).
+ You can get a list of available solvers using the ``--solvers``
+ command line option, and select a solver using ``--solver``. The
+ ``minizinc`` executable can now also be used as a replacement for
+ ``mzn2fzn`` (using ``-c``) and ``solns2out`` (using ``--ozn-file``).
+- **Multi-pass compilation**
+ The compiler can now perform multiple passes in order to improve the
+ target FlatZinc code. This can be controlled using the ``-O`` command
+ line flags (``-O0`` to ``-O4``). Multi-pass compilation is
+ particularly useful when the target solver requires sophisticated
+ decomposition of global constraints (such as for MIP solvers).
+- **Solution checking**
+ You can now supply an additional model that will be used to check
+ each solution produced by your main model. This can be useful for
+ teaching MiniZinc (to give students automatic feedback) and if your
+ main model is very complex but checking that a solution is correct is
+ easy.
+- **MIP solvers:** support for FICO Xpress, and loading IBM ILOG CPLEX
+ as a plugin
+ We have added support for FICO Xpress (this requires compiling
+ MiniZinc from sources). CPLEX can now be loaded as a plugin, which
+ means that the binary distribution of MiniZinc has built-in CPLEX
+ support (just bring your own CPLEX dll).
+- **Language extensions**
+ The MiniZinc language has been extended with two new features.
+
+ - Array slicing introduces syntax to conveniently select rows,
+ columns or entire slices of arrays. For example, ``x[3,..]``
+ selects the third row of array ``x``, while ``x[..,4]`` selects
+ the fourth column, and ``x[3..5,2..7]`` selects a slice of rows 3
+ to 5 and columns 2 to 7.
+ - Generator expressions can now contain multiple where clauses, e.g.
+ ``forall (i in S where foo(i), j in T where i < j) (bar(i,j))``
+ This enables more efficient compilation compared to evaluating all
+ where clauses in the inner-most generator. In addition to
+ iteration (``i in S``), generators can now contain assignment
+ expressions (``j=foo(i)``). This enables intermediate definitions
+ that can then be used in further generators.
+
+Changes and minor features:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- The value of the objective can now be added automatically to the
+ output using the ``--output-objective`` command line option. Using
+ ``--output-mode dzn``, this allows automatic output of all the free
+ variables of the model.
+- Models that do not contain a solve item are now accepted and treated
+ as ``solve satisfy``
+- Support for naming constraints and expressions (using ``::"name"``
+ syntax)
+- Error messages have been improved, they now contain more accurate
+ location information.
+- The compiler can be instructed to accept multiple assignments to the
+ same parameter (as long as they are all identical), using the
+ ``--allow-multiple-assignments`` command line option.
+- Annotations for supplying warm start values have been added to the
+ standard library (currently supported by the MIP solvers Gurobi and
+ IBM ILOG CPLEX).
+- The compiler now accepts multiple .mzn files as input.
+- Memory consumption and garbage collection performance has been
+ improved.
+- The conditional expression has been extended to support
+ ``if then endif`` (where ```` is bool)
+- Decomposition of one variable type to another (e.g. set into array of
+ bool) has been improved.
+- MIP solvers Gurobi and IBM ILOG CPLEX use node files when over 3GB
+ working memory
+- Gurobi and CPLEX support the MIPfocus parameter
+- Gurobi supports MiniZinc search annotations by setting fixed
+ branching priorities
+
+.. _bug-fixes-12:
+
+Bug fixes:
+^^^^^^^^^^
+
+Consult the bug tracker at
+https://github.com/MiniZinc/libminizinc/issues
+
+.. _v2.1.7:
+
+`Version 2.1.7 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 10 January 2018)
+
+.. _changes-8:
+
+Changes:
+^^^^^^^^
+
+- Improved linearisation for some element constraints.
+- Improve performance of optimisation phase by using a queue instead of
+ a stack.
+- Add --dll option for Gurobi backend to specify the Gurobi DLL to
+ load.
+- Add more defines_var annotations.
+
+.. _bug-fixes-13:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix generation of variable names in output model (sometimes could
+ contain duplicates).
+- Fix enum type inference for array literals with empty sets as their
+ first arguments. Fixes :bugref:`180`.
+- Fix incorrect simplification of float domain constraints. Fixes :bugref:`159`.
+- Fix ceil builtin for float values.
+- Add superset decomposition for solvers that do not support set
+ variables.
+- Fix three bugs in the garbage collector.
+- Fix a bug in flattening that would create duplicate variables when a
+ variable declaration referred to another one in its type-inst.
+- Fix a crash in flattening of partial functions. Fixes :bugref:`187`.
+- Add missing deopt builtins for all par types.
+- Fix output for arrays of sets of enums.
+- Define more functions on par opt types. Fixes :bugref:`188`.
+- Fix type checker to accept arrays of opt set values.
+- Support printing of opt enum types. Fixes :bugref:`189`.
+- Fix evaluation of comprehensions in recursive functions.
+- Fix output of Gurobi backend when used in conjunction with solns2out.
+- Fix pthread linking for mzn-cbc.
+- Catch type error when set literal is declared that contains another
+ set.
+
+IDE changes and bug fixes:
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- Fix problem where files with a . in the filename could not be run.
+- Fix font settings (were not saved reliably on some platforms).
+- Enable generic interface for submitting assignments (not just to
+ Coursera).
+- Fix output handling for solvers that do not run mzn2fzn.
+- Fix hidden solution display when there are exactly as many solutions
+ as the configured threshold for hiding solutions.
+- Add configuration option to print timing information for each
+ solution.
+
+.. _v2.1.6:
+
+`Version 2.1.6 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 22 September 2017)
+
+.. _bug-fixes-14:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fully evaluate parameters before binding formal arguments when
+ evaluating call expressions. Fixes :bugref:`177`.
+- Fix incorrect simplification of Boolean constraints assigned to
+ variables that are assigned to false.
+- Fix bug in flattening of linear equations that contain the same
+ variable on both sides.
+- Fix un-trailing for let expressions, which could sometimes cause
+ incorrect code to be emitted when lets are evaluated in nested loops.
+ Fixes :bugref:`166`.
+- Fix bug in JSON output of one-dimensional array literals.
+- Fix unification of enum type-inst variables.
+
+.. _v2.1.5:
+
+`Version 2.1.5 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 17 May 2017)
+
+.. _changes-9:
+
+Changes:
+^^^^^^^^
+
+- Some improvements to the linearisation library.
+- Make parser read multiple .mzn files correctly.
+- Enable better bounds computation for array access expressions on
+ fixed arrays.
+- Perform better constant folding during optimisation phase. Fixes :bugref:`155`.
+- Don't rewrite pow function into multiplication in the case of power
+ of 2.
+- Save some memory by making certain internal data structures more
+ compact.
+- Improve source code location of identifiers in generator calls
+ (should give more precise error messages).
+- Produce an error message when a comprehension attempts to iterate
+ over an infinite set.
+- Produce better error messages for operations on infinite values
+ (previously some errors did not contain a source code location).
+- Speed up garbage collection by pre-allocating some memory.
+
+.. _bug-fixes-15:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix range check for float literals in arrays.
+- Fix a bug where a constraint could be removed incorrectly. Fixes :bugref:`150`.
+- Include variables for dzn and json output from all included models,
+ not just the main model. Fixes :bugref:`153`.
+- Produce multi-dimensional arrays in json output. Fixes :bugref:`156` and :bugref:`157`.
+- Remove incorrect closing bracket from json output. Fixes :bugref:`154`.
+- Fix bounds computation of par int and float arrays.
+- Don't allow var access to arrays of strings or annotations (since
+ that would require an element constraint and var string / var ann
+ types).
+- Introduce int2float constraints where necessary for some
+ linearisations.
+
+.. _v2.1.4:
+
+`Version 2.1.4 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 13 March 2017)
+
+.. _changes-10:
+
+Changes:
+^^^^^^^^
+
+- Add warning for MIP solvers that do not support -a option for
+ satisfaction problems.
+- Print introduced variable names with additional underscore to make
+ debugging FlatZinc easier. Fixes :bugref:`147`.
+- Add support for pow function in linearisation library.
+- Add support for parallel solving with CBC.
+- Flatten top-level conjunctions in the order defined in the model.
+
+.. _bug-fixes-16:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix major race condition that would crash the IDE when it didn't
+ detect that a solver process had finished.
+- Improve HTML output in the IDE by making sure every line is
+ terminated by a newline.
+- Fix a garbage collection bug that could cause dangling pointers when
+ expressions were copied.
+- Fix type checker to allow empty arrays to be assigned to variables
+ declared as arrays of enums.
+- Fix infeasibility check in MIP translation for some inequality
+ constraints.
+- Improved defines_var annotations for reified xor constraints. Fixes
+ :bugref:`146`.
+- Fix output of empty integer sets and deal with empty arrays in output
+ models.
+- Fix MIP translation when boolean variables were removed due to
+ aliasing.
+- Improve corner cases for linearisation of cumulative constraint.
+- Properly report undefinedness in par bool expressions.
+- Enable some additional constant folding during flattening. Fixes :bugref:`149`.
+
+.. _v2.1.3:
+
+`Version 2.1.3 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 6 February 2017)
+
+.. _changes-11:
+
+Changes:
+^^^^^^^^
+
+- Remove more internal annotations from the generated FlatZinc.
+- Detect failure earlier if optimisation pass leads to fixing of
+ variables outside their domains.
+
+.. _bug-fixes-17:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix CBC backend to correctly print UNSAT message for models where the
+ compiler already detected unsatisfiability, and print solution
+ separators even where there is no other output.
+- Add missing var_dom function for arrays of optional integer
+ variables. Fixes :bugref:`133`.
+- Fix aliasing for optional integer variables. Fixes :bugref:`132`.
+- Remove all annotations from output model.
+- Fix computation of return type for functions that return arrays of
+ enums.
+- Don't output newline if user-defined solution separator or status
+ message is empty
+- Fix return type computation for functions where return type contains
+ enums.
+- Check finiteness of float literals and bounds. Fixes :bugref:`138`.
+- More checks for function return values. Fixes :bugref:`136`.
+- Fix var int comprehensions (now triggers error message instead of
+ crash for var set of int comprehensions). Fixes :bugref:`135`.
+- Fix output of variables with quoted identifiers.
+- Fix flattening of let expressions that contain variables with
+ undefined (i.e., partial) right hand side.
+- Make printing of error messages to stdout or stderr more consistent
+ across executables.
+- Fix type checking of initialisation of enum types.
+- Improve error messages for array access and index set errors. Fixes
+ :bugref:`131`.
+- Fix definition of multi-dimensional element constraints to impose
+ correct bounds on index variables.
+- Fix binding analysis during type checking, which did not handle the
+ shadowing of top-level declarations by comprehension generators
+ correctly. Fixes :bugref:`129`.
+
+.. _v2.1.2:
+
+`Version 2.1.2 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 20 December 2016)
+
+.. _bug-fixes-18:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix a bug in the type checking for generators that iterate over
+ arrays of enums.
+- Fix a bug in the output handling of arrays of enums.
+- Fix handling of multiple output items (only the last item was
+ compiled, now the concatenation is used for output as defined in the
+ specification).
+
+.. _v2.1.1:
+
+`Version 2.1.1 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 14 December 2016)
+
+.. _changes-12:
+
+Changes:
+^^^^^^^^
+
+- Add missing min/max functions for set variables. Can be redefined to
+ solver builtins using the new redefinitions-2.1.1.mzn library file.
+- Add support for option type expressions as objective functions.
+- Automatically coerce arrays constructed using ++ to any enum index
+ set (in addition to array literals and comprehensions).
+
+.. _bug-fixes-19:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Include cmath header to fix compilation issues with some compilers.
+ Fixes :bugref:`125`.
+- Fix a garbage collection bug in the type checking for enumerated
+ types that would sometimes lead to crashes or incorrect error
+ messages.
+- Fix type checking of comprehensions that involve enumerated types.
+- Fix bounds computation for var sets of enumerated types.
+- Support anon_enum function as documented.
+
+.. _v2.1.0:
+
+`Version 2.1.0 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 17 November 2016)
+
+.. _changes-13:
+
+Changes:
+^^^^^^^^
+
+- MiniZinc now supports enumerated types.
+- Solvers can be interfaced directly to the MiniZinc library, and
+ MiniZinc comes with direct support for the CBC, Gurobi and CPLEX MIP
+ solvers.
+- The linearisation library has been updated, resulting in much better
+ FlatZinc being generated for MIP solvers.
+- Data files can be in JSON format, and MiniZinc can produce JSON
+ output (using the --output-mode command line option).
+- Variables can be annotated as ::add_to_output instead of writing an
+ output item.
+- The compiler can output information about the parameters and output
+ variables of a model (using the --model-interface-only option).
+- Floats are handled better (detecting infinities and handling sets of
+ floats).
+- Bounds can be computed for more expressions (instead of failing with
+ an error message).
+
+.. _bug-fixes-20:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix a bug in optimization that could remove variables even if they
+ are used. Fixes :bugref:`123`.
+- Fix float variable declarations with sets of floats as domains. Fixes
+ :bugref:`117` and :bugref:`98`.
+- Fix type checking and evaluation of asserts with array arguments.
+ Fixes :bugref:`109`.
+- Fix abs(var float) declaration to work on floats without declared
+ bounds. Fixes :bugref:`106`.
+- Fix a bug in the computation of int and float bounds that could
+ result in incorrect bounds in some cases. Fixes :bugref:`94`.
+- Fix garbage collection when creating output models. Fixes :bugref:`77`.
+- Fix binary operators on optional variables (in some cases comparison
+ operators were reversed).
+- Fix optimization of unconstrained variables (could sometimes lead to
+ constraints being removed although they were not subsumed).
+
+.. _v2.0.14:
+
+`Version 2.0.14 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 31 July 2016)
+
+.. _changes-14:
+
+Changes:
+^^^^^^^^
+
+- Less aggressive aggregation of linear expressions in cases where it
+ leads to much less efficient FlatZinc.
+- Don't create temporary variable for an array literal if it is
+ discarded immediately anyway.
+- Only create new partiality variable for if-then-else expression if
+ there's at least one var condition.
+- Replace recursive definitions of array_intersect and array_union with
+ iterative ones.
+
+.. _bug-fixes-21:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Don't report warnings about partiality when using extended generator
+ expressions.
+- Include cmath to enable building with some versions of gcc.
+- Constrain result of function call based on function return type if
+ necessary.
+- Make sure linear expressions generated during binding of variables
+ are properly flattened (including simplification of the linear
+ expression)
+
+.. _v2.0.13:
+
+`Version 2.0.13 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 26 March 2016)
+
+.. _bug-fixes-22:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix a bug in the Common Subexpression Elimination table of the
+ compiler, which could lead to some constraints being dropped
+ (especially when using linear redefinitions).
+- The output model sometimes did not include all required definitions,
+ in particular when array declarations used identifiers to specify the
+ dimensions.
+- The generated FlatZinc sometimes still contained bool variables that
+ were not connected to the rest of the model, which could produce
+ incorrect solutions being printed.
+- Fix a bug where warnings (e.g. about partial functions) could lead to
+ crashes.
+- Fix the bounds computation for integer and float variables, which
+ could produce incorrect bounds for linear expressions. Fixes :bugref:`94`.
+- Fix a bug in the IDE that caused solver output to be shown
+ incompletely in some cases.
+
+.. _v2.0.12:
+
+`Version 2.0.12 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 25 February 2016)
+
+.. _changes-15:
+
+Changes:
+^^^^^^^^
+
+- Partial functions are now always evaluated in their Boolean context,
+ independent of whether they are par or var. If the result of a
+ partial function is statically known to be undefined (such as
+ division by zero or array access out of bounds), and it is used in a
+ constraint expression, this now results in a warning instead of an
+ error. Warnings can be turned off using the ::maybe_partial
+ annotation. Fixes :bugref:`43` and :bugref:`74`.
+
+.. _bug-fixes-23:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix a bug in the optimisation phase related to unification of aliased
+ variables.
+- Fix short-circuit evaluation of Boolean expressions.
+- Fix a bug in the optimisation phase related to repeated
+ simplification of some Boolean expressions.
+- Handle errors in output produced by solver without solns2out
+ crashing. Fixes :bugref:`80`.
+- Fix a bug in the integer bounds computation that caused bool2int with
+ an embedded conditional to crash.
+- Fix a problem with short-circuit compilation of == expressions when
+ one side was a var opt bool.
+- Stop compilation when model is failed. Fixes a bug where mzn2fzn
+ would sometimes not clean up the FlatZinc enough for the solver.
+
+.. _v2.0.11:
+
+`Version 2.0.11 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 15 January 2016)
+
+.. _bug-fixes-24:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix parsing of hex and octal literals. Fixes :bugref:`71`.
+- Fix compilation of extended comprehensions. Fixes :bugref:`72`.
+- Fix computation of float array access bounds.
+- Fix aggregation of clauses (could sometimes ignore the negative
+ literals).
+
+.. _v2.0.10:
+
+`Version 2.0.10 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 9 December 2015)
+
+.. _bug-fixes-25:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix a bug in the optimiser that could lead to undefined variables in
+ the generated FlatZinc. Fixes :bugref:`70`.
+
+.. _v2.0.9:
+
+`Version 2.0.9 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 6 December 2015)
+
+.. _bug-fixes-26:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Need to take return type into account when copying functions to
+ output model. Fixes :bugref:`55`.
+- Evaluate calls that result in arrays using eval_arraylit. Fixes :bugref:`57`.
+- Move inverse function to its own library file, so that it remains
+ available when a solver provides an alternative for the inverse
+ predicate.
+- Optimisation phase now recursively checks constraints when elements
+ in an array become fixed.
+- Fix CMakeLists file to work for paths that contain spaces.
+- Distinguish between infix operators and regular functions in the
+ generated html documentation. Fixes :bugref:`61`.
+- Made parser more robust against incorrect code.
+- Fix increment/decrement operators for IntVals and make all operations
+ throw correct overflow exceptions.
+- Fix automatic type coercion for variables declared in let
+ expressions.
+- Fix a crash when printing some error messages.
+- Fix compute_div_bounds builtin to return correct result for a
+ division by zero.
+- Fix optimisation of Boolean constraints to use pointer equality
+ instead of structural equality (same expression can occur multiple
+ times in the FlatZinc).
+- Only optimise constraints that have not been removed yet.
+- Fix declaration of functional version of bin_packing_load. Fixes :bugref:`64`.
+- Set type of arrays returned from polymorphic functions. Fixes :bugref:`65`.
+- Fix parsing of quoted unary operator calls.
+- Only compute set functions when bounds are valid. Fixes :bugref:`66`.
+- Compute proper bounds for if-then-else expressions.
+- Report error when no reified version of a constraint is available.
+ Fixes :bugref:`67`.
+- Fix type checking of annotations on binary operators.
+- Keep annotations when rewriting linear constraints and remove
+ is_defined_var annotations from fixed variables. Fixes :bugref:`69`.
+
+.. _changes-16:
+
+Changes:
+^^^^^^^^
+
+Integer, Boolean and float literals are now cached to achieve better
+memory performance for some models.
+
+Improve performance of parsing integer literals.
+
+Improve handling of clause constraints.
+
+Add source files of MiniZinc specification to the repository.
+
+Limit maximum array size to enable better error messages.
+
+Add implied_constraint predicate as a synonym for redundant_constraint.
+
+.. _v2.0.8:
+
+`Version 2.0.8 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 19 October 2015)
+
+.. _bug-fixes-27:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix incorrect negation of some reified comparisons.
+- Make lb/ub functions work in more cases.
+- Fix several bugs in the optimisation phase (could lead to incorrect
+ FlatZinc and crashes).
+- Fix a problem with reverse mapper functions when the result of the
+ reverse mapper can be fixed to a constant.
+
+.. _v2.0.7:
+
+`Version 2.0.7 `__
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+(released 5 October 2015)
+
+.. _changes-17:
+
+Changes:
+^^^^^^^^
+
+- Improved propagation of Boolean constants in the optimisation phase.
+ This should result in far fewer aliases and improves simplification
+ of conjunctions, disjunctions and clauses.
+- Add special case handling for integer division by 1.
+
+.. _bug-fixes-28:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix FlatZinc generator phase, need to turn all array literal
+ arguments into 1-based single dimensional arrays.
+- Fix compilation of if-then-else expressions with var conditions
+ (which didn't implement proper partiality/totality semantics). Fixes
+ :bugref:`42`.
+- Provide correct bounds for weak opt var arithmetic. Fixes :bugref:`51`.
+- Need to be able to handle unflattened annotations. Fixes :bugref:`53`.
+- Fix generation of output model (needs to ignore items that have been
+ removed previously).
+- Add missing lb(var set of int) builtin. Fixes :bugref:`47`.
+- Check that var set declarations have a finite element type. Fixes :bugref:`46`.
+- Fix translation context for binary operators on arrays.
+- Need to access IntVal::infinity as a function, otherwise depending on
+ linker etc it may become 0 in some cases. Fixes :bugref:`40`.
+- Change pretty printer to use one less digit when printing float
+ literals. This fixes :bugref:`41` (or at least
+ provides a workaround), but some double constants may still be
+ rounded incorrectly when pretty printing and reading them back in.
+ The real fix will be to output hex float literals (coming soon).
+- Distinguish between generalised comprehensions (iterating over sets)
+ and iterating over arrays. Fixes compilation of comprehensions where
+ iteration over an array is combined with var where clauses. Fixes :bugref:`45`.
+- Fix bug in creation of output model where sometimes chains of
+ variable definitions could lead to crashes.
+- Avoi creating mutually recursive definitions in some corner cases,
+ which could cause the compiler to run into infinite loops.
+- Don't copy vardecl items to output model that are already there.
+ Fixes :bugref:`44`.
+- Remove domain from array declarations in FlatZinc (avoids problems
+ with domains where holes need to be removed and when there are
+ infinities in the domains)
+- Fix flattening of equality operator between non-opt and opt vars.
+- Check that model contains a single solve and output item during type
+ checking (previously, multiple output items were not detected and
+ resulted in incorrect .ozn files).
+- Fix flattening of xor (arguments need to be in mixed context).
+- Use is_fixed in cumulative definition.
+- Fix bug where a par right hand side of a variable mentioned in the
+ output would cause a crash.
+- Fix variable dependency tracking during rewriting in the optimisation
+ phase. Could previously lead to variables being removed that are
+ still required. Fixes :bugref:`54`.
+
+.. _v2.0.6:
+
+Version 2.0.6
+~~~~~~~~~~~~~
+
+(released 2 August 2015)
+
+.. _changes-18:
+
+Changes:
+^^^^^^^^
+
+- Add parser support for hexadecimal floating point constants.
+
+.. _bug-fixes-29:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix bounds computation for some calls (abs, int_times).
+- Fix flattening of some array declarations (when right hand side is an
+ identifier).
+- Add four missing GC locks (could lead to incorrect garbage
+ collection).
+- Compact output model only after optimisation phase (could lead to
+ incorrect items being removed from output model).
+
+.. _v2.0.5:
+
+Version 2.0.5
+~~~~~~~~~~~~~
+
+(released 31 July 2015)
+
+.. _changes-19:
+
+Changes:
+^^^^^^^^
+
+- Improve the standard decomposition for the cumulative constraint.
+- Better handling of binary operators during type checking and
+ flattening, can sometimes avoid stack overflows (e.g. for large
+ conjunctions).
+- Make ++ operator left associative (avoid stack overflows in the
+ parser).
+- Add ::domain annotations to linear constraints generated from
+ multi-dimensional element constraints.
+- Greatly improved linearisation library.
+
+.. _bug-fixes-30:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix recursive function calls that contain let expressions.
+- Fix compilation of comprehensions inside parametric functions.
+- Fix a memory leak in solns2out.
+- Fix a problem in the evaluation of binary operators.
+- Fix a bug in the flattening of array literals.
+- Fix a bug that would crash the parser on certain syntax errors in let
+ expressions.
+
+.. _v2.0.4:
+
+Version 2.0.4
+~~~~~~~~~~~~~
+
+(released 1 July 2015)
+
+.. _changes-20:
+
+Changes:
+^^^^^^^^
+
+- Models can now be read from standard input (using the "-" or
+ "--input-from-stdin" command line options). Thanks to Sebastian
+ Kosch.
+- Improved handling of bool2int during FlatZinc generation.
+
+.. _bug-fixes-31:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix unification of aliased variables which could sometimes result in
+ variables being removed although had a constraining right hand side.
+- Fix evaluation of set comprehensions.
+- Fix command line flag --no-output-ozn
+- Fix performance problem when evaluating array expressions inside
+ lets.
+- Fix flattening of bool_xor redefinitions.
+- Fix partial evaluation of some array access expressions with var
+ indexes.
+- Fix definition of geost constraint.
+- User-defined functions are now copied correctly into the output model
+ if they are referenced in the output item.
+- Set comprehensions are fully evaluated.
+
+.. _v2.0.3:
+
+Version 2.0.3
+~~~~~~~~~~~~~
+
+(Internal release that did not contain some essential fixes)
+
+.. _v2.0.2:
+
+Version 2.0.2
+~~~~~~~~~~~~~
+
+(released 26 May 2015)
+
+.. _changes-21:
+
+Changes:
+^^^^^^^^
+
+- The optimiser now removes simple domain constraints from the FlatZinc
+- The compiler now checks for integer overflows in all built-in
+ operations
+- Report an error when the FlatZinc or ozn file cannot be opened for
+ writing
+- Add support for 3d array literals (e.g. [\| \|1,2|3,4|,|5,6|7,8\| \|]
+ )
+- Add show2d and show3d functions for formatting array output
+- Add row/col functions for variable arrays (fixes :bugref:`2`)
+- Introduce builtins for creating random distributions
+- Add reverse library function
+- Postpone flattening of some reified constraints
+- Slightly improved compilation of partial function calls when it can
+ be inferred at compile time that their result is undefined
+- Allow functions with empty argument lists to be declared as function
+ int: foo(); instead of just function int: foo;
+- Improve error reporting, in particular for errors in comprehensions
+- Enable expressions a..b where a and b are integer variables
+- Add redundant_constraint and symmetry_breaking_constraint builtins,
+ these can be rewritten by solver libraries to allow e.g. local search
+ solvers to ignore redundant constraints.
+- Improve flattening of predicates that simply return their arguments
+ (makes the redundant_constraint and symmetry_breaking_constraint
+ predicates work in more situations).
+- Replace command line option --only-range-domains by optional boolean
+ value so that solver libraries can set the flag directly in their
+ redefinitions file.
+- Stop flattening immediately when a model has been found to contain an
+ inconsistency.
+- Improve flattening of array access expressions, in particular for
+ nested array accesses that can be combined into a single element
+ constraint
+- Add command line option -s or --statistics to print statistics about
+ the generated FlatZinc
+- Improve bounds computation for if-then-else expressions
+- Clause arguments are compiled in positive and negative contexts
+ instead of mixed. That means that predicates that introduce free
+ variables can now be used in the positive part of a clause.
+
+.. _bug-fixes-32:
+
+Bug fixes:
+^^^^^^^^^^
+
+- Fix simplification of linear expressions, negative coefficients could
+ sometimes result in incorrect bounds
+- Fix bounds computation for unary minus operator
+- Add missing par set comparison builtins
+- Fix bounds computation for extended comprehension syntax
+- Fix a bug in the garbage collector that could sometimes lead to
+ premature deletion of expressions
+- Fix bounds computation for set difference
+- Fix duplication of some arrays in the FlatZinc (fixes :bugref:`3`)
+- Fix bounds inference for variables bound to empty sets (fixes :bugref:`3`)
+- Fix bug in error reporting function, which would sometimes not report
+ the entire call stack
+- Fix the generation of fresh variable names for generator expressions
+- Fix subtype check to allow empty arrays as subtype of arrays of sets
+- Fix crash when using assert/2
+- Fix bug when function used in output referred to par variable
+- Fix bug in type checker, the detection of cyclic definitions was not
+ correct and could lead to stack overflows
+- Fix parser to accept expressions with two consecutive array accesses
+ (like x[3][4], which are valid MiniZinc if x is an array of sets)
+- Fix error reporting when an evaluation error occurs within a
+ comprehension generator
+- Report type error on some ambiguous function calls
+- Report type error on var sets with element type other than int
+- Report type error when trying to coerce a var set into an array
+- Report error when calling function with a value that is outside the
+ declared parameter bounds
+- Fix arg_sort builtin to implement the correct semantics
+- Fix sort_by builtin to sort in non-decreasing order, and work with
+ floats
+- Fix bug in type checker, now automatic coercions in functions defined
+ with type variables (like the comparison operators) work correctly
+- Check that index sets match for arrays assigned in let expressions
+- Fix bug in bounds inference for integer expressions with annotations
+- Fix propagation of defines_var annotation to be pushed through calls
+- Fix parser to accept empty 2d and 3d array literals
+- Fix flattening to remove defines_var annotations with par argument,
+ e.g. defines_var(2), which could be introduced by the optimisation
+ pass
+- Fix output model creation for variables that have been redefined, and
+ remove more unused variables from the FlatZinc.
+- Fix bug in the garbage collector that could result in function items
+ not being kept alive in rare cases.
+
+.. _v2.0.1:
+
+Version 2.0.1
+~~~~~~~~~~~~~
+
+(released 15 December 2014)
+
+Major bugs and changes:
+^^^^^^^^^^^^^^^^^^^^^^^
+
+- Fix optimisation phase, which was previously incorrectly removing
+ variables
+- Add support for trigonometric functions (built-ins were missing in
+ 2.0.0) and pow (var versions were missing)
+- Fix equality operator on par arrays
+- All expressions in output model are now made par
+- Improve bounds computation for float variables
+- Fix translation of functions that need automatic coercion of their
+ return value
+- Fix the array_lb and array_ub builtins, which would return incorrect
+ bounds in some cases
+
+Minor bugs and changes:
+^^^^^^^^^^^^^^^^^^^^^^^
+
+- Add space between "array" and "[" in the pretty printer, to be
+ compatible with 1.6 output
+- Output all par declarations before the var declarations in FlatZinc
+- Fix parser, which could sometimes crash on invalid input
+- Improve efficiency of bounds computation on some float expressions
+- Add special case handling for division by 1
+- Add missing float_times definition to the flatzinc builtins
+- Use correct version of var_dom for float variables
+- Output information about which files are included in verbose mode
+- Only compute bounds for "then" expressions if the "if" is not fixed
+ to false
+
+.. _v2.0.0:
+
+Version 2.0.0
+~~~~~~~~~~~~~
+
+(released 9 December 2014)
+
+MiniZinc 2.0 contains many new features and is based on a complete
+rewrite of the MiniZinc-to-FlatZinc compiler. If you are currently using
+the previous version 1.6, the new tools can be used as drop-in
+replacements. The generated FlatZinc is compatible with version 1.6, so
+all FlatZinc solvers should work without changes.
+
+MiniZinc language changes
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+- MiniZinc now supports user-defined functions. Details have been
+ published in the paper "MiniZinc with Functions". Both functions and
+ predicates can be recursive.
+- MiniZinc now supports option types. Details have been published in
+ the paper "Modelling with Option Types in MiniZinc".
+- Let expressions have been generalised. They can now contain
+ constraint items in addition to variable declarations.
+- Array index sets can be declared using arbitrary set expressions as
+ long as they evaluate to contiguous ranges.
+- The if-then-else expression has been generalised to allow the
+ condition to be a var bool expression (instead of only par bool).
+- Array and set comprehensions as well as generator calls can now
+ iterate over variables and use var bool where conditions.
+- Any bool expression can now automatically coerce to an int
+ expression, likewise for int and float. This means that you don't
+ have to write bool2int or int2float in you models any more.
+- Equality constraints can now be posted between array expressions.
+- Arbitrary expressions can now be included ("interpolated") into
+ strings, using the syntax "some text \\(e) some more text", where e
+ is any expression. It is the same as writing "some text "++show(e)++"
+ some more text".
+
+New built-in functions
+^^^^^^^^^^^^^^^^^^^^^^
+
+- Array functions: array1d, arrayXd, row, col, has_index, has_element,
+ sort_by, sort, arg_sort, arg_min, arg_max
+
+New global constraints
+^^^^^^^^^^^^^^^^^^^^^^
+
+- arg_max, arg_min
+- arg_sort
+- k-dimensional diffn
+- disjunctive
+- geost
+- knapsack
+- network_flow
+- regular with NFAs
+- symmetric all different
+- optional scheduling constraints: alternative, span, disjunctive,
+ cumulative
+- functional versions of many global constraints
+
+New tool chain
+^^^^^^^^^^^^^^
+
+- There are a few new builtins that solvers can reimplement, these are
+ listed in the redefinitions-2.0 file.
+- Include items use a different method for finding included files.
+ Paths are now interpreted as relative to the file that has the
+ include item. That way, the mzn2fzn compiler can be called from a
+ different working directory.
+- A new tool, mzn2doc, can produce html output from the documentation
+ comments. The MiniZinc distribution contains the documentation for
+ global constraints and builtins generated directly from the library
+ source code.
diff --git a/cmake/modules/FindCPlex.cmake b/cmake/modules/FindCPlex.cmake
new file mode 100644
index 0000000..a626924
--- /dev/null
+++ b/cmake/modules/FindCPlex.cmake
@@ -0,0 +1,74 @@
+# - Try to find CPLEX
+# Once done this will define
+# CPLEX_FOUND - System has CPLEX
+# CPLEX_INCLUDE_DIRS - The CPLEX include directories
+# CPLEX_LIBRARIES - The libraries needed to use CPLEX
+# CPLEX_COMPILE_FLAGS - The definitions required to compile with CPLEX
+# User can set CPlex_ROOT to the preferred installation prefix
+
+set(CPLEX_COMPILE_FLAGS "-fPIC -fno-strict-aliasing -fexceptions")
+
+set(CPLEX_VERSIONS 1210 129 128 1271 127 1263 1262 1261 126)
+
+foreach(VERSION ${CPLEX_VERSIONS})
+ list(APPEND CPLEX_DEFAULT_LOC "/opt/ibm/ILOG/CPLEX_Studio${VERSION}")
+ list(APPEND CPLEX_DEFAULT_LOC "/opt/IBM/ILOG/CPLEX_Studio${VERSION}")
+ list(APPEND CPLEX_DEFAULT_LOC "C:\\Program Files\\IBM\\ILOG\\CPLEX_Studio${VERSION}")
+ list(APPEND CPLEX_DEFAULT_LOC "C:\\Program Files (x86)\\IBM\\ILOG\\CPLEX_Studio${VERSION}")
+ list(APPEND CPLEX_DEFAULT_LOC "$ENV{HOME}/Applications/IBM/ILOG/CPLEX_Studio${VERSION}")
+ list(APPEND CPLEX_DEFAULT_LOC "/Applications/IBM/ILOG/CPLEX_Studio${VERSION}")
+ list(APPEND CPLEX_DEFAULT_LOC "/Applications/CPLEX_Studio${VERSION}")
+
+ list(APPEND CPLEX_LIB_NAMES cplex${VERSION})
+endforeach(VERSION)
+
+find_path(CPLEX_INCLUDE ilcplex/cplex.h
+ HINTS ${CPLEX_DEFAULT_LOC}
+ PATH_SUFFIXES include cplex/include)
+
+if(NOT "${CPLEX_INCLUDE}" STREQUAL "CPLEX_INCLUDE-NOTFOUND")
+ file(READ "${CPLEX_INCLUDE}/ilcplex/cplex.h" CPLEX_CONFIG)
+ string(REGEX MATCH " +\\* +Version +([0-9]+\\.[0-9]+\\.[0-9]+)" _ "${CPLEX_CONFIG}")
+ set(CPLEX_VERSION "${CMAKE_MATCH_1}")
+ unset(CPLEX_CONFIG)
+endif()
+
+if(CPLEX_PLUGIN)
+ include(CheckIncludeFiles)
+ # TODO: Cleanup this mess
+ check_include_files(dlfcn.h HAS_DLFCN_H)
+ check_include_files(Windows.h HAS_WINDOWS_H)
+ if(HAS_DLFCN_H)
+ find_library(CPLEX_LIBRARY dl)
+ elseif(HAS_WINDOWS_H)
+ set(CPLEX_LIBRARY ${CPLEX_INCLUDE})
+ endif()
+else()
+ foreach(CPLEX_LIB ${CPLEX_LIB_NAMES})
+ find_library(CPLEX_LIBRARY NAMES cplex ${CPLEX_LIB}
+ HINTS ${CPLEX_DEFAULT_LOC}
+ PATH_SUFFIXES lib/x86-64_linux/static_pic lib/x86-64_osx/static_pic lib/x64_windows_vs2013/stat_mda cplex/lib/x86-64_linux/static_pic cplex/lib/x86-64_osx/static_pic cplex/lib/x64_windows_vs2013/stat_mda)
+ if(NOT "${CPLEX_LIBRARY}" STREQUAL "CPLEX_LIBRARY-NOTFOUND")
+ break()
+ endif()
+ endforeach(CPLEX_LIB)
+endif()
+
+include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set CBC_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(CPlex
+ FOUND_VAR CPLEX_FOUND
+ REQUIRED_VARS CPLEX_INCLUDE CPLEX_LIBRARY
+ VERSION_VAR CPLEX_VERSION
+ FAIL_MESSAGE "Could NOT find CPlex, use CPlex_ROOT to hint its location"
+)
+
+if(CPLEX_PLUGIN AND HAS_WINDOWS_H AND NOT HAS_DLFCN_H)
+ unset(CPLEX_LIBRARY)
+endif()
+
+mark_as_advanced(CPLEX_INCLUDE CPLEX_LIBRARY)
+
+set(CPLEX_LIBRARIES ${CPLEX_LIBRARY})
+set(CPLEX_INCLUDE_DIRS ${CPLEX_INCLUDE})
diff --git a/cmake/modules/FindGeas.cmake b/cmake/modules/FindGeas.cmake
new file mode 100644
index 0000000..13eba2b
--- /dev/null
+++ b/cmake/modules/FindGeas.cmake
@@ -0,0 +1,38 @@
+# - Try to find Geas
+# Once done this will define
+# GEAS_FOUND - System has Geas
+# GEAS_INCLUDE_DIRS - The Geas include directories
+# GEAS_LIBRARIES - The libraries needed to use Geas
+# User can set Geas_ROOT to the preferred installation prefix
+# Imported target Geas will be created for linking purposes
+find_path(
+ GEAS_INCLUDE geas/c/geas.h
+ PATH_SUFFIXES include
+)
+
+find_library(
+ GEAS_LIBRARY NAMES geas libgeas
+ PATH_SUFFIXES lib
+)
+
+include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set GEAS_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(Geas
+ FOUND_VAR GEAS_FOUND
+ REQUIRED_VARS GEAS_INCLUDE GEAS_LIBRARY
+ FAIL_MESSAGE "Could NOT find Geas, use Geas_ROOT to hint its location"
+)
+
+mark_as_advanced(GEAS_INCLUDE GEAS_LIBRARY)
+
+if(GEAS_FOUND)
+ add_library(Geas UNKNOWN IMPORTED)
+ set_target_properties(Geas PROPERTIES
+ IMPORTED_LOCATION ${GEAS_LIBRARY}
+ INTERFACE_INCLUDE_DIRECTORIES ${GEAS_INCLUDE}
+ )
+endif()
+
+set(GEAS_LIBRARIES ${GEAS_LIBRARY})
+set(GEAS_INCLUDE_DIRS ${GEAS_INCLUDE})
diff --git a/cmake/modules/FindGecode.cmake b/cmake/modules/FindGecode.cmake
new file mode 100644
index 0000000..24a0931
--- /dev/null
+++ b/cmake/modules/FindGecode.cmake
@@ -0,0 +1,83 @@
+# - Try to find Gecode
+# Once done this will define
+# GECODE_FOUND - System has Gecode
+# GECODE_INCLUDE_DIRS - The Gecode include directories
+# GECODE_LIBRARIES - The libraries needed to use Gecode
+# GECODE_TARGETS - The names of imported targets created for gecode
+# User can set Gecode_ROOT to the preferred installation prefix
+
+find_path(GECODE_INCLUDE gecode/kernel.hh
+ PATH_SUFFIXES include)
+
+find_file(GECODE_CONFIG_LOC gecode/support/config.hpp
+ HINTS ${GECODE_INCLUDE}
+ PATH_SUFFIXES include)
+
+if(NOT "${GECODE_CONFIG_LOC}" STREQUAL "GECODE_CONFIG_LOC-NOTFOUND")
+ file(READ "${GECODE_CONFIG_LOC}" GECODE_CONFIG)
+ string(REGEX MATCH "\#define GECODE_VERSION \"([0-9]+.[0-9]+.[0-9]+)\"" _ "${GECODE_CONFIG}")
+ set(GECODE_VERSION "${CMAKE_MATCH_1}")
+ string(REGEX MATCH "\#define GECODE_LIBRARY_VERSION \"([0-9]+-[0-9]+-[0-9]+)\"" _ "${GECODE_CONFIG}")
+ set(GECODE_LIBRARY_VERSION "${CMAKE_MATCH_1}")
+ string(REGEX MATCH "\#define GECODE_STATIC_LIBS ([0-9]+)" _ "${GECODE_CONFIG}")
+ set(GECODE_STATIC_LIBS "${CMAKE_MATCH_1}")
+ string(REGEX MATCH "\#define GECODE_HAS_GIST" GECODE_HAS_GIST "${GECODE_CONFIG}")
+ string(REGEX MATCH "\#define GECODE_HAS_MPFR" GECODE_HAS_MPFR "${GECODE_CONFIG}")
+ unset(GECODE_CONFIG)
+endif()
+unset(GECODE_CONFIG_LOC)
+
+set(GECODE_COMPONENTS Driver Flatzinc Float Int Kernel Minimodel Search Set Support)
+if(GECODE_HAS_GIST)
+ list(APPEND GECODE_COMPONENTS Gist)
+endif()
+
+foreach(GECODE_COMP ${GECODE_COMPONENTS})
+ # Try to find gecode library
+ string(TOLOWER "gecode${GECODE_COMP}" GECODE_LIB)
+ set(GECODE_LIB_LOC "GECODE_LIB_LOC-NOTFOUND")
+ find_library(GECODE_LIB_LOC NAMES ${GECODE_LIB} lib${GECODE_LIB} ${GECODE_LIB}-${GECODE_LIBRARY_VERSION}-r-x64 ${GECODE_LIB}-${GECODE_LIBRARY_VERSION}-d-x64
+ HINTS ${GECODE_INCLUDE}
+ PATH_SUFFIXES lib)
+ if(NOT "${GECODE_LIB_LOC}" STREQUAL "GECODE_LIB_LOC-NOTFOUND")
+ list(APPEND GECODE_LIBRARY ${GECODE_LIB_LOC})
+ add_library(Gecode::${GECODE_COMP} UNKNOWN IMPORTED)
+ set_target_properties(Gecode::${GECODE_COMP} PROPERTIES
+ IMPORTED_LOCATION ${GECODE_LIB_LOC}
+ INTERFACE_INCLUDE_DIRECTORIES ${GECODE_INCLUDE})
+ set(Gecode_FIND_REQUIRED_${GECODE_COMP} TRUE)
+ set(Gecode_${GECODE_COMP}_FOUND TRUE)
+ endif()
+endforeach(GECODE_COMP)
+
+if(WIN32 AND GECODE_HAS_GIST AND GECODE_STATIC_LIBS)
+ find_package(Qt5 QUIET COMPONENTS Core Gui Widgets PrintSupport)
+ set_target_properties(Gecode::Gist PROPERTIES
+ INTERFACE_LINK_LIBRARIES "Qt5::Core;Qt5::Gui;Qt5::Widgets;Qt5::PrintSupport")
+endif()
+
+unset(GECODE_REQ_LIBS)
+unset(GECODE_LIB_WIN)
+unset(GECODE_LIB_LOC)
+
+if(GECODE_LIBRARY AND GECODE_HAS_MPFR)
+ find_package(MPFR)
+ list(APPEND GECODE_LIBRARY ${MPFR_LIBRARIES})
+ list(APPEND GECODE_TARGETS ${MPFR_LIBRARIES})
+endif()
+
+include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set GECODE_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(
+ Gecode
+ REQUIRED_VARS GECODE_INCLUDE GECODE_LIBRARY
+ VERSION_VAR GECODE_VERSION
+ HANDLE_COMPONENTS
+ FAIL_MESSAGE "Could NOT find Gecode, use Gecode_ROOT to hint its location"
+)
+
+mark_as_advanced(GECODE_INCLUDE GECODE_LIBRARY)
+
+set(GECODE_LIBRARIES ${GECODE_LIBRARY})
+set(GECODE_INCLUDE_DIRS ${GECODE_INCLUDE})
diff --git a/cmake/modules/FindGurobi.cmake b/cmake/modules/FindGurobi.cmake
new file mode 100644
index 0000000..a308bcc
--- /dev/null
+++ b/cmake/modules/FindGurobi.cmake
@@ -0,0 +1,82 @@
+# - Try to find Gurobi
+# Once done this will define
+# GUROBI_FOUND - System has GUROBI
+# GUROBI_INCLUDE_DIRS - The GUROBI include directories
+# GUROBI_LIBRARIES - The libraries needed to use GUROBI
+# GUROBI_COMPILE_FLAGS - The definitions required to compile with GUROBI
+# User can set Gurobi_ROOT to the preferred installation prefix
+
+option(GUROBI_PLUGIN "Build Gurobi binding as a plugin" ON)
+
+set(GUROBI_COMPILE_FLAGS "-fPIC -fno-strict-aliasing -fexceptions")
+
+set(GUROBI_VERSIONS 913 912 911 910 903 902 901 900 811 810 801 752 702)
+
+foreach(VERSION ${GUROBI_VERSIONS})
+ list(APPEND GUROBI_DEFAULT_LOC "/opt/gurobi${VERSION}/linux64")
+ list(APPEND GUROBI_DEFAULT_LOC "/opt/gurobi${VERSION}/linux64")
+ list(APPEND GUROBI_DEFAULT_LOC "C:\\gurobi${VERSION}\\win64")
+ list(APPEND GUROBI_DEFAULT_LOC "C:\\gurobi${VERSION}\\win32")
+ list(APPEND GUROBI_DEFAULT_LOC "/Library/gurobi${VERSION}/mac64")
+
+ string(SUBSTRING ${VERSION} 0 2 VERSION)
+ list(APPEND GUROBI_LIB_NAMES gurobi${VERSION})
+endforeach(VERSION)
+
+find_path(GUROBI_INCLUDE gurobi_c.h
+ PATHS $ENV{GUROBI_HOME}
+ HINTS ${GUROBI_DEFAULT_LOC}
+ PATH_SUFFIXES include)
+
+if(NOT "${GUROBI_INCLUDE}" STREQUAL "GUROBI_INCLUDE-NOTFOUND")
+ file(READ "${GUROBI_INCLUDE}/gurobi_c.h" GUROBI_CONFIG)
+ string(REGEX MATCH "\#define GRB_VERSION_MAJOR +([0-9]+)" _ "${GUROBI_CONFIG}")
+ set(GRB_VERSION_MAJOR "${CMAKE_MATCH_1}")
+ string(REGEX MATCH "\#define GRB_VERSION_MINOR +([0-9]+)" _ "${GUROBI_CONFIG}")
+ set(GRB_VERSION_MINOR "${CMAKE_MATCH_1}")
+ string(REGEX MATCH "\#define GRB_VERSION_TECHNICAL +([0-9]+)" _ "${GUROBI_CONFIG}")
+ set(GRB_VERSION_TECHNICAL "${CMAKE_MATCH_1}")
+ set(GUROBI_VERSION "${GRB_VERSION_MAJOR}.${GRB_VERSION_MINOR}.${GRB_VERSION_TECHNICAL}")
+ unset(GUROBI_CONFIG)
+endif()
+
+if(GUROBI_PLUGIN)
+ include(CheckIncludeFiles)
+ # TODO: Cleanup this mess
+ check_include_files(dlfcn.h HAS_DLFCN_H)
+ check_include_files(Windows.h HAS_WINDOWS_H)
+ if(HAS_DLFCN_H)
+ find_library(GUROBI_LIBRARY dl)
+ elseif(HAS_WINDOWS_H)
+ set(GUROBI_LIBRARY ${GUROBI_INCLUDE})
+ endif()
+else()
+ foreach(GUROBI_LIB ${GUROBI_LIB_NAMES})
+ find_library(GUROBI_LIBRARY NAMES ${GUROBI_LIB}
+ HINTS $ENV{GUROBI_HOME}
+ PATHS ${GUROBI_DEFAULT_LOC}
+ PATH_SUFFIXES lib)
+ if(NOT "${GUROBI_LIBRARY}" STREQUAL "GUROBI_LIBRARY-NOTFOUND")
+ break()
+ endif()
+ endforeach(GUROBI_LIB)
+endif()
+
+include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set GUROBI_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(Gurobi
+ FOUND_VAR GUROBI_FOUND
+ REQUIRED_VARS GUROBI_INCLUDE GUROBI_LIBRARY
+ VERSION_VAR GUROBI_VERSION
+ FAIL_MESSAGE "Could NOT find Gurobi, use Gurobi_ROOT to hint its location"
+)
+
+if(GUROBI_PLUGIN AND HAS_WINDOWS_H AND NOT HAS_DLFCN_H)
+ unset(GUROBI_LIBRARY)
+endif()
+
+mark_as_advanced(GUROBI_INCLUDE GUROBI_LIBRARY)
+
+set(GUROBI_LIBRARIES ${GUROBI_LIBRARY})
+set(GUROBI_INCLUDE_DIRS ${GUROBI_INCLUDE})
diff --git a/cmake/modules/FindMPFR.cmake b/cmake/modules/FindMPFR.cmake
new file mode 100644
index 0000000..c61665d
--- /dev/null
+++ b/cmake/modules/FindMPFR.cmake
@@ -0,0 +1,25 @@
+### Try to find MPFR
+# Once done this will define
+# MPFR_FOUND - System has MPFR
+# MPFR_INCLUDE_DIRS - The MPFR include directories
+# MPFR_LIBRARIES - The libraries needed to use MPFR
+
+find_path(MPFR_INCLUDE NAMES mpfr.h
+ PATHS $ENV{GMPDIR} $ENV{MPFRDIR} ${INCLUDE_INSTALL_DIR})
+
+find_library(MPFR_LIBRARY mpfr
+ PATHS $ENV{GMPDIR} $ENV{MPFRDIR} ${LIB_INSTALL_DIR})
+
+include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set MPFR_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(MPFR
+ FOUND_VAR MPFR_FOUND
+ REQUIRED_VARS MPFR_LIBRARY MPFR_INCLUDE
+ FAIL_MESSAGE "Could NOT find MPFR, use MPFR_ROOT to hint its location"
+)
+
+mark_as_advanced(MPFR_INCLUDE MPFR_LIBRARY)
+
+set(MPFR_INCLUDES ${MPFR_INCLUDE})
+set(MPFR_LIBRARIES ${MPFR_LIBRARY})
diff --git a/cmake/modules/FindOsiCBC.cmake b/cmake/modules/FindOsiCBC.cmake
new file mode 100644
index 0000000..427bb75
--- /dev/null
+++ b/cmake/modules/FindOsiCBC.cmake
@@ -0,0 +1,91 @@
+# - Try to find CBC
+# Once done this will define
+# OSICBC_FOUND - System has CBC
+# OSICBC_INCLUDE_DIRS - The CBC include directories
+# OSICBC_LIBRARIES - The libraries needed to use CBC
+# GOSICBC_TARGETS - The names of imported targets created for CBC
+# User can set OsiCBC_ROOT to the preferred installation prefix
+
+set(OSICBC_FIND_FILES coin/CbcSolver.hpp coin/CglPreProcess.hpp coin/ClpConfig.h coin/CoinSignal.hpp coin/OsiClpSolverInterface.hpp coin/OsiSolverInterface.hpp)
+
+foreach(OSICBC_FILE ${OSICBC_FIND_FILES})
+ set(OSICBC_FILE_LOC "OSICBC_LIB_LOC-NOTFOUND")
+ find_path(OSICBC_FILE_LOC ${OSICBC_FILE}
+ PATH_SUFFIXES cbc cgl clp coinutils osi include)
+ if("${OSICBC_FILE_LOC}" STREQUAL "OSICBC_FILE_LOC-NOTFOUND")
+# message(STATUS "OsiCBC: Could not find file `${OSICBC_FILE}`")
+ set(OSICBC_INCLUDE "")
+ break()
+ endif()
+ list(APPEND OSICBC_INCLUDE ${OSICBC_FILE_LOC})
+ # Add "/coin" for CBC internal dependencies
+ list(APPEND OSICBC_INCLUDE ${OSICBC_FILE_LOC}/coin)
+endforeach(OSICBC_FILE)
+
+list(REMOVE_DUPLICATES OSICBC_INCLUDE)
+unset(OSICBC_FIND_FILES)
+unset(OSICBC_FILE_LOC)
+
+find_file(CBC_CONFIG_LOC NAMES coin/config_cbc_default.h coin/CbcConfig.h
+ HINTS ${OSICBC_INCLUDE}
+ PATH_SUFFIXES cbc)
+
+if(NOT "${CBC_CONFIG_LOC}" STREQUAL "CBC_CONFIG_LOC-NOTFOUND")
+ file(READ "${CBC_CONFIG_LOC}" CBC_CONFIG)
+ string(REGEX MATCH "\#define +CBC_VERSION +\"([0-9]+.[0-9]+)\"" _ "${CBC_CONFIG}")
+ set(OSICBC_VERSION "${CMAKE_MATCH_1}")
+ unset(CBC_CONFIG)
+endif()
+unset(CBC_CONFIG_LOC)
+
+if(WIN32 AND NOT UNIX)
+ set(OSICBC_REQ_LIBS Osi OsiClp OsiCbc Clp Cgl Cbc CbcSolver CoinUtils)
+else()
+ set(OSICBC_REQ_LIBS CbcSolver Cbc Cgl OsiClp Clp Osi CoinUtils)
+endif()
+
+foreach(OSICBC_LIB ${OSICBC_REQ_LIBS})
+ set(OSICBC_LIB_LOC "OSICBC_LIB_LOC-NOTFOUND")
+ find_library(OSICBC_LIB_LOC NAMES ${OSICBC_LIB} lib${OSICBC_LIB}
+ PATH_SUFFIXES lib)
+ if("${OSICBC_LIB_LOC}" STREQUAL "OSICBC_LIB_LOC-NOTFOUND")
+# message(STATUS "OsiCBC: Could not find library `${OSICBC_LIB}`")
+ set(OSICBC_LIBRARY "")
+ break()
+ endif()
+ list(APPEND OSICBC_LIBRARY ${OSICBC_LIB_LOC})
+ add_library(${OSICBC_LIB} UNKNOWN IMPORTED)
+ set_target_properties(${OSICBC_LIB} PROPERTIES
+ IMPORTED_LOCATION ${OSICBC_LIB_LOC}
+ INTERFACE_INCLUDE_DIRECTORIES "${OSICBC_INCLUDE}")
+ list(APPEND OSICBC_TARGETS ${OSICBC_LIB})
+endforeach(OSICBC_LIB)
+
+unset(OSICBC_REQ_LIBS)
+unset(OSICBC_LIB_LOC)
+
+if(UNIX AND NOT WIN32 AND NOT DEFINED EMSCRIPTEN)
+ find_package(ZLIB)
+ if(NOT ZLIB_FOUND)
+ message(STATUS "OsiCBC: Missing dependency `Zlib`")
+ set(OSICBC_LIBRARY "")
+ else()
+ list(APPEND OSICBC_LIBRARY ${ZLIB_LIBRARIES})
+ list(APPEND OSICBC_TARGETS ${ZLIB_LIBRARIES})
+ endif()
+endif()
+
+include(FindPackageHandleStandardArgs)
+# handle the QUIETLY and REQUIRED arguments and set CBC_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(OsiCBC
+ FOUND_VAR OSICBC_FOUND
+ REQUIRED_VARS OSICBC_INCLUDE OSICBC_LIBRARY
+ VERSION_VAR OSICBC_VERSION
+ FAIL_MESSAGE "Could NOT find OsiCBC, use OsiCBC_ROOT to hint its location"
+)
+
+mark_as_advanced(OSICBC_INCLUDE OSICBC_LIBRARY)
+
+set(OSICBC_LIBRARIES ${OSICBC_LIBRARY})
+set(OSICBC_INCLUDE_DIRS ${OSICBC_INCLUDE})
diff --git a/cmake/modules/FindSCIP.cmake b/cmake/modules/FindSCIP.cmake
new file mode 100644
index 0000000..5d2a06e
--- /dev/null
+++ b/cmake/modules/FindSCIP.cmake
@@ -0,0 +1,39 @@
+# - Try to find SCIP
+# Once done this will define
+# SCIP_FOUND - System has SCIP
+# SCIP_INCLUDE_DIRS - The SCIP include directories
+# User can set SCIP_ROOT to the preferred installation prefix
+
+# We only need headers, since we always compile SCIP as a plugin
+find_path(SCIP_INCLUDE scip/scip.h
+ PATH_SUFFIXES include)
+
+find_file(SCIP_CONFIG_LOC scip/config.h
+ HINTS ${SCIP_INCLUDE}
+ PATH_SUFFIXES include)
+
+if(NOT "${SCIP_CONFIG_LOC}" STREQUAL "SCIP_CONFIG_LOC-NOTFOUND")
+ file(READ "${SCIP_CONFIG_LOC}" SCIP_CONFIG)
+ string(REGEX MATCH "\#define SCIP_VERSION_MAJOR +([0-9]+)" _ "${SCIP_CONFIG}")
+ set(SCIP_VERSION_MAJOR "${CMAKE_MATCH_1}")
+ string(REGEX MATCH "\#define SCIP_VERSION_MINOR +([0-9]+)" _ "${SCIP_CONFIG}")
+ set(SCIP_VERSION_MINOR "${CMAKE_MATCH_1}")
+ string(REGEX MATCH "\#define SCIP_VERSION_PATCH +([0-9]+)" _ "${SCIP_CONFIG}")
+ set(SCIP_VERSION_PATCH "${CMAKE_MATCH_1}")
+ set(SCIP_VERSION "${SCIP_VERSION_MAJOR}.${SCIP_VERSION_MINOR}.${SCIP_VERSION_PATCH}")
+ unset(SCIP_CONFIG)
+endif()
+unset(SCIP_CONFIG_LOC)
+
+# handle the QUIETLY and REQUIRED arguments and set SCIP_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(SCIP
+ FOUND_VAR SCIP_FOUND
+ REQUIRED_VARS SCIP_INCLUDE
+ VERSION_VAR SCIP_VERSION
+ FAIL_MESSAGE "Could NOT find SCIP, use SCIP_ROOT to hint its location"
+)
+
+mark_as_advanced(SCIP_INCLUDE SCIP_CONFIG_LOC)
+
+set(SCIP_INCLUDE_DIRS ${SCIP_INCLUDE})
diff --git a/cmake/modules/FindXpress.cmake b/cmake/modules/FindXpress.cmake
new file mode 100644
index 0000000..04c1761
--- /dev/null
+++ b/cmake/modules/FindXpress.cmake
@@ -0,0 +1,23 @@
+# - Try to find FICO Xpress
+# Once done this will define
+# XPRESS_FOUND - System has FICO Xpress
+# XPRESS_INCLUDE_DIRS - The FICO Xpress include directories
+# User can set Xpress_ROOT to the preferred installation prefix
+
+#TODO: Check default installation locations
+find_path(XPRESS_INCLUDE xprs.h
+ PATHS $ENV{XPRESSDIR} $ENV{XPRESS} $ENV{XPRESS_DIR}
+ HINTS /opt/xpressmp C:/xpressmp /Applications/FICO\ Xpress/xpressmp
+ PATH_SUFFIXES include)
+
+# handle the QUIETLY and REQUIRED arguments and set XPRESS_FOUND to TRUE
+# if all listed variables are TRUE
+find_package_handle_standard_args(Xpress
+ FOUND_VAR XPRESS_FOUND
+ REQUIRED_VARS XPRESS_INCLUDE
+ FAIL_MESSAGE "Could NOT find Xpress, use Xpress_ROOT to hint its location"
+)
+
+mark_as_advanced(XPRESS_INCLUDE)
+
+set(XPRESS_INCLUDE_DIRS ${XPRESS_INCLUDE})
diff --git a/cmake/scripts/md5_gen.cmake b/cmake/scripts/md5_gen.cmake
new file mode 100644
index 0000000..2075453
--- /dev/null
+++ b/cmake/scripts/md5_gen.cmake
@@ -0,0 +1,45 @@
+# Script to update the cached lexer and parser
+# Run after modifying lexer.lxx and/or parser.yxx
+#
+# 1. generate lexer and parser by building libminizinc
+# 2. run cmake -DPROJECT_SOURCE_DIR=. -DPROJECT_BINARY_DIR=build -P cmake/scripts/md5_gen.cmake
+# replacing . and build with the source and binary directory
+# add -DFORCE=ON to force the renewing of generated files when md5's still match.
+
+option(FORCE "Force the renewing of generated files" OFF)
+
+macro(MD5 filename md5sum)
+ file(READ "${filename}" RAW_MD5_FILE)
+ string(REGEX REPLACE "\r" "" STRIPPED_MD5_FILE "${RAW_MD5_FILE}")
+ string(MD5 ${md5sum} "${STRIPPED_MD5_FILE}")
+endmacro(MD5)
+
+# When updating the cached files, update MD5 sums defined in this file
+include(${PROJECT_SOURCE_DIR}/lib/cached/md5_cached.cmake)
+
+MD5("${PROJECT_SOURCE_DIR}/lib/lexer.lxx" lexer_lxx_md5)
+MD5("${PROJECT_SOURCE_DIR}/lib/parser.yxx" parser_yxx_md5)
+MD5("${PROJECT_SOURCE_DIR}/lib/support/regex/lexer.lxx" regex_lexer_lxx_md5)
+MD5("${PROJECT_SOURCE_DIR}/lib/support/regex/parser.yxx" regex_parser_yxx_md5)
+
+
+if(FORCE OR (NOT "${lexer_lxx_md5}" STREQUAL "${lexer_lxx_md5_cached}"))
+ file(COPY "${PROJECT_BINARY_DIR}/lexer.yy.cpp" DESTINATION "${PROJECT_SOURCE_DIR}/lib/cached")
+endif()
+if(FORCE OR (NOT "${parser_yxx_md5}" STREQUAL "${parser_yxx_md5_cached}"))
+ file(COPY "${PROJECT_BINARY_DIR}/parser.tab.cpp" DESTINATION "${PROJECT_SOURCE_DIR}/lib/cached")
+ file(COPY "${PROJECT_BINARY_DIR}/include/minizinc/parser.tab.hh" DESTINATION "${PROJECT_SOURCE_DIR}/lib/cached/minizinc")
+endif()
+if(FORCE OR (NOT "${regex_lexer_lxx_md5}" STREQUAL "${regex_lexer_lxx_md5_cached}"))
+ file(COPY "${PROJECT_BINARY_DIR}/regex_lexer.yy.cpp" DESTINATION "${PROJECT_SOURCE_DIR}/lib/cached")
+endif()
+if(FORCE OR (NOT "${regex_parser_yxx_md5}" STREQUAL "${regex_parser_yxx_md5_cached}"))
+ file(COPY "${PROJECT_BINARY_DIR}/regex_parser.tab.cpp" DESTINATION "${PROJECT_SOURCE_DIR}/lib/cached")
+ file(COPY "${PROJECT_BINARY_DIR}/include/minizinc/support/regex_parser.tab.hh" DESTINATION "${PROJECT_SOURCE_DIR}/lib/cached/minizinc/support")
+endif()
+
+set(MD5_TEMPLATE "set(lexer_lxx_md5_cached \"${lexer_lxx_md5}\")")
+set(MD5_TEMPLATE "${MD5_TEMPLATE}\nset(parser_yxx_md5_cached \"${parser_yxx_md5}\")")
+set(MD5_TEMPLATE "${MD5_TEMPLATE}\nset(regex_lexer_lxx_md5_cached \"${regex_lexer_lxx_md5}\")")
+set(MD5_TEMPLATE "${MD5_TEMPLATE}\nset(regex_parser_yxx_md5_cached \"${regex_parser_yxx_md5}\")")
+file(WRITE "${PROJECT_SOURCE_DIR}/lib/cached/md5_cached.cmake" ${MD5_TEMPLATE})
diff --git a/cmake/support/ccache_setup.cmake b/cmake/support/ccache_setup.cmake
new file mode 100644
index 0000000..fac062a
--- /dev/null
+++ b/cmake/support/ccache_setup.cmake
@@ -0,0 +1,25 @@
+option(USE_CCACHE "Use ccache to speed up compilation when found on the system" TRUE)
+
+find_program(CCACHE_PROGRAM ccache)
+if(USE_CCACHE AND CCACHE_PROGRAM)
+ # Support Unix Makefiles and Ninja
+ set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
+
+ # Support for Xcode
+ get_property(RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
+ if(RULE_LAUNCH_COMPILE AND CMAKE_GENERATOR STREQUAL "Xcode")
+ # Set up wrapper scripts
+ configure_file(cmake/templates/launch-c.in launch-c)
+ configure_file(cmake/templates/launch-cxx.in launch-cxx)
+ execute_process(COMMAND chmod a+rx
+ "${CMAKE_BINARY_DIR}/launch-c"
+ "${CMAKE_BINARY_DIR}/launch-cxx")
+
+ # Set Xcode project attributes to route compilation through our scripts
+ set(CMAKE_XCODE_ATTRIBUTE_CC "${CMAKE_BINARY_DIR}/launch-c")
+ set(CMAKE_XCODE_ATTRIBUTE_CXX "${CMAKE_BINARY_DIR}/launch-cxx")
+ set(CMAKE_XCODE_ATTRIBUTE_LD "${CMAKE_BINARY_DIR}/launch-c")
+ set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${CMAKE_BINARY_DIR}/launch-cxx")
+ endif()
+endif()
+
diff --git a/cmake/support/compiler_setup.cmake b/cmake/support/compiler_setup.cmake
new file mode 100644
index 0000000..02d4ff3
--- /dev/null
+++ b/cmake/support/compiler_setup.cmake
@@ -0,0 +1,65 @@
+set(CMAKE_CXX_STANDARD 11)
+
+option(USE_ADDRESS_SANITIZER "Use GCC Address Sanitizer" OFF)
+if(USE_ADDRESS_SANITIZER)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address")
+endif()
+
+set(CMAKE_REQUIRED_QUIET $)
+
+include(CheckCXXCompilerFlag)
+
+set(SAFE_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
+check_cxx_compiler_flag(-Werror HAS_WERROR)
+
+if(HAS_WERROR)
+ set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror")
+endif()
+
+check_cxx_source_compiles("int main(void) { static __thread int x; (void)x; return 0;}" HAS_ATTR_THREAD)
+
+if(NOT HAS_ATTR_THREAD)
+ check_cxx_source_compiles("int main(void) { __declspec(thread) static int x; (void)x; return 0;}" HAS_DECLSPEC_THREAD)
+endif()
+
+check_cxx_source_compiles("#include
+int main(void) { long long int x = atoll(\"123\"); (void)x; }" HAS_ATOLL)
+check_cxx_source_compiles("
+#include
+#include
+#include
+#include
+#include
+#include
+
+int main (int argc, char* argv[])
+{
+ pid_t pid = getpid();
+ char path[PROC_PIDPATHINFO_MAXSIZE];
+ (void) proc_pidpath (pid, path, sizeof(path));
+ return 0;
+}
+" HAS_PIDPATH)
+
+check_cxx_source_compiles("
+#include
+int main (int argc, char* argv[]) {
+ char path[MAX_PATH];
+ (void) GetModuleFileName(NULL, path, MAX_PATH);
+ return 0;
+}" HAS_GETMODULEFILENAME)
+
+check_cxx_source_compiles("
+#include
+int main (int argc, char* argv[]) {
+ (void) GetFileAttributes(NULL);
+ return 0;
+}" HAS_GETFILEATTRIBUTES)
+
+check_cxx_source_compiles("
+#include
+int main (int argc, char* argv[]) {
+ (void) memcpy_s(NULL,0,NULL,0);
+ return 0;
+}" HAS_MEMCPY_S)
diff --git a/cmake/support/config_emscripten.cmake b/cmake/support/config_emscripten.cmake
new file mode 100644
index 0000000..9520bd4
--- /dev/null
+++ b/cmake/support/config_emscripten.cmake
@@ -0,0 +1,58 @@
+if (DEFINED EMSCRIPTEN)
+ add_custom_command(OUTPUT ${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js
+ COMMAND python3 ${EMSCRIPTEN_ROOT_PATH}/tools/file_packager.py minizinc.data --lz4 --preload ${PROJECT_SOURCE_DIR}/share@/minizinc --from-emcc --js-output=${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js
+ COMMENT "building data store minizinc.data")
+
+ set(EMSCRIPTEN_CXX_FLAGS "-s MINIZ_NO_ARCHIVE_APIS -s MINIZ_NO_ZLIB_APIS")
+ set(EMSCRIPTEN_LINK_FLAGS " -s FORCE_FILESYSTEM=1 -s LZ4=1 -s MODULARIZE=1 -s EXTRA_EXPORTED_RUNTIME_METHODS=\"['callMain', 'cwrap', 'FS', 'ENV']\" -s DISABLE_EXCEPTION_CATCHING=0 -s ALLOW_MEMORY_GROWTH=1 --no-heap-copy")
+
+ # -------------------------------------------------------------------------------------------------------------------
+ # -- Web Assembly Configuration.
+
+ # MiniZinc main executable
+ em_link_pre_js(minizinc ${PROJECT_SOURCE_DIR}/cmake/support/emscripten_file_packager_patch.js)
+ em_link_pre_js(minizinc ${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js)
+
+ set_target_properties(minizinc PROPERTIES CXX_FLAGS ${EMSCRIPTEN_CXX_FLAGS})
+ set_target_properties(minizinc PROPERTIES LINK_FLAGS "-s WASM=1 -s EXPORT_NAME=\"'MINIZINC'\" ${EMSCRIPTEN_LINK_FLAGS}")
+
+ install(FILES ${PROJECT_BINARY_DIR}/minizinc.wasm DESTINATION bin)
+ install(FILES ${PROJECT_BINARY_DIR}/minizinc.data DESTINATION bin)
+
+ # mzn2doc executable
+ em_link_pre_js(mzn2doc ${PROJECT_SOURCE_DIR}/cmake/support/emscripten_file_packager_patch.js)
+ em_link_pre_js(mzn2doc ${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js)
+
+ set_target_properties(mzn2doc PROPERTIES CXX_FLAGS ${EMSCRIPTEN_CXX_FLAGS})
+ set_target_properties(mzn2doc PROPERTIES LINK_FLAGS "-s WASM=1 -s EXPORT_NAME=\"'MZN2DOC'\" ${EMSCRIPTEN_LINK_FLAGS}")
+ install(FILES ${PROJECT_BINARY_DIR}/mzn2doc.wasm DESTINATION bin)
+
+ # -------------------------------------------------------------------------------------------------------------------
+ # -- ASM.js (JavaScript) Configuration.
+
+ # MiniZinc main executable
+ add_executable(minizinc_asm minizinc.cpp)
+ target_link_libraries(minizinc_asm mzn)
+
+ em_link_pre_js(minizinc_asm ${PROJECT_SOURCE_DIR}/cmake/support/emscripten_file_packager_patch.js)
+ em_link_pre_js(minizinc_asm ${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js)
+
+ set_target_properties(minizinc_asm PROPERTIES CXX_FLAGS ${EMSCRIPTEN_CXX_FLAGS})
+ set_target_properties(minizinc_asm PROPERTIES LINK_FLAGS "-s WASM=0 -s EXPORT_NAME=\"'MINIZINC'\" ${EMSCRIPTEN_LINK_FLAGS}")
+
+ install(TARGETS minizinc_asm RUNTIME DESTINATION bin)
+ install(FILES $.mem DESTINATION bin)
+
+ # mzn2doc executable
+ add_executable(mzn2doc_asm mzn2doc.cpp)
+ target_link_libraries(mzn2doc_asm mzn)
+
+ em_link_pre_js(mzn2doc_asm ${PROJECT_SOURCE_DIR}/cmake/support/emscripten_file_packager_patch.js)
+ em_link_pre_js(mzn2doc_asm ${PROJECT_BINARY_DIR}/CMakeFiles/file_packager.js)
+
+ set_target_properties(mzn2doc_asm PROPERTIES CXX_FLAGS ${EMSCRIPTEN_CXX_FLAGS})
+ set_target_properties(mzn2doc_asm PROPERTIES LINK_FLAGS "-s WASM=0 -s EXPORT_NAME=\"'MZN2DOC'\" ${EMSCRIPTEN_LINK_FLAGS}")
+
+ install(TARGETS mzn2doc_asm RUNTIME DESTINATION bin)
+ install(FILES $.mem DESTINATION bin)
+endif()
diff --git a/cmake/support/config_export.cmake b/cmake/support/config_export.cmake
new file mode 100644
index 0000000..0b8180d
--- /dev/null
+++ b/cmake/support/config_export.cmake
@@ -0,0 +1,91 @@
+### Export of a CMake configuration for MiniZinc
+## This allows for "find_package(minizinc)"
+
+if(WIN32 AND NOT CYGWIN)
+ set(DEF_INSTALL_CMAKE_DIR CMake)
+else()
+ set(DEF_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake)
+endif()
+set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR}/libminizinc CACHE PATH "Installation directory for CMake files")
+
+if(NOT IS_ABSOLUTE "${INSTALL_CMAKE_DIR}")
+ set(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}")
+endif()
+
+file(RELATIVE_PATH REL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}"
+ "${INSTALL_CMAKE_DIR}")
+file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}"
+ "${CMAKE_INSTALL_PREFIX}/include")
+
+# Add external (static) dependencies
+if(TARGET minizinc_geas)
+ install(
+ FILES cmake/modules/FindGeas.cmake
+ DESTINATION ${REL_CMAKE_DIR}
+ COMPONENT dev
+ )
+ set(CONF_DEPENDENCIES "${CONF_DEPENDENCIES}find_dependency(Geas)\n")
+endif()
+if(TARGET minizinc_gecode)
+ install(
+ FILES cmake/modules/FindGecode.cmake cmake/modules/FindMPFR.cmake
+ DESTINATION ${REL_CMAKE_DIR}
+ COMPONENT dev
+ )
+ if(GECODE_HAS_GIST)
+ set(_CONF_GIST " Gist")
+ endif()
+ set(CONF_DEPENDENCIES "${CONF_DEPENDENCIES}find_dependency(Gecode 6.0 COMPONENTS Driver Float Int Kernel Minimodel Search Set Support${_CONF_GIST})\n")
+endif()
+if(TARGET minizinc_osicbc)
+ install(
+ FILES cmake/modules/FindOsiCBC.cmake
+ DESTINATION ${REL_CMAKE_DIR}
+ COMPONENT dev
+ )
+ set(CONF_DEPENDENCIES "${CONF_DEPENDENCIES}find_dependency(OsiCBC)\n")
+endif()
+
+# Add all targets to the build-tree export set
+export(TARGETS mzn
+ FILE "${PROJECT_BINARY_DIR}/libminizincTargets.cmake")
+
+# Export the package for use from the build-tree
+# (this registers the build-tree with a global CMake-registry)
+export(PACKAGE libminizinc)
+
+# Create the libminizincConfig.cmake and libminizincConfigVersion files
+# ... for the build tree
+set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}")
+configure_file(
+ cmake/templates/libminizincConfig.cmake.in
+ "${PROJECT_BINARY_DIR}/libminizincConfig.cmake"
+ @ONLY
+)
+# ... for the install tree
+set(CONF_INCLUDE_DIRS "\${libminizinc_CMAKE_DIR}/${REL_INCLUDE_DIR}")
+configure_file(
+ cmake/templates/libminizincConfig.cmake.in
+ "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/libminizincConfig.cmake"
+ @ONLY
+)
+# ... for both
+configure_file(
+ cmake/templates/libminizincConfigVersion.cmake.in
+ "${PROJECT_BINARY_DIR}/libminizincConfigVersion.cmake"
+ @ONLY
+)
+
+# Install the libminizincConfig.cmake and libminizincConfigVersion.cmake
+install(
+ FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/libminizincConfig.cmake" "${PROJECT_BINARY_DIR}/libminizincConfigVersion.cmake"
+ DESTINATION ${REL_CMAKE_DIR}
+ COMPONENT dev
+)
+
+# Install the export set for use with the install-tree
+install(
+ EXPORT libminizincTargets
+ DESTINATION ${REL_CMAKE_DIR}
+ COMPONENT dev
+)
diff --git a/cmake/support/config_output.cmake b/cmake/support/config_output.cmake
new file mode 100644
index 0000000..98f3151
--- /dev/null
+++ b/cmake/support/config_output.cmake
@@ -0,0 +1,35 @@
+message("\n----- MiniZinc build configuration ----")
+if(BUILD_REF)
+ set(STR_BUILD_REF "build ${BUILD_REF}")
+endif()
+message("MiniZinc version: ${libminizinc_VERSION} ${STR_BUILD_REF}")
+message("Enabled drivers:")
+
+if(TARGET minizinc_cplex)
+ if(NOT CPLEX_PLUGIN)
+ set(STR_CPLEX_PLUGIN " (LINKED)")
+ endif()
+ message("\tCPLEX ${CPLEX_VERSION}${STR_CPLEX_PLUGIN}: ${CPLEX_INCLUDE_DIRS}")
+endif()
+if(TARGET minizinc_geas)
+ message("\tGeas: ${GEAS_INCLUDE_DIRS}")
+endif()
+if(TARGET minizinc_gecode)
+ message("\tGecode ${GECODE_VERSION}: ${GECODE_INCLUDE_DIRS}")
+endif()
+if(TARGET minizinc_gurobi)
+ if(NOT GUROBI_PLUGIN)
+ set(STR_GUROBI_PLUGIN " (LINKED)")
+ endif()
+ message("\tGurobi ${GUROBI_VERSION}${STR_GUROBI_PLUGIN}: ${GUROBI_INCLUDE_DIRS}")
+endif()
+if(TARGET minizinc_osicbc)
+ message("\tOSICBC ${OSICBC_VERSION}: ${OSICBC_INCLUDE_DIRS}")
+endif()
+if(TARGET minizinc_scip)
+ message("\tSCIP ${SCIP_VERSION}: ${SCIP_INCLUDE_DIRS}")
+endif()
+if(TARGET minizinc_xpress)
+ message("\tXPress: ${XPRESS_INCLUDE_DIRS}")
+endif()
+message("---------------------------------------\n")
\ No newline at end of file
diff --git a/cmake/support/emscripten_file_packager_patch.js b/cmake/support/emscripten_file_packager_patch.js
new file mode 100644
index 0000000..a673ba3
--- /dev/null
+++ b/cmake/support/emscripten_file_packager_patch.js
@@ -0,0 +1,44 @@
+
+function filePackagerPatch_getPreloadedPackageNode(filename) {
+ var fs = require('fs');
+ var path = require('path');
+ filename = path.normalize(path.resolve(__dirname, filename));
+ const buf = fs.readFileSync(filename);
+ // convert to ArrayBuffer
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+}
+
+function filePackagerPatch_isNodeOrShell() {
+ var ENVIRONMENT_IS_WEB = typeof window === 'object';
+ var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';
+ var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function' && !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER;
+ var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
+ return ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL;
+}
+
+if (typeof location === 'undefined') {
+ // create a fake location to overrule the file_packager
+ var location = {
+ pathname: '/'
+ };
+}
+
+if (filePackagerPatch_isNodeOrShell()) {
+ Module.getPreloadedPackage = Module.getPreloadedPackage || filePackagerPatch_getPreloadedPackageNode;
+} else {
+ // need a hack to locate relative file in browser settings for the file packager
+ var wrappee = Module.locateFile || function (path, prefix) {return prefix + path};
+ Module.locateFile = function (path, prefix) {
+ if (prefix || !path.endsWith('.data')) {
+ return wrappee(path, prefix);
+ }
+ // file packager is called before a proper script location decection
+ var base = _scriptDir ? _scriptDir : (typeof importScripts === 'function' ? self.location.href : (typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : ''));
+ if (base.indexOf('blob:') !== 0) {
+ base = base.substr(0, base.lastIndexOf('/') + 1);
+ } else {
+ base = '';
+ }
+ return wrappee(path, base);
+ };
+}
diff --git a/cmake/support/emscripten_setup.cmake b/cmake/support/emscripten_setup.cmake
new file mode 100644
index 0000000..4c97c8d
--- /dev/null
+++ b/cmake/support/emscripten_setup.cmake
@@ -0,0 +1,8 @@
+# Workaround for bug in emscripten cmake:
+# add .bc (and on macOS .dylib) as library suffixes
+if (DEFINED EMSCRIPTEN)
+ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".bc")
+ if (CMAKE_HOST_APPLE)
+ list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".dylib")
+ endif()
+endif()
diff --git a/cmake/support/format.cmake b/cmake/support/format.cmake
new file mode 100644
index 0000000..bc77c2d
--- /dev/null
+++ b/cmake/support/format.cmake
@@ -0,0 +1,27 @@
+
+if (NOT CLANG_FORMAT_EXECUTABLE)
+ find_program(CLANG_FORMAT_EXECUTABLE NAMES clang-format clang-format-11 clang-format-10 clang-format-9)
+endif()
+
+set(CLANG_FORMAT_FLAGS "-i" CACHE STRING "Flags passed to the clang-format executable")
+
+if (CLANG_FORMAT_EXECUTABLE)
+ file(GLOB_RECURSE FORMAT_FILES
+ ${PROJECT_SOURCE_DIR}/*.c
+ ${PROJECT_SOURCE_DIR}/*.cpp
+ ${PROJECT_SOURCE_DIR}/*.h
+ ${PROJECT_SOURCE_DIR}/*.hh
+ ${PROJECT_SOURCE_DIR}/*.hpp
+ )
+ list(FILTER FORMAT_FILES EXCLUDE REGEX ${PROJECT_BINARY_DIR}/*)
+ list(FILTER FORMAT_FILES EXCLUDE REGEX ${PROJECT_SOURCE_DIR}/lib/cached/*)
+ list(FILTER FORMAT_FILES EXCLUDE REGEX ${PROJECT_SOURCE_DIR}/lib/thirdparty/*)
+ list(FILTER FORMAT_FILES EXCLUDE REGEX ${PROJECT_SOURCE_DIR}/include/minizinc/thirdparty/*)
+
+ separate_arguments(CLANG_FORMAT_FLAGS_LIST NATIVE_COMMAND ${CLANG_FORMAT_FLAGS})
+ add_custom_target(format
+ COMMAND ${CLANG_FORMAT_EXECUTABLE} ${CLANG_FORMAT_FLAGS_LIST} ${FORMAT_FILES}
+ COMMENT "Running ${CLANG_FORMAT_EXECUTABLE} on all source files"
+ )
+endif()
+
diff --git a/cmake/targets/libminizinc_cplex.cmake b/cmake/targets/libminizinc_cplex.cmake
new file mode 100644
index 0000000..e8051c5
--- /dev/null
+++ b/cmake/targets/libminizinc_cplex.cmake
@@ -0,0 +1,22 @@
+### MiniZinc CPLEX Solver Target
+
+if(CPLEX_FOUND)
+
+ ### Compile target for the CPlex interface
+ add_library(minizinc_cplex OBJECT
+ solvers/MIP/MIP_cplex_solverfactory.cpp
+ solvers/MIP/MIP_cplex_wrap.cpp
+
+ include/minizinc/solvers/MIP/MIP_cplex_solverfactory.hh
+ include/minizinc/solvers/MIP/MIP_cplex_wrap.hh
+ )
+ set_target_properties(minizinc_cplex PROPERTIES COMPILE_FLAGS ${CPLEX_COMPILE_FLAGS})
+ target_include_directories(minizinc_cplex PRIVATE ${CPLEX_INCLUDE_DIRS})
+ add_dependencies(minizinc_cplex minizinc_mip)
+
+ ### Setup correct compilation into the MiniZinc library
+ target_compile_definitions(mzn PRIVATE HAS_CPLEX)
+ target_sources(mzn PRIVATE $)
+ set_target_properties(mzn PROPERTIES COMPILE_FLAGS ${CPLEX_COMPILE_FLAGS})
+ target_link_libraries(mzn ${CPLEX_LIBRARIES})
+endif()
diff --git a/cmake/targets/libminizinc_fzn.cmake b/cmake/targets/libminizinc_fzn.cmake
new file mode 100644
index 0000000..795b2e2
--- /dev/null
+++ b/cmake/targets/libminizinc_fzn.cmake
@@ -0,0 +1,14 @@
+### MiniZinc FlatZinc Executable Solver Target
+
+add_library(minizinc_fzn OBJECT
+ solvers/fzn/fzn_solverfactory.cpp
+ solvers/fzn/fzn_solverinstance.cpp
+ solvers/mzn/mzn_solverfactory.cpp
+ solvers/mzn/mzn_solverinstance.cpp
+
+ include/minizinc/solvers/fzn_solverfactory.hh
+ include/minizinc/solvers/fzn_solverinstance.hh
+ include/minizinc/solvers/mzn_solverfactory.hh
+ include/minizinc/solvers/mzn_solverinstance.hh
+)
+add_dependencies(minizinc_fzn minizinc_parser)
diff --git a/cmake/targets/libminizinc_geas.cmake b/cmake/targets/libminizinc_geas.cmake
new file mode 100644
index 0000000..8b4c60a
--- /dev/null
+++ b/cmake/targets/libminizinc_geas.cmake
@@ -0,0 +1,23 @@
+### MiniZinc Geas Solver Target
+
+if(GEAS_FOUND)
+
+ ### Compile target for the Geas interface
+ add_library(minizinc_geas OBJECT
+ solvers/geas/geas_constraints.cpp
+ solvers/geas/geas_solverfactory.cpp
+ solvers/geas/geas_solverinstance.cpp
+
+ include/minizinc/solvers/geas/geas_constraints.hh
+ include/minizinc/solvers/geas_solverfactory.hh
+ include/minizinc/solvers/geas_solverinstance.hh
+ )
+ target_include_directories(minizinc_geas PRIVATE "${GEAS_INCLUDE_DIRS}")
+ add_dependencies(minizinc_geas minizinc_parser)
+
+ ### Setup correct compilation into the MiniZinc library
+ target_compile_definitions(mzn PRIVATE HAS_GEAS)
+ target_sources(mzn PRIVATE $)
+ target_link_libraries(mzn Geas)
+
+endif()
diff --git a/cmake/targets/libminizinc_gecode.cmake b/cmake/targets/libminizinc_gecode.cmake
new file mode 100644
index 0000000..22f25fb
--- /dev/null
+++ b/cmake/targets/libminizinc_gecode.cmake
@@ -0,0 +1,33 @@
+### MiniZinc Gecode Solver Target
+
+if(GECODE_FOUND)
+
+ ### Compile target for the Gecode interface
+ add_library(minizinc_gecode OBJECT
+ lib/passes/gecode_pass.cpp
+
+ solvers/gecode/aux_brancher.hh
+ solvers/gecode/fzn_space.cpp
+ solvers/gecode/gecode_constraints.cpp
+ solvers/gecode/gecode_solverfactory.cpp
+ solvers/gecode/gecode_solverinstance.cpp
+
+ include/minizinc/passes/gecode_pass.hh
+ include/minizinc/solvers/gecode/fzn_space.hh
+ include/minizinc/solvers/gecode/gecode_constraints.hh
+ include/minizinc/solvers/gecode_solverfactory.hh
+ include/minizinc/solvers/gecode_solverinstance.hh
+ )
+ target_include_directories(minizinc_gecode PRIVATE "${GECODE_INCLUDE_DIRS}")
+ add_dependencies(minizinc_gecode minizinc_parser)
+
+ ### Setup correct compilation into the MiniZinc library
+ target_compile_definitions(mzn PRIVATE HAS_GECODE)
+ target_sources(mzn PRIVATE $)
+
+ target_link_libraries(mzn Gecode::Driver Gecode::Float Gecode::Int Gecode::Kernel Gecode::Search Gecode::Set)
+ if(WIN32 AND GECODE_HAS_GIST)
+ target_link_libraries(mzn Gecode::Gist)
+ endif()
+
+endif()
diff --git a/cmake/targets/libminizinc_gurobi.cmake b/cmake/targets/libminizinc_gurobi.cmake
new file mode 100644
index 0000000..74da1c2
--- /dev/null
+++ b/cmake/targets/libminizinc_gurobi.cmake
@@ -0,0 +1,21 @@
+### MiniZinc Gurobi Solver Target
+
+if(GUROBI_FOUND)
+
+ ### Compile target for the Gurobi interface
+ add_library(minizinc_gurobi OBJECT
+ solvers/MIP/MIP_gurobi_solverfactory.cpp
+ solvers/MIP/MIP_gurobi_wrap.cpp
+
+ include/minizinc/solvers/MIP/MIP_gurobi_solverfactory.hh
+ include/minizinc/solvers/MIP/MIP_gurobi_wrap.hh
+ )
+ target_include_directories(minizinc_gurobi PRIVATE ${GUROBI_INCLUDE_DIRS})
+ add_dependencies(minizinc_gurobi minizinc_mip)
+
+ ### Setup correct compilation into the MiniZinc library
+ target_compile_definitions(mzn PRIVATE HAS_GUROBI)
+ target_sources(mzn PRIVATE $)
+ target_link_libraries(mzn ${GUROBI_LIBRARIES})
+
+endif()
diff --git a/cmake/targets/libminizinc_mip.cmake b/cmake/targets/libminizinc_mip.cmake
new file mode 100644
index 0000000..cb010bc
--- /dev/null
+++ b/cmake/targets/libminizinc_mip.cmake
@@ -0,0 +1,14 @@
+### Compile target for the base MIP interface
+
+add_library(minizinc_mip OBJECT
+ lib/algorithms/min_cut.cpp
+ lib/utils_savestream.cpp
+
+ solvers/MIP/MIP_solverinstance.cpp
+
+ include/minizinc/plugin.hh
+ include/minizinc/solvers/MIP/MIP_wrap.hh
+ include/minizinc/solvers/MIP/MIP_solverinstance.hh
+ include/minizinc/solvers/MIP/MIP_solverinstance.hpp
+)
+add_dependencies(minizinc_mip minizinc_parser)
diff --git a/cmake/targets/libminizinc_nl.cmake b/cmake/targets/libminizinc_nl.cmake
new file mode 100644
index 0000000..87f1eb5
--- /dev/null
+++ b/cmake/targets/libminizinc_nl.cmake
@@ -0,0 +1,16 @@
+### MiniZinc NonLinear Executable Solver Target
+
+add_library(minizinc_nl OBJECT
+ solvers/nl/nl_components.cpp
+ solvers/nl/nl_file.cpp
+ solvers/nl/nl_solreader.cpp
+ solvers/nl/nl_solverfactory.cpp
+ solvers/nl/nl_solverinstance.cpp
+
+ include/minizinc/solvers/nl/nl_components.hh
+ include/minizinc/solvers/nl/nl_file.hh
+ include/minizinc/solvers/nl/nl_solreader.hh
+ include/minizinc/solvers/nl/nl_solverfactory.hh
+ include/minizinc/solvers/nl/nl_solverinstance.hh
+)
+add_dependencies(minizinc_nl minizinc_parser)
diff --git a/cmake/targets/libminizinc_osicbc.cmake b/cmake/targets/libminizinc_osicbc.cmake
new file mode 100644
index 0000000..66091ce
--- /dev/null
+++ b/cmake/targets/libminizinc_osicbc.cmake
@@ -0,0 +1,25 @@
+### MiniZinc OsiCBC Solver Target
+
+if(OSICBC_FOUND)
+
+ ### Compile target for the OsiCBC interface
+ add_library(minizinc_osicbc OBJECT
+
+ solvers/MIP/MIP_osicbc_solverfactory.cpp
+ solvers/MIP/MIP_osicbc_wrap.cpp
+
+ include/minizinc/solvers/MIP/MIP_osicbc_solverfactory.hh
+ include/minizinc/solvers/MIP/MIP_osicbc_wrap.hh
+ )
+ target_include_directories(minizinc_osicbc PRIVATE ${OSICBC_INCLUDE_DIRS})
+ add_dependencies(minizinc_osicbc minizinc_mip)
+ if (UNIX AND NOT WIN32)
+ target_compile_definitions(minizinc_osicbc PRIVATE HAVE_CONFIG_H)
+ endif()
+
+ ### Setup correct compilation into the MiniZinc library
+ target_compile_definitions(mzn PRIVATE HAS_OSICBC)
+ target_sources(mzn PRIVATE $)
+ target_link_libraries(mzn ${OSICBC_TARGETS})
+
+endif()
diff --git a/cmake/targets/libminizinc_parser.cmake b/cmake/targets/libminizinc_parser.cmake
new file mode 100644
index 0000000..8f5663a
--- /dev/null
+++ b/cmake/targets/libminizinc_parser.cmake
@@ -0,0 +1,114 @@
+# -------------------------------------------------------------------------------------------------------------------
+## Parser Generation Targets
+
+# When updating the cached files, update MD5 sums defined in this file
+include(${PROJECT_SOURCE_DIR}/lib/cached/md5_cached.cmake)
+
+macro(MD5 filename md5sum)
+ file(READ "${filename}" RAW_MD5_FILE)
+ string(REGEX REPLACE "\r" "" STRIPPED_MD5_FILE "${RAW_MD5_FILE}")
+ string(MD5 ${md5sum} "${STRIPPED_MD5_FILE}")
+endmacro(MD5)
+
+find_package(BISON 3.4)
+find_package(FLEX 2.5)
+
+if(BISON_FOUND AND FLEX_FOUND)
+ BISON_TARGET(MZNParser
+ ${PROJECT_SOURCE_DIR}/lib/parser.yxx
+ ${PROJECT_BINARY_DIR}/parser.tab.cpp
+ DEFINES_FILE ${PROJECT_BINARY_DIR}/include/minizinc/parser.tab.hh
+ COMPILE_FLAGS "-p mzn_yy -l"
+ )
+
+ file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/include/minizinc/support/)
+ BISON_TARGET(RegExParser
+ ${PROJECT_SOURCE_DIR}/lib/support/regex/parser.yxx
+ ${PROJECT_BINARY_DIR}/regex_parser.tab.cpp
+ DEFINES_FILE ${PROJECT_BINARY_DIR}/include/minizinc/support/regex_parser.tab.hh
+ COMPILE_FLAGS "-p regex_yy -l"
+ )
+
+ FLEX_TARGET(MZNLexer
+ ${PROJECT_SOURCE_DIR}/lib/lexer.lxx
+ ${PROJECT_BINARY_DIR}/lexer.yy.cpp
+ COMPILE_FLAGS "-P mzn_yy -L"
+ )
+ ADD_FLEX_BISON_DEPENDENCY(MZNLexer MZNParser)
+
+ FLEX_TARGET(RegExLexer
+ ${PROJECT_SOURCE_DIR}/lib/support/regex/lexer.lxx
+ ${PROJECT_BINARY_DIR}/regex_lexer.yy.cpp
+ COMPILE_FLAGS "-P regex_yy -L"
+ )
+ ADD_FLEX_BISON_DEPENDENCY(RegExLexer RegExParser)
+else()
+ MD5(${PROJECT_SOURCE_DIR}/lib/parser.yxx parser_yxx_md5)
+ if(NOT "${parser_yxx_md5}" STREQUAL "${parser_yxx_md5_cached}")
+ message(FATAL_ERROR
+ "The file parser.yxx has been modified but bison cannot be run.\n"
+ "If you are sure parser.tab.cpp and minizinc/parser.tab.hh in ${PROJECT_SOURCE_DIR}/lib/cached/ are correct "
+ "then copy parser.yxx's md5 ${parser_yxx_md5} into ${PROJECT_SOURCE_DIR}/lib/cached/md5_cached.cmake"
+ )
+ endif()
+
+ MD5(${PROJECT_SOURCE_DIR}/lib/support/regex/parser.yxx regex_parser_yxx_md5)
+ if(NOT "${regex_parser_yxx_md5}" STREQUAL "${regex_parser_yxx_md5_cached}")
+ message(FATAL_ERROR
+ "The file regex/parser.yxx has been modified but bison cannot be run.\n"
+ "If you are sure regex_parser.tab.cpp and minizinc/support/regex_parser.tab.hh in "
+ "${PROJECT_SOURCE_DIR}/lib/cached/ are correct then copy regex_parser.yxx's md5 ${regex_parser_yxx_md5} into "
+ "${PROJECT_SOURCE_DIR}/lib/cached/md5_cached.cmake"
+ )
+ endif()
+
+ MD5(${PROJECT_SOURCE_DIR}/lib/lexer.lxx lexer_lxx_md5)
+ if(NOT "${lexer_lxx_md5}" STREQUAL "${lexer_lxx_md5_cached}")
+ message(FATAL_ERROR
+ "The file lexer.lxx has been modified but flex cannot be run.\n"
+ "If you are sure ${PROJECT_SOURCE_DIR}/lib/cached/lexer.yy.cpp is correct then "
+ "copy lexer.lxx's md5 ${lexer_lxx_md5} into ${PROJECT_SOURCE_DIR}/lib/cached/md5_cached.cmake"
+ )
+ endif()
+
+ MD5(${PROJECT_SOURCE_DIR}/lib/support/regex/lexer.lxx regex_lexer_lxx_md5)
+ if(NOT "${regex_lexer_lxx_md5}" STREQUAL "${regex_lexer_lxx_md5_cached}")
+ message(FATAL_ERROR
+ "The file regex/lexer.lxx has been modified but flex cannot be run.\n"
+ "If you are sure ${PROJECT_SOURCE_DIR}/lib/cached/regex_lexer.yy.cpp is correct then "
+ "copy regex/lexer.lxx's md5 ${regex_lexer_lxx_md5} into ${PROJECT_SOURCE_DIR}/lib/cached/md5_cached.cmake"
+ )
+ endif()
+
+ include_directories(${PROJECT_SOURCE_DIR}/lib/cached)
+ set(BISON_MZNParser_OUTPUTS
+ ${PROJECT_SOURCE_DIR}/lib/cached/parser.tab.cpp
+ ${PROJECT_SOURCE_DIR}/lib/cached/minizinc/parser.tab.hh
+ )
+ set(BISON_RegExParser_OUTPUTS
+ ${PROJECT_SOURCE_DIR}/lib/cached/regex_parser.tab.cpp
+ ${PROJECT_SOURCE_DIR}/lib/cached/minizinc/support/regex_parser.tab.hh
+ )
+ set(FLEX_MZNLexer_OUTPUTS ${PROJECT_SOURCE_DIR}/lib/cached/lexer.yy.cpp)
+ set(FLEX_RegExLexer_OUTPUTS ${PROJECT_SOURCE_DIR}/lib/cached/regex_lexer.yy.cpp)
+endif()
+
+if(NOT GECODE_FOUND)
+ set(FLEX_RegExLexer_OUTPUTS "")
+ set(BISON_RegExParser_OUTPUTS "")
+endif()
+
+add_library(minizinc_parser OBJECT
+ ${BISON_MZNParser_OUTPUTS}
+ ${FLEX_MZNLexer_OUTPUTS}
+ ${BISON_RegExParser_OUTPUTS}
+ ${FLEX_RegExLexer_OUTPUTS}
+)
+set_target_properties(minizinc_parser PROPERTIES
+ CXX_CLANG_TIDY ""
+)
+
+if(GECODE_FOUND)
+ target_include_directories(minizinc_parser PRIVATE "${GECODE_INCLUDE_DIRS}")
+ target_compile_definitions(minizinc_parser PRIVATE HAS_GECODE)
+endif()
diff --git a/cmake/targets/libminizinc_scip.cmake b/cmake/targets/libminizinc_scip.cmake
new file mode 100644
index 0000000..8b30c82
--- /dev/null
+++ b/cmake/targets/libminizinc_scip.cmake
@@ -0,0 +1,20 @@
+### MiniZinc SCIP Solver Target
+
+if(SCIP_FOUND)
+
+ ### Compile target for the SCIP interface
+ add_library(minizinc_scip OBJECT
+ solvers/MIP/MIP_scip_solverfactory.cpp
+ solvers/MIP/MIP_scip_wrap.cpp
+
+ include/minizinc/solvers/MIP/MIP_scip_solverfactory.hh
+ include/minizinc/solvers/MIP/MIP_scip_wrap.hh
+ )
+ target_include_directories(minizinc_scip PRIVATE ${SCIP_INCLUDE_DIRS})
+ add_dependencies(minizinc_scip minizinc_mip)
+
+ ### Setup correct compilation into the MiniZinc library
+ target_compile_definitions(mzn PRIVATE HAS_SCIP)
+ target_sources(mzn PRIVATE $)
+
+endif()
diff --git a/cmake/targets/libminizinc_xpress.cmake b/cmake/targets/libminizinc_xpress.cmake
new file mode 100644
index 0000000..4be2da0
--- /dev/null
+++ b/cmake/targets/libminizinc_xpress.cmake
@@ -0,0 +1,21 @@
+### MiniZinc FICO Xpress Solver Target
+
+if(XPRESS_FOUND)
+
+ ### Compile target for the Xpress interface
+ add_library(minizinc_xpress OBJECT
+ solvers/MIP/MIP_xpress_solverfactory.cpp
+ solvers/MIP/MIP_xpress_wrap.cpp
+
+ include/minizinc/solvers/MIP/MIP_xpress_solverfactory.hh
+ include/minizinc/solvers/MIP/MIP_xpress_wrap.hh
+ )
+
+ target_include_directories(minizinc_xpress PRIVATE ${XPRESS_INCLUDE_DIRS})
+ add_dependencies(minizinc_xpress minizinc_mip)
+
+ ### Setup correct compilation into the MiniZinc library
+ target_compile_definitions(mzn PRIVATE HAS_XPRESS)
+ target_sources(mzn PRIVATE $)
+
+endif()
diff --git a/cmake/targets/libmzn.cmake b/cmake/targets/libmzn.cmake
new file mode 100644
index 0000000..b900956
--- /dev/null
+++ b/cmake/targets/libmzn.cmake
@@ -0,0 +1,158 @@
+### MiniZinc Library Target
+# Combined definition of the MiniZinc core and all solvers compiled
+
+include(cmake/targets/libminizinc_parser.cmake)
+include(cmake/targets/libminizinc_fzn.cmake)
+include(cmake/targets/libminizinc_nl.cmake)
+include(cmake/targets/libminizinc_mip.cmake)
+
+add_library(mzn
+ lib/MIPdomains.cpp
+ lib/ast.cpp
+ lib/astexception.cpp
+ lib/astmap.cpp
+ lib/aststring.cpp
+ lib/astvec.cpp
+ lib/builtins.cpp
+ lib/cdecode.c
+ lib/cencode.c
+ lib/chain_compressor.cpp
+ lib/copy.cpp
+ lib/eval_par.cpp
+ lib/file_utils.cpp
+ lib/flatten.cpp
+ lib/flatten/flat_exp.cpp
+ lib/flatten/flatten_anon.cpp
+ lib/flatten/flatten_arrayaccess.cpp
+ lib/flatten/flatten_arraylit.cpp
+ lib/flatten/flatten_binop.cpp
+ lib/flatten/flatten_call.cpp
+ lib/flatten/flatten_comp.cpp
+ lib/flatten/flatten_id.cpp
+ lib/flatten/flatten_ite.cpp
+ lib/flatten/flatten_let.cpp
+ lib/flatten/flatten_par.cpp
+ lib/flatten/flatten_setlit.cpp
+ lib/flatten/flatten_unop.cpp
+ lib/flatten/flatten_vardecl.cpp
+ lib/flattener.cpp
+ lib/gc.cpp
+ lib/htmlprinter.cpp
+ lib/json_parser.cpp
+ lib/lexer.lxx
+ lib/thirdparty/miniz.c
+ lib/model.cpp
+ lib/optimize.cpp
+ lib/optimize_constraints.cpp
+ lib/output.cpp
+ lib/param_config.cpp
+ lib/parser.cpp
+ lib/parser.yxx
+ lib/passes/compile_pass.cpp
+ lib/pathfileprinter.cpp
+ lib/prettyprinter.cpp
+ lib/solns2out.cpp
+ lib/solver.cpp
+ lib/solver_config.cpp
+ lib/solver_instance_base.cpp
+ lib/statistics.cpp
+ lib/type.cpp
+ lib/typecheck.cpp
+ lib/values.cpp
+ lib/support/regex/parser.yxx
+ lib/support/regex/lexer.lxx
+
+ include/minizinc/ast.hh
+ include/minizinc/ast.hpp
+ include/minizinc/astexception.hh
+ include/minizinc/astiterator.hh
+ include/minizinc/astmap.hh
+ include/minizinc/aststring.hh
+ include/minizinc/astvec.hh
+ include/minizinc/builtins.hh
+ include/minizinc/chain_compressor.hh
+ include/minizinc/config.hh.in
+ include/minizinc/copy.hh
+ include/minizinc/eval_par.hh
+ include/minizinc/exception.hh
+ include/minizinc/file_utils.hh
+ include/minizinc/flat_exp.hh
+ include/minizinc/flatten.hh
+ include/minizinc/flatten_internal.hh
+ include/minizinc/flattener.hh
+ include/minizinc/gc.hh
+ include/minizinc/hash.hh
+ include/minizinc/htmlprinter.hh
+ include/minizinc/interrupt.hh
+ include/minizinc/iter.hh
+ include/minizinc/json_parser.hh
+ include/minizinc/model.hh
+ include/minizinc/optimize.hh
+ include/minizinc/optimize_constraints.hh
+ include/minizinc/output.hh
+ include/minizinc/param_config.hh
+ include/minizinc/parser.hh
+ include/minizinc/passes/compile_pass.hh
+ include/minizinc/pathfileprinter.hh
+ include/minizinc/prettyprinter.hh
+ include/minizinc/process.hh
+ include/minizinc/solns2out.hh
+ include/minizinc/solver.hh
+ include/minizinc/solver_config.hh
+ include/minizinc/solver_instance.hh
+ include/minizinc/solver_instance_base.hh
+ include/minizinc/statistics.hh
+ include/minizinc/support/regex.hh
+ include/minizinc/_thirdparty/b64/cdecode.h
+ include/minizinc/_thirdparty/b64/cencode.h
+ include/minizinc/_thirdparty/b64/decode.h
+ include/minizinc/_thirdparty/b64/encode.h
+ include/minizinc/_thirdparty/miniz.h
+ include/minizinc/timer.hh
+ include/minizinc/type.hh
+ include/minizinc/typecheck.hh
+ include/minizinc/utils.hh
+ include/minizinc/values.hh
+
+ $
+ $
+ $
+ $
+)
+target_link_libraries(mzn ${CMAKE_THREAD_LIBS_INIT})
+
+### Add Solver Interfaces to the MiniZinc library when available
+include(cmake/targets/libminizinc_cplex.cmake)
+include(cmake/targets/libminizinc_geas.cmake)
+include(cmake/targets/libminizinc_gecode.cmake)
+include(cmake/targets/libminizinc_gurobi.cmake)
+include(cmake/targets/libminizinc_osicbc.cmake)
+include(cmake/targets/libminizinc_scip.cmake)
+include(cmake/targets/libminizinc_xpress.cmake)
+
+if(GECODE_FOUND)
+ target_link_libraries(mzn Gecode::Minimodel Gecode::Support)
+endif()
+
+
+### Add all necessary files to the install target
+install(
+ TARGETS mzn
+ EXPORT libminizincTargets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+)
+install(
+ DIRECTORY share/minizinc
+ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}
+)
+install(
+ DIRECTORY include/minizinc
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+ PATTERN config.hh.in EXCLUDE
+)
+install(
+ DIRECTORY lib/cached/minizinc
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+)
diff --git a/cmake/targets/minizinc.cmake b/cmake/targets/minizinc.cmake
new file mode 100644
index 0000000..a2a4668
--- /dev/null
+++ b/cmake/targets/minizinc.cmake
@@ -0,0 +1,12 @@
+#### MiniZinc Executable Target
+
+add_executable(minizinc minizinc.cpp)
+target_link_libraries(minizinc mzn)
+
+install(
+ TARGETS minizinc
+ EXPORT libminizincTargets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+)
diff --git a/cmake/targets/mzn2doc.cmake b/cmake/targets/mzn2doc.cmake
new file mode 100644
index 0000000..9648900
--- /dev/null
+++ b/cmake/targets/mzn2doc.cmake
@@ -0,0 +1,11 @@
+#### Binary target for MiniZinc documentation generator
+add_executable(mzn2doc mzn2doc.cpp)
+target_link_libraries(mzn2doc mzn)
+
+install(
+ TARGETS mzn2doc
+ EXPORT libminizincTargets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+)
diff --git a/cmake/templates/launch-c.in b/cmake/templates/launch-c.in
new file mode 100644
index 0000000..3d476af
--- /dev/null
+++ b/cmake/templates/launch-c.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+export CCACHE_CPP2=true
+exec "${RULE_LAUNCH_COMPILE}" "${CMAKE_C_COMPILER}" "$@"
\ No newline at end of file
diff --git a/cmake/templates/launch-cxx.in b/cmake/templates/launch-cxx.in
new file mode 100644
index 0000000..039edb0
--- /dev/null
+++ b/cmake/templates/launch-cxx.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+export CCACHE_CPP2=true
+exec "${RULE_LAUNCH_COMPILE}" "${CMAKE_CXX_COMPILER}" "$@"
\ No newline at end of file
diff --git a/cmake/templates/libminizincConfig.cmake.in b/cmake/templates/libminizincConfig.cmake.in
new file mode 100644
index 0000000..730a4d7
--- /dev/null
+++ b/cmake/templates/libminizincConfig.cmake.in
@@ -0,0 +1,18 @@
+# - Config file for the libminizinc package
+# It defines the following variables
+# libminizinc_INCLUDE_DIRS - include directories for libminizinc
+# libminizinc_LIBRARIES - libraries to link against
+# libminizinc_EXECUTABLE - the bar executable
+
+# Compute paths
+get_filename_component(libminizinc_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
+set(libminizinc_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
+
+# Our library dependencies
+list(APPEND CMAKE_MODULE_PATH ${libminizinc_CMAKE_DIR})
+include(CMakeFindDependencyMacro)
+@CONF_DEPENDENCIES@
+
+# Our library targets (contains definitions for IMPORTED targets)
+include("${libminizinc_CMAKE_DIR}/libminizincTargets.cmake")
+
diff --git a/cmake/templates/libminizincConfigVersion.cmake.in b/cmake/templates/libminizincConfigVersion.cmake.in
new file mode 100644
index 0000000..00ae7c9
--- /dev/null
+++ b/cmake/templates/libminizincConfigVersion.cmake.in
@@ -0,0 +1,12 @@
+set(PACKAGE_VERSION "@libminizinc_VERSION@")
+
+# Check whether the requested PACKAGE_FIND_VERSION is compatible
+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
+else()
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
+ set(PACKAGE_VERSION_EXACT TRUE)
+ endif()
+endif()
+
diff --git a/docs/LICENSE.txt b/docs/LICENSE.txt
new file mode 100644
index 0000000..c2df958
--- /dev/null
+++ b/docs/LICENSE.txt
@@ -0,0 +1,390 @@
+Attribution-NoDerivatives 4.0 International
+
+=======================================================================
+
+Creative Commons Corporation ("Creative Commons") is not a law firm and
+does not provide legal services or legal advice. Distribution of
+Creative Commons public licenses does not create a lawyer-client or
+other relationship. Creative Commons makes its licenses and related
+information available on an "as-is" basis. Creative Commons gives no
+warranties regarding its licenses, any material licensed under their
+terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the
+fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and
+conditions that creators and other rights holders may use to share
+original works of authorship and other material subject to copyright
+and certain other rights specified in the public license below. The
+following considerations are for informational purposes only, are not
+exhaustive, and do not form part of our licenses.
+
+ Considerations for licensors: Our public licenses are
+ intended for use by those authorized to give the public
+ permission to use material in ways otherwise restricted by
+ copyright and certain other rights. Our licenses are
+ irrevocable. Licensors should read and understand the terms
+ and conditions of the license they choose before applying it.
+ Licensors should also secure all rights necessary before
+ applying our licenses so that the public can reuse the
+ material as expected. Licensors should clearly mark any
+ material not subject to the license. This includes other CC-
+ licensed material, or material used under an exception or
+ limitation to copyright. More considerations for licensors:
+ wiki.creativecommons.org/Considerations_for_licensors
+
+ Considerations for the public: By using one of our public
+ licenses, a licensor grants the public permission to use the
+ licensed material under specified terms and conditions. If
+ the licensor's permission is not necessary for any reason--for
+ example, because of any applicable exception or limitation to
+ copyright--then that use is not regulated by the license. Our
+ licenses grant only permissions under copyright and certain
+ other rights that a licensor has authority to grant. Use of
+ the licensed material may still be restricted for other
+ reasons, including because others have copyright or other
+ rights in the material. A licensor may make special requests,
+ such as asking that all changes be marked or described.
+ Although not required by our licenses, you are encouraged to
+ respect those requests where reasonable. More considerations
+ for the public:
+ wiki.creativecommons.org/Considerations_for_licensees
+
+
+=======================================================================
+
+Creative Commons Attribution-NoDerivatives 4.0 International Public
+License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution-NoDerivatives 4.0 International Public License ("Public
+License"). To the extent this Public License may be interpreted as a
+contract, You are granted the Licensed Rights in consideration of Your
+acceptance of these terms and conditions, and the Licensor grants You
+such rights in consideration of benefits the Licensor receives from
+making the Licensed Material available under these terms and
+conditions.
+
+
+Section 1 -- Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar
+ Rights that is derived from or based upon the Licensed Material
+ and in which the Licensed Material is translated, altered,
+ arranged, transformed, or otherwise modified in a manner requiring
+ permission under the Copyright and Similar Rights held by the
+ Licensor. For purposes of this Public License, where the Licensed
+ Material is a musical work, performance, or sound recording,
+ Adapted Material is always produced where the Licensed Material is
+ synched in timed relation with a moving image.
+
+ b. Copyright and Similar Rights means copyright and/or similar rights
+ closely related to copyright including, without limitation,
+ performance, broadcast, sound recording, and Sui Generis Database
+ Rights, without regard to how the rights are labeled or
+ categorized. For purposes of this Public License, the rights
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
+ Rights.
+
+ c. Effective Technological Measures means those measures that, in the
+ absence of proper authority, may not be circumvented under laws
+ fulfilling obligations under Article 11 of the WIPO Copyright
+ Treaty adopted on December 20, 1996, and/or similar international
+ agreements.
+
+ d. Exceptions and Limitations means fair use, fair dealing, and/or
+ any other exception or limitation to Copyright and Similar Rights
+ that applies to Your use of the Licensed Material.
+
+ e. Licensed Material means the artistic or literary work, database,
+ or other material to which the Licensor applied this Public
+ License.
+
+ f. Licensed Rights means the rights granted to You subject to the
+ terms and conditions of this Public License, which are limited to
+ all Copyright and Similar Rights that apply to Your use of the
+ Licensed Material and that the Licensor has authority to license.
+
+ g. Licensor means the individual(s) or entity(ies) granting rights
+ under this Public License.
+
+ h. Share means to provide material to the public by any means or
+ process that requires permission under the Licensed Rights, such
+ as reproduction, public display, public performance, distribution,
+ dissemination, communication, or importation, and to make material
+ available to the public including in ways that members of the
+ public may access the material from a place and at a time
+ individually chosen by them.
+
+ i. Sui Generis Database Rights means rights other than copyright
+ resulting from Directive 96/9/EC of the European Parliament and of
+ the Council of 11 March 1996 on the legal protection of databases,
+ as amended and/or succeeded, as well as other essentially
+ equivalent rights anywhere in the world.
+
+ j. You means the individual or entity exercising the Licensed Rights
+ under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License,
+ the Licensor hereby grants You a worldwide, royalty-free,
+ non-sublicensable, non-exclusive, irrevocable license to
+ exercise the Licensed Rights in the Licensed Material to:
+
+ a. reproduce and Share the Licensed Material, in whole or
+ in part; and
+
+ b. produce and reproduce, but not Share, Adapted Material.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
+ Exceptions and Limitations apply to Your use, this Public
+ License does not apply, and You do not need to comply with
+ its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section
+ 6(a).
+
+ 4. Media and formats; technical modifications allowed. The
+ Licensor authorizes You to exercise the Licensed Rights in
+ all media and formats whether now known or hereafter created,
+ and to make technical modifications necessary to do so. The
+ Licensor waives and/or agrees not to assert any right or
+ authority to forbid You from making technical modifications
+ necessary to exercise the Licensed Rights, including
+ technical modifications necessary to circumvent Effective
+ Technological Measures. For purposes of this Public License,
+ simply making modifications authorized by this Section 2(a)
+ (4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ a. Offer from the Licensor -- Licensed Material. Every
+ recipient of the Licensed Material automatically
+ receives an offer from the Licensor to exercise the
+ Licensed Rights under the terms and conditions of this
+ Public License.
+
+ b. No downstream restrictions. You may not offer or impose
+ any additional or different terms or conditions on, or
+ apply any Effective Technological Measures to, the
+ Licensed Material if doing so restricts exercise of the
+ Licensed Rights by any recipient of the Licensed
+ Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or
+ may be construed as permission to assert or imply that You
+ are, or that Your use of the Licensed Material is, connected
+ with, or sponsored, endorsed, or granted official status by,
+ the Licensor or others designated to receive attribution as
+ provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not
+ licensed under this Public License, nor are publicity,
+ privacy, and/or other similar personality rights; however, to
+ the extent possible, the Licensor waives and/or agrees not to
+ assert any such rights held by the Licensor to the limited
+ extent necessary to allow You to exercise the Licensed
+ Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this
+ Public License.
+
+ 3. To the extent possible, the Licensor waives any right to
+ collect royalties from You for the exercise of the Licensed
+ Rights, whether directly or through a collecting society
+ under any voluntary or waivable statutory or compulsory
+ licensing scheme. In all other cases the Licensor expressly
+ reserves any right to collect such royalties.
+
+
+Section 3 -- License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material, You must:
+
+ a. retain the following if it is supplied by the Licensor
+ with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed
+ Material and any others designated to receive
+ attribution, in any reasonable manner requested by
+ the Licensor (including by pseudonym if
+ designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of
+ warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the
+ extent reasonably practicable;
+
+ b. indicate if You modified the Licensed Material and
+ retain an indication of any previous modifications; and
+
+ c. indicate the Licensed Material is licensed under this
+ Public License, and include the text of, or the URI or
+ hyperlink to, this Public License.
+
+ For the avoidance of doubt, You do not have permission under
+ this Public License to Share Adapted Material.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
+ reasonable manner based on the medium, means, and context in
+ which You Share the Licensed Material. For example, it may be
+ reasonable to satisfy the conditions by providing a URI or
+ hyperlink to a resource that includes the required
+ information.
+
+ 3. If requested by the Licensor, You must remove any of the
+ information required by Section 3(a)(1)(A) to the extent
+ reasonably practicable.
+
+
+Section 4 -- Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+ to extract, reuse, reproduce, and Share all or a substantial
+ portion of the contents of the database, provided You do not Share
+ Adapted Material;
+ b. if You include all or a substantial portion of the database
+ contents in a database in which You have Sui Generis Database
+ Rights, then the database in which You have Sui Generis Database
+ Rights (but not its individual contents) is Adapted Material; and
+ c. You must comply with the conditions in Section 3(a) if You Share
+ all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
+
+
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+ c. The disclaimer of warranties and limitation of liability provided
+ above shall be interpreted in a manner that, to the extent
+ possible, most closely approximates an absolute disclaimer and
+ waiver of all liability.
+
+
+Section 6 -- Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and
+ Similar Rights licensed here. However, if You fail to comply with
+ this Public License, then Your rights under this Public License
+ terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under
+ Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided
+ it is cured within 30 days of Your discovery of the
+ violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ For the avoidance of doubt, this Section 6(b) does not affect any
+ right the Licensor may have to seek remedies for Your violations
+ of this Public License.
+
+ c. For the avoidance of doubt, the Licensor may also offer the
+ Licensed Material under separate terms or conditions or stop
+ distributing the Licensed Material at any time; however, doing so
+ will not terminate this Public License.
+
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+ License.
+
+
+Section 7 -- Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different
+ terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the
+ Licensed Material not stated herein are separate from and
+ independent of the terms and conditions of this Public License.
+
+
+Section 8 -- Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and
+ shall not be interpreted to, reduce, limit, restrict, or impose
+ conditions on any use of the Licensed Material that could lawfully
+ be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is
+ deemed unenforceable, it shall be automatically reformed to the
+ minimum extent necessary to make it enforceable. If the provision
+ cannot be reformed, it shall be severed from this Public License
+ without affecting the enforceability of the remaining terms and
+ conditions.
+
+ c. No term or condition of this Public License will be waived and no
+ failure to comply consented to unless expressly agreed to by the
+ Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted
+ as a limitation upon, or waiver of, any privileges and immunities
+ that apply to the Licensor or You, including from the legal
+ processes of any jurisdiction or authority.
+
+=======================================================================
+
+Creative Commons is not a party to its public
+licenses. Notwithstanding, Creative Commons may elect to apply one of
+its public licenses to material it publishes and in those instances
+will be considered the “Licensor.†The text of the Creative Commons
+public licenses is dedicated to the public domain under the CC0 Public
+Domain Dedication. Except for the limited purpose of indicating that
+material is shared under a Creative Commons public license or as
+otherwise permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the
+public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..ab14259
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,27 @@
+# README #
+
+This directory contains the MiniZinc documentation.
+
+### Building the docs ###
+
+You need the following tools to build the documentation:
+
+* Python 3
+* GNU make
+* Sphinx version 1.8.0. Install it using the command
+ `pip install git+https://github.com/sphinx-doc/sphinx`
+* Sphinx Read The Docs html theme. Install it using the command
+ `pip install sphinx_rtd_theme`
+* If you want to build the PDF documentation, you also need a LaTeX
+ distribution that includes xetex, and install the following fonts: Charter,
+ Lato and Inconsolata.
+
+To build the HTML documentation, simply run `make html`. To build the PDF, run `make latexpdf`.
+
+### Including the MiniZinc library reference documentation ###
+
+The reference documentation for the MiniZinc library can be generated
+automatically from the source code. Then run the following command:
+
+``mzn2doc --rst-output --include-stdlib --output-base en ../share/minizinc/std/globals.mzn``
+
diff --git a/docs/chi/Makefile b/docs/chi/Makefile
new file mode 100644
index 0000000..a156347
--- /dev/null
+++ b/docs/chi/Makefile
@@ -0,0 +1,225 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+PAPER =
+BUILDDIR = _build
+
+# Internal variables.
+PAPEROPT_a4 = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help
+help:
+ @echo "Please use \`make ' where is one of"
+ @echo " html to make standalone HTML files"
+ @echo " dirhtml to make HTML files named index.html in directories"
+ @echo " singlehtml to make a single large HTML file"
+ @echo " pickle to make pickle files"
+ @echo " json to make JSON files"
+ @echo " htmlhelp to make HTML files and a HTML help project"
+ @echo " qthelp to make HTML files and a qthelp project"
+ @echo " applehelp to make an Apple Help Book"
+ @echo " devhelp to make HTML files and a Devhelp project"
+ @echo " epub to make an epub"
+ @echo " epub3 to make an epub3"
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+ @echo " latexpdf to make LaTeX files and run them through pdflatex"
+ @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
+ @echo " text to make text files"
+ @echo " man to make manual pages"
+ @echo " texinfo to make Texinfo files"
+ @echo " info to make Texinfo files and run them through makeinfo"
+ @echo " gettext to make PO message catalogs"
+ @echo " changes to make an overview of all changed/added/deprecated items"
+ @echo " xml to make Docutils-native XML files"
+ @echo " pseudoxml to make pseudoxml-XML files for display purposes"
+ @echo " linkcheck to check all external links for integrity"
+ @echo " doctest to run all doctests embedded in the documentation (if enabled)"
+ @echo " coverage to run coverage check of the documentation (if enabled)"
+ @echo " dummy to check syntax errors of document sources"
+
+.PHONY: clean
+clean:
+ rm -rf $(BUILDDIR)/*
+
+.PHONY: html
+html:
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+.PHONY: dirhtml
+dirhtml:
+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+.PHONY: singlehtml
+singlehtml:
+ $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
+ @echo
+ @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
+
+.PHONY: pickle
+pickle:
+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+ @echo
+ @echo "Build finished; now you can process the pickle files."
+
+.PHONY: json
+json:
+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+ @echo
+ @echo "Build finished; now you can process the JSON files."
+
+.PHONY: htmlhelp
+htmlhelp:
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+ @echo
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
+ ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+.PHONY: qthelp
+qthelp:
+ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+ @echo
+ @echo "Build finished; now you can run "qcollectiongenerator" with the" \
+ ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/MiniZinc.qhcp"
+ @echo "To view the help file:"
+ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/MiniZinc.qhc"
+
+.PHONY: applehelp
+applehelp:
+ $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
+ @echo
+ @echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
+ @echo "N.B. You won't be able to view it unless you put it in" \
+ "~/Library/Documentation/Help or install it in your application" \
+ "bundle."
+
+.PHONY: devhelp
+devhelp:
+ $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
+ @echo
+ @echo "Build finished."
+ @echo "To view the help file:"
+ @echo "# mkdir -p $$HOME/.local/share/devhelp/MiniZinc"
+ @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/MiniZinc"
+ @echo "# devhelp"
+
+.PHONY: epub
+epub:
+ $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
+ @echo
+ @echo "Build finished. The epub file is in $(BUILDDIR)/epub."
+
+.PHONY: epub3
+epub3:
+ $(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3
+ @echo
+ @echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3."
+
+.PHONY: latex
+latex:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo
+ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+ @echo "Run \`make' in that directory to run these through (pdf)latex" \
+ "(use \`make latexpdf' here to do that automatically)."
+
+.PHONY: latexpdf
+latexpdf:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo "Running LaTeX files through pdflatex..."
+ $(MAKE) -C $(BUILDDIR)/latex all-pdf
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+.PHONY: latexpdfja
+latexpdfja:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo "Running LaTeX files through platex and dvipdfmx..."
+ $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
+ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
+
+.PHONY: text
+text:
+ $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
+ @echo
+ @echo "Build finished. The text files are in $(BUILDDIR)/text."
+
+.PHONY: man
+man:
+ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
+ @echo
+ @echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+
+.PHONY: texinfo
+texinfo:
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+ @echo
+ @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+ @echo "Run \`make' in that directory to run these through makeinfo" \
+ "(use \`make info' here to do that automatically)."
+
+.PHONY: info
+info:
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+ @echo "Running Texinfo files through makeinfo..."
+ make -C $(BUILDDIR)/texinfo info
+ @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+.PHONY: gettext
+gettext:
+ $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+ @echo
+ @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
+.PHONY: changes
+changes:
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+ @echo
+ @echo "The overview file is in $(BUILDDIR)/changes."
+
+.PHONY: linkcheck
+linkcheck:
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+ @echo
+ @echo "Link check complete; look for any errors in the above output " \
+ "or in $(BUILDDIR)/linkcheck/output.txt."
+
+.PHONY: doctest
+doctest:
+ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+ @echo "Testing of doctests in the sources finished, look at the " \
+ "results in $(BUILDDIR)/doctest/output.txt."
+
+.PHONY: coverage
+coverage:
+ $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
+ @echo "Testing of coverage in the sources finished, look at the " \
+ "results in $(BUILDDIR)/coverage/python.txt."
+
+.PHONY: xml
+xml:
+ $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
+ @echo
+ @echo "Build finished. The XML files are in $(BUILDDIR)/xml."
+
+.PHONY: pseudoxml
+pseudoxml:
+ $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
+ @echo
+ @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
+
+.PHONY: dummy
+dummy:
+ $(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy
+ @echo
+ @echo "Build finished. Dummy builder generates no files."
diff --git a/docs/chi/_static/favicon/android-icon-144x144.png b/docs/chi/_static/favicon/android-icon-144x144.png
new file mode 100644
index 0000000000000000000000000000000000000000..44919b6dae9d9631f0a290822857b094e7ae2674
GIT binary patch
literal 8887
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
literal 0
HcmV?d00001
diff --git a/docs/chi/_static/favicon/android-icon-192x192.png b/docs/chi/_static/favicon/android-icon-192x192.png
new file mode 100644
index 0000000000000000000000000000000000000000..11324a4e748ddb94ae0441ea8ef665110b91541d
GIT binary patch
literal 11650
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
R@N6}V?0Y4tGD!pf{|5ooE(QPq
literal 0
HcmV?d00001
diff --git a/docs/chi/_static/favicon/android-icon-36x36.png b/docs/chi/_static/favicon/android-icon-36x36.png
new file mode 100644
index 0000000000000000000000000000000000000000..b4b0c7339fbe0603f1eafba7c081d700455eaa2f
GIT binary patch
literal 2393
zcmZ{l2{hE}8^?c@G+D|{$P&s}XDl;gxMYkh4Ka2l#>`+aGmMEFg%~k^NyFIFLa1!v
zpKb|RBB~inSz@BaMToSQ;r`t7Kj+{7p7THN`~05szR&0RKJRBCL3G5s06_eH
z07zy5zz=XMc@6+hzyRP~5CEV-0mZ0`_uQ?(fN1bx2Q09$Ij*!;<$^mqqa6KW06<)J
z)3yM`7nMNji4)e=)3@tkVIa=p`mqv3$%|{0Vnm(bT3^WNcd2Z|yq#cwCEWVat$Q0dKWy4rc(~solK)1B
z#1o0GC%;wg)*9}xC0rLI=9VPH@R!$kUlWtsr!3l!HLRxgCi}9z({GRL;D#86$qvXt
z?3|^78~)ttn5t$QBdTd5A{@YGFu12NP=R~+&ZZZJ4cc>0SoZM>W6seB%=$?NJ*PZw
zk7QK!InQ6H$Xg(Bek%Dt7o)5_!`@KWt!Q5kq!ik0#O^H7caivxRp*rFK04WZOvsYz
zejVL5`d!~Bu%~2M-
zYG!?Ye_kfG{TD!Go?Be(UWy$a96ZCHEpPZx5=JgxGP}^1
zuP9n;E-x?dn{Tg|7uSWvLlEFcDqvQ7*f!DJU?8q3(npd>
z@3Pg)>ufaO;;)#SdPCpW*$`_e{XV)yIL7MRbcx-&wPrqQ-Mn4d*qC!?Y8|eYo!;Dx
z;9dIdaA2VNhu^ItLX~<v{8m
zbWz;a&TgBeq~!KA%baIx^W_k&ufzO)&8(542;L}!BgEI5S5#C)PBhnEc{uCy!-jv7
zg&TgbJaw+uBVViO5Tvg);VUE!1JQJIe)aXIUwfiZ_2H#mS=0#}?wqMtock&ctII+}9IJ*Qno^jR>5gqF9U2|eQV!YctmoA}v-PcGsHE>?
zV|KThf5b5(#rn1%%9WJYQNE~B*PK4>N{R^r(ZiNqmWGHl9$1UCc80rj(+czF0&dy>t>9Xj8;
zRw`wEy&8wZ8DzO>NNK3<(qcV;Ni@?p6kMxJE#EWlj@_v*&B@8B(Q7)|*+6WcUU{Xy
z%CmH!gok6GX;LY_Te>T{zDGXq!c
zJiWZO6z#iy<3=eGch`5tKwRYB9+j4Ku8gKg!k5LXAj#)7*3@A9Bbp<}F#!PrRh4w&
ztMZR`#nQS6@$vBk{^i`V=H~oT%ebczmPeh6W^pvb?R*{POuu|jPfz2!`>W3SGcz-p
zjGBV6fZuZ6tkkORe5LDFxH-EA1|ErsSQzq#0(^;gSt_G@l$ASS5?s6)68VOSo;CDJ
z?`jANT?v#fE-Jd((o%xm$D!^8YtAh#J*}3hkW)cKPS@VqC0vFCv?m(2Nb_C~mOEIT
z`Uc~VG*hkA_$f2@Nf@vpKF;!G*;s|e^yG^O9S?R>Y2}C>KQ{JQgs|IaLu(acU+&)D
z-#-SnXUqg^(mp&QA{u2-TynJ0%h$)}a%c-pfPV4fg%oBwwgqYwJ2U=d!b4GSV^NK3
ziHr;E_c2W!=N1-@++Q!qc;9}RM<>k2c#YhoiK$FzolswxC*8|tTWESddH{-9L|L)H{bLJ-{QD}dW
zea+Pgx}ocx2zzfk(VI6!&-d@F@!#K|@G|i@1TS{zfIMeUX+C~^i)MDwm0szd7W~cn
z{T@FaOsQAjPVSINoR`lyV9}MqU6sIG5)sZ#DK36nS@7Wrz@MEC)83a!A~4BlB7+P%
zzyts=1~Q7j==_KAp^%tio5*mDCIm$G{DQbpsAT5JC^GQ(sf?p&p*D@)uK&<+@dPOV
z4z@57W{yCaEGQ#sAhP=x9S=%88GvCh+%oG$Fy#G9$P4cTgis>M;Ps8EG-f0{)Hs9?
zOCi!}F~H1e=jjNHT$JYGIBf!9q|dqA83>AP`YTV1^NRJ|}m-PhbVW
M$=(%PhY3pg3&MjjNdN!<
literal 0
HcmV?d00001
diff --git a/docs/chi/_static/favicon/android-icon-48x48.png b/docs/chi/_static/favicon/android-icon-48x48.png
new file mode 100644
index 0000000000000000000000000000000000000000..2bcff638bdb284ac5179ace9ebe69a5a1348059c
GIT binary patch
literal 3014
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
Fe*<^5T&(~A
literal 0
HcmV?d00001
diff --git a/docs/chi/_static/favicon/android-icon-72x72.png b/docs/chi/_static/favicon/android-icon-72x72.png
new file mode 100644
index 0000000000000000000000000000000000000000..0cc2b0601696c9a61cc1cb134ab30c653a00c3e5
GIT binary patch
literal 4304
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
literal 0
HcmV?d00001
diff --git a/docs/chi/_static/favicon/android-icon-96x96.png b/docs/chi/_static/favicon/android-icon-96x96.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a0083df0812813fe105d1b604334adef9ff9fca
GIT binary patch
literal 5628
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