While this submission is a draft, it cannot be used by other submissions.

The Scheduling Zoo, preemptive problems on parallel machines

Lax434175.ZooPreemptive · concepts/Lax434175/ZooPreemptive.lean · lax-434175

proven

Loading review…

Sign in with ORCID

Community review

Flags

Each flag is tied to a public ORCID identity and explains why this concept may be incorrect.

No flags have been submitted.

    Community review

    Flag this concept

    State precisely what appears incorrect. This explanation will be public under your ORCID name.

    No source line selected.

    Natural Language Statement

    Theorem

    The 76 preemptive problems on parallel machines of The Scheduling Zoo, each as a specification, and the 65 relations of the zoo among them that are derived here.

    A relation of the zoo states that one problem generalizes another. The 60 relations of the first list hold field by field, so that the more special problem is a special case of the more general one. The 0 relations of the second list need a threshold step, so that the decision version of the more special problem reduces to that of the more general one. The 5 relations of the third list replace completion time by flow time and likewise give a reduction of decision versions. Each pair lists the more general problem first.

    Theorem. Every pair of the first list is a special case, and every pair of the other lists is a reduction of decision versions.

    Concept map
    32 concepts; 4 descendants hidden
    100%
    Proven claimDefinitionThis conceptRelated conceptA → B: B builds on A
    Evidence

    This concept declares 3 statements. Each proof establishes one of them relative to its assumptions.

    3 thresholdReductions_hold proven

    Lean source view on GitHub

    1import Lax434175.OperationsFamily
    2
    3/-!
    4---
    5title: The Scheduling Zoo, preemptive problems on parallel machines
    6type: theorem
    7---
    8The 76 preemptive problems on parallel machines of The Scheduling Zoo, each as a
    9specification, and the 65 relations of the zoo among them that are
    10derived here.
    11
    12A relation of the zoo states that one problem generalizes another. The
    1360 relations of the first list hold field by field, so that the more
    14special problem is a special case of the more general one. The
    150 relations of the second list need a threshold step, so that the
    16decision version of the more special problem reduces to that of the more
    17general one. The 5 relations of the third list replace completion
    18time by flow time and likewise give a reduction of decision versions. Each pair lists the more general problem first.
    19
    20**Theorem.** Every pair of the first list is a special case, and every pair
    21of the other lists is a reduction of decision versions.
    22-/
    23
    24namespace Lax434175.ZooPreemptive
    25open Lax434175 Lax434175.Problems Lax434175.Assembly
    26
    27/-- The family of the problems listed here. -/
    28abbrev F := OperationsFamily.family
    29
    30/-- `R|rj;pmtn|ΣwjCj` -/
    31def p0 : Spec F :=
    32 OperationsFamily.spec (interruption := .pmtn) (environment := .unrelated)
    33 (release := .releaseDates) (objective := .sumWC)
    34
    35/-- `1|prec;rj;pmtn|Lmax` -/
    36def p1 : Spec F :=
    37 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    38 (precedence := ⟨.prec, .zero⟩) (machineCount := .atMost 1) (objective := .lmax)
    39
    40/-- `P|pj=p;pmtn|ΣwjUj` -/
    41def p2 : Spec F :=
    42 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal) (objective := .sumWU)
    43
    44/-- `P|pj=1;pmtn;rj|ΣwjTj` -/
    45def p3 : Spec F :=
    46 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .unit)
    47 (release := .releaseDates) (objective := .sumWT)
    48
    49/-- `1|rj;pmtn|ΣCj` -/
    50def p4 : Spec F :=
    51 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    52 (machineCount := .atMost 1) (objective := .sumC)
    53
    54/-- `1|pmtn;pj=p;rj|ΣwjUj` -/
    55def p5 : Spec F :=
    56 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal)
    57 (release := .releaseDates) (machineCount := .atMost 1) (objective := .sumWU)
    58
    59/-- `1|prec;rj;pj=p;pmtn|ΣCj` -/
    60def p6 : Spec F :=
    61 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal)
    62 (release := .releaseDates) (precedence := ⟨.prec, .zero⟩) (machineCount := .atMost 1)
    63 (objective := .sumC)
    64
    65/-- `P|pj=p;pmtn|ΣCj` -/
    66def p7 : Spec F :=
    67 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal) (objective := .sumC)
    68
    69/-- `Q|pj=p;pmtn|ΣUj` -/
    70def p8 : Spec F :=
    71 OperationsFamily.spec (interruption := .pmtn) (environment := .uniform)
    72 (processingTimes := .equal) (objective := .sumU)
    73
    74/-- `P2|pj=1;chains;pmtn|ΣUj` -/
    75def p9 : Spec F :=
    76 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .unit)
    77 (precedence := ⟨.chains, .zero⟩) (machineCount := .atMost 2) (objective := .sumU)
    78
    79/-- `P|fixj;rj;pmtn|Lmax` -/
    80def p10 : Spec F :=
    81 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    82 (machineSets := .par .fix) (objective := .lmax)
    83
    84/-- `P2|pmtn|ΣwjCj` -/
    85def p11 : Spec F :=
    86 OperationsFamily.spec (interruption := .pmtn) (machineCount := .atMost 2) (objective := .sumWC)
    87
    88/-- `P|pmtn;rj;sizej|Lmax` -/
    89def p12 : Spec F :=
    90 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    91 (machineSets := .par .size) (objective := .lmax)
    92
    93/-- `P|pj=1;pmtn;rj|ΣwjUj` -/
    94def p13 : Spec F :=
    95 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .unit)
    96 (release := .releaseDates) (objective := .sumWU)
    97
    98/-- `P2|pj=1;pmtn;rj|ΣwjTj` -/
    99def p14 : Spec F :=
    100 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .unit)
    101 (release := .releaseDates) (machineCount := .atMost 2) (objective := .sumWT)
    102
    103/-- `P|pj=1;outtree;rj;pmtn|ΣCj` -/
    104def p15 : Spec F :=
    105 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .unit)
    106 (release := .releaseDates) (precedence := ⟨.outtree, .zero⟩) (objective := .sumC)
    107
    108/-- `P|pj=p;outtree;pmtn|ΣCj` -/
    109def p16 : Spec F :=
    110 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal)
    111 (precedence := ⟨.outtree, .zero⟩) (objective := .sumC)
    112
    113/-- `P|rj;pmtn;pj=p|ΣCj` -/
    114def p17 : Spec F :=
    115 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal)
    116 (release := .releaseDates) (objective := .sumC)
    117
    118/-- `P|rj;pmtn|ΣCj` -/
    119def p18 : Spec F :=
    120 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates) (objective := .sumC)
    121
    122/-- `P2|pmtn;outtree;rj;pj=1|ΣCj` -/
    123def p19 : Spec F :=
    124 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .unit)
    125 (release := .releaseDates) (precedence := ⟨.outtree, .zero⟩) (machineCount := .atMost 2)
    126 (objective := .sumC)
    127
    128/-- `P2|fixj;pmtn|ΣCj` -/
    129def p20 : Spec F :=
    130 OperationsFamily.spec (interruption := .pmtn) (machineSets := .par .fix)
    131 (machineCount := .atMost 2) (objective := .sumC)
    132
    133/-- `P2|pj=1;pmtn;prec|ΣCj` -/
    134def p21 : Spec F :=
    135 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .unit)
    136 (precedence := ⟨.prec, .zero⟩) (machineCount := .atMost 2) (objective := .sumC)
    137
    138/-- `P|pmtn;pj=1;sizej|Cmax` -/
    139def p22 : Spec F :=
    140 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .unit)
    141 (machineSets := .par .size) (objective := .makespan)
    142
    143/-- `P|pmtn;sizej|ΣCj` -/
    144def p23 : Spec F :=
    145 OperationsFamily.spec (interruption := .pmtn) (machineSets := .par .size) (objective := .sumC)
    146
    147/-- `R|pmtn;rj|ΣUj` -/
    148def p24 : Spec F :=
    149 OperationsFamily.spec (interruption := .pmtn) (environment := .unrelated)
    150 (release := .releaseDates) (objective := .sumU)
    151
    152/-- `P2|pmtn;rj|ΣUj` -/
    153def p25 : Spec F :=
    154 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    155 (machineCount := .atMost 2) (objective := .sumU)
    156
    157/-- `P2|pmtn;rj|ΣCj` -/
    158def p26 : Spec F :=
    159 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    160 (machineCount := .atMost 2) (objective := .sumC)
    161
    162/-- `P2|pj=p;chains;pmtn|ΣCj` -/
    163def p27 : Spec F :=
    164 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal)
    165 (precedence := ⟨.chains, .zero⟩) (machineCount := .atMost 2) (objective := .sumC)
    166
    167/-- `P2|chains;pj=1;pmtn|ΣwjCj` -/
    168def p28 : Spec F :=
    169 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .unit)
    170 (precedence := ⟨.chains, .zero⟩) (machineCount := .atMost 2) (objective := .sumWC)
    171
    172/-- `P2|chains;pmtn|ΣCj` -/
    173def p29 : Spec F :=
    174 OperationsFamily.spec (interruption := .pmtn) (precedence := ⟨.chains, .zero⟩)
    175 (machineCount := .atMost 2) (objective := .sumC)
    176
    177/-- `P|tree;pmtn|Cmax` -/
    178def p30 : Spec F :=
    179 OperationsFamily.spec (interruption := .pmtn) (precedence := ⟨.tree, .zero⟩)
    180 (objective := .makespan)
    181
    182/-- `P2|pj=p;pmtn;rj|ΣCj` -/
    183def p31 : Spec F :=
    184 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal)
    185 (release := .releaseDates) (machineCount := .atMost 2) (objective := .sumC)
    186
    187/-- `Q|chains;pmtn|Cmax` -/
    188def p32 : Spec F :=
    189 OperationsFamily.spec (interruption := .pmtn) (environment := .uniform)
    190 (precedence := ⟨.chains, .zero⟩) (objective := .makespan)
    191
    192/-- `P|fixj;pmtn|Cmax` -/
    193def p33 : Spec F :=
    194 OperationsFamily.spec (interruption := .pmtn) (machineSets := .par .fix)
    195 (objective := .makespan)
    196
    197/-- `Q|pj=p;rj;pmtn|ΣCj` -/
    198def p34 : Spec F :=
    199 OperationsFamily.spec (interruption := .pmtn) (environment := .uniform)
    200 (processingTimes := .equal) (release := .releaseDates) (objective := .sumC)
    201
    202/-- `1|chains;rj;pmtn|ΣCj` -/
    203def p35 : Spec F :=
    204 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    205 (precedence := ⟨.chains, .zero⟩) (machineCount := .atMost 1) (objective := .sumC)
    206
    207/-- `P|intree;pmtn;rj|Cmax` -/
    208def p36 : Spec F :=
    209 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    210 (precedence := ⟨.intree, .zero⟩) (objective := .makespan)
    211
    212/-- `R2|chains;pmtn|Cmax` -/
    213def p37 : Spec F :=
    214 OperationsFamily.spec (interruption := .pmtn) (environment := .unrelated)
    215 (precedence := ⟨.chains, .zero⟩) (machineCount := .atMost 2) (objective := .makespan)
    216
    217/-- `P|outtree;pmtn|Lmax` -/
    218def p38 : Spec F :=
    219 OperationsFamily.spec (interruption := .pmtn) (precedence := ⟨.outtree, .zero⟩)
    220 (objective := .lmax)
    221
    222/-- `P|pmtn|ΣwjCj` -/
    223def p39 : Spec F :=
    224 OperationsFamily.spec (interruption := .pmtn) (objective := .sumWC)
    225
    226/-- `Q|pmtn|ΣUj` -/
    227def p40 : Spec F :=
    228 OperationsFamily.spec (interruption := .pmtn) (environment := .uniform) (objective := .sumU)
    229
    230/-- `Q|pmtn|ΣwjUj` -/
    231def p41 : Spec F :=
    232 OperationsFamily.spec (interruption := .pmtn) (environment := .uniform) (objective := .sumWU)
    233
    234/-- `P|outtree;pmtn;rj|Cmax` -/
    235def p42 : Spec F :=
    236 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    237 (precedence := ⟨.outtree, .zero⟩) (objective := .makespan)
    238
    239/-- `P|intree;pmtn|Lmax` -/
    240def p43 : Spec F :=
    241 OperationsFamily.spec (interruption := .pmtn) (precedence := ⟨.intree, .zero⟩)
    242 (objective := .lmax)
    243
    244/-- `Q2|prec;pmtn;rj|Lmax` -/
    245def p44 : Spec F :=
    246 OperationsFamily.spec (interruption := .pmtn) (environment := .uniform)
    247 (release := .releaseDates) (precedence := ⟨.prec, .zero⟩) (machineCount := .atMost 2)
    248 (objective := .lmax)
    249
    250/-- `P|pmtn|ΣUj` -/
    251def p45 : Spec F :=
    252 OperationsFamily.spec (interruption := .pmtn) (objective := .sumU)
    253
    254/-- `1|rj;pmtn|ΣUj` -/
    255def p46 : Spec F :=
    256 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    257 (machineCount := .atMost 1) (objective := .sumU)
    258
    259/-- `1|rj;pmtn|ΣwjUj` -/
    260def p47 : Spec F :=
    261 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    262 (machineCount := .atMost 1) (objective := .sumWU)
    263
    264/-- `R|pmtn;rj|Lmax` -/
    265def p48 : Spec F :=
    266 OperationsFamily.spec (interruption := .pmtn) (environment := .unrelated)
    267 (release := .releaseDates) (objective := .lmax)
    268
    269/-- `1|rj;pmtn|ΣwjCj` -/
    270def p49 : Spec F :=
    271 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    272 (machineCount := .atMost 1) (objective := .sumWC)
    273
    274/-- `Q|pmtn|ΣCj` -/
    275def p50 : Spec F :=
    276 OperationsFamily.spec (interruption := .pmtn) (environment := .uniform) (objective := .sumC)
    277
    278/-- `P2|pmtn;rj|ΣwjCj` -/
    279def p51 : Spec F :=
    280 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    281 (machineCount := .atMost 2) (objective := .sumWC)
    282
    283/-- `P|pj=p;pmtn;rj|ΣwjCj` -/
    284def p52 : Spec F :=
    285 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal)
    286 (release := .releaseDates) (objective := .sumWC)
    287
    288/-- `P2|pmtn;outtree;pj=p;rj|ΣCj` -/
    289def p53 : Spec F :=
    290 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal)
    291 (release := .releaseDates) (precedence := ⟨.outtree, .zero⟩) (machineCount := .atMost 2)
    292 (objective := .sumC)
    293
    294/-- `P|pj=p;pmtn|ΣwjCj` -/
    295def p54 : Spec F :=
    296 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal) (objective := .sumWC)
    297
    298/-- `P2|fixj;pmtn|ΣwjCj` -/
    299def p55 : Spec F :=
    300 OperationsFamily.spec (interruption := .pmtn) (machineSets := .par .fix)
    301 (machineCount := .atMost 2) (objective := .sumWC)
    302
    303/-- `R|pmtn|ΣCj` -/
    304def p56 : Spec F :=
    305 OperationsFamily.spec (interruption := .pmtn) (environment := .unrelated) (objective := .sumC)
    306
    307/-- `R|pmtn|ΣUj` -/
    308def p57 : Spec F :=
    309 OperationsFamily.spec (interruption := .pmtn) (environment := .unrelated) (objective := .sumU)
    310
    311/-- `1|pmtn;rj;pj=p|ΣTj` -/
    312def p58 : Spec F :=
    313 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal)
    314 (release := .releaseDates) (machineCount := .atMost 1) (objective := .sumT)
    315
    316/-- `P|pj=1;prec;pmtn|Cmax` -/
    317def p59 : Spec F :=
    318 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .unit)
    319 (precedence := ⟨.prec, .zero⟩) (objective := .makespan)
    320
    321/-- `P2|pmtn|ΣwjUj` -/
    322def p60 : Spec F :=
    323 OperationsFamily.spec (interruption := .pmtn) (machineCount := .atMost 2) (objective := .sumWU)
    324
    325/-- `1|online-rj;pmtn|ΣwjCj` -/
    326def p61 : Spec F :=
    327 OperationsFamily.spec (interruption := .pmtn) (release := .online) (machineCount := .atMost 1)
    328 (objective := .sumWC)
    329
    330/-- `1|online-rj;pmtn|ΣwjFj` -/
    331def p62 : Spec F :=
    332 OperationsFamily.spec (interruption := .pmtn) (release := .online) (machineCount := .atMost 1)
    333 (objective := .sumWF)
    334
    335/-- `P|pmtn;interval order|Cmax` -/
    336def p63 : Spec F :=
    337 OperationsFamily.spec (interruption := .pmtn) (precedence := ⟨.intervalOrder, .zero⟩)
    338 (objective := .makespan)
    339
    340/-- `P|pmtn;Am-order|Cmax` -/
    341def p64 : Spec F :=
    342 OperationsFamily.spec (interruption := .pmtn) (precedence := ⟨.aOrder, .zero⟩)
    343 (objective := .makespan)
    344
    345/-- `1|rj;prec;pmtn|ΣwjCj` -/
    346def p65 : Spec F :=
    347 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    348 (precedence := ⟨.prec, .zero⟩) (machineCount := .atMost 1) (objective := .sumWC)
    349
    350/-- `P|rj;pmtn|ΣwjCj` -/
    351def p66 : Spec F :=
    352 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates) (objective := .sumWC)
    353
    354/-- `P|rj;prec;pmtn|ΣwjCj` -/
    355def p67 : Spec F :=
    356 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    357 (precedence := ⟨.prec, .zero⟩) (objective := .sumWC)
    358
    359/-- `1|rj;prec;pmtn|ΣFj` -/
    360def p68 : Spec F :=
    361 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    362 (precedence := ⟨.prec, .zero⟩) (machineCount := .atMost 1) (objective := .sumF)
    363
    364/-- `1|rj;prec;pmtn|ΣwjFj` -/
    365def p69 : Spec F :=
    366 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    367 (precedence := ⟨.prec, .zero⟩) (machineCount := .atMost 1) (objective := .sumWF)
    368
    369/-- `1|rj;pmtn|ΣwjFj` -/
    370def p70 : Spec F :=
    371 OperationsFamily.spec (interruption := .pmtn) (release := .releaseDates)
    372 (machineCount := .atMost 1) (objective := .sumWF)
    373
    374/-- `R|online-rj;pmtn|ΣwjFj` -/
    375def p71 : Spec F :=
    376 OperationsFamily.spec (interruption := .pmtn) (environment := .unrelated) (release := .online)
    377 (objective := .sumWF)
    378
    379/-- `1|online-rj;pmtn|ΣUj` -/
    380def p72 : Spec F :=
    381 OperationsFamily.spec (interruption := .pmtn) (release := .online) (machineCount := .atMost 1)
    382 (objective := .sumU)
    383
    384/-- `P|online-rj;pmtn|ΣUj` -/
    385def p73 : Spec F :=
    386 OperationsFamily.spec (interruption := .pmtn) (release := .online) (objective := .sumU)
    387
    388/-- `P|pmtn|ΣTj` -/
    389def p74 : Spec F :=
    390 OperationsFamily.spec (interruption := .pmtn) (objective := .sumT)
    391
    392/-- `P2|pmtn;pj=p|ΣwjUj` -/
    393def p75 : Spec F :=
    394 OperationsFamily.spec (interruption := .pmtn) (processingTimes := .equal)
    395 (machineCount := .atMost 2) (objective := .sumWU)
    396
    397/-- The problems with their names in three-field notation. -/
    398def problems : List (String × Spec F) := [
    399 ("R|rj;pmtn|ΣwjCj", p0),
    400 ("1|prec;rj;pmtn|Lmax", p1),
    401 ("P|pj=p;pmtn|ΣwjUj", p2),
    402 ("P|pj=1;pmtn;rj|ΣwjTj", p3),
    403 ("1|rj;pmtn|ΣCj", p4),
    404 ("1|pmtn;pj=p;rj|ΣwjUj", p5),
    405 ("1|prec;rj;pj=p;pmtn|ΣCj", p6),
    406 ("P|pj=p;pmtn|ΣCj", p7),
    407 ("Q|pj=p;pmtn|ΣUj", p8),
    408 ("P2|pj=1;chains;pmtn|ΣUj", p9),
    409 ("P|fixj;rj;pmtn|Lmax", p10),
    410 ("P2|pmtn|ΣwjCj", p11),
    411 ("P|pmtn;rj;sizej|Lmax", p12),
    412 ("P|pj=1;pmtn;rj|ΣwjUj", p13),
    413 ("P2|pj=1;pmtn;rj|ΣwjTj", p14),
    414 ("P|pj=1;outtree;rj;pmtn|ΣCj", p15),
    415 ("P|pj=p;outtree;pmtn|ΣCj", p16),
    416 ("P|rj;pmtn;pj=p|ΣCj", p17),
    417 ("P|rj;pmtn|ΣCj", p18),
    418 ("P2|pmtn;outtree;rj;pj=1|ΣCj", p19),
    419 ("P2|fixj;pmtn|ΣCj", p20),
    420 ("P2|pj=1;pmtn;prec|ΣCj", p21),
    421 ("P|pmtn;pj=1;sizej|Cmax", p22),
    422 ("P|pmtn;sizej|ΣCj", p23),
    423 ("R|pmtn;rj|ΣUj", p24),
    424 ("P2|pmtn;rj|ΣUj", p25),
    425 ("P2|pmtn;rj|ΣCj", p26),
    426 ("P2|pj=p;chains;pmtn|ΣCj", p27),
    427 ("P2|chains;pj=1;pmtn|ΣwjCj", p28),
    428 ("P2|chains;pmtn|ΣCj", p29),
    429 ("P|tree;pmtn|Cmax", p30),
    430 ("P2|pj=p;pmtn;rj|ΣCj", p31),
    431 ("Q|chains;pmtn|Cmax", p32),
    432 ("P|fixj;pmtn|Cmax", p33),
    433 ("Q|pj=p;rj;pmtn|ΣCj", p34),
    434 ("1|chains;rj;pmtn|ΣCj", p35),
    435 ("P|intree;pmtn;rj|Cmax", p36),
    436 ("R2|chains;pmtn|Cmax", p37),
    437 ("P|outtree;pmtn|Lmax", p38),
    438 ("P|pmtn|ΣwjCj", p39),
    439 ("Q|pmtn|ΣUj", p40),
    440 ("Q|pmtn|ΣwjUj", p41),
    441 ("P|outtree;pmtn;rj|Cmax", p42),
    442 ("P|intree;pmtn|Lmax", p43),
    443 ("Q2|prec;pmtn;rj|Lmax", p44),
    444 ("P|pmtn|ΣUj", p45),
    445 ("1|rj;pmtn|ΣUj", p46),
    446 ("1|rj;pmtn|ΣwjUj", p47),
    447 ("R|pmtn;rj|Lmax", p48),
    448 ("1|rj;pmtn|ΣwjCj", p49),
    449 ("Q|pmtn|ΣCj", p50),
    450 ("P2|pmtn;rj|ΣwjCj", p51),
    451 ("P|pj=p;pmtn;rj|ΣwjCj", p52),
    452 ("P2|pmtn;outtree;pj=p;rj|ΣCj", p53),
    453 ("P|pj=p;pmtn|ΣwjCj", p54),
    454 ("P2|fixj;pmtn|ΣwjCj", p55),
    455 ("R|pmtn|ΣCj", p56),
    456 ("R|pmtn|ΣUj", p57),
    457 ("1|pmtn;rj;pj=p|ΣTj", p58),
    458 ("P|pj=1;prec;pmtn|Cmax", p59),
    459 ("P2|pmtn|ΣwjUj", p60),
    460 ("1|online-rj;pmtn|ΣwjCj", p61),
    461 ("1|online-rj;pmtn|ΣwjFj", p62),
    462 ("P|pmtn;interval order|Cmax", p63),
    463 ("P|pmtn;Am-order|Cmax", p64),
    464 ("1|rj;prec;pmtn|ΣwjCj", p65),
    465 ("P|rj;pmtn|ΣwjCj", p66),
    466 ("P|rj;prec;pmtn|ΣwjCj", p67),
    467 ("1|rj;prec;pmtn|ΣFj", p68),
    468 ("1|rj;prec;pmtn|ΣwjFj", p69),
    469 ("1|rj;pmtn|ΣwjFj", p70),
    470 ("R|online-rj;pmtn|ΣwjFj", p71),
    471 ("1|online-rj;pmtn|ΣUj", p72),
    472 ("P|online-rj;pmtn|ΣUj", p73),
    473 ("P|pmtn|ΣTj", p74),
    474 ("P2|pmtn;pj=p|ΣwjUj", p75)]
    475
    476/-- The relations that hold field by field: general problem, special problem. -/
    477def specialCases : List (Spec F × Spec F) := [
    478 (p41, p2), (p26, p4), (p35, p4), (p49, p4), (p47, p5), (p65, p6), (p16, p7), (p17, p7),
    479 (p23, p7), (p50, p7), (p54, p7), (p74, p7), (p40, p8), (p39, p11), (p51, p11), (p3, p14),
    480 (p67, p15), (p67, p16), (p18, p17), (p34, p17), (p52, p17), (p66, p18), (p15, p19), (p53, p19),
    481 (p55, p20), (p12, p22), (p18, p26), (p51, p26), (p29, p27), (p53, p27), (p17, p31), (p26, p31),
    482 (p53, p31), (p10, p33), (p0, p34), (p65, p35), (p66, p39), (p41, p40), (p57, p40), (p40, p45),
    483 (p25, p46), (p47, p46), (p51, p49), (p65, p49), (p56, p50), (p66, p51), (p66, p52), (p39, p54),
    484 (p52, p54), (p0, p56), (p24, p57), (p64, p63), (p67, p65), (p0, p66), (p67, p66), (p69, p68),
    485 (p69, p70), (p73, p72), (p2, p75), (p60, p75)]
    486
    487/-- The relations that need a threshold step: general problem, special problem. -/
    488def thresholdReductions : List (Spec F × Spec F) := [
    489]
    490
    491axiom specialCases_hold : ∀ e ∈ specialCases,
    492 SpecialCase (problem F e.2) (problem F e.1)
    493
    494axiom thresholdReductions_hold : ∀ e ∈ thresholdReductions,
    495 Reducible (problem F e.2) (problem F e.1)
    496
    497/-- The relations through flow time: general problem, special problem. -/
    498def flowReductions : List (Spec F × Spec F) := [
    499 (p68, p6), (p68, p35), (p70, p49), (p62, p61), (p69, p65)]
    500
    501axiom flowReductions_hold : ∀ e ∈ flowReductions,
    502 Reducible (problem F e.2) (problem F e.1)
    503
    504end Lax434175.ZooPreemptive
    505
    Show ProofShow ProofShow Proof

    Discussion

    Ask a question or add context. Endorsements and structured flags are kept in the review panel above.

    Loading discussion…