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.analysis.facts.behavior.completion.(** * Busy Interval for JLFP-models *)(** In this file we define the notion of busy intervals for uniprocessor for JLFP schedulers. *)SectionBusyIntervalJLFP.(** Consider any type of jobs. *)Context {Job : JobType}.Context `{JobArrival Job}.Context `{JobCost Job}.(** Consider any kind of processor state model. *)Context {PState : ProcessorState Job}.(** Consider any arrival sequence with consistent arrivals ... *)Variablearr_seq : arrival_sequence Job.HypothesisH_arrival_times_are_consistent : consistent_arrival_times arr_seq.(** ... and a schedule of this arrival sequence. *)Variablesched : schedule PState.(** Assume a given JLFP policy. *)Context `{JLFP_policy Job}.(** In this section, we define the notion of a busy interval. *)SectionBusyInterval.(** Consider any job j. *)Variablej : Job.HypothesisH_from_arrival_sequence : arrives_in arr_seq j.(** We say that [t] is a quiet time for [j] iff every higher-priority job from the arrival sequence that arrived before [t] has completed by that time. *)Definitionquiet_time (t : instant) :=
forall (j_hp : Job),
arrives_in arr_seq j_hp ->
hep_job j_hp j ->
arrived_before j_hp t ->
completed_by sched j_hp t.(** Based on the definition of quiet time, we say that interval <<[t1, t_busy)>> is a (potentially unbounded) busy-interval prefix iff the interval starts with a quiet time where a higher or equal priority job is released and remains non-quiet. We also require job [j] to be released in the interval. *)Definitionbusy_interval_prefix (t1t_busy : instant) :=
t1 < t_busy /\
quiet_time t1 /\
(forallt, t1 < t < t_busy -> ~ quiet_time t) /\
t1 <= job_arrival j < t_busy.(** Next, we say that an interval <<[t1, t2)>> is a busy interval iff <<[t1, t2)>> is a busy-interval prefix and [t2] is a quiet time. *)Definitionbusy_interval (t1t2 : instant) :=
busy_interval_prefix t1 t2 /\
quiet_time t2.EndBusyInterval.(** In this section we define the computational version of the notion of quiet time. *)SectionDecidableQuietTime.(** We say that t is a quiet time for [j] iff every higher-priority job from the arrival sequence that arrived before [t] has completed by that time. *)Definitionquiet_time_dec (j : Job) (t : instant) :=
all
(funj_hp => hep_job j_hp j ==> (completed_by sched j_hp t))
(arrivals_before arr_seq t).(** We also show that the computational and propositional definitions are equivalent. *)