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.model.task.absolute_deadline. Require Export prosa.analysis.definitions.busy_interval.edf_pi_bound. Require Export prosa.analysis.abstract.restricted_supply.abstract_rta. Require Export prosa.analysis.abstract.restricted_supply.bounded_bi.aux. Require Export prosa.analysis.definitions.sbf.busy. (** * Sufficient Condition for Bounded Busy Intervals for RS EDF *) (** In this section, we show that the existence of [L] such that [total_rbf L <= SBF L /\ longest_busy_interval_with_pi <= SBF L], where [longest_busy_interval_with_pi] is the length of the longest busy interval starting with a priority inversion (w.r.t. a job of a task under analysis) and [SBF] is a supply-bound function, is a sufficient condition for the existence of bounded busy intervals under EDF scheduling with a restricted-supply processor model. The proof uses the following observation. Consider the beginning of a busy interval of a job [j] to be analyzed. If there is service inversion, one can derive an upper bound on the relative arrival of job [j], which in turn can be used to derive a bound on the total higher-or-equal priority workload ([longest_busy_interval_with_pi]). If there is no service inversion, we use the standard fixpoint approach with [total_rbf L]. *) Section BoundedBusyIntervals. (** Consider any type of tasks ... *) Context {Task : TaskType}. Context `{TaskCost Task}. Context `{TaskDeadline Task}. (** ... and any type of jobs associated with these tasks. *) Context {Job : JobType}. Context `{JobTask Job Task}. Context `{JobArrival Job}. Context `{JobCost Job}. (** For brevity, let's denote the relative deadline of a task as [D]. *) Let D tsk := task_deadline tsk. (** 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 any valid arrival sequence. *) Variable arr_seq : arrival_sequence Job. Hypothesis H_valid_arrival_sequence : valid_arrival_sequence arr_seq. (** Next, consider a schedule of this arrival sequence, ... *) Variable sched : schedule PState. (** ... allow for any work-bearing notion of job readiness, ... *) Context `{!JobReady Job PState}. Hypothesis H_job_ready : work_bearing_readiness arr_seq sched. (** ... and assume that the schedule is valid. *) Hypothesis H_sched_valid : valid_schedule sched arr_seq. (** Assume that jobs have bounded non-preemptive segments. *) Context `{JobPreemptable Job}. Context `{TaskMaxNonpreemptiveSegment Task}. Hypothesis H_valid_preemption_model : valid_preemption_model arr_seq sched. Hypothesis H_valid_model_with_bounded_nonpreemptive_segments : valid_model_with_bounded_nonpreemptive_segments arr_seq sched. (** Furthermore, assume that the schedule respects the scheduling policy. *) Hypothesis H_respects_policy : respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job). (** Recall that [busy_intervals_are_bounded_by] is an abstract notion. Hence, we need to introduce interference and interfering workload. We will use the restricted-supply instantiations. *) (** 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. (** Assume that the schedule is work-conserving in the abstract sense. *) Hypothesis H_work_conserving : abstract.definitions.work_conserving arr_seq sched. (** Consider an arbitrary task set [ts], ... *) Variable ts : seq Task. (** ... assume that all jobs come from the task set, ... *) Hypothesis H_all_jobs_from_taskset : all_jobs_from_taskset arr_seq ts. (** ... and that the cost of a job does not exceed its task's WCET. *) Hypothesis H_valid_job_cost : arrivals_have_valid_job_costs arr_seq. (** Let [max_arrivals] be a family of valid arrival curves. *) Context `{MaxArrivals Task}. Hypothesis H_valid_arrival_curve : valid_taskset_arrival_curve ts max_arrivals. Hypothesis H_is_arrival_curve : taskset_respects_max_arrivals arr_seq ts. (** Let [tsk] be any task in [ts] that is to be analyzed. *) Variable tsk : Task. Hypothesis H_tsk_in_ts : tsk \in ts. (** Consider a unit SBF valid in busy intervals (w.r.t. task [tsk]). That is, (1) [SBF 0 = 0], (2) for any duration [Δ], the supply produced during a busy-interval prefix of length [Δ] is at least [SBF Δ], and (3) [SBF] makes steps of at most one. *) Context {SBF : SupplyBoundFunction}. Hypothesis H_valid_SBF : valid_busy_sbf arr_seq sched tsk SBF. Hypothesis H_unit_SBF : unit_supply_bound_function SBF. (** First, we show that the constant [longest_busy_interval_with_pi ts tsk] indeed bounds the cumulative interference incurred by job [j]. *) Section LongestBusyIntervalWithPIIsValid. (** Consider any job [j] of task [tsk] that has a positive job cost and is in the arrival sequence. *) Variable j : Job. Hypothesis H_j_arrives : arrives_in arr_seq j. Hypothesis H_job_of_tsk : job_of_task tsk j. Hypothesis H_job_cost_positive : job_cost_positive j. (** Let <<[t1, t2)>> be a busy-interval prefix. *) Variable t1 t2 : instant. Hypothesis H_busy_prefix : busy_interval_prefix arr_seq sched j t1 t2. (** Consider an interval <<[t1, t1 + δ) ⊆ [t1, t2)>>. *) Variable δ : duration. Hypothesis H_interval_in_busy_prefix : t1 + δ <= t2. (** Assume that cumulative service inversion of job [j] in this interval is positive. *) Hypothesis H_positive_service_inversion : cumulative_service_inversion arr_seq sched j t1 (t1 + δ) > 0. (** The LHS of the following inequality represents all possible interference as well as the cost of the job itself in a prefix of length [δ]. On the RHS of the inequality, there is a constant [longest_busy_interval_with_pi]. We prove that this inequality is indeed true. This implies that if the cumulative service inversion of job [j] is positive, its busy interval cannot possibly be longer than [longest_busy_interval_with_pi]. *)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)

cumulative_service_inversion arr_seq sched j t1 (t1 + δ) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ)) <= longest_busy_interval_with_pi ts tsk
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)

