Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.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]
[Loading ML file coq-elpi.elpi ... done]
[Loading ML file zify_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.analysis.facts.behavior.completion. Require Export prosa.analysis.definitions.service. Require Export prosa.analysis.definitions.service_inversion.pred. Require Export prosa.analysis.abstract.definitions. (** * Service Inversion Bounded *) (** In this section, we define the notion of bounded cumulative service inversion in an abstract busy interval prefix. *) Section ServiceInversion. (** Consider any type of tasks ... *) Context {Task : TaskType}. Context `{TaskCost Task}. (** ... and any type of jobs associated with these tasks. *) Context {Job : JobType}. Context `{JobTask Job Task}. Context `{JobArrival Job}. Context `{JobCost Job}. (** Next, consider _any_ kind of processor state model, ... *) Context {PState : ProcessorState Job}. (** ... any arrival sequence, ... *) Variable arr_seq : arrival_sequence Job. (** ... and any schedule of this arrival sequence. *) Variable sched : schedule PState. (** Assume we are provided with abstract functions for interference and interfering workload. *) Context `{Interference Job}. Context `{InterferingWorkload Job}. (** Assume a given JLFP policy. *) Context `{JLFP_policy Job}. (** If the priority inversion experienced by job [j] depends on its relative arrival time w.r.t. the beginning of its busy interval at a time [t1], we say that the service inversion of job [j] is bounded by a function [B : duration -> duration] if the cumulative service inversion within any (abstract) busy interval prefix is bounded by [B (job_arrival j - t1)]. *) Definition service_inversion_of_job_is_bounded_by (j : Job) (B : duration -> duration) := pred_service_inversion_of_job_is_bounded_by arr_seq sched (busy_interval_prefix sched) j B. (** We say that task [tsk] has bounded service inversion if all its jobs have cumulative service inversion bounded by function [B : duration -> duration], where [B] may depend on jobs' relative arrival times w.r.t. the beginning of an abstract busy interval prefix. *) Definition service_inversion_is_bounded_by (tsk : Task) (B : duration -> duration) := pred_service_inversion_is_bounded_by arr_seq sched (busy_interval_prefix sched) tsk B. End ServiceInversion.