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.
Require Export prosa.util.epsilon.
[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.model.task_arrivals.(** * Facts About Arrival Curves *)(** We observe that tasks that exhibit job arrivals must have non-pathological arrival curves. This allows excluding pathological cases in higher-level proofs. *)SectionNonPathologicalCurve.(** Consider any kind of tasks characterized by an upper-bounding arrival curve... *)Context {Task : TaskType} `{MaxArrivals Task}.(** ... and the corresponding type of jobs. *)Context {Job : JobType} `{JobTask Job Task}.(** Consider an arbitrary task ... *)Variabletsk : Task.(** ... and an arrival sequence ... *)Variablearr_seq : arrival_sequence Job.(** ... that is compliant with the upper-bounding arrival curve. *)HypothesisH_curve_is_valid : respects_max_arrivals arr_seq tsk (max_arrivals tsk).(** If we have evidence that a job of the task [tsk] ... *)Variablej : Job.HypothesisH_job_of_tsk : job_of_task tsk j.(** ... arrives at any point in time, ... *)HypothesisH_arrives : arrives_in arr_seq j.(** ... then the maximum number of job arrivals in a non-empty interval cannot be zero. *)
byapply /hasP; existsj.Qed.EndNonPathologicalCurve.(** We add the above lemma to the global hints database. *)GlobalHint Resolve non_pathological_max_arrivals : basic_rt_facts.