cumulative_service_inversion arr_seq sched j t1 (t1 + δ) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ)) <= longest_busy_interval_with_pi ts tsk
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion, PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)

cumulative_service_inversion arr_seq sched j t1 (t1 + δ) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ)) <= longest_busy_interval_with_pi ts tsk
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)

cumulative_service_inversion arr_seq sched j t1 (t1 + δ) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ)) <= longest_busy_interval_with_pi ts tsk
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)

cumulative_service_inversion arr_seq sched j t1 (t1 + δ) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ)) <= longest_busy_interval_with_pi ts tsk
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)

cumulative_service_inversion arr_seq sched j t1 (t1 + δ) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ)) <= \max_(tsk_lp <- ts | task_deadline (job_task j) < task_deadline tsk_lp) (task_max_nonpreemptive_segment tsk_lp - 1 + \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline tsk_lp) task_request_bound_function tsk_hp (task_deadline tsk_lp - task_deadline tsk_hp))
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j

cumulative_service_inversion arr_seq sched j t1 (t1 + δ) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ)) <= \max_(tsk_lp <- ts | task_deadline (job_task j) < task_deadline tsk_lp) (task_max_nonpreemptive_segment tsk_lp - 1 + \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline tsk_lp) task_request_bound_function tsk_hp (task_deadline tsk_lp - task_deadline tsk_hp))
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

cumulative_service_inversion arr_seq sched j t1 (t1 + δ) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ)) <= \max_(tsk_lp <- ts | task_deadline (job_task j) < task_deadline tsk_lp) (task_max_nonpreemptive_segment tsk_lp - 1 + \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline tsk_lp) task_request_bound_function tsk_hp (task_deadline tsk_lp - task_deadline tsk_hp))
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

