Library prosa.implementation.priority.gel

Require Import prosa.util.int.
Require Export prosa.model.priority.gel.

GEL Priority Policy

We introduce the canonical GEL priority policy, under which jobs are scheduled in order of their absolute priority points. The GEL policy belongs to the class of JLFP policies.
#[local] Instance GEL (Job : JobType) `{JobPriorityPoint Job} : JLFP_policy Job :=
{
  hep_job (j1 j2 : Job) := (job_priority_point j1 job_priority_point j2)%R
}.

In this section, we prove a few properties about the concrete GEL policy.
Section PropertiesOfGEL.

Consider any type of jobs with absolute priority points.
  Context {Job : JobType} `{JobPriorityPoint Job}.

Under the concrete GEL implementation, hep_job is exactly priority-point order.
  Fact GEL_hep_job :
     j1 j2,
      @hep_job Job (GEL Job) j1 j2
      = (job_priority_point j1 job_priority_point j2)%R.

GEL is reflexive.
GEL is transitive.
GEL is total.
The concrete GEL implementation is indeed a GEL policy.
We add the above facts into the basic_rt_facts hint database so Coq can apply them automatically where needed.
Global Hint Resolve
  GEL_is_GEL_policy
  GEL_is_reflexive
  GEL_is_transitive
  GEL_is_total
  : basic_rt_facts.