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.model.task.sequentiality. (** * Sequential Readiness Model *) (** In this module, we define the notion of sequential task readiness. This notion is similar to the classic Liu & Layland model without jitter or self-suspensions. However, an important difference is that in the sequential task readiness model only the earliest pending job of a task is ready. *) Section SequentialTasksReadiness. (** Consider any type of job associated with any type of tasks... *) Context {Job : JobType}. Context {Task : TaskType}. Context `{JobTask Job Task}. Context `{JobArrival Job}. Context `{JobCost Job}. (** ... and any kind of processor state. *) Context {PState : ProcessorState Job}. (** Consider any job arrival sequence ... *) Variable arr_seq : arrival_sequence Job. (** A job [j] is ready at a time instant [t] iff all jobs from task [job_task j] that arrived earlier than job [j] are already completed by time [t]. *) #[local,program] Instance sequential_ready_instance : JobReady Job PState := { job_ready sched j t := pending sched j t && prior_jobs_complete arr_seq sched j t; }.
Job: JobType
Task: TaskType
H: JobTask Job Task
H0: JobArrival Job
H1: JobCost Job
PState: ProcessorState Job
arr_seq: arrival_sequence Job

forall (sched : schedule PState) (j : Job) (t : instant), (fun (sched0 : schedule PState) (j0 : Job) (t0 : instant) => pending sched0 j0 t0 && prior_jobs_complete arr_seq sched0 j0 t0) sched j t -> pending sched j t
by move=> sched j t /andP[]. Qed. End SequentialTasksReadiness.