Library prosa.analysis.abstract.iw_auxiliary
Auxiliary Lemmas About Interference and Interfering Workload.
Consider any type of tasks ...
... and any type of jobs associated with these tasks.
Context {Job : JobType}.
Context `{JobTask Job Task}.
Context `{JobArrival Job}.
Context `{JobCost Job}.
Context `{JobTask Job Task}.
Context `{JobArrival Job}.
Context `{JobCost Job}.
Assume we are provided with abstract functions for interference
and interfering workload.
First, we show that cumulative interference on an interval
[al, ar)
is bounded by the cumulative interference on an
interval [bl,br)
if [al,ar)
⊆ [bl,br)
.
Lemma cumulative_interference_sub :
∀ (j : Job) (al ar bl br : instant),
bl ≤ al →
ar ≤ br →
cumulative_interference j al ar ≤ cumulative_interference j bl br.
Proof.
move ⇒ j al ar bl br LE1 LE2.
destruct (leqP al ar) as [NEQ|NEQ].
- rewrite /cumulative_interference /definitions.cumulative_interference.
rewrite [in X in _ ≤ X](@big_cat_nat _ _ _ al) //=; try lia.
by rewrite [in X in _ ≤ _ + X](@big_cat_nat _ _ _ ar) //=; lia.
- by rewrite /cumulative_interference /definitions.cumulative_interference big_geq; lia.
Qed.
∀ (j : Job) (al ar bl br : instant),
bl ≤ al →
ar ≤ br →
cumulative_interference j al ar ≤ cumulative_interference j bl br.
Proof.
move ⇒ j al ar bl br LE1 LE2.
destruct (leqP al ar) as [NEQ|NEQ].
- rewrite /cumulative_interference /definitions.cumulative_interference.
rewrite [in X in _ ≤ X](@big_cat_nat _ _ _ al) //=; try lia.
by rewrite [in X in _ ≤ _ + X](@big_cat_nat _ _ _ ar) //=; lia.
- by rewrite /cumulative_interference /definitions.cumulative_interference big_geq; lia.
Qed.
We show that the cumulative interference of a job can be split
into disjoint intervals.
Lemma cumulative_interference_cat :
∀ j t t1 t2,
t1 ≤ t ≤ t2 →
cumulative_interference j t1 t2 = cumulative_interference j t1 t + cumulative_interference j t t2.
Proof.
move ⇒ j t t1 t2 /andP [LE1 LE2].
rewrite /cumulative_interference /definitions.cumulative_interference.
by rewrite {1}(@big_cat_nat _ _ _ t) //=.
Qed.
End InterferenceAndInterferingWorkloadAuxiliary.
∀ j t t1 t2,
t1 ≤ t ≤ t2 →
cumulative_interference j t1 t2 = cumulative_interference j t1 t + cumulative_interference j t t2.
Proof.
move ⇒ j t t1 t2 /andP [LE1 LE2].
rewrite /cumulative_interference /definitions.cumulative_interference.
by rewrite {1}(@big_cat_nat _ _ _ t) //=.
Qed.
End InterferenceAndInterferingWorkloadAuxiliary.