Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.0. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use instead of Ctrl.
[Loading ML file ssrmatching_plugin.cmxs (using legacy method) ... done]
[Loading ML file ssreflect_plugin.cmxs (using legacy method) ... done]
[Loading ML file ring_plugin.cmxs (using legacy method) ... done]
[Loading ML file coq-elpi.elpi ... done]
[Loading ML file zify_plugin.cmxs (using legacy method) ... done]
[Loading ML file micromega_plugin.cmxs (using legacy method) ... done]
[Loading ML file btauto_plugin.cmxs (using legacy method) ... done]
Notation "_ + _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ - _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ <= _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ < _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ >= _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ > _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ <= _ <= _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ < _ <= _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ <= _ < _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ < _ < _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ * _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Require Export prosa.analysis.abstract.restricted_supply.iw_instantiation. Require Export prosa.analysis.abstract.restricted_supply.bounded_bi.aux. Require Export prosa.analysis.facts.busy_interval.carry_in. Require Export prosa.analysis.definitions.sbf.busy. (** * Sufficient Condition for Bounded Busy Intervals for RS JLFP *) (** In this section, we show that the existence of [L] such that [B + total_rbf L <= SBF L], where where [B] is the blocking bound and [SBF] is a supply-bound function, is a sufficient condition for the existence of bounded busy intervals under JLFP scheduling with a restricted-supply processor model. Note that this is not the tightest bound, but it can be useful in case the blocking bound is small or zero. *) Section BoundedBusyIntervals. (** Consider any type of tasks ... *) Context {Task : TaskType}. Context `{TaskCost Task}. (** ... and any type of jobs associated with these tasks. *) Context {Job : JobType}. Context `{JobTask Job Task}. Context `{JobArrival Job}. Context `{JobCost Job}. (** Consider any kind of fully supply-consuming unit-supply uniprocessor model. *) Context `{PState : ProcessorState Job}. Hypothesis H_uniprocessor_proc_model : uniprocessor_model PState. Hypothesis H_unit_supply_proc_model : unit_supply_proc_model PState. Hypothesis H_consumed_supply_proc_model : fully_consuming_proc_model PState. (** Consider a JLFP policy that indicates a higher-or-equal priority relation, and assume that the relation is reflexive and transitive. *) Context {JLFP : JLFP_policy Job}. Hypothesis H_priority_is_reflexive : reflexive_job_priorities JLFP. Hypothesis H_priority_is_transitive : transitive_job_priorities JLFP. (** 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, we assume that the schedule is work-conserving ... *) Hypothesis H_work_conserving : work_conserving arr_seq sched. (** ... and that it respects the scheduling policy. *) Hypothesis H_respects_policy : respects_JLFP_policy_at_preemption_point arr_seq sched JLFP. (** 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. (** Consider an arbitrary task set [ts], ... *) Variable ts : list 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_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. (** Let [blocking_bound] be a function that bounds the priority inversion caused by lower-priority jobs, where the argument [blocking_bound] takes is the relative offset (w.r.t. the beginning of the corresponding busy interval) of a job to be analyzed. *) Variable blocking_bound : (* A *) duration -> duration. (** Assume that the service inversion is bounded by the blocking bound, ... *) Hypothesis H_service_inversion_bounded : service_inversion_is_bounded_by arr_seq sched tsk blocking_bound. (** ... and that [blocking_bound] reaches its maximum at [0]. *) Hypothesis H_blocking_bound_max : forall A, blocking_bound 0 >= blocking_bound A. (** Let [L] be any positive fixed point of busy-interval recurrence [blocking_bound 0 + total_rbf ts L <= SBF L]. *) Variable L : duration. Hypothesis H_L_positive : 0 < L. Hypothesis H_fixed_point : blocking_bound 0 + total_request_bound_function ts L <= SBF L. (** Next, we provide a step-by-step proof of busy-interval boundedness. *) 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. (** We consider two cases: (1) when the busy-interval prefix continues until time instant [t1 + L] and (2) when the busy interval prefix terminates earlier. In either case, we can show that the busy-interval prefix is bounded. *) (** 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]. Note that at this point we do not necessarily know that [job_arrival j <= L]; hence, in this section (only), we assume the existence of both prefixes. *) 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 the fixed point [H_fixed_point]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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) <= blocking_bound 0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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_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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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) <= blocking_bound 0
by rewrite (leqRW (H_service_inversion_bounded _ _ _ _ _ _ _)) //=.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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_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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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_hep_jobs arr_seq j t1 (t1 + L) <= total_request_bound_function ts L
by apply hep_workload_le_total_rbf. 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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.work_conserving arr_seq sched
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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.work_conserving arr_seq sched
by eapply instantiated_i_and_w_are_coherent_with_schedule; eauto 2 => //.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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). (** From the properties of busy intervals, one can conclude that [j]'s arrival time is less than [t1 + L]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)

job_arrival j < t1 + L
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)

job_arrival j < t1 + L
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
FF: t1 + L <= job_arrival j

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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) <= blocking_bound 0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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) <= blocking_bound 0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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 ?Goal0 (job_arrival j).+1 <= blocking_bound 0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
?Goal0 <= t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1
t1 + L <= (job_arrival j).+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
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 ?Goal0 (job_arrival j).+1 <= blocking_bound 0
by rewrite (leqRW (H_service_inversion_bounded _ _ _ _ _ _ _)) //=.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

t1 <= t1
by done.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

t1 + L <= (job_arrival j).+1
by lia.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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)
FF: t1 + L <= job_arrival j
PREFIXA, GTC: definitions.busy_interval_prefix sched j t1 (job_arrival j).+1

workload_of_hep_jobs arr_seq j t1 (t1 + L) <= total_request_bound_function ts L
by apply hep_workload_le_total_rbf. } } Qed. (** 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
by move: BUS => [[A _] _]; lia.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
by lia.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + total_request_bound_function ts L <= SBF L

busy_intervals_are_bounded_by arr_seq sched tsk L
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + total_request_bound_function ts L <= SBF L

busy_intervals_are_bounded_by arr_seq sched tsk L
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_uniprocessor_proc_model: uniprocessor_model PState
H_unit_supply_proc_model: unit_supply_proc_model PState
H_consumed_supply_proc_model: fully_consuming_proc_model PState
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
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
H3: JobPreemptable Job
H4: 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_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
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
H5: MaxArrivals Task
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
blocking_bound: duration -> duration
H_service_inversion_bounded: service_inversion_is_bounded_by arr_seq sched tsk blocking_bound
H_blocking_bound_max: forall A : duration, blocking_bound A <= blocking_bound 0
L: duration
H_L_positive: 0 < L
H_fixed_point: blocking_bound 0 + 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.