# Library prosa.model.priority.fifo

# FIFO Priority Policy

#[export] 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.

Lemma FIFO_is_reflexive : reflexive_priorities.

Proof. by intros t j; unfold hep_job_at, JLFP_to_JLDP, hep_job, FIFO. Qed.

Proof. by intros t j; unfold hep_job_at, JLFP_to_JLDP, hep_job, FIFO. Qed.

FIFO is transitive.

FIFO is total.

Lemma FIFO_is_total : total_priorities.

Proof. by move⇒ t j1 j2; apply leq_total. Qed.

End Properties.

Proof. by move⇒ t j1 j2; apply leq_total. Qed.

End Properties.

We add the above lemmas into a "Hint Database" basic_rt_facts, so Coq
will be able to apply them automatically.

Global Hint Resolve

FIFO_is_reflexive

FIFO_is_transitive

FIFO_is_total

: basic_rt_facts.

FIFO_is_reflexive

FIFO_is_transitive

FIFO_is_total

: basic_rt_facts.