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]
(** In this file, we prove facts about the job-constructor function when used in pair with the concrete arrival sequence. *)SectionJobConstructor.(** Assume that an arrival curve based on a concrete prefix is given. *)#[local] Existing InstanceConcreteMaxArrivals.(** Consider a task set [ts] with non-duplicate tasks. *)Variablets : seq Task.HypothesisH_ts_uniq : uniq ts.(** First, we show that [generate_jobs_at tsk n t] generates n jobs ... *)
bymove=> x1 x2 /eqP /andP [/andP [/andP [/andP [//= /eqP EQ _] _] _] _].Qed.(** Next, for convenience, we define [arr_seq] as the concrete arrival sequence used with the job constructor. *)Letarr_seq := concrete_arrival_sequence generate_jobs_at ts.(** We start by proving that the arrival time of a job is consistent with its positioning inside the arrival sequence. *)
forall (x : concrete_job) (yz : concrete_task),
x \in generate_jobs_at y (max_arrivals_at y t) t ->
x \in generate_jobs_at z (max_arrivals_at z t) t ->
y = z
bymove: (job_arrival_consistent j jt1 IN1)
(job_arrival_consistent j jt2 IN2) => <- <-.Qed.(** Finally, we observe that [generate_jobs_at tsk n t] indeed generates jobs of task [tsk] that arrive at [t] *)