Library prosa.model.task.concept
Task Type
Task Model Core Parameters
Second, we define a task-model parameter to express each task's relative
deadline.
Third, we define a task-model parameter to express each task's worst-case
execution cost (WCET).
And finally, we define a task-model parameter to express each task's best-case
execution cost (BCET).
Task Model Validity
Consider any type of tasks with WCETs/BCETs and relative deadlines.
Context {Task : TaskType}.
Context `{TaskCost Task}.
Context `{TaskMinCost Task}.
Context `{TaskDeadline Task}.
Context `{TaskCost Task}.
Context `{TaskMinCost Task}.
Context `{TaskDeadline Task}.
First, we constrain the possible WCET values of a valid task.
Consider an arbitrary task.
The WCET of the task should be positive.
The WCET should not be larger than the deadline, as otherwise the task
is trivially infeasible.
Second, we relate the cost of a task's jobs to its WCET.
Consider any type of jobs associated with the tasks ...
... and consider the cost of each job.
The cost of any job j cannot exceed the WCET of its respective
task.
Every job has a valid job cost.
Next, consider any arrival sequence.
The cost of a job from the arrival sequence cannot
be larger than the task cost.
Definition arrivals_have_valid_job_costs :=
∀ j,
arrives_in arr_seq j →
valid_job_cost j.
End ValidJobCost.
∀ j,
arrives_in arr_seq j →
valid_job_cost j.
End ValidJobCost.
Third, we relate the cost of a task's jobs to its BCET.
Consider any type of jobs associated with the tasks ...
... and consider the cost of each job.
The cost of any job j cannot be less than the BCET of its respective
task.
Every job have a valid job cost
Next, consider any arrival sequence.
The cost of a job from the arrival sequence cannot
be less than the task cost.
Definition arrivals_have_valid_min_job_costs :=
∀ j,
arrives_in arr_seq j →
valid_min_job_cost j.
End ValidMinJobCost.
End ModelValidity.
∀ j,
arrives_in arr_seq j →
valid_min_job_cost j.
End ValidMinJobCost.
End ModelValidity.
Task Sets
Consider any type of tasks with WCETs ...
... and any type of jobs associated with these tasks ...
... as well as their individual execution costs.
Further, consider an arrival sequence of these jobs...
...and the set of tasks that generate them.
All jobs in the arrival sequence should come from the task set.
Definition all_jobs_from_taskset :=
∀ j,
arrives_in arr_seq j →
job_task j \in ts.
End ValidTaskSet.
∀ j,
arrives_in arr_seq j →
job_task j \in ts.
End ValidTaskSet.
Finally, for readability, we define two ways in which jobs and tasks
relate.
For any type of job associated with any type of tasks...
Trivially, same_task is symmetric.
Remark same_task_sym :
∀ j1 j2,
same_task j1 j2 = same_task j2 j1.
Proof. by move⇒ j1 j2; rewrite /same_task eq_sym. Qed.
∀ j1 j2,
same_task j1 j2 = same_task j2 j1.
Proof. by move⇒ j1 j2; rewrite /same_task eq_sym. Qed.
Trivially, if one job is a job of a given task, and another is not, then
the two jobs do not come from the same task.