job_task jlp \in ts
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
task_deadline (job_task j) < task_deadline (job_task jlp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
cumulative_service_inversion arr_seq sched j t1 (t1 + δ) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ)) <= task_max_nonpreemptive_segment (job_task jlp) - 1 + \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline (job_task jlp)) task_request_bound_function tsk_hp (task_deadline (job_task jlp) - task_deadline tsk_hp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

job_task jlp \in ts
by apply H_all_jobs_from_taskset.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

task_deadline (job_task j) < task_deadline (job_task jlp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
cumulative_service_inversion arr_seq sched j t1 (t1 + δ) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ)) <= task_max_nonpreemptive_segment (job_task jlp) - 1 + \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline (job_task jlp)) task_request_bound_function tsk_hp (task_deadline (job_task jlp) - task_deadline tsk_hp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

task_deadline (job_task j) < task_deadline (job_task jlp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
LP': task_deadline (job_task jlp) <= task_deadline (job_task j)

hep_job jlp j
by rewrite /hep_job /EDF /job_deadline /job_deadline_from_task_deadline; lia.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

cumulative_service_inversion arr_seq sched j t1 (t1 + δ) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ)) <= task_max_nonpreemptive_segment (job_task jlp) - 1 + \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline (job_task jlp)) task_request_bound_function tsk_hp (task_deadline (job_task jlp) - task_deadline tsk_hp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

cumulative_service_inversion arr_seq sched j t1 (t1 + δ) <= task_max_nonpreemptive_segment (job_task jlp) - 1
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ) <= \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline (job_task jlp)) task_request_bound_function tsk_hp (task_deadline (job_task jlp) - task_deadline tsk_hp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

cumulative_service_inversion arr_seq sched j t1 (t1 + δ) <= task_max_nonpreemptive_segment (job_task jlp) - 1
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

job_max_nonpreemptive_segment jlp - 1 <= task_max_nonpreemptive_segment (job_task jlp) - 1
by rewrite leq_sub2r //; apply H_valid_model_with_bounded_nonpreemptive_segments.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + δ) + workload_of_job arr_seq j t1 (t1 + δ) <= \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline (job_task jlp)) task_request_bound_function tsk_hp (task_deadline (job_task jlp) - task_deadline tsk_hp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

workload_of_hep_jobs arr_seq j t1 (t1 + δ) <= \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline (job_task jlp)) task_request_bound_function tsk_hp (task_deadline (job_task jlp) - task_deadline tsk_hp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

workload_of_hep_jobs arr_seq j t1 (t1 + δ) <= workload_of_jobs (hep_job^~ jlp) (arrivals_between arr_seq t1 (t1 + δ))
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
workload_of_jobs (hep_job^~ jlp) (arrivals_between arr_seq t1 (t1 + δ)) <= \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline (job_task jlp)) task_request_bound_function tsk_hp (task_deadline (job_task jlp) - task_deadline tsk_hp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

workload_of_hep_jobs arr_seq j t1 (t1 + δ) <= workload_of_jobs (hep_job^~ jlp) (arrivals_between arr_seq t1 (t1 + δ))
Task: TaskType
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
j, jlp, jo: Job

~~ hep_job jlp j -> hep_job jo j -> hep_job jo jlp
by rewrite /hep_job /EDF /job_deadline /job_deadline_from_task_deadline; lia.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

workload_of_jobs (hep_job^~ jlp) (arrivals_between arr_seq t1 (t1 + δ)) <= \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline (job_task jlp)) task_request_bound_function tsk_hp (task_deadline (job_task jlp) - task_deadline tsk_hp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

\sum_(tsk_o <- undup ts | ?Q tsk_o) workload_of_jobs (fun j : Job => hep_job j jlp && (job_task j == tsk_o)) (arrivals_between arr_seq t1 (t1 + δ)) <= \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline (job_task jlp)) task_request_bound_function tsk_hp (task_deadline (job_task jlp) - task_deadline tsk_hp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
{in arrivals_between arr_seq t1 (t1 + δ), forall j : Job, job_task j \in undup ts}
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
{in arrivals_between arr_seq t1 (t1 + δ), forall j0 : Job, hep_job j0 jlp -> ?Q (job_task j0)}
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
uniq (arrivals_between arr_seq t1 (t1 + δ))
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
uniq (undup ts)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

\sum_(tsk_o <- undup ts | ?Q tsk_o) workload_of_jobs (fun j : Job => hep_job j jlp && (job_task j == tsk_o)) (arrivals_between arr_seq t1 (t1 + δ)) <= \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline (job_task jlp)) task_request_bound_function tsk_hp (task_deadline (job_task jlp) - task_deadline tsk_hp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

\sum_(x <- ts | ?Q x) (fun x0 : Task => workload_of_jobs (fun j : Job => hep_job j jlp && (job_task j == x0)) (arrivals_between arr_seq t1 (t1 + δ))) x <= \sum_(tsk_hp <- ts | task_deadline tsk_hp <= task_deadline (job_task jlp)) task_request_bound_function tsk_hp (task_deadline (job_task jlp) - task_deadline tsk_hp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
tsk_o: Task
INo: tsk_o \in ts
HEP: task_deadline tsk_o <= task_deadline (job_task jlp)

workload_of_jobs (fun j : Job => hep_job j jlp && (job_task j == tsk_o)) (arrivals_between arr_seq t1 (t1 + δ)) <= workload_of_jobs (fun j0 : Job => ?Goal3 j0 && (job_task j0 == tsk_o)) (arrivals_between arr_seq ?Goal4 (?Goal4 + (task_deadline (job_task jlp) - task_deadline tsk_o)))
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
tsk_o: Task
INo: tsk_o \in ts
HEP: task_deadline tsk_o <= task_deadline (job_task jlp)
A: δ <= task_deadline (job_task jlp) - task_deadline tsk_o

workload_of_jobs (fun j : Job => hep_job j jlp && (job_task j == tsk_o)) (arrivals_between arr_seq t1 (t1 + δ)) <= workload_of_jobs (fun j0 : Job => ?Goal3 j0 && (job_task j0 == tsk_o)) (arrivals_between arr_seq ?Goal4 (?Goal4 + (task_deadline (job_task jlp) - task_deadline tsk_o)))
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
tsk_o: Task
INo: tsk_o \in ts
HEP: task_deadline tsk_o <= task_deadline (job_task jlp)
B: task_deadline (job_task jlp) - task_deadline tsk_o < δ
workload_of_jobs (fun j : Job => hep_job j jlp && (job_task j == tsk_o)) (arrivals_between arr_seq t1 (t1 + δ)) <= workload_of_jobs (fun j0 : Job => ?Goal3 j0 && (job_task j0 == tsk_o)) (arrivals_between arr_seq ?Goal4 (?Goal4 + (task_deadline (job_task jlp) - task_deadline tsk_o)))
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
tsk_o: Task
INo: tsk_o \in ts
HEP: task_deadline tsk_o <= task_deadline (job_task jlp)
A: δ <= task_deadline (job_task jlp) - task_deadline tsk_o

workload_of_jobs (fun j : Job => hep_job j jlp && (job_task j == tsk_o)) (arrivals_between arr_seq t1 (t1 + δ)) <= workload_of_jobs (fun j0 : Job => ?Goal3 j0 && (job_task j0 == tsk_o)) (arrivals_between arr_seq ?Goal4 (?Goal4 + (task_deadline (job_task jlp) - task_deadline tsk_o)))
by apply workload_of_jobs_reduce_range; lia.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
tsk_o: Task
INo: tsk_o \in ts
HEP: task_deadline tsk_o <= task_deadline (job_task jlp)
B: task_deadline (job_task jlp) - task_deadline tsk_o < δ

workload_of_jobs (fun j : Job => hep_job j jlp && (job_task j == tsk_o)) (arrivals_between arr_seq t1 (t1 + δ)) <= workload_of_jobs (fun j : Job => (hep_job^~ jlp) j && (job_task j == tsk_o)) (arrivals_between arr_seq t1 (t1 + (task_deadline (job_task jlp) - task_deadline tsk_o)))
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
tsk_o: Task
INo: tsk_o \in ts
HEP: task_deadline tsk_o <= task_deadline (job_task jlp)
B: task_deadline (job_task jlp) - task_deadline tsk_o < δ

workload_of_jobs (fun j : Job => hep_job j jlp && (job_task j == tsk_o)) (arrivals_between arr_seq t1 (t1 + δ)) <= workload_of_jobs (fun j : Job => (hep_job^~ jlp) j && (job_task j == tsk_o)) (arrivals_between arr_seq t1 (t1 + (task_deadline (job_task jlp) - task_deadline tsk_o)))
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
tsk_o: Task
INo: tsk_o \in ts
HEP: task_deadline tsk_o <= task_deadline (job_task jlp)
B: task_deadline (job_task jlp) - task_deadline tsk_o < δ

workload_of_jobs (fun j : Job => hep_job j jlp && (job_task j == tsk_o)) (arrivals_between arr_seq t1 (t1 + δ)) = workload_of_jobs (fun j : Job => hep_job j jlp && (job_task j == tsk_o)) (arrivals_between arr_seq t1 (t1 + (task_deadline (job_task jlp) - task_deadline tsk_o)))
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
tsk_o: Task
INo: tsk_o \in ts
HEP: task_deadline tsk_o <= task_deadline (job_task jlp)
B: task_deadline (job_task jlp) - task_deadline tsk_o < δ
jo: Job
IN: jo \in arrivals_between arr_seq t1 (t1 + δ)
LE: t1 + (task_deadline (job_task jlp) - task_deadline tsk_o) <= job_arrival jo

~~ (hep_job jo jlp && (job_task jo == tsk_o))
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
tsk_o: Task
INo: tsk_o \in ts
HEP: task_deadline tsk_o <= task_deadline (job_task jlp)
B: task_deadline (job_task jlp) - task_deadline tsk_o < δ
jo: Job
IN: jo \in arrivals_between arr_seq t1 (t1 + δ)
LE: t1 + (task_deadline (job_task jlp) - task_deadline tsk_o) <= job_arrival jo
EQ: job_task jo = tsk_o

~~ (hep_job jo jlp && true)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
tsk_o: Task
INo: tsk_o \in ts
HEP: task_deadline tsk_o <= task_deadline (job_task jlp)
B: task_deadline (job_task jlp) - task_deadline tsk_o < δ
jo: Job
IN: jo \in arrivals_between arr_seq t1 (t1 + δ)
LE: t1 + (task_deadline (job_task jlp) - task_deadline tsk_o) <= job_arrival jo
EQ: job_task jo = tsk_o

job_arrival jlp + task_deadline (job_task jlp) < job_arrival jo + task_deadline (job_task jo)
by subst tsk_o; rewrite /hep_job /EDF /job_deadline /job_deadline_from_task_deadline in LP; lia. }
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

{in arrivals_between arr_seq t1 (t1 + δ), forall j : Job, job_task j \in undup ts}
by move=> jo IN; rewrite in_seq_equiv_undup; apply: H_all_jobs_from_taskset; apply: in_arrivals_implies_arrived.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

{in arrivals_between arr_seq t1 (t1 + δ), forall j : Job, hep_job j jlp -> (fun i : Task => task_deadline i <= task_deadline (job_task jlp)) (job_task j)}
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
jo: Job
IN: jo \in arrivals_between arr_seq t1 (t1 + δ)

hep_job jo jlp -> task_deadline (job_task jo) <= task_deadline (job_task jlp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
jo: Job
IN: jo \in arrivals_between arr_seq t1 (t1 + δ)
ARRjo: t1 <= job_arrival jo

hep_job jo jlp -> task_deadline (job_task jo) <= task_deadline (job_task jlp)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched
jo: Job
IN: jo \in arrivals_between arr_seq t1 (t1 + δ)
ARRjo: t1 <= job_arrival jo
LEQ: task_deadline (job_task jlp) < task_deadline (job_task jo)

job_deadline jlp < job_deadline jo
by rewrite /job_deadline /job_deadline_from_task_deadline; lia.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

uniq (arrivals_between arr_seq t1 (t1 + δ))
by apply arrivals_uniq.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
j: Job
H_tsk_in_ts: job_task j \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched (job_task j) SBF
H_unit_SBF: unit_supply_bound_function SBF
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task (job_task j) j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_prefix: busy_interval_prefix arr_seq sched j t1 t2
δ: duration
H_interval_in_busy_prefix: t1 + δ <= t2
H_positive_service_inversion: exists jlp : Job, job_arrival jlp < t1 /\ ~~ hep_job jlp j /\ cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
PP: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + δ)
jlp: Job
ARR: job_arrival jlp < t1
LP: ~~ hep_job jlp j
EQs: cumulative_service_inversion arr_seq sched j t1 (t1 + δ) = service_during sched jlp t1 (t1 + δ)
ARRj: t1 <= job_arrival j
t_sched: nat
SCHEDjlp: scheduled_at sched jlp t_sched

uniq (undup ts)
by apply undup_uniq. Qed. End LongestBusyIntervalWithPIIsValid. (** We introduce the main assumption of this section. Let [L] be any positive constant that satisfies two properties. *) Variable L : duration. Hypothesis H_L_positive : L > 0. (** First, we assume that [SBF L] bounds [longest_busy_interval_with_pi ts tsk]. As discussed, when a busy interval starts with service inversion, one can upper-bound the total interfering workload that a job under analysis incurs via [longest_busy_interval_with_pi ts tsk]. The time to consume this workload is [SBF L]. *) Hypothesis H_L_bounds_bi_with_pi : longest_busy_interval_with_pi ts tsk <= SBF L. (** And second, we assume that [total_RBF L <= SBF L]. When there is no service inversion at the beginning of a busy interval, one can show that there is no carry-in workload (including the lower-priority workload). This allows us to bound interfering workload within a busy interval with [total_RBF L] without adding an extra [+ blocking_bound] as in the case of the general JLFP bound. *) Hypothesis H_fixed_point : total_request_bound_function ts L <= SBF L. (** In the following, we prove busy-interval boundedness via a case analysis on two cases: (1) when the busy-interval prefix is at least [L] time units long and (2) when the busy interval prefix terminates earlier. In either case, we can show that the busy-interval prefix is bounded. *) Section StepByStepProof. (** Consider any job [j] of task [tsk] that has a positive job cost and is in the arrival sequence. *) Variable j : Job. Hypothesis H_j_arrives : arrives_in arr_seq j. Hypothesis H_job_of_tsk : job_of_task tsk j. Hypothesis H_job_cost_positive : job_cost_positive j. (** As a preparation step, we show that [L] bounds the relative arrival time of job [j]. *) Section RelativeArrivalIsBounded. (** Consider a time instant [t1] such that <<[t1, job_arrival j]>> is a busy-interval prefix of [j]. *) Variable t1 : instant. Hypothesis H_arrives : t1 <= job_arrival j. Hypothesis H_busy_prefix_arr : busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1. (** From the properties of the workload (defined by hypotheses [H_L_bounds_bi_with_pi] and [H_fixed_point]), we show that [j]'s arrival time is necessarily less than [t1 + L]. *)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1

job_arrival j < t1 + L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1

job_arrival j < t1 + L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j

False
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIX, PREFIXA: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1

False
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
PREFIXA: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

False
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

False
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIX: L < workload_of_job arr_seq j t1 (t1 + L) + cumulative_interfering_workload j t1 (t1 + L)
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

False
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

workload_of_job arr_seq j t1 (t1 + L) + cumulative_interfering_workload j t1 (t1 + L) <= L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

workload_of_job arr_seq j t1 (t1 + L) + (blackout_during sched t1 (t1 + L) + cumulative_service_inversion arr_seq sched j t1 (t1 + L) + cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L)) <= L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

workload_of_job arr_seq j t1 (t1 + L) + (L - SBF L + cumulative_service_inversion arr_seq sched j t1 (t1 + L) + cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L)) <= L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

