Library prosa.implementation.definitions.parameters
Implementation-Specific Task and Job Parameters
Likewise, numeric job identifiers let implementations distinguish jobs with
otherwise equal parameters, which is useful for tie-breaking purposes.
Identifier Uniqueness
Consider tasks with numeric identifiers.
Within a given task set, each identifier unambiguously identifies a task.
Definition valid_task_ids (ts : TaskSet Task) :=
∀ tsk1 tsk2,
tsk1 \in ts →
tsk2 \in ts →
task_id tsk1 = task_id tsk2 →
tsk1 = tsk2.
End ValidTaskIds.
∀ tsk1 tsk2,
tsk1 \in ts →
tsk2 \in ts →
task_id tsk1 = task_id tsk2 →
tsk1 = tsk2.
End ValidTaskIds.
Task and job identifiers together allow implementations to refer
unambiguously to jobs throughout an arrival sequence.
Consider tasks with numeric identifiers ...
... and their jobs, also with numeric identifiers.
Task IDs provide the scope in which job IDs determine job identity.
Definition valid_job_ids (arr_seq : arrival_sequence Job) :=
∀ j1 j2,
arrives_in arr_seq j1 →
arrives_in arr_seq j2 →
task_id (job_task j1) = task_id (job_task j2) →
job_id j1 = job_id j2 →
j1 = j2.
∀ j1 j2,
arrives_in arr_seq j1 →
arrives_in arr_seq j2 →
task_id (job_task j1) = task_id (job_task j2) →
job_id j1 = job_id j2 →
j1 = j2.
We next relate job IDs to arrival times.
We say that job identifiers are monotonic if they are consistent with the
arrival order.
Definition monotonic_job_ids (arr_seq : arrival_sequence Job) :=
∀ j1 j2,
arrives_in arr_seq j1 →
arrives_in arr_seq j2 →
task_id (job_task j1) = task_id (job_task j2) →
job_arrival j1 < job_arrival j2 →
job_id j1 < job_id j2.
End ValidJobIds.
∀ j1 j2,
arrives_in arr_seq j1 →
arrives_in arr_seq j2 →
task_id (job_task j1) = task_id (job_task j2) →
job_arrival j1 < job_arrival j2 →
job_id j1 < job_id j2.
End ValidJobIds.