Library prosa.implementation.refinements.FP.nonpreemptive_sched

Fully-Nonpreemptive Fixed-Priority Schedules

In this section, we prove some facts about the fully-nonpreemptive preemption policy under fixed-priority schedules.
Some lemmas in this file are not novel facts; they are used to uniform POET's certificates and minimize their verbosity.
Section Schedule.

In this file, we adopt the Prosa standard implementation of jobs and tasks.
  Definition Task := [eqType of concrete_task].
  Definition Job := [eqType of concrete_job].

Consider any arrival sequence with consistent arrivals, ...
... assume sequential readiness, ...
... and consider any fully-nonpreemptive, fixed-priority schedule.
  #[local] Existing Instance fully_nonpreemptive_job_model.
  #[local] Existing Instance NumericFPAscending.
  Definition sched := uni_schedule arr_seq.

First, we show that only ready jobs execute.
Next, we remark that such a schedule is valid.
  Remark sched_valid :
    valid_schedule sched arr_seq.

Next, we show that an unfinished job scheduled at time t is always scheduled at time t+1 as well. Note that the validity of this fact also depends on which readiness model is used.
  Lemma sched_nonpreemptive_next:
     j t,
      scheduled_at sched j t
      ~~ completed_by sched j t.+1
      scheduled_at sched j t.+1.
Using the lemma above, we show that the schedule is nonpreemptive.
Finally, we show that the fixed-priority policy is respected at each preemption point.