Library prosa.analysis.facts.model.arrival_curves
Require Export prosa.util.epsilon.
Require Export prosa.model.task.arrival.curves.
Require Export prosa.analysis.facts.model.task_arrivals.
Require Export prosa.model.task.arrival.curves.
Require Export prosa.analysis.facts.model.task_arrivals.
Facts About Arrival Curves
Consider any kind of tasks characterized by an upper-bounding arrival curve...
... and the corresponding type of jobs.
Consider an arbitrary task ...
... and an arrival sequence ...
... that is compliant with the upper-bounding arrival curve.
If we have evidence that a job of the task tsk ...
... arrives at any point in time, ...
... then the maximum number of job arrivals in a non-empty interval cannot
be zero.
Lemma non_pathological_max_arrivals :
max_arrivals tsk ε > 0.
Proof.
move: (H_arrives) ⇒ [t ARR].
move: (H_curve_is_valid t t.+1) ⇒ VALID.
have → : ε = t.+1 - t by rewrite /ε; lia.
apply: leq_trans; last by apply VALID.
rewrite /number_of_task_arrivals size_of_task_arrivals_between.
rewrite big_ltn // big_geq // addn0.
rewrite /task_arrivals_at size_filter //= -has_count.
by apply /hasP; ∃ j.
Qed.
End NonPathologicalCurve.
max_arrivals tsk ε > 0.
Proof.
move: (H_arrives) ⇒ [t ARR].
move: (H_curve_is_valid t t.+1) ⇒ VALID.
have → : ε = t.+1 - t by rewrite /ε; lia.
apply: leq_trans; last by apply VALID.
rewrite /number_of_task_arrivals size_of_task_arrivals_between.
rewrite big_ltn // big_geq // addn0.
rewrite /task_arrivals_at size_filter //= -has_count.
by apply /hasP; ∃ j.
Qed.
End NonPathologicalCurve.