Library rt.restructuring.model.arrival.sporadic


Section TaskMinInterArrivalTime.
  Context {T : TaskType}.

  Variable (task_min_inter_arrival_time : duration).

  Definition valid_task_min_inter_arrival_time :=
    task_min_inter_arrival_time > 0.
End TaskMinInterArrivalTime.

(* Definition of a generic type of parameter for task
   minimum inter arrival times *)


Class SporadicModel (T : TaskType) :=
  task_min_inter_arrival_time : T duration.

Section SporadicModel.
  Context {T : TaskType} `{SporadicModel T}.

  Variable ts : seq T.

  Definition valid_taskset_min_inter_arrival_times :=
     tsk : T,
      tsk \in ts
      task_min_inter_arrival_time tsk > 0.

  Context {J : JobType} `{JobTask J T} `{JobArrival J}.

  Variable arr_seq : arrival_sequence J.

  (* Then, we define the sporadic task model as follows.*)
  Definition respects_sporadic_task_model :=
     (j j': J),
      j j' (* Given two different jobs j and j' ... *)
      arrives_in arr_seq j (* ...that belong to the arrival sequence... *)
      arrives_in arr_seq j'
      job_task j = job_task j' (* ... and that are spawned by the same task, ... *)
      job_arrival j job_arrival j' (* ... if the arrival of j precedes the arrival of j' ...,  *)
      (* then the arrival of j and the arrival of j' are separated by at least one period. *)
      job_arrival j' job_arrival j + task_min_inter_arrival_time (job_task j).

End SporadicModel.