Built with Alectryon, running Coq+SerAPI v8.15.0+0.15.0. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
Notation"[ rel _ _ | _ ]" was already used in scope
fun_scope. [notation-overridden,parsing]
Notation"[ rel _ _ : _ | _ ]" was already used in
scope fun_scope. [notation-overridden,parsing]
Notation"[ rel _ _ in _ & _ | _ ]" was already used
in scope fun_scope. [notation-overridden,parsing]
Notation"[ rel _ _ in _ & _ ]" was already used in
scope fun_scope. [notation-overridden,parsing]
Notation"[ rel _ _ in _ | _ ]" was already used in
scope fun_scope. [notation-overridden,parsing]
Notation"[ rel _ _ in _ ]" was already used in scope
fun_scope. [notation-overridden,parsing]
Notation"_ + _" was already used in scope nat_scope.
[notation-overridden,parsing]
Notation"_ - _" was already used in scope nat_scope.
[notation-overridden,parsing]
Notation"_ <= _" was already used in scope nat_scope.
[notation-overridden,parsing]
Notation"_ < _" was already used in scope nat_scope.
[notation-overridden,parsing]
Notation"_ >= _" was already used in scope nat_scope.
[notation-overridden,parsing]
Notation"_ > _" was already used in scope nat_scope.
[notation-overridden,parsing]
Notation"_ <= _ <= _" was already used in scope
nat_scope. [notation-overridden,parsing]
Notation"_ < _ <= _" was already used in scope
nat_scope. [notation-overridden,parsing]
Notation"_ <= _ < _" was already used in scope
nat_scope. [notation-overridden,parsing]
Notation"_ < _ < _" was already used in scope
nat_scope. [notation-overridden,parsing]
Notation"_ * _" was already used in scope nat_scope.
[notation-overridden,parsing]
(** * Cumulative Workload of Sets of Jobs *)(** In this module, we define the notion of the cumulative workload of a set of jobs. *)SectionWorkloadOfJobs.(** Consider any type of tasks ... *)Context {Task : TaskType}.Context `{TaskCost Task}.(** ... and any type of jobs with execution costs that are associated with these tasks. *)Context {Job : JobType}.Context `{JobTask Job Task}.Context `{JobCost Job}.(** Consider any job arrival sequence. *)Variablearr_seq : arrival_sequence Job.(** First, we define the workload for generic sets of jobs. *)SectionWorkloadOfJobs.(** Given any computable predicate on jobs, ... *)VariableP : pred Job.(** ... and any (finite) set of jobs, ... *)Variablejobs : seq Job.(** ... we define the total workload of the jobs that satisfy predicate [P]. *)Definitionworkload_of_jobs := \sum_(j <- jobs | P j) job_cost j.EndWorkloadOfJobs.(** Next, we define the workload of jobs with higher or equal priority under JLFP policies. *)SectionPerJobPriority.(** Consider any JLFP policy that indicates whether a job has higher or equal priority. *)Context `{JLFP_policy Job}.(** Let j be the job to be analyzed. *)Variablej : Job.(** Recall the notion of a job of higher or equal priority. *)Letof_higher_or_equal_priorityj_hp := hep_job j_hp j.(** Then, we define the workload of higher or equal priority of all jobs with higher-or-equal priority than j. *)Definitionworkload_of_higher_or_equal_priority_jobs :=
workload_of_jobs of_higher_or_equal_priority.EndPerJobPriority.(** We also define workload of a task. *)SectionTaskWorkload.(** Let [tsk] be the task to be analyzed. *)Variabletsk : Task.(** We define the task workload as the workload of jobs of task [tsk]. *)Definitiontask_workloadjobs := workload_of_jobs (job_of_task tsk) jobs.(** Finally, we define the task's workload in a given interval [[t1, t2)]. *)Definitiontask_workload_between (t1t2 : instant) :=
task_workload (arrivals_between arr_seq t1 t2).EndTaskWorkload.EndWorkloadOfJobs.