From 3fe76668f6ea50d781041e4bc4c42a1c391b5771 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Brandenburg?=
Date: Thu, 18 Jul 2019 15:23:41 +0200
Subject: [PATCH] add two notions of "all deadlines met" independent of tasks
---
restructuring/analysis/schedulability.v | 60 +++++++++++++++++++++++++
1 file changed, 60 insertions(+)
diff --git a/restructuring/analysis/schedulability.v b/restructuring/analysis/schedulability.v
index 92fea8c..5bb6e8b 100644
--- a/restructuring/analysis/schedulability.v
+++ b/restructuring/analysis/schedulability.v
@@ -106,3 +106,63 @@ Section Schedulability.
Qed.
End Schedulability.
+
+
+(** We further define two notions of "all deadlines met" that do not
+ depend on a task abstraction: one w.r.t. all scheduled jobs in a
+ given schedule and one w.r.t. all jobs that arrive in a given
+ arrival sequence. *)
+Section AllDeadlinesMet.
+
+ (* Consider any given type of jobs... *)
+ Context {Job : JobType} `{JobCost Job} `{JobDeadline Job} `{JobArrival Job}.
+
+ (* ... any given type of processor states. *)
+ Context {PState: eqType}.
+ Context `{ProcessorState Job PState}.
+
+ (* We say that all deadlines are met if every job scheduled at some
+ point in the schedule meets its deadline. Note that this is a
+ relatively weak definition since an "empty" schedule that is idle
+ at all times trivially satisfies it (since the definition does
+ not require any kind of work conservation). *)
+ Definition all_deadlines_met (sched: schedule PState) :=
+ forall j t,
+ scheduled_at sched j t ->
+ job_meets_deadline sched j.
+
+ (* To augment the preceding definition, we also define an alternate
+ notion of "all deadlines met" based on all jobs included in a
+ given arrival sequence. *)
+ Section DeadlinesOfArrivals.
+
+ (* Given an arbitrary job arrival sequence ... *)
+ Variable arr_seq: arrival_sequence Job.
+
+ (* ... we say that all arrivals meet their deadline if every job
+ that arrives at some point in time meets its deadline. Note
+ that this definition does not preclude the existence of jobs in
+ a schedule that miss their deadline (e.g., if they stem from
+ another arrival sequence). *)
+ Definition all_deadlines_of_arrivals_met (sched: schedule PState) :=
+ forall j,
+ arrives_in arr_seq j ->
+ job_meets_deadline sched j.
+
+ End DeadlinesOfArrivals.
+
+ (* We observe that the latter definition, assuming a schedule in
+ which all jobs come from the arrival sequence, implies the former
+ definition. *)
+ Lemma all_deadlines_met_in_valid_schedule:
+ forall arr_seq sched,
+ jobs_come_from_arrival_sequence sched arr_seq ->
+ all_deadlines_of_arrivals_met arr_seq sched ->
+ all_deadlines_met sched.
+ Proof.
+ move=> arr_seq sched FROM_ARR DL_ARR_MET j t SCHED.
+ apply DL_ARR_MET.
+ by apply (FROM_ARR _ t).
+ Qed.
+
+End AllDeadlinesMet.
--
GitLab