L - SBF L + (cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L))) <= L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
E: forall a b c : nat, a <= c -> b <= c - a -> a + b <= c

L - SBF L + (cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L))) <= L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= L - (L - SBF L)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= SBF L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
ZERO: cumulative_service_inversion arr_seq sched j t1 (t1 + L) = 0

cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= SBF L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
POS: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + L)
cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= SBF L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
ZERO: cumulative_service_inversion arr_seq sched j t1 (t1 + L) = 0

cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= SBF L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
ZERO: cumulative_service_inversion arr_seq sched j t1 (t1 + L) = 0

cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L) <= total_request_bound_function ts L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
ZERO: cumulative_service_inversion arr_seq sched j t1 (t1 + L) = 0

workload_of_hep_jobs arr_seq j t1 (t1 + L) <= total_request_bound_function ts L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
ZERO: cumulative_service_inversion arr_seq sched j t1 (t1 + L) = 0
DD: forall (t : TaskType) (t0 : TaskCost t) (j : JobType) (j0 : JobTask j t) (j1 : JobCost j) (j2 : JLFP_policy j) (arr_seq : arrival_sequence j) (ts : seq t), arrivals_have_valid_job_costs arr_seq -> all_jobs_from_taskset arr_seq ts -> forall H4 : MaxArrivals t, taskset_respects_max_arrivals arr_seq ts -> forall (t1 : instant) (Δ : duration) (j3 : j), workload_of_hep_jobs arr_seq j3 t1 (t1 + Δ) <= total_request_bound_function ts Δ

