Library prosa.implementation.priority.gel
Require Import prosa.util.int.
Require Export prosa.model.priority.gel.
Require Export prosa.analysis.facts.hyperperiod.
Require Export prosa.model.priority.gel.
Require Export prosa.analysis.facts.hyperperiod.
GEL Priority Policy
#[local] Instance GEL (Job : JobType) `{JobPriorityPoint Job} : JLFP_policy Job :=
{
hep_job (j1 j2 : Job) := (job_priority_point j1 ≤ job_priority_point j2)%R
}.
{
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.
Consider any type of jobs with absolute priority points.
Fact GEL_hep_job :
∀ j1 j2,
@hep_job Job (GEL Job) j1 j2
= (job_priority_point j1 ≤ job_priority_point j2)%R.
∀ 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.
GEL's priority-point order repeats with a periodic workload.
Consider periodic tasks with relative priority points ...
... and jobs whose absolute priority points are derived from their tasks.
Consider a task set with valid periods ...
... generating a valid arrival sequence of jobs of these tasks ...
Variable arr_seq : arrival_sequence Job.
Hypothesis H_valid_arrival_sequence : valid_arrival_sequence arr_seq.
Hypothesis H_all_jobs_from_taskset : all_jobs_from_taskset arr_seq ts.
Hypothesis H_valid_arrival_sequence : valid_arrival_sequence arr_seq.
Hypothesis H_all_jobs_from_taskset : all_jobs_from_taskset arr_seq ts.
... with periodic releases continuing indefinitely.
Hypothesis H_periodic_arrivals : taskset_respects_periodic_task_model arr_seq ts.
Hypothesis H_infinite_jobs : tasks_have_infinite_arrivals arr_seq ts.
Hypothesis H_infinite_jobs : tasks_have_infinite_arrivals arr_seq ts.
Shifting two jobs by one hyperperiod preserves their priority-point order.
Fact GEL_priorities_consistent_across_hyperperiods :
priorities_consistent_across_hyperperiods ts arr_seq (GEL Job).
End GELHyperperiodPriorities.
priorities_consistent_across_hyperperiods ts arr_seq (GEL Job).
End GELHyperperiodPriorities.
We add the above facts into the basic_rt_facts hint database so Rocq can
apply them automatically where needed.
Global Hint Resolve
GEL_is_GEL_policy
GEL_is_reflexive
GEL_is_transitive
GEL_is_total
GEL_priorities_consistent_across_hyperperiods
: basic_rt_facts.
GEL_is_GEL_policy
GEL_is_reflexive
GEL_is_transitive
GEL_is_total
GEL_priorities_consistent_across_hyperperiods
: basic_rt_facts.