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.task.arrival.curves.Require Export prosa.analysis.facts.sporadic.arrival_bound.(** Arrival Curve for Sporadic Tasks *)(** Any analysis that supports arbitrary arrival curves can also be used to analyze sporadic tasks. We establish this link below. *)SectionSporadicArrivalCurve.(** Consider any type of sporadic tasks. *)Context {Task : TaskType} `{SporadicModel Task}.(** The bound on the maximum number of arrivals in a given interval [max_sporadic_arrivals] is in fact a valid arrival curve, which we note with the following arrival-curve declaration. *)Global Program InstanceMaxArrivalsSporadic : MaxArrivals Task := max_sporadic_arrivals.(** It remains to be shown that [max_sporadic_arrivals] satisfies all expectations placed on arrival curves. First, we observe that the bound is structurally sound. *)
move=> ? ? ?; exact: sporadic_arrival_curve_valid.Qed.(** Next, we note that it is indeed an arrival bound. To this end, consider any type of jobs stemming from these tasks ... *)Context {Job : JobType} `{JobTask Job Task} `{JobArrival Job}.(** ... and any well-formed arrival sequence of such jobs. *)Variablearr_seq : arrival_sequence Job.HypothesisH_valid_arrival_sequence : valid_arrival_sequence arr_seq.(** We establish the validity of the defined curve. *)SectionValidity.(** Let [tsk] denote any valid sporadic task to be analyzed. *)Variabletsk : Task.HypothesisH_sporadic_model: respects_sporadic_task_model arr_seq tsk.HypothesisH_valid_inter_min_arrival: valid_task_min_inter_arrival_time tsk.(** We observe that [max_sporadic_arrivals] is indeed an upper bound on the maximum number of arrivals. *)
bymove=> t1 t2 LEQ; apply: sporadic_task_arrivals_bound.Qed.EndValidity.(** For convenience, we lift the preceding observation to the level of entire task sets. *)
exact: VAL.Qed.EndSporadicArrivalCurve.(** We add the lemmas into the "Hint Database" basic_rt_facts so that they become available for proof automation. *)GlobalHint Resolve
sporadic_arrival_curve_valid
sporadic_task_sets_arrival_curve_valid
sporadic_arrival_curve_respects_max_arrivals
sporadic_task_sets_respects_max_arrivals
: basic_rt_facts.