workload_of_hep_jobs arr_seq j t1 (t1 + L) <= total_request_bound_function ts L
by apply hep_workload_le_total_rbf.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
POS: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + L)

cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= SBF L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
POS: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + L)

cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= SBF L
by rewrite -(leqRW H_L_bounds_bi_with_pi); apply: longest_bi_with_pi_bound_is_valid. } Qed. End RelativeArrivalIsBounded. (** We start with the first case, where the busy-interval prefix continues until time instant [t1 + L]. *) Section Case1. (** Consider a time instant [t1] such that <<[t1, job_arrival j]>> and <<[t1, t1 + L)>> are both busy-interval prefixes of job [j]. *) Variable t1 : instant. Hypothesis H_busy_prefix_arr : busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1. Hypothesis H_busy_prefix_L : busy_interval_prefix arr_seq sched j t1 (t1 + L). (** The crucial point to note is that the sum of the job's cost (represented as [workload_of_job]) and the interfering workload in the interval <<[t1, t1 + L)>> is bounded by [L] due to hypotheses [H_L_bounds_bi_with_pi] and [H_fixed_point]. *)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)

workload_of_job arr_seq j t1 (t1 + L) + cumulative_interfering_workload j t1 (t1 + L) <= L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)

workload_of_job arr_seq j t1 (t1 + L) + cumulative_interfering_workload j t1 (t1 + L) <= L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)

