Built with Alectryon, running Coq+SerAPI v8.17.0+0.17.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.
Notation "[ predI _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predU _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predD _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predC _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ preim _ of _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "_ + _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ - _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ >= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ > _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ * _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "[ predI _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predU _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predD _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predC _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ preim _ of _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predI _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predU _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predD _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predC _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ preim _ of _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
(** Throughout this file, we assume ideal uni-processor schedules. *)
Notation "[ predI _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predU _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predD _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predC _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ preim _ of _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predI _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predU _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predD _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predC _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ preim _ of _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predI _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predU _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predD _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predC _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ preim _ of _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predI _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predU _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predD _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ predC _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ preim _ of _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
(** * Priority inversion is bounded *) (** In this file, we prove that any priority inversion that occurs in the model with bounded nonpreemptive segments is bounded. *) Section PriorityInversionIsBounded. (** 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 `{Arrival : JobArrival Job}. Context `{Cost : JobCost Job}. (** Consider any arrival sequence with consistent arrivals ... *) Variable arr_seq : arrival_sequence Job. Hypothesis H_valid_arrivals : valid_arrival_sequence arr_seq. (** ... and any ideal uniprocessor schedule of this arrival sequence. *) Variable sched : schedule (ideal.processor_state Job). (** 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 a valid preemption model with known maximum non-preemptive segment lengths. *) Context `{TaskMaxNonpreemptiveSegment Task} `{JobPreemptable Job}. Hypothesis H_valid_preemption_model : valid_preemption_model arr_seq sched. (** Further, allow for any work-bearing notion of job readiness. *) Context `{@JobReady Job (ideal.processor_state Job) Cost Arrival}. Hypothesis H_job_ready : work_bearing_readiness arr_seq sched. (** We assume that the schedule is valid. *) Hypothesis H_sched_valid : valid_schedule sched arr_seq. (** Next, we assume that the schedule is a work-conserving schedule... *) Hypothesis H_work_conserving : work_conserving arr_seq sched. (** ... and the schedule respects the scheduling policy at every preemption point. *) Hypothesis H_respects_policy : respects_JLFP_policy_at_preemption_point arr_seq sched JLFP. (** Finally, we introduce the notion of the maximal length of (potential) priority inversion at a time instant [t], which is defined as the maximum length of nonpreemptive segments among all jobs that arrived so far. *) Definition max_length_of_priority_inversion (j : Job) (t : instant) := \max_(j_lp <- arrivals_before arr_seq t | (~~ hep_job j_lp j) && (job_cost j_lp > 0)) (job_max_nonpreemptive_segment j_lp - ε). (** Next we prove that a priority inversion of a job is bounded by function [max_length_of_priority_inversion]. *) (** Note that any bound on function [max_length_of_priority_inversion] will also be a bound on the maximal priority inversion. This bound may be different for different scheduler and/or task models. Thus, we don't define such a bound in this module. *) (** Consider any job [j] of [tsk] with positive job cost. *) Variable j : Job. Hypothesis H_j_arrives : arrives_in arr_seq j. Hypothesis H_job_cost_positive : job_cost_positive j. (** Consider any busy interval prefix <<[t1, t2)>> of job j. *) Variable t1 t2 : instant. Hypothesis H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2. (** * Processor Executes HEP jobs after Preemption Point *) (** In this section, we prove that at any time instant after any preemption point (inside the busy interval), the processor is always busy scheduling a job with higher or equal priority. *) Section PreemptionTimeAndPriorityInversion. (** First, recall from file [busy_interval/ideal/hep_job_scheduled] we already know that the processor at any preemptive point is always busy scheduling a job with higher or equal priority. *) (** We show that at any time instant after a preemption point the processor is always busy with a job with higher or equal priority. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2

forall (tp : instant) (t : nat), preemption_time arr_seq sched tp -> t1 <= tp < t2 -> tp <= t < t2 -> exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2

forall (tp : instant) (t : nat), preemption_time arr_seq sched tp -> t1 <= tp < t2 -> tp <= t < t2 -> exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2

exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
Idle: ideal_is_idle sched t

exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
Idle: ideal_is_idle sched t

exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
Idle: ideal_is_idle sched t

t1 <= t < t2
by apply/andP; split; first apply leq_trans with tp.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t

exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t

arrived_between jhp t1 t.+1 /\ hep_job jhp j /\ scheduled_at sched jhp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j
arrived_between jhp t1 t.+1 /\ hep_job jhp j /\ scheduled_at sched jhp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
PP: uniprocessor_model (processor_state Job) -> exists pt : nat, job_arrival jhp <= pt <= t /\ preemption_time arr_seq sched pt /\ (forall t' : nat, pt <= t' <= t -> scheduled_at sched jhp t')

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
PP: exists pt : nat, job_arrival jhp <= pt <= t /\ preemption_time arr_seq sched pt /\ (forall t' : nat, pt <= t' <= t -> scheduled_at sched jhp t')

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: (t1 <= prt) = true

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: (t1 <= prt) = false
hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: (t1 <= prt) = true

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: (t1 <= prt) = false
hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: t1 <= prt

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: (t1 <= prt) = false
hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: t1 <= prt

t1 <= prt < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: t1 <= prt
jlp: Job
HEP: hep_job jlp j
SCHEDjhp: scheduled_at sched jlp prt
hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: (t1 <= prt) = false
hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: t1 <= prt

t1 <= prt < t2
by apply /andP; split; last by apply leq_ltn_trans with t.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: t1 <= prt
jlp: Job
HEP: hep_job jlp j
SCHEDjhp: scheduled_at sched jlp prt

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: (t1 <= prt) = false
hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: t1 <= prt
jlp: Job
HEP: hep_job jlp j
SCHEDjhp: scheduled_at sched jlp prt

jhp = jlp
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: (t1 <= prt) = false
hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: (t1 <= prt) = false

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: (t1 <= prt) = false

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jhp t'
E: prt < t1

hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jlp: Job
Sched_jhp: scheduled_at sched jlp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jlp t'
E: prt < t1
LP: ~~ hep_job jlp j

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jlp: Job
Sched_jhp: scheduled_at sched jlp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jlp t'
E: prt < t1
LP: ~~ hep_job jlp j
jhp: Job
HEP: hep_job jhp j
SCHEDjhp: scheduled_at sched jhp tp

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jlp: Job
Sched_jhp: scheduled_at sched jlp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jlp t'
E: prt < t1
jhp: Job
HEP: hep_job jhp j
SCHEDjhp: scheduled_at sched jhp tp

hep_job jlp j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jlp: Job
Sched_jhp: scheduled_at sched jlp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jlp t'
E: prt < t1
jhp: Job
HEP: hep_job jhp j
SCHEDjhp: scheduled_at sched jhp tp

jhp = jlp
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jlp: Job
Sched_jhp: scheduled_at sched jlp t
prt: nat
LE: prt <= t
PR: preemption_time arr_seq sched prt
SCH: forall t' : nat, prt <= t' <= t -> scheduled_at sched jlp t'
E: prt < t1
jhp: Job
HEP: hep_job jhp j
SCHEDjhp: scheduled_at sched jhp tp

scheduled_at sched jlp tp
by apply SCH; apply/andP; split; first apply leq_trans with t1; auto.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j

arrived_between jhp t1 t.+1 /\ hep_job jhp j /\ scheduled_at sched jhp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j

arrived_between jhp t1 t.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j
SL: t1 < t2
QUIET: quiet_time arr_seq sched j t1
NOTQUIET: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
EXj: t1 <= job_arrival j < t2
PENDING: scheduled_at sched jhp t

arrived_between jhp t1 t.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j
SL: t1 < t2
QUIET: quiet_time arr_seq sched j t1
NOTQUIET: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
EXj: t1 <= job_arrival j < t2
PENDING: pending sched jhp t

arrived_between jhp t1 t.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j
SL: t1 < t2
QUIET: quiet_time arr_seq sched j t1
NOTQUIET: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
EXj: t1 <= job_arrival j < t2
PENDING: pending sched jhp t

t1 <= job_arrival jhp
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j
SL: t1 < t2
QUIET: quiet_time arr_seq sched j t1
NOTQUIET: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
EXj: t1 <= job_arrival j < t2
PENDING: pending sched jhp t
LT: job_arrival jhp < t1

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j
SL: t1 < t2
QUIET: hep_job jhp j -> arrived_before jhp t1 -> completed_by sched jhp t1
NOTQUIET: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
EXj: t1 <= job_arrival j < t2
PENDING: pending sched jhp t
LT: job_arrival jhp < t1

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j
SL: t1 < t2
QUIET: completed_by sched jhp t1
NOTQUIET: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
EXj: t1 <= job_arrival j < t2
PENDING: pending sched jhp t
LT: job_arrival jhp < t1

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j
SL: t1 < t2
QUIET: completed_by sched jhp t1
NOTQUIET: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
EXj: t1 <= job_arrival j < t2
PENDING: pending sched jhp t
LT: job_arrival jhp < t1

completed_by sched jhp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j
SL: t1 < t2
QUIET: completed_by sched jhp t1
NOTQUIET: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
EXj: t1 <= job_arrival j < t2
PENDING: pending sched jhp t
LT: job_arrival jhp < t1
COMP: completed_by sched jhp t
False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j
SL: t1 < t2
QUIET: completed_by sched jhp t1
NOTQUIET: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
EXj: t1 <= job_arrival j < t2
PENDING: pending sched jhp t
LT: job_arrival jhp < t1

completed_by sched jhp t
apply: completion_monotonic QUIET; exact: leq_trans LEtp.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j
SL: t1 < t2
QUIET: completed_by sched jhp t1
NOTQUIET: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
EXj: t1 <= job_arrival j < t2
PENDING: pending sched jhp t
LT: job_arrival jhp < t1
COMP: completed_by sched jhp t

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
tp: instant
t: nat
PRPOINT: preemption_time arr_seq sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
HP: hep_job jhp j
SL: t1 < t2
QUIET: completed_by sched jhp t1
NOTQUIET: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
EXj: t1 <= job_arrival j < t2
PENDING: pending sched jhp t
LT: job_arrival jhp < t1
COMP: ~~ scheduled_at sched jhp t

False
by move : COMP => /negP COMP; apply : COMP. Qed. (** Now, suppose there exists some constant K that bounds the distance to a preemption time from the beginning of the busy interval. *) Variable K : duration. Hypothesis H_preemption_time_exists : exists pr_t, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K. (** Then we prove that the processor is always busy with a job with higher-or-equal priority after time instant [t1 + K]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K

forall t : nat, t1 + K <= t < t2 -> exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K

forall t : nat, t1 + K <= t < t2 -> exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2

exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time arr_seq sched prt
GEprt: t1 <= prt
LEprt: prt <= t1 + K

exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time arr_seq sched prt
GEprt: t1 <= prt
LEprt: prt <= t1 + K

t1 <= prt < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time arr_seq sched prt
GEprt: t1 <= prt
LEprt: prt <= t1 + K
prt <= t < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time arr_seq sched prt
GEprt: t1 <= prt
LEprt: prt <= t1 + K

t1 <= prt < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time arr_seq sched prt
GEprt: t1 <= prt
LEprt: prt <= t1 + K
prt <= t < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time arr_seq sched prt
GEprt: t1 <= prt
LEprt: prt <= t1 + K

prt < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time arr_seq sched prt
GEprt: t1 <= prt
LEprt: prt <= t1 + K
prt <= t < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time arr_seq sched prt
GEprt: t1 <= prt
LEprt: prt <= t1 + K

t1 + K < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time arr_seq sched prt
GEprt: t1 <= prt
LEprt: prt <= t1 + K
prt <= t < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time arr_seq sched prt
GEprt: t1 <= prt
LEprt: prt <= t1 + K

prt <= t < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time arr_seq sched prt
GEprt: t1 <= prt
LEprt: prt <= t1 + K

prt <= t < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
K: duration
H_preemption_time_exists: exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time arr_seq sched prt
GEprt: t1 <= prt
LEprt: prt <= t1 + K

prt <= t
by apply leq_trans with (t1 + K). Qed. End PreemptionTimeAndPriorityInversion. (** * Preemption Time Exists *) (** In this section we prove that the function [max_length_of_priority_inversion] indeed upper-bounds the priority inversion length. *) Section PreemptionTimeExists. (** In this section, we require the jobs to have valid bounded non-preemptive segments. *) Hypothesis H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched. (** First, we prove that, if a job with higher-or-equal priority is scheduled at a quiet time [t+1], then this is the first time when this job is scheduled. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

forall (jhp : Job) (t : nat), quiet_time arr_seq sched j t.+1 -> scheduled_at sched jhp t.+1 -> hep_job jhp j -> ~~ scheduled_at sched jhp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

forall (jhp : Job) (t : nat), quiet_time arr_seq sched j t.+1 -> scheduled_at sched jhp t.+1 -> hep_job jhp j -> ~~ scheduled_at sched jhp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
t: nat
QT: quiet_time arr_seq sched j t.+1
SCHED1: scheduled_at sched jhp t.+1
HP: hep_job jhp j

~~ scheduled_at sched jhp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
t: nat
QT: quiet_time arr_seq sched j t.+1
SCHED1: scheduled_at sched jhp t.+1
HP: hep_job jhp j
SCHED2: scheduled_at sched jhp t

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
t: nat
QT: arrives_in arr_seq jhp -> hep_job jhp j -> arrived_before jhp t.+1 -> completed_by sched jhp t.+1
SCHED1: scheduled_at sched jhp t.+1
HP: hep_job jhp j
SCHED2: scheduled_at sched jhp t

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
t: nat
QT: arrived_before jhp t.+1 -> completed_by sched jhp t.+1
SCHED1: scheduled_at sched jhp t.+1
HP: hep_job jhp j
SCHED2: scheduled_at sched jhp t

arrived_before jhp t.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
t: nat
QT: completed_by sched jhp t.+1
SCHED1: scheduled_at sched jhp t.+1
HP: hep_job jhp j
SCHED2: scheduled_at sched jhp t
False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
t: nat
QT: arrived_before jhp t.+1 -> completed_by sched jhp t.+1
SCHED1: scheduled_at sched jhp t.+1
HP: hep_job jhp j
SCHED2: scheduled_at sched jhp t

arrived_before jhp t.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
t: nat
QT: completed_by sched jhp t.+1
SCHED1: scheduled_at sched jhp t.+1
HP: hep_job jhp j
SCHED2: scheduled_at sched jhp t
False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
t: nat
QT: arrived_before jhp t.+1 -> completed_by sched jhp t.+1
SCHED1: scheduled_at sched jhp t.+1
HP: hep_job jhp j
SCHED2: scheduled_at sched jhp t
MATE: jobs_must_arrive_to_execute sched

arrived_before jhp t.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
t: nat
QT: completed_by sched jhp t.+1
SCHED1: scheduled_at sched jhp t.+1
HP: hep_job jhp j
SCHED2: scheduled_at sched jhp t
False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
t: nat
QT: completed_by sched jhp t.+1
SCHED1: scheduled_at sched jhp t.+1
HP: hep_job jhp j
SCHED2: scheduled_at sched jhp t

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
t: nat
QT: ~~ scheduled_at sched jhp t.+1
SCHED1: scheduled_at sched jhp t.+1
HP: hep_job jhp j
SCHED2: scheduled_at sched jhp t

False
by move: QT => /negP NSCHED; apply: NSCHED. Qed. (** Also, we show that lower-priority jobs that are scheduled inside the busy-interval prefix <<[t1,t2)>> must arrive before that interval. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

forall (jlp : Job) (t : nat), t1 <= t < t2 -> scheduled_at sched jlp t -> ~~ hep_job jlp j -> job_arrival jlp < t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

forall (jlp : Job) (t : nat), t1 <= t < t2 -> scheduled_at sched jlp t -> ~~ hep_job jlp j -> job_arrival jlp < t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j

job_arrival jlp < t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2

job_arrival jlp < t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
PP: uniprocessor_model (processor_state Job) -> exists pt : nat, job_arrival jlp <= pt <= t /\ preemption_time arr_seq sched pt /\ (forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t')

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
PP: exists pt : nat, job_arrival jlp <= pt <= t /\ preemption_time arr_seq sched pt /\ (forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t')

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'

t1 <= pt < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
NEQ: t1 <= pt < t2
False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'

t1 <= pt < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'

t1 <= pt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
pt < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'

t1 <= pt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
pt < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'

pt < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'

pt < t2
by apply leq_ltn_trans with t.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
NEQ: t1 <= pt < t2

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
NEQ: t1 <= pt < t2
jhp: Job
HEP: hep_job jhp j
SCHEDjhp: scheduled_at sched jhp pt

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: scheduled_at sched jlp pt
NEQ: t1 <= pt < t2
jhp: Job
HEP: hep_job jhp j
SCHEDjhp: scheduled_at sched jhp pt

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
GE: t1 <= t
LT: t < t2
SCHED: scheduled_at sched jlp t
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
ARR: t1 <= job_arrival jlp
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time arr_seq sched pt
FA: scheduled_at sched jlp pt
NEQ: t1 <= pt < t2
jhp: Job
HEP: hep_job jhp j
SCHEDjhp: scheduled_at sched jhp pt

hep_job jlp j
by have ->: jlp = jhp by eapply ideal_proc_model_is_a_uniprocessor_model; eauto. Qed. (** Moreover, we show that lower-priority jobs that are scheduled inside the busy-interval prefix <<[t1,t2)>> must be scheduled before that interval. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

forall (jlp : Job) (t : nat), t1 <= t < t2 -> scheduled_at sched jlp t -> ~~ hep_job jlp j -> exists t' : nat, t' < t1 /\ scheduled_at sched jlp t'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

forall (jlp : Job) (t : nat), t1 <= t < t2 -> scheduled_at sched jlp t -> ~~ hep_job jlp j -> exists t' : nat, t' < t1 /\ scheduled_at sched jlp t'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2

exists t' : nat, t' < t1 /\ scheduled_at sched jlp t'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1

exists t' : nat, t' < t1 /\ scheduled_at sched jlp t'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1

t1.-1 < t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
scheduled_at sched jlp t1.-1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1

t1.-1 < t1
by rewrite prednK; last apply leq_ltn_trans with (job_arrival jlp).
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1

scheduled_at sched jlp t1.-1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2

scheduled_at sched jlp t1.-1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
PP: uniprocessor_model (processor_state Job) -> exists pt : nat, job_arrival jlp <= pt <= t /\ preemption_time arr_seq sched pt /\ (forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t')

scheduled_at sched jlp t1.-1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
PP: exists pt : nat, job_arrival jlp <= pt <= t /\ preemption_time arr_seq sched pt /\ (forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t')

scheduled_at sched jlp t1.-1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'

scheduled_at sched jlp t1.-1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'

pt < t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
LT2: pt < t1
scheduled_at sched jlp t1.-1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'

pt < t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
CONTR: t1 <= pt

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
CONTR: t1 <= pt
jhp: Job
HEP: hep_job jhp j
SCHEDjhp: scheduled_at sched jhp pt

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: pt <= pt <= t -> scheduled_at sched jlp pt
CONTR: t1 <= pt
jhp: Job
HEP: hep_job jhp j
SCHEDjhp: scheduled_at sched jhp pt

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: scheduled_at sched jlp pt
CONTR: t1 <= pt
jhp: Job
HEP: hep_job jhp j
SCHEDjhp: scheduled_at sched jhp pt

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: scheduled_at sched jlp pt
CONTR: t1 <= pt
jhp: Job
HEP: hep_job jhp j
SCHEDjhp: scheduled_at sched jhp pt

hep_job jlp j
by have ->: jlp = jhp by eapply ideal_proc_model_is_a_uniprocessor_model; eauto.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
LT2: pt < t1

scheduled_at sched jlp t1.-1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
LT2: pt < t1

pt <= t1.-1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
LT2: pt < t1
t1.-1 <= t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
LT2: pt < t1

pt <= t1.-1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
LT2: pt < t1
t1.-1 <= t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
LT2: pt < t1

t1.-1 <= t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
t: nat
NEQ: t1 <= t < t2
SCHED: scheduled_at sched jlp t
LP: ~~ hep_job jlp j
GE: t1 <= t
LT: t < t2
ARR: job_arrival jlp < t1
NEM: t1 < t2
QT: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time arr_seq sched pt
SCHEDc: forall t' : nat, pt <= t' <= t -> scheduled_at sched jlp t'
LT2: pt < t1

t1.-1 <= t
by apply leq_trans with t1; first apply leq_pred. Qed. (** Thus, there must be a preemption time in the interval [t1, t1 + max_priority_inversion t1]. That is, if a job with higher-or-equal priority is scheduled at time instant [t1], then [t1] is a preemption time. Otherwise, if a job with lower priority is scheduled at time [t1], then this job also should be scheduled before the beginning of the busy interval. So, the next preemption time will be no more than [max_priority_inversion t1] time units later. *) (** We proceed by doing a case analysis. *) Section CaseAnalysis. (** (1) Case when the schedule is idle at time [t1]. *) Section Case1. (** Assume that the schedule is idle at time [t1]. *) Hypothesis H_ideal_is_idle : ideal_is_idle sched t1. (** Then time instant [t1] is a preemption time. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_ideal_is_idle: ideal_is_idle sched t1

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_ideal_is_idle: ideal_is_idle sched t1

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_ideal_is_idle: ideal_is_idle sched t1
service:= service.service sched: Job -> instant -> nat

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_ideal_is_idle: ideal_is_idle sched t1
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_ideal_is_idle: ideal_is_idle sched t1
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_ideal_is_idle: ideal_is_idle sched t1
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2

preemption_time arr_seq sched t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_ideal_is_idle: ideal_is_idle sched t1
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
t1 <= t1 <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_ideal_is_idle: ideal_is_idle sched t1
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2

preemption_time arr_seq sched t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_ideal_is_idle: ideal_is_idle sched t1
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
t1 <= t1 <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_ideal_is_idle: ideal_is_idle sched t1
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2

t1 <= t1 <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H_ideal_is_idle: ideal_is_idle sched t1
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2

t1 <= t1 <= t1 + max_length_of_priority_inversion j t1
by apply/andP; split; last rewrite leq_addr. Qed. End Case1. (** (2) Case when a job with higher-or-equal priority is scheduled at time [t1]. *) Section Case2. (** Assume that a job [jhp] with higher-or-equal priority is scheduled at time [t1]. *) Variable jhp : Job. Hypothesis H_jhp_is_scheduled : scheduled_at sched jhp t1. Hypothesis H_jhp_hep_priority : hep_job jhp j. (** Then time instant [t1] is a preemption time. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp t1
H_jhp_hep_priority: hep_job jhp j

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp t1
H_jhp_hep_priority: hep_job jhp j

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp t1
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp t1
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp t1
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp t1
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp t1
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2

t1 <= t1 <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp t1
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
preemption_time arr_seq sched t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp t1
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2

preemption_time arr_seq sched t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j 0 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp 0
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: 0 < t2
QT1: quiet_time arr_seq sched j 0
NQT: forall t : nat, 0 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: 0 <= job_arrival j < t2

preemption_time arr_seq sched 0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
i: nat
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j i.+1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp i.+1
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: i.+1 < t2
QT1: quiet_time arr_seq sched j i.+1
NQT: forall t : nat, i.+1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: i < job_arrival j < t2
preemption_time arr_seq sched i.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j 0 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp 0
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: 0 < t2
QT1: quiet_time arr_seq sched j 0
NQT: forall t : nat, 0 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: 0 <= job_arrival j < t2

preemption_time arr_seq sched 0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
i: nat
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j i.+1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp i.+1
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: i.+1 < t2
QT1: quiet_time arr_seq sched j i.+1
NQT: forall t : nat, i.+1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: i < job_arrival j < t2
preemption_time arr_seq sched i.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
i: nat
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j i.+1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp i.+1
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: i.+1 < t2
QT1: quiet_time arr_seq sched j i.+1
NQT: forall t : nat, i.+1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: i < job_arrival j < t2

preemption_time arr_seq sched i.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
i: nat
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j i.+1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp i.+1
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: i.+1 < t2
QT1: quiet_time arr_seq sched j i.+1
NQT: forall t : nat, i.+1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: i < job_arrival j < t2

preemption_time arr_seq sched i.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
i: nat
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j i.+1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jhp: Job
H_jhp_is_scheduled: scheduled_at sched jhp i.+1
H_jhp_hep_priority: hep_job jhp j
service:= service.service sched: Job -> instant -> nat
VALID: valid_preemption_model arr_seq sched
BOUNDED: model_with_bounded_nonpreemptive_segments arr_seq
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: i.+1 < t2
QT1: quiet_time arr_seq sched j i.+1
NQT: forall t : nat, i.+1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: i < job_arrival j < t2

~~ scheduled_at sched jhp i
exact: hp_job_not_scheduled_before_quiet_time. Qed. End Case2. (** (3) Case when a job with lower priority is scheduled at time [t1]. *) Section Case3. (** Assume that a job [jhp] with lower priority is scheduled at time [t1]. *) Variable jlp : Job. Hypothesis H_jlp_is_scheduled : scheduled_at sched jlp t1. Hypothesis H_jlp_low_priority : ~~ hep_job jlp j. (** To prove the lemma in this case we need a few auxiliary facts about the first preemption point of job [jlp]. *) Section FirstPreemptionPointOfjlp. (** Let's denote the progress of job [jlp] at time [t1] as [progr_t1]. *) Let progr_t1 := service sched jlp t1. (** Consider the first preemption point of job [jlp] after [progr_t1]. *) Variable fpt : instant. Hypothesis H_fpt_is_preemptio_point : job_preemptable jlp (progr_t1 + fpt). Hypothesis H_fpt_is_first_preemption_point: forall ρ, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ. (** For correctness, we also assume that [fpt] does not exceed the length of the maximum non-preemptive segment. *) Hypothesis H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε. (** First we show that [fpt] is indeed the first preemption point after [progr_t1]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε

forall ρ : nat, progr_t1 <= ρ < progr_t1 + fpt -> ~~ job_preemptable jlp ρ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε

forall ρ : nat, progr_t1 <= ρ < progr_t1 + fpt -> ~~ job_preemptable jlp ρ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt

~~ job_preemptable jlp prog
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt
PPJ: job_preemptable jlp prog

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt
PPJ: job_preemptable jlp prog
K: progr_t1 <= prog <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp prog -> service sched jlp t1 + fpt <= prog

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt
PPJ: job_preemptable jlp prog
K: progr_t1 <= prog <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp prog -> service sched jlp t1 + fpt <= prog

prog <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt
PPJ: job_preemptable jlp prog
K: service sched jlp t1 + fpt <= prog
False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt
PPJ: job_preemptable jlp prog
K: progr_t1 <= prog <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp prog -> service sched jlp t1 + fpt <= prog

prog <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt
PPJ: job_preemptable jlp prog
K: progr_t1 <= prog <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp prog -> service sched jlp t1 + fpt <= prog

prog <= service sched jlp t1 + fpt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt
PPJ: job_preemptable jlp prog
K: progr_t1 <= prog <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp prog -> service sched jlp t1 + fpt <= prog
service sched jlp t1 + fpt <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt
PPJ: job_preemptable jlp prog
K: progr_t1 <= prog <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp prog -> service sched jlp t1 + fpt <= prog

prog <= service sched jlp t1 + fpt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt
PPJ: job_preemptable jlp prog
K: progr_t1 <= prog <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp prog -> service sched jlp t1 + fpt <= prog
service sched jlp t1 + fpt <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt
PPJ: job_preemptable jlp prog
K: progr_t1 <= prog <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp prog -> service sched jlp t1 + fpt <= prog

service sched jlp t1 + fpt <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt
PPJ: job_preemptable jlp prog
K: progr_t1 <= prog <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp prog -> service sched jlp t1 + fpt <= prog

service sched jlp t1 + fpt <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε)
by rewrite leq_add2l; apply H_progr_le_max_nonp_segment.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
prog: nat
GE: progr_t1 <= prog
LT: prog < progr_t1 + fpt
PPJ: job_preemptable jlp prog
K: service sched jlp t1 + fpt <= prog

False
by move: K; rewrite leqNgt; move => /negP NLT; apply: NLT. Qed. (** Thanks to the fact that the scheduler respects the notion of preemption points we show that [jlp] is continuously scheduled in time interval <<[t1, t1 + fpt)>>. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε

forall t' : nat, t1 <= t' < t1 + fpt -> scheduled_at sched jlp t'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε

forall t' : nat, t1 <= t' < t1 + fpt -> scheduled_at sched jlp t'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

forall t' : nat, t1 <= t' < t1 + fpt -> scheduled_at sched jlp t'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
ARRs: arrives_in arr_seq jlp

forall t' : nat, t1 <= t' < t1 + fpt -> scheduled_at sched jlp t'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
ARRs: arrives_in arr_seq jlp
t': nat
GE: t1 <= t'
LT: t' < t1 + fpt

scheduled_at sched jlp t'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
ARRs: arrives_in arr_seq jlp
t': nat
GE: t1 <= t'
LT: t' < t1 + fpt

exists Δ : nat, t' = t1 + Δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
ARRs: arrives_in arr_seq jlp
t': nat
GE: t1 <= t'
LT: t' < t1 + fpt
Fact: exists Δ : nat, t' = t1 + Δ
scheduled_at sched jlp t'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
ARRs: arrives_in arr_seq jlp
t': nat
GE: t1 <= t'
LT: t' < t1 + fpt

exists Δ : nat, t' = t1 + Δ
by exists (t' - t1); apply/eqP; rewrite eq_sym; apply/eqP; rewrite subnKC.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
ARRs: arrives_in arr_seq jlp
t': nat
GE: t1 <= t'
LT: t' < t1 + fpt
Fact: exists Δ : nat, t' = t1 + Δ

scheduled_at sched jlp t'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ

scheduled_at sched jlp (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ
NPPJ: progr_t1 <= service sched jlp (t1 + Δ) < progr_t1 + fpt -> ~~ job_preemptable jlp (service sched jlp (t1 + Δ))

scheduled_at sched jlp (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
CORR: job_cannot_become_nonpreemptive_before_execution jlp /\ job_cannot_be_nonpreemptive_after_completion jlp /\ not_preemptive_implies_scheduled sched jlp /\ execution_starts_with_preemption_point sched jlp
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ
NPPJ: progr_t1 <= service sched jlp (t1 + Δ) < progr_t1 + fpt -> ~~ job_preemptable jlp (service sched jlp (t1 + Δ))

scheduled_at sched jlp (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ
NPPJ: progr_t1 <= service sched jlp (t1 + Δ) < progr_t1 + fpt -> ~~ job_preemptable jlp (service sched jlp (t1 + Δ))
T: not_preemptive_implies_scheduled sched jlp

scheduled_at sched jlp (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp

progr_t1 <= service sched jlp (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp
service sched jlp (t1 + Δ) < progr_t1 + fpt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp

progr_t1 <= service sched jlp (t1 + Δ)
by apply service_monotonic; rewrite leq_addr.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp

service sched jlp (t1 + Δ) < progr_t1 + fpt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp

service_during sched jlp 0 t1 + service_during sched jlp t1 (t1 + Δ) < progr_t1 + fpt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp
0 <= t1 <= t1 + Δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp

service_during sched jlp 0 t1 + service_during sched jlp t1 (t1 + Δ) < progr_t1 + fpt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp
LT: Δ < fpt

service_during sched jlp t1 (t1 + Δ) < fpt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp
LT: Δ < fpt

service_during sched jlp t1 (t1 + Δ) <= Δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp
LT: Δ < fpt

service_during sched jlp t1 (t1 + Δ) <= \sum_(t1 <= x < t1 + Δ) 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp
LT: Δ < fpt
t: nat

service_at sched jlp t <= 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp
LT: Δ < fpt
t: nat

unit_service_proc_model (processor_state Job)
by apply ideal_proc_model_provides_unit_service.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp

0 <= t1 <= t1 + Δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
Δ: nat
LT: t1 + Δ < t1 + fpt
GE: t1 <= t1 + Δ
T: not_preemptive_implies_scheduled sched jlp

0 <= t1 <= t1 + Δ
by apply/andP; split; [|rewrite leq_addr]. } Qed. (** Thus, job [jlp] reaches its preemption point at time instant [t1 + fpt], which implies that time instant [t1 + fpt] is a preemption time. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε

preemption_time arr_seq sched (t1 + fpt)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε

preemption_time arr_seq sched (t1 + fpt)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε

match sched (t1 + fpt) with | Some j => job_preemptable j (service sched j (t1 + fpt)) | None => true end
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)

match sched (t1 + fpt) with | Some j => job_preemptable j (service sched j (t1 + fpt)) | None => true end
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'

match sched (t1 + fpt) with | Some j => job_preemptable j (service sched j (t1 + fpt)) | None => true end
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = true

job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = true

job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

job_preemptable jlp (service sched jlp (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

0 <= t1 <= t1 + fpt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)
job_preemptable jlp (service_during sched jlp 0 t1 + service_during sched jlp t1 (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

0 <= t1 <= t1 + fpt
by apply/andP; split; last rewrite leq_addr.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

job_preemptable jlp (service_during sched jlp 0 t1 + service_during sched jlp t1 (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

service_during sched jlp t1 (t1 + fpt) = fpt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

service_during sched jlp t1 (t1 + fpt) = fpt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

\sum_(t1 <= t < t1 + fpt) service_at sched jlp t = \sum_(t1 <= x < t1 + fpt) 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

\sum_(t1 <= t < t1 + fpt) service_at sched jlp t <= \sum_(t1 <= x < t1 + fpt) 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)
\sum_(t1 <= x < t1 + fpt) 1 <= \sum_(t1 <= t < t1 + fpt) service_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

\sum_(t1 <= t < t1 + fpt) service_at sched jlp t <= \sum_(t1 <= x < t1 + fpt) 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)
\sum_(t1 <= x < t1 + fpt) 1 <= \sum_(t1 <= t < t1 + fpt) service_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)
t: nat

service_at sched jlp t <= 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)
\sum_(t1 <= x < t1 + fpt) 1 <= \sum_(t1 <= t < t1 + fpt) service_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)
t: nat

unit_service_proc_model (processor_state Job)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)
\sum_(t1 <= x < t1 + fpt) 1 <= \sum_(t1 <= t < t1 + fpt) service_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

\sum_(t1 <= x < t1 + fpt) 1 <= \sum_(t1 <= t < t1 + fpt) service_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

\sum_(t1 <= x < t1 + fpt) 1 <= \sum_(t1 <= t < t1 + fpt) service_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

\sum_(t1 <= i < t1 + fpt | (t1 <= i < t1 + fpt) && true) 1 <= \sum_(t1 <= i < t1 + fpt | (t1 <= i < t1 + fpt) && true) service_at sched jlp i
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

forall i : nat, (t1 <= i < t1 + fpt) && true -> 0 < service_at sched jlp i
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)
x: nat
HYP: t1 <= x < t1 + fpt

0 < service_at sched jlp x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)
x: nat
HYP: t1 <= x < t1 + fpt

scheduled_at sched jlp x
by apply continuously_scheduled_between_preemption_points.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false

job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false

job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
ZERO: fpt = 0

job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
ZERO: fpt = 0

job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
H_progr_le_max_nonp_segment: 0 <= job_max_nonpreemptive_segment jlp - ε
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + 0 <= ρ
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + 0)
s': Job
EqSched_s': sched (t1 + 0) = Some s'
Sched_s': scheduled_at sched s' (t1 + 0)
EQ: (jlp == s') = false

job_preemptable s' (service sched s' (t1 + 0))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
H_progr_le_max_nonp_segment: 0 <= job_max_nonpreemptive_segment jlp - ε
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + 0 <= ρ
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + 0)
s': Job
EqSched_s': sched (t1 + 0) = Some s'
Sched_s': scheduled_at sched s' (t1 + 0)

jlp == s'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
H_progr_le_max_nonp_segment: 0 <= job_max_nonpreemptive_segment jlp - ε
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + 0 <= ρ
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + 0)
s': Job
EqSched_s': sched (t1 + 0) = Some s'
Sched_s': scheduled_at sched s' (t1 + 0)
SCHED2: sched t1 = Some jlp

jlp == s'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
H_progr_le_max_nonp_segment: 0 <= job_max_nonpreemptive_segment jlp - ε
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + 0 <= ρ
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + 0)
s': Job
Sched_s': scheduled_at sched s' (t1 + 0)
EqSched_s': sched t1 = Some s'
SCHED2: Some s' = Some jlp

jlp == s'
by inversion SCHED2.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt

job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt

job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt

job_preemptable s' (service sched s' (t1 + fpt))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt

job_preemptable s' (service sched s' (t1 + sm).+1)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
COME_FROM: jobs_come_from_arrival_sequence sched arr_seq

job_preemptable s' (service sched s' (t1 + sm).+1)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
T: job_cannot_become_nonpreemptive_before_execution s' /\ job_cannot_be_nonpreemptive_after_completion s' /\ not_preemptive_implies_scheduled sched s' /\ execution_starts_with_preemption_point sched s'

job_preemptable s' (service sched s' (t1 + sm).+1)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
T: job_cannot_become_nonpreemptive_before_execution s' /\ job_cannot_be_nonpreemptive_after_completion s' /\ not_preemptive_implies_scheduled sched s' /\ execution_starts_with_preemption_point sched s'

~~ scheduled_at sched s' (t1 + sm)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
T: job_cannot_become_nonpreemptive_before_execution s' /\ job_cannot_be_nonpreemptive_after_completion s' /\ not_preemptive_implies_scheduled sched s' /\ execution_starts_with_preemption_point sched s'
scheduled_at sched s' (t1 + sm).+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt

~~ scheduled_at sched s' (t1 + sm)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
T: job_cannot_become_nonpreemptive_before_execution s' /\ job_cannot_be_nonpreemptive_after_completion s' /\ not_preemptive_implies_scheduled sched s' /\ execution_starts_with_preemption_point sched s'
scheduled_at sched s' (t1 + sm).+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
CONTR: scheduled_at sched s' (t1 + sm)

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
T: job_cannot_become_nonpreemptive_before_execution s' /\ job_cannot_be_nonpreemptive_after_completion s' /\ not_preemptive_implies_scheduled sched s' /\ execution_starts_with_preemption_point sched s'
scheduled_at sched s' (t1 + sm).+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
CONTR: scheduled_at sched s' (t1 + sm)

jlp == s'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
T: job_cannot_become_nonpreemptive_before_execution s' /\ job_cannot_be_nonpreemptive_after_completion s' /\ not_preemptive_implies_scheduled sched s' /\ execution_starts_with_preemption_point sched s'
scheduled_at sched s' (t1 + sm).+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
CONTR: scheduled_at sched s' (t1 + sm)
SCHEDs0: t1 <= t1 + sm < t1 + fpt -> scheduled_at sched jlp (t1 + sm)

jlp == s'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
T: job_cannot_become_nonpreemptive_before_execution s' /\ job_cannot_be_nonpreemptive_after_completion s' /\ not_preemptive_implies_scheduled sched s' /\ execution_starts_with_preemption_point sched s'
scheduled_at sched s' (t1 + sm).+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
CONTR: scheduled_at sched s' (t1 + sm)
SCHEDs0: scheduled_at sched jlp (t1 + sm)

jlp == s'
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
T: job_cannot_become_nonpreemptive_before_execution s' /\ job_cannot_be_nonpreemptive_after_completion s' /\ not_preemptive_implies_scheduled sched s' /\ execution_starts_with_preemption_point sched s'
scheduled_at sched s' (t1 + sm).+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
sm: nat
EQ2: sm.+1 = fpt
T: job_cannot_become_nonpreemptive_before_execution s' /\ job_cannot_be_nonpreemptive_after_completion s' /\ not_preemptive_implies_scheduled sched s' /\ execution_starts_with_preemption_point sched s'

scheduled_at sched s' (t1 + sm).+1
by rewrite -addnS EQ2. } Qed. (** And since [fpt <= max_length_of_priority_inversion j t1], [t1 <= t1 + fpt <= t1 + max_length_of_priority_inversion j t1]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε

t1 <= t1 + fpt <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε

t1 <= t1 + fpt <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp

t1 <= t1 + fpt <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp

t1 + fpt <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp

fpt <= max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp

fpt <= \max_(j_lp <- arrivals_before arr_seq t1 | ~~ hep_job j_lp j && (0 < job_cost j_lp)) (job_max_nonpreemptive_segment j_lp - ε)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp

fpt <= maxn (if ~~ hep_job jlp j && (0 < job_cost jlp) then job_max_nonpreemptive_segment jlp - ε else 0) (\max_(y <- rem (T:=Job) jlp (arrivals_before arr_seq t1) | ~~ hep_job y j && (0 < job_cost y)) (job_max_nonpreemptive_segment y - ε))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
jlp \in arrivals_before arr_seq t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp

fpt <= maxn (if ~~ hep_job jlp j && (0 < job_cost jlp) then job_max_nonpreemptive_segment jlp - ε else 0) (\max_(y <- rem (T:=Job) jlp (arrivals_before arr_seq t1) | ~~ hep_job y j && (0 < job_cost y)) (job_max_nonpreemptive_segment y - ε))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp

fpt <= maxn (if 0 < job_cost jlp then job_max_nonpreemptive_segment jlp - ε else 0) (\max_(y <- rem (T:=Job) jlp (arrivals_before arr_seq t1) | ~~ hep_job y j && (0 < job_cost y)) (job_max_nonpreemptive_segment y - ε))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp

service sched jlp t1 < job_cost jlp
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
NZ: service sched jlp t1 < job_cost jlp
fpt <= maxn (if 0 < job_cost jlp then job_max_nonpreemptive_segment jlp - ε else 0) (\max_(y <- rem (T:=Job) jlp (arrivals_before arr_seq t1) | ~~ hep_job y j && (0 < job_cost y)) (job_max_nonpreemptive_segment y - ε))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
NZ: service sched jlp t1 < job_cost jlp

fpt <= maxn (if 0 < job_cost jlp then job_max_nonpreemptive_segment jlp - ε else 0) (\max_(y <- rem (T:=Job) jlp (arrivals_before arr_seq t1) | ~~ hep_job y j && (0 < job_cost y)) (job_max_nonpreemptive_segment y - ε))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
NZ: service sched jlp t1 < job_cost jlp

fpt <= maxn (job_max_nonpreemptive_segment jlp - ε) (\max_(y <- rem (T:=Job) jlp (arrivals_before arr_seq t1) | ~~ hep_job y j && (0 < job_cost y)) (job_max_nonpreemptive_segment y - ε))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
NZ: service sched jlp t1 < job_cost jlp

fpt <= job_max_nonpreemptive_segment jlp - ε
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
NZ: service sched jlp t1 < job_cost jlp
job_max_nonpreemptive_segment jlp - ε <= maxn (job_max_nonpreemptive_segment jlp - ε) (\max_(y <- rem (T:=Job) jlp (arrivals_before arr_seq t1) | ~~ hep_job y j && (0 < job_cost y)) (job_max_nonpreemptive_segment y - ε))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
NZ: service sched jlp t1 < job_cost jlp

fpt <= job_max_nonpreemptive_segment jlp - ε
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
NZ: service sched jlp t1 < job_cost jlp
job_max_nonpreemptive_segment jlp - ε <= maxn (job_max_nonpreemptive_segment jlp - ε) (\max_(y <- rem (T:=Job) jlp (arrivals_before arr_seq t1) | ~~ hep_job y j && (0 < job_cost y)) (job_max_nonpreemptive_segment y - ε))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
NZ: service sched jlp t1 < job_cost jlp

job_max_nonpreemptive_segment jlp - ε <= maxn (job_max_nonpreemptive_segment jlp - ε) (\max_(y <- rem (T:=Job) jlp (arrivals_before arr_seq t1) | ~~ hep_job y j && (0 < job_cost y)) (job_max_nonpreemptive_segment y - ε))
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp
NZ: service sched jlp t1 < job_cost jlp

job_max_nonpreemptive_segment jlp - ε <= maxn (job_max_nonpreemptive_segment jlp - ε) (\max_(y <- rem (T:=Job) jlp (arrivals_before arr_seq t1) | ~~ hep_job y j && (0 < job_cost y)) (job_max_nonpreemptive_segment y - ε))
by rewrite leq_maxl.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp

jlp \in arrivals_before arr_seq t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp

arrived_between jlp 0 t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp

job_arrival jlp < t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
progr_t1:= service sched jlp t1: nat
fpt: instant
H_fpt_is_preemptio_point: job_preemptable jlp (progr_t1 + fpt)
H_fpt_is_first_preemption_point: forall ρ : nat, progr_t1 <= ρ <= progr_t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service sched jlp t1 + fpt <= ρ
H_progr_le_max_nonp_segment: fpt <= job_max_nonpreemptive_segment jlp - ε
ARRs: arrives_in arr_seq jlp

t1 <= t1 < t2
by move: (H_busy_interval_prefix) => [NEM [QT1 [NQT HPJ]]]; apply/andP. Qed. End FirstPreemptionPointOfjlp. (** Next, we combine the above facts to conclude the lemma. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat

exists pt : nat, (service jlp t1 <= pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp pt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
EX: exists pt : nat, (service jlp t1 <= pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp pt
exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat

exists pt : nat, (service jlp t1 <= pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp pt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
ARRs: arrives_in arr_seq jlp

exists pt : nat, (service jlp t1 <= pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp pt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
ARRs: arrives_in arr_seq jlp
EXPP: nonpreemptive_regions_have_bounded_length jlp

exists pt : nat, (service jlp t1 <= pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp pt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
ARRs: arrives_in arr_seq jlp
EXPP: nonpreemptive_regions_have_bounded_length jlp
A: jobs_come_from_arrival_sequence sched arr_seq
B: jobs_must_be_ready_to_execute sched

exists pt : nat, (service jlp t1 <= pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp pt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
ARRs: arrives_in arr_seq jlp
EXPP: 0 <= service jlp t1 <= job_cost jlp -> exists pp : duration, service jlp t1 <= pp <= service jlp t1 + (job_max_nonpreemptive_segment jlp - ε) /\ job_preemptable jlp pp
A: jobs_come_from_arrival_sequence sched arr_seq
B: jobs_must_be_ready_to_execute sched

exists pt : nat, (service jlp t1 <= pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp pt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
ARRs: arrives_in arr_seq jlp
EXPP: 0 <= service jlp t1 <= job_cost jlp -> exists pp : duration, service jlp t1 <= pp <= service jlp t1 + (job_max_nonpreemptive_segment jlp - ε) /\ job_preemptable jlp pp
A: jobs_come_from_arrival_sequence sched arr_seq
B: jobs_must_be_ready_to_execute sched

0 <= service jlp t1 <= job_cost jlp
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
ARRs: arrives_in arr_seq jlp
EXPP: exists pp : duration, service jlp t1 <= pp <= service jlp t1 + (job_max_nonpreemptive_segment jlp - ε) /\ job_preemptable jlp pp
A: jobs_come_from_arrival_sequence sched arr_seq
B: jobs_must_be_ready_to_execute sched
exists pt : nat, (service jlp t1 <= pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp pt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
ARRs: arrives_in arr_seq jlp
EXPP: 0 <= service jlp t1 <= job_cost jlp -> exists pp : duration, service jlp t1 <= pp <= service jlp t1 + (job_max_nonpreemptive_segment jlp - ε) /\ job_preemptable jlp pp
A: jobs_come_from_arrival_sequence sched arr_seq
B: jobs_must_be_ready_to_execute sched

0 <= service jlp t1 <= job_cost jlp
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
ARRs: arrives_in arr_seq jlp
EXPP: 0 <= service jlp t1 <= job_cost jlp -> exists pp : duration, service jlp t1 <= pp <= service jlp t1 + (job_max_nonpreemptive_segment jlp - ε) /\ job_preemptable jlp pp
A: jobs_come_from_arrival_sequence sched arr_seq
B: jobs_must_be_ready_to_execute sched

service jlp t1 <= job_cost jlp
exact: service_at_most_cost.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
ARRs: arrives_in arr_seq jlp
EXPP: exists pp : duration, service jlp t1 <= pp <= service jlp t1 + (job_max_nonpreemptive_segment jlp - ε) /\ job_preemptable jlp pp
A: jobs_come_from_arrival_sequence sched arr_seq
B: jobs_must_be_ready_to_execute sched

exists pt : nat, (service jlp t1 <= pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp pt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
ARRs: arrives_in arr_seq jlp
A: jobs_come_from_arrival_sequence sched arr_seq
B: jobs_must_be_ready_to_execute sched
pt: duration
NEQ: service jlp t1 <= pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - ε)
PP: job_preemptable jlp pt

exists pt : nat, (service jlp t1 <= pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp pt
by exists pt; apply/andP.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
EX: exists pt : nat, (service jlp t1 <= pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp pt

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
NEQ: service jlp t1 <= sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)
PP: job_preemptable jlp sm_pt
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> sm_pt <= n

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
NEQ: service jlp t1 <= sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)
PP: job_preemptable jlp sm_pt
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> sm_pt <= n

exists Δ : nat, sm_pt = service jlp t1 + Δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
NEQ: service jlp t1 <= sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)
PP: job_preemptable jlp sm_pt
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> sm_pt <= n
Fact: exists Δ : nat, sm_pt = service jlp t1 + Δ
exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
NEQ: service jlp t1 <= sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)
PP: job_preemptable jlp sm_pt
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> sm_pt <= n

exists Δ : nat, sm_pt = service jlp t1 + Δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
NEQ: service jlp t1 <= sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)
PP: job_preemptable jlp sm_pt
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> sm_pt <= n

sm_pt = service jlp t1 + (sm_pt - service jlp t1)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
NEQ: service jlp t1 <= sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)
PP: job_preemptable jlp sm_pt
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> sm_pt <= n

service jlp t1 <= sm_pt
by move: NEQ => /andP [T _].
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
NEQ: service jlp t1 <= sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)
PP: job_preemptable jlp sm_pt
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> sm_pt <= n
Fact: exists Δ : nat, sm_pt = service jlp t1 + Δ

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> service jlp t1 + sm_pt <= n
PP: job_preemptable jlp (service jlp t1 + sm_pt)
NEQ: service jlp t1 <= service jlp t1 + sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> service jlp t1 + sm_pt <= n
PP: job_preemptable jlp (service jlp t1 + sm_pt)
NEQ: service jlp t1 <= service jlp t1 + sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)

preemption_time arr_seq sched (t1 + sm_pt)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> service jlp t1 + sm_pt <= n
PP: job_preemptable jlp (service jlp t1 + sm_pt)
NEQ: service jlp t1 <= service jlp t1 + sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)
t1 <= t1 + sm_pt <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> service jlp t1 + sm_pt <= n
PP: job_preemptable jlp (service jlp t1 + sm_pt)
NEQ: service jlp t1 <= service jlp t1 + sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)

preemption_time arr_seq sched (t1 + sm_pt)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> service jlp t1 + sm_pt <= n
PP: job_preemptable jlp (service jlp t1 + sm_pt)
NEQ: service jlp t1 <= service jlp t1 + sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)

forall ρ : nat, service_during sched jlp 0 t1 <= ρ <= service_during sched jlp 0 t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service_during sched jlp 0 t1 + sm_pt <= ρ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> service jlp t1 + sm_pt <= n
PP: job_preemptable jlp (service jlp t1 + sm_pt)
NEQ: service jlp t1 <= service jlp t1 + sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)
sm_pt <= job_max_nonpreemptive_segment jlp - ε
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> service jlp t1 + sm_pt <= n
PP: job_preemptable jlp (service jlp t1 + sm_pt)
NEQ: service jlp t1 <= service jlp t1 + sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)

forall ρ : nat, service_during sched jlp 0 t1 <= ρ <= service_during sched jlp 0 t1 + (job_max_nonpreemptive_segment jlp - ε) -> job_preemptable jlp ρ -> service_during sched jlp 0 t1 + sm_pt <= ρ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> service jlp t1 + sm_pt <= n
PP: job_preemptable jlp (service jlp t1 + sm_pt)
NEQ: service jlp t1 <= service jlp t1 + sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)
sm_pt <= job_max_nonpreemptive_segment jlp - ε
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> service jlp t1 + sm_pt <= n
PP: job_preemptable jlp (service jlp t1 + sm_pt)
NEQ: service jlp t1 <= service jlp t1 + sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)

sm_pt <= job_max_nonpreemptive_segment jlp - ε
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> service jlp t1 + sm_pt <= n
PP: job_preemptable jlp (service jlp t1 + sm_pt)
NEQ: service jlp t1 <= service jlp t1 + sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)

sm_pt <= job_max_nonpreemptive_segment jlp - ε
by rewrite /ε; lia.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> service jlp t1 + sm_pt <= n
PP: job_preemptable jlp (service jlp t1 + sm_pt)
NEQ: service jlp t1 <= service jlp t1 + sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)

t1 <= t1 + sm_pt <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
jlp: Job
H_jlp_is_scheduled: scheduled_at sched jlp t1
H_jlp_low_priority: ~~ hep_job jlp j
service:= service.service sched: Job -> instant -> nat
sm_pt: nat
MIN: forall n : nat, (service jlp t1 <= n <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)) && job_preemptable jlp n -> service jlp t1 + sm_pt <= n
PP: job_preemptable jlp (service jlp t1 + sm_pt)
NEQ: service jlp t1 <= service jlp t1 + sm_pt <= service jlp t1 + (job_max_nonpreemptive_segment jlp - 1)

sm_pt <= job_max_nonpreemptive_segment jlp - ε
by rewrite /ε; lia. Qed. End Case3. End CaseAnalysis. (** By doing the case analysis, we show that indeed there is a preemption time in the time interval [[t1, t1 + max_length_of_priority_inversion j t1]]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
Idle: ideal_is_idle sched t1

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
s: Job
Sched_s: scheduled_at sched s t1
exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
Idle: ideal_is_idle sched t1

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
s: Job
Sched_s: scheduled_at sched s t1
exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
s: Job
Sched_s: scheduled_at sched s t1

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
s: Job
Sched_s: scheduled_at sched s t1

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
s: Job
Sched_s: scheduled_at sched s t1
PRIO: hep_job s j = true

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
s: Job
Sched_s: scheduled_at sched s t1
PRIO: hep_job s j = false
exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
s: Job
Sched_s: scheduled_at sched s t1
PRIO: hep_job s j = true

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
s: Job
Sched_s: scheduled_at sched s t1
PRIO: hep_job s j = false
exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
s: Job
Sched_s: scheduled_at sched s t1
PRIO: hep_job s j = false

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
s: Job
Sched_s: scheduled_at sched s t1
PRIO: hep_job s j = false

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + max_length_of_priority_inversion j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
NEM: t1 < t2
QT1: quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ quiet_time arr_seq sched j t
HPJ: t1 <= job_arrival j < t2
s: Job
Sched_s: scheduled_at sched s t1
PRIO: hep_job s j = false

~~ hep_job s j
by rewrite -eqbF_neg; apply /eqP. Qed. End PreemptionTimeExists. (** In this section we prove that if a preemption point [ppt] exists in a job's busy window, it suffers no priority inversion after [ppt]. Equivalently the [cumulative_priority_inversion] of the job in the busy window [t1,t2] is bounded by the [cumulative_priority_inversion] of the job in the time window [t1,[ppt]). *) Section NoPriorityInversionAfterPreemptionPoint. (** Consider the preemption point [ppt]. *) Variable ppt: instant. Hypothesis H_preemption_point : preemption_time arr_seq sched ppt. Hypothesis H_after_t1 : t1 <= ppt. (** We first establish the aforementioned result by showing that [j] cannot suffer priority inversion after the preemption time [ppt] ... *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt

forall t : nat, ppt <= t < t2 -> ~~ priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt

forall t : nat, ppt <= t < t2 -> ~~ priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
t: nat
pptt: ppt <= t
tt2: t < t2

~~ priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
t: nat
pptt: ppt <= t
tt2: t < t2

exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
t: nat
pptt: ppt <= t
tt2: t < t2
j_hp: Job
ARRB: arrived_between j_hp t1 t.+1
HP: hep_job j_hp j
SCHEDHP: scheduled_at sched j_hp t
~~ priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
t: nat
pptt: ppt <= t
tt2: t < t2

exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
t: nat
pptt: ppt <= t
tt2: t < t2

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + (ppt - t1)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
t: nat
pptt: ppt <= t
tt2: t < t2
t1 + (ppt - t1) <= t < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
t: nat
pptt: ppt <= t
tt2: t < t2

exists pr_t : instant, preemption_time arr_seq sched pr_t /\ t1 <= pr_t <= t1 + (ppt - t1)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
t: nat
pptt: ppt <= t
tt2: t < t2
t1 + (ppt - t1) <= t < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
t: nat
pptt: ppt <= t
tt2: t < t2

t1 + (ppt - t1) <= t < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
t: nat
pptt: ppt <= t
tt2: t < t2

t1 + (ppt - t1) <= t < t2
by rewrite subnKC //; apply/andP; split.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
t: nat
pptt: ppt <= t
tt2: t < t2
j_hp: Job
ARRB: arrived_between j_hp t1 t.+1
HP: hep_job j_hp j
SCHEDHP: scheduled_at sched j_hp t

~~ priority_inversion arr_seq sched j t
exact: no_priority_inversion_when_hep_job_scheduled. Qed. (** ... and then lift this fact to cumulative priority inversion. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt

cumulative_priority_inversion arr_seq sched j t1 t2 <= cumulative_priority_inversion arr_seq sched j t1 ppt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt

cumulative_priority_inversion arr_seq sched j t1 t2 <= cumulative_priority_inversion arr_seq sched j t1 ppt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
LEQ: t1 <= t2

cumulative_priority_inversion arr_seq sched j t1 t2 <= cumulative_priority_inversion arr_seq sched j t1 ppt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
LEQ: t1 <= t2
LT: ppt < t2

cumulative_priority_inversion arr_seq sched j t1 t2 <= cumulative_priority_inversion arr_seq sched j t1 ppt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
LEQ: t1 <= t2
LT: ppt < t2
T: t1 <= job_arrival j

cumulative_priority_inversion arr_seq sched j t1 t2 <= cumulative_priority_inversion arr_seq sched j t1 ppt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
LEQ: t1 <= t2
LT: ppt < t2
T: t1 <= job_arrival j

\sum_(t1 <= i < ppt) priority_inversion arr_seq sched j i + \sum_(ppt <= i < t2) priority_inversion arr_seq sched j i <= \sum_(t1 <= t < ppt) priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
LEQ: t1 <= t2
LT: ppt < t2
T: t1 <= job_arrival j

\sum_(ppt <= i < t2) priority_inversion arr_seq sched j i == 0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
LEQ: t1 <= t2
LT: ppt < t2
T: t1 <= job_arrival j
t: nat
GEt: ppt <= t
LEt: t < t2

priority_inversion arr_seq sched j t = 0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
ppt: instant
H_preemption_point: preemption_time arr_seq sched ppt
H_after_t1: t1 <= ppt
LEQ: t1 <= t2
LT: ppt < t2
T: t1 <= job_arrival j
t: nat
GEt: ppt <= t
LEt: t < t2

~~ priority_inversion arr_seq sched j t
by apply/no_priority_inversion_after_preemption_point/andP. Qed. End NoPriorityInversionAfterPreemptionPoint. Section SingleJob. (** Here, we will prove that priority inversion only occurs at the start of the busy window and occurs due to only one job. *) (** Suppose job [j] incurs priority inversion at a time [t_pi] in its busy window. *) Variable t_pi : instant. Hypothesis H_from_t1_before_t2 : t1 <= t_pi < t2. Hypothesis H_PI_occurs : priority_inversion arr_seq sched j t_pi. (** First, we show that there is no preemption time in the interval <<[t1, t_pi]>>. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi

forall t : nat, t1 <= t <= t_pi -> ~~ preemption_time arr_seq sched t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi

forall t : nat, t1 <= t <= t_pi -> ~~ preemption_time arr_seq sched t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
ppt: nat
intl: t1 <= ppt <= t_pi

~~ preemption_time arr_seq sched ppt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
ppt: nat
intl: t1 <= ppt <= t_pi
PT: preemption_time arr_seq sched ppt

~~ priority_inversion arr_seq sched j t_pi
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
ppt: nat
intl: t1 <= ppt <= t_pi
PT: preemption_time arr_seq sched ppt
jhp: Job
HEP: hep_job jhp j
SCHED: scheduled_at sched jhp t_pi

~~ priority_inversion arr_seq sched j t_pi
by apply: no_priority_inversion_when_hep_job_scheduled. Qed. (** Next, we show that the same job will be scheduled from the start of the busy interval to the priority inversion time [t_pi]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi

forall jlp : Job, scheduled_at sched jlp t_pi -> forall t : nat, t1 <= t <= t_pi -> scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi

forall jlp : Job, scheduled_at sched jlp t_pi -> forall t : nat, t1 <= t <= t_pi -> scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi

scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
IDLE: is_idle arr_seq sched t

scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
BUSY: ~~ is_idle arr_seq sched t
scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
IDLE: is_idle arr_seq sched t

scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
IDLE: is_idle arr_seq sched t

~~ ?Goal0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
IDLE: is_idle arr_seq sched t
?Goal0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
IDLE: is_idle arr_seq sched t

~~ ?Goal0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
IDLE: is_idle arr_seq sched t
?Goal0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
IDLE: is_idle arr_seq sched t

preemption_time arr_seq sched t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
IDLE: is_idle arr_seq sched t

preemption_time arr_seq sched t
apply: idle_time_is_pt => //.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
BUSY: ~~ is_idle arr_seq sched t

scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
BUSY: ~~ is_idle arr_seq sched t

scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
j': Job
SCHED': scheduled_at sched j' t

scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
j': Job
SCHED': scheduled_at sched j' t
DIFF: j' != jlp

scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
j': Job
SCHED': scheduled_at sched j' t
DIFF: j' != jlp

exists2 pt : instant, preemption_time arr_seq sched pt & t < pt <= t_pi
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
j': Job
SCHED': scheduled_at sched j' t
DIFF: j' != jlp
pt: instant
premp_ppt: preemption_time arr_seq sched pt
INTL: t < pt <= t_pi
scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
j': Job
SCHED': scheduled_at sched j' t
DIFF: j' != jlp

exists2 pt : instant, preemption_time arr_seq sched pt & t < pt <= t_pi
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
j': Job
SCHED': scheduled_at sched j' t
DIFF: j' != jlp

t <= t_pi
by move: TIME => /andP [_ +].
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
j': Job
SCHED': scheduled_at sched j' t
DIFF: j' != jlp
pt: instant
premp_ppt: preemption_time arr_seq sched pt
INTL: t < pt <= t_pi

scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
j': Job
SCHED': scheduled_at sched j' t
DIFF: j' != jlp
pt: instant
premp_ppt: preemption_time arr_seq sched pt
INTL: t < pt <= t_pi

~~ preemption_time arr_seq sched pt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
jlp: Job
SCHED: scheduled_at sched jlp t_pi
t: nat
TIME: t1 <= t <= t_pi
j': Job
SCHED': scheduled_at sched j' t
DIFF: j' != jlp
pt: instant
premp_ppt: preemption_time arr_seq sched pt
INTL: t < pt <= t_pi

t1 <= pt <= t_pi
by clear - INTL TIME; lia. } Qed. (** Thus, priority inversion takes place from the start of the busy interval to the instant [t_pi], i.e., priority inversion takes place continuously. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi

forall t : nat, t1 <= t <= t_pi -> priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi

forall t : nat, t1 <= t <= t_pi -> priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
j_nsched_pi: j \notin scheduled_jobs_at arr_seq sched t_pi
jlp: Job
jlp_sched_pi: jlp \in scheduled_jobs_at arr_seq sched t_pi
nHEPj: ~~ hep_job jlp j
t: nat
INTL: t1 <= t <= t_pi

priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
j_nsched_pi: j \notin scheduled_jobs_at arr_seq sched t_pi
jlp: Job
jlp_sched_pi: jlp \in scheduled_jobs_at arr_seq sched t_pi
nHEPj: ~~ hep_job jlp j
t: nat
INTL: t1 <= t <= t_pi

scheduled_at sched jlp t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
t_pi: instant
H_from_t1_before_t2: t1 <= t_pi < t2
H_PI_occurs: priority_inversion arr_seq sched j t_pi
j_nsched_pi: j \notin scheduled_jobs_at arr_seq sched t_pi
jlp: Job
jlp_sched_pi: jlp \in scheduled_jobs_at arr_seq sched t_pi
nHEPj: ~~ hep_job jlp j
t: nat
INTL: t1 <= t <= t_pi

scheduled_at sched jlp t_pi
by rewrite -(scheduled_jobs_at_iff arr_seq). Qed. End SingleJob. (** From the above lemmas, it follows that either job [j] incurs no priority inversion at all or certainly at time [t1], i.e., the beginning of its busy interval. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2

cumulative_priority_inversion arr_seq sched j t1 t2 = 0 \/ priority_inversion arr_seq sched j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2

cumulative_priority_inversion arr_seq sched j t1 t2 = 0 \/ priority_inversion arr_seq sched j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2

0 < cumulative_priority_inversion arr_seq sched j t1 t2 -> cumulative_priority_inversion arr_seq sched j t1 t2 = 0 \/ priority_inversion arr_seq sched j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
pi: nat_eqType

pi \in [seq _ <- index_iota t1 t2 | true] -> 0 < priority_inversion arr_seq sched j pi -> cumulative_priority_inversion arr_seq sched j t1 t2 = 0 \/ priority_inversion arr_seq sched j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrivals: valid_arrival_sequence arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_preemption_model: valid_preemption_model arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
pi: nat_eqType
INTL: t1 <= pi < t2
PI_pi: priority_inversion arr_seq sched j pi

cumulative_priority_inversion arr_seq sched j t1 t2 = 0 \/ priority_inversion arr_seq sched j t1
by right; apply: pi_continuous =>//; lia. Qed. End PriorityInversionIsBounded.