Built with Alectryon, running Coq+SerAPI v8.15.0+0.15.0. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use instead of Ctrl.
Require Export prosa.util.epsilon.
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "_ + _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ - _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ >= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ > _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ * _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
(** * Facts About Arrival Curves *) (** We observe that tasks that exhibit job arrivals must have non-pathological arrival curves. This allows excluding pathological cases in higher-level proofs. *) Section NonPathologicalCurve. (** Consider any kind of tasks characterized by an upper-bounding arrival curve... *) Context {Task : TaskType} `{MaxArrivals Task}. (** ... and the corresponding type of jobs. *) Context {Job : JobType} `{JobTask Job Task}. (** Consider an arbitrary task ... *) Variable tsk : Task. (** ... and an arrival sequence ... *) Variable arr_seq : arrival_sequence Job. (** ... that is compliant with the upper-bounding arrival curve. *) Hypothesis H_curve_is_valid : respects_max_arrivals arr_seq tsk (max_arrivals tsk). (** If we have evidence that a job of the task [tsk] ... *) Variable j : Job. Hypothesis H_job_of_tsk : job_of_task tsk j. (** ... arrives at any point in time, ... *) Hypothesis H_arrives : arrives_in arr_seq j. (** ... then the maximum number of job arrivals in a non-empty interval cannot be zero. *)
Task: TaskType
H: MaxArrivals Task
Job: JobType
H0: JobTask Job Task
tsk: Task
arr_seq: arrival_sequence Job
H_curve_is_valid: respects_max_arrivals arr_seq tsk (max_arrivals tsk)
j: Job
H_job_of_tsk: job_of_task tsk j
H_arrives: arrives_in arr_seq j

0 < max_arrivals tsk ε
Task: TaskType
H: MaxArrivals Task
Job: JobType
H0: JobTask Job Task
tsk: Task
arr_seq: arrival_sequence Job
H_curve_is_valid: respects_max_arrivals arr_seq tsk (max_arrivals tsk)
j: Job
H_job_of_tsk: job_of_task tsk j
H_arrives: arrives_in arr_seq j

0 < max_arrivals tsk ε
Task: TaskType
H: MaxArrivals Task
Job: JobType
H0: JobTask Job Task
tsk: Task
arr_seq: arrival_sequence Job
H_curve_is_valid: respects_max_arrivals arr_seq tsk (max_arrivals tsk)
j: Job
H_job_of_tsk: job_of_task tsk j
H_arrives: arrives_in arr_seq j
t: instant
ARR: j \in arrivals_at arr_seq t

0 < max_arrivals tsk ε
Task: TaskType
H: MaxArrivals Task
Job: JobType
H0: JobTask Job Task
tsk: Task
arr_seq: arrival_sequence Job
H_curve_is_valid: respects_max_arrivals arr_seq tsk (max_arrivals tsk)
j: Job
H_job_of_tsk: job_of_task tsk j
H_arrives: arrives_in arr_seq j
t: instant
ARR: j \in arrivals_at arr_seq t
VALID: t <= t.+1 -> number_of_task_arrivals arr_seq tsk t t.+1 <= max_arrivals tsk (t.+1 - t)

0 < max_arrivals tsk ε
Task: TaskType
H: MaxArrivals Task
Job: JobType
H0: JobTask Job Task
tsk: Task
arr_seq: arrival_sequence Job
H_curve_is_valid: respects_max_arrivals arr_seq tsk (max_arrivals tsk)
j: Job
H_job_of_tsk: job_of_task tsk j
H_arrives: arrives_in arr_seq j
t: instant
ARR: j \in arrivals_at arr_seq t
VALID: t <= t.+1 -> number_of_task_arrivals arr_seq tsk t t.+1 <= max_arrivals tsk (t.+1 - t)

0 < max_arrivals tsk (t.+1 - t)
Task: TaskType
H: MaxArrivals Task
Job: JobType
H0: JobTask Job Task
tsk: Task
arr_seq: arrival_sequence Job
H_curve_is_valid: respects_max_arrivals arr_seq tsk (max_arrivals tsk)
j: Job
H_job_of_tsk: job_of_task tsk j
H_arrives: arrives_in arr_seq j
t: instant
ARR: j \in arrivals_at arr_seq t
VALID: t <= t.+1 -> number_of_task_arrivals arr_seq tsk t t.+1 <= max_arrivals tsk (t.+1 - t)

0 < number_of_task_arrivals arr_seq tsk t t.+1
Task: TaskType
H: MaxArrivals Task
Job: JobType
H0: JobTask Job Task
tsk: Task
arr_seq: arrival_sequence Job
H_curve_is_valid: respects_max_arrivals arr_seq tsk (max_arrivals tsk)
j: Job
H_job_of_tsk: job_of_task tsk j
H_arrives: arrives_in arr_seq j
t: instant
ARR: j \in arrivals_at arr_seq t
VALID: t <= t.+1 -> number_of_task_arrivals arr_seq tsk t t.+1 <= max_arrivals tsk (t.+1 - t)

0 < \sum_(t <= t < t.+1) size (task_arrivals_at arr_seq tsk t)
Task: TaskType
H: MaxArrivals Task
Job: JobType
H0: JobTask Job Task
tsk: Task
arr_seq: arrival_sequence Job
H_curve_is_valid: respects_max_arrivals arr_seq tsk (max_arrivals tsk)
j: Job
H_job_of_tsk: job_of_task tsk j
H_arrives: arrives_in arr_seq j
t: instant
ARR: j \in arrivals_at arr_seq t
VALID: t <= t.+1 -> number_of_task_arrivals arr_seq tsk t t.+1 <= max_arrivals tsk (t.+1 - t)

0 < size (task_arrivals_at arr_seq tsk t)
Task: TaskType
H: MaxArrivals Task
Job: JobType
H0: JobTask Job Task
tsk: Task
arr_seq: arrival_sequence Job
H_curve_is_valid: respects_max_arrivals arr_seq tsk (max_arrivals tsk)
j: Job
H_job_of_tsk: job_of_task tsk j
H_arrives: arrives_in arr_seq j
t: instant
ARR: j \in arrivals_at arr_seq t
VALID: t <= t.+1 -> number_of_task_arrivals arr_seq tsk t t.+1 <= max_arrivals tsk (t.+1 - t)

has [eta job_of_task tsk] (arrivals_at arr_seq t)
by apply /hasP; exists j. Qed. End NonPathologicalCurve.