workload_of_job arr_seq j t1 (t1 + L) + (blackout_during sched t1 (t1 + L) + cumulative_service_inversion arr_seq sched j t1 (t1 + L) + cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L)) <= L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)

workload_of_job arr_seq j t1 (t1 + L) + (L - SBF L + cumulative_service_inversion arr_seq sched j t1 (t1 + L) + cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L)) <= L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)

L - SBF L + (cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L))) <= L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
E: forall a b c : nat, a <= c -> b <= c - a -> a + b <= c

L - SBF L + (cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L))) <= L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)

cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= L - (L - SBF L)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)

cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= SBF L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
ZERO: cumulative_service_inversion arr_seq sched j t1 (t1 + L) = 0

cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= SBF L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
POS: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + L)
cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= SBF L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
ZERO: cumulative_service_inversion arr_seq sched j t1 (t1 + L) = 0

cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= SBF L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
ZERO: cumulative_service_inversion arr_seq sched j t1 (t1 + L) = 0

cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L) <= total_request_bound_function ts L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
ZERO: cumulative_service_inversion arr_seq sched j t1 (t1 + L) = 0

workload_of_hep_jobs arr_seq j t1 (t1 + L) <= total_request_bound_function ts L
by apply hep_workload_le_total_rbf => //; move: (H_busy_prefix_arr) => [LE _]; rewrite -ltnS.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
POS: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + L)

cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= SBF L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
POS: 0 < cumulative_service_inversion arr_seq sched j t1 (t1 + L)

cumulative_service_inversion arr_seq sched j t1 (t1 + L) + (cumulative_other_hep_jobs_interfering_workload arr_seq j t1 (t1 + L) + workload_of_job arr_seq j t1 (t1 + L)) <= SBF L
by rewrite -(leqRW H_L_bounds_bi_with_pi); apply: longest_bi_with_pi_bound_is_valid => //; move: (H_busy_prefix_arr) => [LE _]; rewrite -ltnS. } Qed. (** It follows that [t1 + L] is a quiet time, which means that the busy prefix ends (i.e., it is bounded). *)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)
BUSY: exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)
exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)
BUSY: exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)
BUSY: exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2
t2: nat
LE1: job_arrival j < t2
LE2: t2 <= t1 + L
BUSY2: definitions.busy_interval sched j t1 t2

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)
BUSY: exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2
t2: nat
LE1: job_arrival j < t2
LE2: t2 <= t1 + L
BUSY2: definitions.busy_interval sched j t1 t2

