Library prosa.implementation.readiness.sequential
Basic Sequential Readiness Model
Consider any type of job associated with any type of tasks...
Context {Job : JobType} {Task : TaskType} `{JobTask Job Task}.
Context `{JobArrival Job}.
Context `{JobCost Job}.
Context `{JobArrival Job}.
Context `{JobCost Job}.
... and any kind of processor state.
Consider a given job arrival sequence.
A job j is ready at a time instant t iff it is pending and 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;
}.
Next Obligation. by move⇒ sched j t /andP[]. Qed.
{
job_ready sched j t := pending sched j t
&& prior_jobs_complete arr_seq sched j t;
}.
Next Obligation. by move⇒ sched j t /andP[]. Qed.
The concrete sequential readiness instance satisfies the axiomatic
specification of basic sequential readiness.
Fact sequential_readiness_spec :
basic_sequential_readiness sequential_ready_instance arr_seq.
Proof. by []. Qed.
End SequentialTasksReadiness.
basic_sequential_readiness sequential_ready_instance arr_seq.
Proof. by []. Qed.
End SequentialTasksReadiness.
We add the concrete model's specification to the basic facts database so
implementation modules can use it automatically.
Global Hint Resolve sequential_readiness_spec : basic_rt_facts.