Library prosa.implementation.priority.deadline_monotonic
Deadline-Monotonic Fixed-Priority Policy
#[local] Instance DM (Task : TaskType) `{TaskDeadline Task} : FP_policy Task :=
{
hep_task (tsk1 tsk2 : Task) := task_deadline tsk1 ≤ task_deadline tsk2
}.
{
hep_task (tsk1 tsk2 : Task) := task_deadline tsk1 ≤ task_deadline tsk2
}.
In this section, we prove a few basic properties of the concrete DM policy.
Consider any kind of tasks with relative deadlines.
The concrete DM implementation is indeed a DM policy.
DM is reflexive.
Fact DM_is_reflexive :
reflexive_task_priorities (DM Task).
Proof. by move⇒ ?; rewrite /hep_task /DM. Qed.
reflexive_task_priorities (DM Task).
Proof. by move⇒ ?; rewrite /hep_task /DM. Qed.
DM is transitive.
Fact DM_is_transitive :
transitive_task_priorities (DM Task).
Proof. by move⇒ t y x z; apply: leq_trans. Qed.
transitive_task_priorities (DM Task).
Proof. by move⇒ t y x z; apply: leq_trans. Qed.
DM is total.
Fact DM_is_total :
total_task_priorities (DM Task).
Proof. by move⇒ ? ?; apply: leq_total. Qed.
End Properties.
total_task_priorities (DM Task).
Proof. by move⇒ ? ?; apply: leq_total. Qed.
End Properties.
We add the above facts into the basic_rt_facts hint database so Coq can
apply them automatically where needed.
Global Hint Resolve
DM_is_DM_policy
DM_is_reflexive
DM_is_transitive
DM_is_total
: basic_rt_facts.
DM_is_DM_policy
DM_is_reflexive
DM_is_transitive
DM_is_total
: basic_rt_facts.