t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)
BUSY: exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2
t2: nat
LE1: job_arrival j < t2
LE2: t2 <= t1 + L
BUSY2: definitions.busy_interval sched j t1 t2

busy_interval arr_seq sched j t1 t2
by apply instantiated_busy_interval_equivalent_busy_interval.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)

no_speculative_execution
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)
definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)
workload_of_job arr_seq j t1 (t1 + L) + cumulative_interfering_workload j t1 (t1 + L) <= L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)

no_speculative_execution
by eapply instantiated_i_and_w_no_speculative_execution; eauto 2 => //.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)

definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
by apply instantiated_busy_interval_prefix_equivalent_busy_interval_prefix => //.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_busy_prefix_L: busy_interval_prefix arr_seq sched j t1 (t1 + L)
PEND: pending sched j (job_arrival j)

workload_of_job arr_seq j t1 (t1 + L) + cumulative_interfering_workload j t1 (t1 + L) <= L
by apply workload_is_bounded => //. Qed. End Case1. (** Next, we consider the case when the interval <<[t1, t1 + L)>> is not a busy-interval prefix. *) Section Case2. (** Consider a time instant [t1] such that <<[t1, job_arrival j]>> is a busy-interval prefix of [j] and <<[t1, t1 + L)>> is _not_. *) Variable t1 : instant. Hypothesis H_arrives : t1 <= job_arrival j. Hypothesis H_busy_prefix_arr : busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1. Hypothesis H_no_busy_prefix_L : ~ busy_interval_prefix arr_seq sched j t1 (t1 + L). (** Lemma [job_arrival_is_bounded] implies that the busy-interval prefix starts at time [t1], continues until [job_arrival j + 1], and then terminates before [t1 + L]. Or, in other words, there is point in time [t2] such that (1) [j]'s arrival is bounded by [t2], (2) [t2] is bounded by [t1 + L], and (3) <<[t1, t2)>> is busy interval of job [j]. *)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
BUSY: job_cost_positive j -> forall n : nat, job_arrival j < n -> ~ definitions.busy_interval_prefix sched j t1 n -> exists t2'' : instant, definitions.busy_interval sched j t1 t2''

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)

~ definitions.busy_interval_prefix sched j t1 (t1 + L)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
t2: instant
BUS: definitions.busy_interval sched j t1 t2
exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)

~ definitions.busy_interval_prefix sched j t1 (t1 + L)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
T: definitions.busy_interval_prefix sched j t1 (t1 + L)

busy_interval_prefix arr_seq sched j t1 (t1 + L)
by apply instantiated_busy_interval_prefix_equivalent_busy_interval_prefix in T => //.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
t2: instant
BUS: definitions.busy_interval sched j t1 t2

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
t2: instant
BUS: definitions.busy_interval sched j t1 t2

job_arrival j < t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
t2: instant
BUS: definitions.busy_interval sched j t1 t2
t2 <= t1 + L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
t2: instant
BUS: definitions.busy_interval sched j t1 t2
busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
t2: instant
BUS: definitions.busy_interval sched j t1 t2

job_arrival j < t2
move: BUS => [[A _] _]; lia.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
t2: instant
BUS: definitions.busy_interval sched j t1 t2

t2 <= t1 + L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
t2: instant
BUS: definitions.busy_interval sched j t1 t2
busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
t2: instant
BUS: definitions.busy_interval sched j t1 t2

t2 <= t1 + L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
t2: instant
BUS: definitions.busy_interval sched j t1 t2
FA: t1 + L < t2

False
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
t2: instant
BUS: definitions.busy_interval sched j t1 t2
FA: t1 + L < t2

(forall t : nat, t1 < t < t1 + L -> ~ quiet_time arr_seq sched j t) /\ t1 <= job_arrival j < t1 + L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
t2: instant
BUS: definitions.busy_interval sched j t1 t2
FA: t1 + L < t2

forall t : nat, t1 < t < t1 + L -> ~ quiet_time arr_seq sched j t
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
t2: instant
BUS: definitions.busy_interval sched j t1 t2
FA: t1 + L < t2
t1 <= job_arrival j < t1 + L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
t2: instant
BUS: definitions.busy_interval sched j t1 t2
FA: t1 + L < t2

forall t : nat, t1 < t < t1 + L -> ~ quiet_time arr_seq sched j t
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
t2: instant
BUS: definitions.busy_interval sched j t1 t2
FA: t1 + L < t2
t: nat
NEQ: t1 < t < t1 + L

~ quiet_time arr_seq sched j t
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
t2: instant
BUS: busy_interval_prefix arr_seq sched j t1 t2
FA: t1 + L < t2
t: nat
NEQ: t1 < t < t1 + L

~ quiet_time arr_seq sched j t
by apply BUS; lia.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
t2: instant
BUS: definitions.busy_interval sched j t1 t2
FA: t1 + L < t2

