Library prosa.implementation.priority.fifo
FIFO Priority Policy
#[local] Instance FIFO (Job : JobType) `{JobArrival Job} : JLFP_policy Job :=
{
hep_job (j1 j2 : Job) := job_arrival j1 ≤ job_arrival j2
}.
{
hep_job (j1 j2 : Job) := job_arrival j1 ≤ job_arrival j2
}.
In this section, we prove a few basic properties of the FIFO policy.
Consider any type of jobs with arrival times.
FIFO is reflexive.
FIFO is transitive.
FIFO is total.
The concrete FIFO implementation is indeed a FIFO policy.
FIFO's arrival order repeats with a periodic workload.
Consider periodic tasks and their jobs.
Context {Task : TaskType} `{PeriodicModel Task}.
Context {Job : JobType} `{JobTask Job Task} `{JobArrival Job}.
Context {Job : JobType} `{JobTask Job Task} `{JobArrival Job}.
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 arrival order.
Fact FIFO_priorities_consistent_across_hyperperiods :
priorities_consistent_across_hyperperiods ts arr_seq (FIFO Job).
End FIFOHyperperiodPriorities.
priorities_consistent_across_hyperperiods ts arr_seq (FIFO Job).
End FIFOHyperperiodPriorities.
We add the above lemmas into a "Hint Database" basic_rt_facts, so Rocq
will be able to apply them automatically.
Global Hint Resolve
FIFO_is_FIFO_policy
FIFO_is_reflexive
FIFO_is_transitive
FIFO_is_total
FIFO_priorities_consistent_across_hyperperiods
: basic_rt_facts.
FIFO_is_FIFO_policy
FIFO_is_reflexive
FIFO_is_transitive
FIFO_is_total
FIFO_priorities_consistent_across_hyperperiods
: basic_rt_facts.