Library prosa.model.priority.rate_monotonic


(* ----------------------------------[ coqtop ]---------------------------------

Welcome to Coq 8.11.2 (June 2020)

----------------------------------------------------------------------------- *)


Require Export prosa.model.priority.classes.
Require Export prosa.model.task.arrival.sporadic.

Rate-Monotonic Fixed-Priority Policy

We define the notion of rate-monotonic task priorities for sporadic tasks, i.e., the classic FP policy in which sporadic tasks are prioritized in order of their minimum inter-arrival times (or periods).
In this section, we prove a few basic properties of the RM policy.
Section Properties.

Consider sporadic tasks...
  Context {Task : TaskType}.
  Context `{SporadicModel Task}.

...and jobs stemming from these tasks.
  Context {Job : JobType}.
  Context `{JobTask Job Task}.

RM is reflexive.
  Lemma RM_is_reflexive : reflexive_priorities.

(* ----------------------------------[ coqtop ]---------------------------------

1 subgoal (ID 339)
  
  Task : TaskType
  H : SporadicModel Task
  Job : JobType
  H0 : JobTask Job Task
  ============================
  reflexive_priorities

----------------------------------------------------------------------------- *)


  Proof. by move⇒ ?; rewrite /hep_job_at /JLFP_to_JLDP /hep_job /FP_to_JLFP /hep_task /RM.
(* ----------------------------------[ coqtop ]---------------------------------

No more subgoals.

----------------------------------------------------------------------------- *)


Qed.

RM is transitive.
  Lemma RM_is_transitive : transitive_priorities.

(* ----------------------------------[ coqtop ]---------------------------------

1 subgoal (ID 347)
  
  Task : TaskType
  H : SporadicModel Task
  Job : JobType
  H0 : JobTask Job Task
  ============================
  transitive_priorities

----------------------------------------------------------------------------- *)


  Proof. by intros t y x z; apply leq_trans.
(* ----------------------------------[ coqtop ]---------------------------------

No more subgoals.

----------------------------------------------------------------------------- *)


Qed.

RM is total.
  Lemma RM_is_total : total_priorities.

(* ----------------------------------[ coqtop ]---------------------------------

1 subgoal (ID 355)
  
  Task : TaskType
  H : SporadicModel Task
  Job : JobType
  H0 : JobTask Job Task
  ============================
  total_priorities

----------------------------------------------------------------------------- *)


  Proof. by movet j1 j2; apply leq_total.
(* ----------------------------------[ coqtop ]---------------------------------

No more subgoals.

----------------------------------------------------------------------------- *)


Qed.

End Properties.

We add the above lemmas into a "Hint Database" basic_facts, so Coq will be able to apply them automatically.
Hint Resolve
     RM_is_reflexive
     RM_is_transitive
     RM_is_total
  : basic_facts.