t1 <= job_arrival j < t1 + L
lia.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
t2: instant
BUS: definitions.busy_interval sched j t1 t2

busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1: instant
H_arrives: t1 <= job_arrival j
H_busy_prefix_arr: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
H_no_busy_prefix_L: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
LE: job_arrival j < t1 + L
PREFIX: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
NOPREF: ~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
t2: instant
BUS: definitions.busy_interval sched j t1 t2

busy_interval arr_seq sched j t1 t2
by apply instantiated_busy_interval_equivalent_busy_interval => //. } Qed. End Case2. End StepByStepProof. (** Combining the cases analyzed above, we conclude that busy intervals of jobs released by task [tsk] are bounded by [L]. *)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L

busy_intervals_are_bounded_by arr_seq sched tsk L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L

busy_intervals_are_bounded_by arr_seq sched tsk L
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j

exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)

exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1

exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1

exists t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
BUSY: exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2

exists t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
BUSY: exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2

exists t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + L /\ definitions.busy_interval sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
t2: nat
LT: job_arrival j < t2
LE: t2 <= t1 + L
BUSY: busy_interval arr_seq sched j t1 t2

?t2 <= t1 + L /\ definitions.busy_interval sched j t1 ?t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
t2: nat
LT: job_arrival j < t2
LE: t2 <= t1 + L
BUSY: busy_interval arr_seq sched j t1 t2
t1 <= job_arrival j < ?t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
t2: nat
LT: job_arrival j < t2
LE: t2 <= t1 + L
BUSY: busy_interval arr_seq sched j t1 t2

?t2 <= t1 + L /\ definitions.busy_interval sched j t1 ?t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
t2: nat
LT: job_arrival j < t2
LE: t2 <= t1 + L
BUSY: busy_interval arr_seq sched j t1 t2

definitions.busy_interval sched j t1 t2
by apply instantiated_busy_interval_equivalent_busy_interval.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
t2: nat
LT: job_arrival j < t2
LE: t2 <= t1 + L
BUSY: busy_interval arr_seq sched j t1 t2

t1 <= job_arrival j < t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
t2: nat
LT: job_arrival j < t2
LE: t2 <= t1 + L
BUSY: busy_interval arr_seq sched j t1 t2

t1 <= job_arrival j < t2
by apply/andP; split. }
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
LPREF: definitions.busy_interval_prefix sched j t1 (t1 + L)

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
NOPREF: ~ definitions.busy_interval_prefix sched j t1 (t1 + L)
exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
LPREF: definitions.busy_interval_prefix sched j t1 (t1 + L)

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
LPREF: definitions.busy_interval_prefix sched j t1 (t1 + L)

busy_interval_prefix arr_seq sched j t1 (t1 + L)
by apply instantiated_busy_interval_prefix_equivalent_busy_interval_prefix => //.
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
NOPREF: ~ definitions.busy_interval_prefix sched j t1 (t1 + L)

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
NOPREF: ~ definitions.busy_interval_prefix sched j t1 (t1 + L)

exists t2 : nat, job_arrival j < t2 /\ t2 <= t1 + L /\ busy_interval arr_seq sched j t1 t2
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
NOPREF: ~ definitions.busy_interval_prefix sched j t1 (t1 + L)

~ busy_interval_prefix arr_seq sched j t1 (t1 + L)
Task: TaskType
H: TaskCost Task
H0: TaskDeadline Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
D:= [eta task_deadline]: Task -> duration
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
arr_seq: arrival_sequence Job
H_valid_arrival_sequence: valid_arrival_sequence arr_seq
sched: schedule PState
JobReady0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H4: JobPreemptable Job
H5: TaskMaxNonpreemptiveSegment Task
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched (EDF Job)
H_work_conserving: definitions.work_conserving arr_seq sched
ts: seq Task
H_all_jobs_from_taskset: all_jobs_from_taskset arr_seq ts
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
H6: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
tsk: Task
H_tsk_in_ts: tsk \in ts
SBF: SupplyBoundFunction
H_valid_SBF: valid_busy_sbf arr_seq sched tsk SBF
H_unit_SBF: unit_supply_bound_function SBF
L: duration
H_L_positive: 0 < L
H_L_bounds_bi_with_pi: longest_busy_interval_with_pi ts tsk <= SBF L
H_fixed_point: total_request_bound_function ts L <= SBF L
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
POS: 0 < job_cost j
PEND: pending sched j (job_arrival j)
t1: nat
GE: t1 <= job_arrival j
PREFIX: busy_interval_prefix arr_seq sched j t1 (job_arrival j).+1
NP: busy_interval_prefix arr_seq sched j t1 (t1 + L)

definitions.busy_interval_prefix sched j t1 (t1 + L)
by apply instantiated_busy_interval_prefix_equivalent_busy_interval_prefix => //. } } Qed. End BoundedBusyIntervals.