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]
Require Export prosa.analysis.abstract.restricted_supply.iw_instantiation. Require Export prosa.analysis.definitions.sbf.busy. Require Export prosa.analysis.definitions.workload.bounded. (** * Task Intra-Supply Interference is Bounded *) (** In this file, we define the task intra-supply IBF [task_intra_IBF] assuming that we have two functions: one bounding service inversion and the other bounding the higher-or-equal-priority workload (w.r.t. a job under analysis). We then prove that [task_intra_IBF] indeed bounds the cumulative task intra-supply interference. *) Section TaskIntraInterferenceIsBounded. (** Consider any type of tasks ... *) Context {Task : TaskType}. (** ... and any type of jobs associated with these tasks. *) Context {Job : JobType}. Context {Cost : JobCost Job}. Context `{JobArrival Job}. Context `{JobTask Job Task}. (** Consider any kind of fully supply-consuming unit-supply uniprocessor model. *) Context `{PState : ProcessorState Job}. Hypothesis H_uniprocessor_proc_model : uniprocessor_model PState. Hypothesis H_unit_supply_proc_model : unit_supply_proc_model PState. Hypothesis H_consumed_supply_proc_model : fully_consuming_proc_model PState. (** Consider a JLFP policy that indicates a higher-or-equal-priority relation, and assume that the relation is reflexive. Note that we do not relate the JLFP policy with the scheduler. However, we define functions for Interference and Interfering Workload that actively use the concept of priorities. We require the JLFP policy to be reflexive, so a job cannot cause lower-priority interference (i.e. priority inversion) to itself. *) Context {JLFP : JLFP_policy Job}. Hypothesis H_priority_is_reflexive : reflexive_job_priorities JLFP. (** We also assume that the policy respects sequential tasks, meaning that later-arrived jobs of a task don't have higher priority than earlier-arrived jobs of the same task. *) Hypothesis H_JLFP_respects_sequential_tasks : policy_respects_sequential_tasks JLFP. (** Consider any valid arrival sequence ... *) Variable arr_seq : arrival_sequence Job. Hypothesis H_valid_arrival_sequence : valid_arrival_sequence arr_seq. (** ... and a schedule of this arrival sequence ... *) Variable sched : schedule PState. Hypothesis H_jobs_come_from_arrival_sequence : jobs_come_from_arrival_sequence sched arr_seq. (** ... where jobs do not execute before their arrival nor after completion. *) Hypothesis H_jobs_must_arrive_to_execute : jobs_must_arrive_to_execute sched. Hypothesis H_completed_jobs_dont_execute : completed_jobs_dont_execute sched. (** We say that job [j] incurs interference at time [t] iff it cannot execute due to (1) the lack of supply at time [t], (2) service inversion (i.e., a lower-priority job receiving service at [t]), or a higher-or-equal-priority job receiving service. *) #[local] Instance rs_jlfp_interference : Interference Job := rs_jlfp_interference arr_seq sched. (** The interfering workload, in turn, is defined as the sum of the blackout predicate, service-inversion predicate, and the interfering workload of jobs with higher or equal priority. *) #[local] Instance rs_jlfp_interfering_workload : InterferingWorkload Job := rs_jlfp_interfering_workload arr_seq sched. (** Let [tsk] be any task to be analyzed. *) Variable tsk : Task. (** Assume that there exists a bound on the length of any service inversion experienced by any job of task [tsk]. *) Variable service_inversion_bound : duration -> duration. Hypothesis H_service_inversion_is_bounded : service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound. (** Assume that there exists a bound on the higher-or-equal-priority (w.r.t. a [tsk]'s job) workload of tasks different from [tsk]. *) Variable athep_workload_bound : (* A *) duration -> (* Δ *) duration -> duration. Hypothesis H_workload_is_bounded : athep_workload_is_bounded arr_seq sched tsk athep_workload_bound. (** Finally, we define the interference-bound function ([task_intra_IBF]). *) Definition task_intra_IBF (A R : duration) := service_inversion_bound A + athep_workload_bound A R. (** Next, we prove that [task_intra_IBF] is indeed an interference bound. *)
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound

task_intra_interference_is_bounded_by arr_seq sched tsk task_intra_IBF
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound

task_intra_interference_is_bounded_by arr_seq sched tsk task_intra_IBF
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
A: nat
OFF: relative_arrival_time_of_job_is_A sched j A

cumul_cond_interference (nonself_intra arr_seq sched) j t1 (t1 + Δ) <= task_intra_IBF A Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)

cumul_cond_interference (nonself_intra arr_seq sched) j t1 (t1 + Δ) <= task_intra_IBF (job_arrival j - t1) Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
ZERO: job_cost j = 0

cumul_cond_interference (nonself_intra arr_seq sched) j t1 (t1 + Δ) <= task_intra_IBF (job_arrival j - t1) Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j
cumul_cond_interference (nonself_intra arr_seq sched) j t1 (t1 + Δ) <= task_intra_IBF (job_arrival j - t1) Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
ZERO: job_cost j = 0

cumul_cond_interference (nonself_intra arr_seq sched) j t1 (t1 + Δ) <= task_intra_IBF (job_arrival j - t1) Δ
by exfalso; rewrite /completed_by ZERO in NCOMPL.
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

cumul_cond_interference (nonself_intra arr_seq sched) j t1 (t1 + Δ) <= task_intra_IBF (job_arrival j - t1) Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

cumulative_service_inversion arr_seq sched j t1 (t1 + Δ) + cumulative_another_task_hep_job_interference arr_seq sched j t1 (t1 + Δ) <= task_intra_IBF (job_arrival j - t1) Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

cumulative_service_inversion arr_seq sched j t1 (t1 + Δ) <= service_inversion_bound (job_arrival j - t1)
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j
cumulative_another_task_hep_job_interference arr_seq sched j t1 (t1 + Δ) <= athep_workload_bound (job_arrival j - t1) Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

cumulative_service_inversion arr_seq sched j t1 (t1 + Δ) <= service_inversion_bound (job_arrival j - t1)
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

cumulative_service_inversion arr_seq sched j t1 (t1 + Δ) <= service_inversion_bound (job_arrival j - t1)
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

cumulative_service_inversion arr_seq sched j t1 t2 <= service_inversion_bound (job_arrival j - t1)
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j
cumulative_service_inversion arr_seq sched j t1 (t1 + Δ) <= cumulative_service_inversion arr_seq sched j t1 t2
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

cumulative_service_inversion arr_seq sched j t1 t2 <= service_inversion_bound (job_arrival j - t1)
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

busy_interval_prefix arr_seq sched j t1 t2
apply abstract_busy_interval_classic_busy_interval_prefix => //.
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

cumulative_service_inversion arr_seq sched j t1 (t1 + Δ) <= cumulative_service_inversion arr_seq sched j t1 t2
by rewrite [X in _ <= X](@big_cat_nat _ _ _ (t1 + Δ)) //= leq_addr.
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

cumulative_another_task_hep_job_interference arr_seq sched j t1 (t1 + Δ) <= athep_workload_bound (job_arrival j - t1) Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

cumulative_another_task_hep_job_interference arr_seq sched j t1 (t1 + Δ) <= athep_workload_bound (job_arrival j - t1) Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

quiet_time arr_seq sched j t1
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j
service_of_other_task_hep_jobs arr_seq sched j t1 (t1 + Δ) <= athep_workload_bound (job_arrival j - t1) Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

quiet_time arr_seq sched j t1
by apply instantiated_quiet_time_equivalent_quiet_time => //; apply BUSY.
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

service_of_other_task_hep_jobs arr_seq sched j t1 (t1 + Δ) <= athep_workload_bound (job_arrival j - t1) Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

service_of_other_task_hep_jobs arr_seq sched j t1 (t1 + Δ) <= ?Goal
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j
?Goal <= athep_workload_bound (job_arrival j - t1) Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

service_of_other_task_hep_jobs arr_seq sched j t1 (t1 + Δ) <= ?Goal
by apply service_of_jobs_le_workload => //; apply unit_supply_is_unit_service.
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

workload_of_jobs (another_task_hep_job^~ j) (arrivals_between arr_seq t1 (t1 + Δ)) <= athep_workload_bound (job_arrival j - t1) Δ
Task: TaskType
Job: JobType
Cost: JobCost Job
H: JobArrival Job
H0: JobTask Job Task
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_JLFP_respects_sequential_tasks: policy_respects_sequential_tasks JLFP
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
tsk: Task
service_inversion_bound: duration -> duration
H_service_inversion_is_bounded: service_inversion_is_bounded_by arr_seq sched tsk service_inversion_bound
athep_workload_bound: duration -> duration -> duration
H_workload_is_bounded: athep_workload_is_bounded arr_seq sched tsk athep_workload_bound
t1, t2: instant
Δ: nat
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
BUSY: definitions.busy_interval sched j t1 t2
LT: t1 + Δ < t2
NCOMPL: ~~ completed_by sched j (t1 + Δ)
OFF: relative_arrival_time_of_job_is_A sched j (job_arrival j - t1)
POS: 0 < job_cost j

workload_of_jobs (another_task_hep_job^~ j) (arrivals_between arr_seq t1 (t1 + Δ)) <= athep_workload_bound (job_arrival j - t1) Δ
by apply H_workload_is_bounded => //; apply: abstract_busy_interval_classic_quiet_time => //. } } Qed. End TaskIntraInterferenceIsBounded.