Built with Alectryon, running Coq+SerAPI v8.20.0+0.20.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.
[Loading ML file ssrmatching_plugin.cmxs (using legacy method) ... done]
[Loading ML file ssreflect_plugin.cmxs (using legacy method) ... done]
[Loading ML file ring_plugin.cmxs (using legacy method) ... done]
Serlib plugin: coq-elpi.elpi is not available: serlib support is missing.
Incremental checking for commands in this plugin will be impacted.
[Loading ML file coq-elpi.elpi ... done]
[Loading ML file zify_plugin.cmxs (using legacy method) ... done]
[Loading ML file micromega_core_plugin.cmxs (using legacy method) ... done]
[Loading ML file micromega_plugin.cmxs (using legacy method) ... done]
[Loading ML file btauto_plugin.cmxs (using legacy method) ... done]
Notation"_ + _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ - _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ <= _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ < _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ >= _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ > _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ <= _ <= _" was already used in scope
nat_scope. [notation-overridden,parsing,default]
Notation"_ < _ <= _" was already used in scope
nat_scope. [notation-overridden,parsing,default]
Notation"_ <= _ < _" was already used in scope
nat_scope. [notation-overridden,parsing,default]
Notation"_ < _ < _" was already used in scope
nat_scope. [notation-overridden,parsing,default]
Notation"_ * _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Require Export prosa.model.priority.classes.Require Export prosa.analysis.facts.priority.classes.Require Export prosa.util.sum.(** * Request Bound Function (RBF) *)(** We define the notion of a task's request-bound function (RBF), as well as the total request bound function of a set of tasks. *)SectionTaskWorkloadBoundedByArrivalCurves.(** Consider any type of tasks ... *)Context {Task : TaskType}.Context `{TaskCost Task}.(** ... and any type of jobs associated with these tasks, where each task has a cost. *)Context {Job : JobType}.Context `{JobTask Job Task}.Context `{JobCost Job}.(** Also assume an FP policy that indicates a higher-or-equal priority relation. *)Context `{FP_policy Task}.(** Let [MaxArrivals] denote any function that takes a task and an interval length and returns the associated number of job arrivals of the task. *)Context `{MaxArrivals Task}.(** ** RBF of a Single Task *)(** In this section, we define a bound for the workload of a single task under uni-processor FP scheduling. *)SectionSingleTask.(** Consider any task [tsk] that is to be scheduled in an interval of length delta. *)Variabletsk : Task.Variabledelta : duration.(** We define the following workload bound for the task. *)Definitiontask_request_bound_function :=
task_cost tsk * max_arrivals tsk delta.EndSingleTask.(** ** Total RBF of Multiple Tasks *)(** In this section, we define a bound for the workload of multiple tasks. *)SectionAllTasks.(** Consider a task set ts... *)Variablets : list Task.(** ...and let [tsk] be any task in task set. *)Variabletsk : Task.(** Let delta be the length of the interval of interest. *)Variabledelta : duration.(** Recall the definition of higher-or-equal-priority task for FP scheduling. *)Letis_hep_tasktsk_other := hep_task tsk_other tsk.Letis_other_hep_tasktsk_other := hep_task tsk_other tsk && (tsk_other != tsk).Letis_hp_tasktsk_other := hp_task tsk_other tsk.Letis_ep_tasktsk_other := ep_task tsk_other tsk.(** Using the sum of individual workload bounds, we define the following bound for the total workload of tasks in any interval of length delta. *)Definitiontotal_request_bound_function :=
\sum_(tsk <- ts) task_request_bound_function tsk delta.(** Similarly, we define the following bound for the total workload of tasks of higher-or-equal priority (with respect to [tsk]) in any interval of length delta. *)Definitiontotal_hep_request_bound_function_FP :=
\sum_(tsk_other <- ts | is_hep_task tsk_other)
task_request_bound_function tsk_other delta.(** We also define a bound for the total workload of higher-or-equal-priority tasks other than [tsk] in any interval of length [delta]. *)Definitiontotal_ohep_request_bound_function_FP :=
\sum_(tsk_other <- ts | is_other_hep_task tsk_other)
task_request_bound_function tsk_other delta.(** We also define a bound for the total workload of higher-or-equal-priority tasks other than [tsk] in any interval of length [delta]. *)Definitiontotal_ep_request_bound_function_FP :=
\sum_(tsk_other <- ts | is_ep_task tsk_other)
task_request_bound_function tsk_other delta.(** Finally, we define a bound for the total workload of higher-priority tasks in any interval of length delta. *)Definitiontotal_hp_request_bound_function_FP :=
\sum_(tsk_other <- ts | is_hp_task tsk_other)
task_request_bound_function tsk_other delta.EndAllTasks.EndTaskWorkloadBoundedByArrivalCurves.