{
  "id": "duplicate-machine",
  "title": "A job uses machine zero twice",
  "input": {
    "path": "formats/jobshop/cases/duplicate-machine/input.txt",
    "text": "instance handmade-invalid\n3 3\n0 2 0 3 2 1\n1 1 2 4 0 2\n2 3 0 1 1 2\n"
  },
  "params": [
    {
      "name": "instance",
      "value": "handmade-invalid"
    }
  ],
  "commands": {
    "readJson": "iris read formats/jobshop/jobshop.iris formats/jobshop/cases/duplicate-machine/input.txt --json --param instance=handmade-invalid",
    "readDzn": "iris read formats/jobshop/jobshop.iris formats/jobshop/cases/duplicate-machine/input.txt --dzn --param instance=handmade-invalid",
    "readSummary": "iris read formats/jobshop/jobshop.iris formats/jobshop/cases/duplicate-machine/input.txt --summary --param instance=handmade-invalid",
    "errorJson": "iris-driver read formats/jobshop/jobshop.iris formats/jobshop/cases/duplicate-machine/input.txt --params '{\"instance\":\"handmade-invalid\"}'"
  },
  "result": {
    "kind": "error",
    "json": "{\"code\":\"E-CHECK-FAILED\",\"message\":\"check failed for record 1 of 'jobs': a job uses a machine twice; each job must use every machine once\",\"input_location\":{\"origin\":\"formats/jobshop/cases/duplicate-machine/input.txt\",\"line\":3,\"column\":1},\"spec_location\":{\"origin\":\"formats/jobshop/jobshop.iris\",\"line\":21,\"column\":null},\"context\":\"instance [1]\",\"record_path\":[0]}",
    "diagnostic": "formats/jobshop/cases/duplicate-machine/input.txt:3:1: check failed for record 1 of 'jobs': a job uses a machine twice; each job must use every machine once\n     3 | 0 2 0 3 2 1\n       | ^\nwhile reading: instance [1]\nspec: formats/jobshop/jobshop.iris:21\n"
  },
  "catalog": {
    "command": "iris list formats/jobshop/jobshop.iris formats/jobshop/cases/duplicate-machine/input.txt",
    "text": "formats/jobshop/cases/duplicate-machine/input.txt: 1 instance\n  1 handmade-invalid (failed: a job uses a machine twice; each job must use every machine once)\n",
    "dznCommand": "iris list formats/jobshop/jobshop.iris formats/jobshop/cases/duplicate-machine/input.txt --dzn",
    "dzn": "instances = 1;\nname = [\"handmade-invalid\"];\nfailed = [\"a job uses a machine twice; each job must use every machine once\"];\n"
  },
  "downloads": {
    "input": "/examples/formats/jobshop/cases/duplicate-machine/input.txt",
    "spec": "/examples/formats/jobshop/jobshop.iris",
    "error.json": "/examples/formats/jobshop/cases/duplicate-machine/error.json",
    "error.txt": "/examples/formats/jobshop/cases/duplicate-machine/error.txt",
    "catalog.txt": "/examples/formats/jobshop/cases/duplicate-machine/catalog.txt",
    "catalog.dzn": "/examples/formats/jobshop/cases/duplicate-machine/catalog.dzn",
    "case": "/examples/formats/jobshop/cases/duplicate-machine/case.json"
  },
  "spec": {
    "path": "formats/jobshop/jobshop.iris",
    "text": "format jobshop\n\ncomment \"#\" \"+++\"\ninstances {\n  sections skip other {\n    \"instance {name:word}\" optional\n    \"{n_jobs:1..} {n_machines:1..}\" last {\n      check n_jobs <= (gecode.int_max - 2) / 2 / n_machines \"there are too many jobs and machines\"\n\n      repeat n_jobs as jobs {\n        each job\n        repeat n_machines as steps {\n          each step\n          machine: 0..<n_machines\n          duration: 0..\n        }\n      }\n    }\n  }\n\n  check distinct(job.machine) \"a job uses a machine twice; each job must use every machine once\"\n  check sum(j in jobs: sum(j.duration)) <= gecode.int_max \"the total duration is too large\"\n}\n"
  }
}
