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 ltac:(by done)).
rewrite -addn1 -addnBAC // addnBl_leq // ⇒ VALID.
apply: (leq_trans _ VALID).
rewrite /number_of_task_arrivals size_of_task_arrivals_between.
rewrite big_ltn addn1 // 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 ltac:(by done)).
rewrite -addn1 -addnBAC // addnBl_leq // ⇒ VALID.
apply: (leq_trans _ VALID).
rewrite /number_of_task_arrivals size_of_task_arrivals_between.
rewrite big_ltn addn1 // big_geq // addn0.
rewrite /task_arrivals_at size_filter //= -has_count.
by apply /hasP; ∃ j.
Qed.
End NonPathologicalCurve.
We add the above lemma to the global hints database.
Global Hint Resolve non_pathological_max_arrivals : basic_rt_facts.