Built with Alectryon, running Coq+SerAPI v8.15.0+0.15.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 "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" 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 "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
(** Throughout this file, we assume ideal uni-processor schedules. *)
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" 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_arrival_times_are_consistent : consistent_arrival_times 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_priorities. Hypothesis H_priority_is_transitive: transitive_priorities. (** In addition, we assume the existence of a function mapping a task to its maximal non-preemptive segment ... *) Context `{TaskMaxNonpreemptiveSegment Task}. (** ... and the existence of a function mapping a job and its progress to a boolean value saying whether this job is preemptable at its current point of execution. *) Context `{JobPreemptable Job}. (** And assume that they define a valid preemption model with bounded nonpreemptive segments. *) Hypothesis H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments 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 and that all jobs come from the arrival sequence. *) Hypothesis H_sched_valid : valid_schedule sched arr_seq. Hypothesis H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
Idle: is_idle sched t
EqIdle: sched t = None

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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
Idle: is_idle sched t
EqIdle: sched t = None

exists j_hp : Job, arrived_between j_hp t1 t.+1 /\ hep_job j_hp j /\ scheduled_at sched j_hp t
by eapply instant_t_is_not_idle in Idle; rt_eauto; [ | 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0

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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0

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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0

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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0

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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0

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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq

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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
SOAS: exists pt : nat, job_arrival jhp <= pt <= t /\ preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jlp: Job
Sched_jhp: scheduled_at sched jlp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jlp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jlp: Job
Sched_jhp: scheduled_at sched jlp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jlp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jlp: Job
Sched_jhp: scheduled_at sched jlp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jlp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jlp: Job
Sched_jhp: scheduled_at sched jlp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jlp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jlp: Job
Sched_jhp: scheduled_at sched jlp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jlp (sched t) x) x x in F]| <> 0
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
prt: nat
LE: prt <= t
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched tp
GEtp: t1 <= tp
LTtp: tp < t2
LEtp: tp <= t
LTt: t < t2
jhp: Job
Sched_jhp: scheduled_at sched jhp t
EqSched_jhp: #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on jhp (sched t) x) x x in F]| <> 0
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 sched pr_t /\ t1 <= pr_t <= t1 + K
t: nat
GE: t1 + K <= t
LT: t < t2
prt: instant
PR: preemption_time 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. (** 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 (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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 (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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
HA: has_arrived 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 (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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 (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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
SCH: exists pt : nat, job_arrival jlp <= pt <= t /\ preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQ1: job_arrival jlp <= pt
NEQ2: pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 (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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
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 (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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq

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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
SCHEDST: exists pt : nat, job_arrival jlp <= pt <= t /\ preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
PREE: valid_preemption_model arr_seq sched
_b_: model_with_bounded_nonpreemptive_segments arr_seq
pt: nat
NEQpt: job_arrival jlp <= pt <= t
PT: preemption_time 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_is_idle : 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_is_idle: is_idle sched t1

exists pr_t : instant, preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_is_idle: is_idle sched t1

exists pr_t : instant, preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_is_idle: is_idle sched t1
service:= service.service sched: Job -> instant -> nat

exists pr_t : instant, preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_is_idle: 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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_is_idle: 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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_is_idle: 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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_is_idle: 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_is_idle: 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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_is_idle: 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_is_idle: 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
H_is_idle: 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_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
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_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
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_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
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_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
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_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
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_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
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_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
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
by eapply hp_job_not_scheduled_before_quiet_time; try by done. 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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; [done | 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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

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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': #|[pred x | let 'FiniteQuant.Quantified F := FiniteQuant.ex (T:=Core) (, scheduled_on s' (sched (t1 + fpt)) x) x x in F]| <> 0

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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'

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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)
job_preemptable jlp (service_during sched jlp 0 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
EqSched_s': sched (t1 + fpt) = Some jlp
Sched_s': scheduled_at sched jlp (t1 + fpt)

job_preemptable jlp (service_during sched jlp 0 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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)
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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)
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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)
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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)
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt

exists sm : nat, sm.+1 = fpt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
EX: exists sm : nat, 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt

exists sm : nat, sm.+1 = fpt
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt

fpt.-1.+1 = fpt
lia.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
s': Job
Sched_s': scheduled_at sched s' (t1 + fpt)
EqSched_s': sched (t1 + fpt) = Some s'
EQ: (jlp == s') = false
POS: 0 < fpt
EX: exists sm : nat, 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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).+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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).+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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).+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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).+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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).+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
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).+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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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; split. 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
apply service_at_most_cost; rt_eauto.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
exists pt; apply/andP; split; by done.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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
by apply preemption_time_le_max_len_of_priority_inversion; [ done | 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2

exists pr_t : instant, preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2

exists pr_t : instant, preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
service:= service.service sched: Job -> instant -> nat

exists pr_t : instant, preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
service:= service.service sched: Job -> instant -> nat
CORR: valid_model_with_bounded_nonpreemptive_segments arr_seq sched

exists pr_t : instant, preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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: is_idle sched t1

exists pr_t : instant, preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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: is_idle sched t1

exists pr_t : instant, preemption_time 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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 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_arrival_times_are_consistent: consistent_arrival_times arr_seq
sched: schedule (processor_state Job)
JLFP: JLFP_policy Job
H_priority_is_reflexive: reflexive_priorities
H_priority_is_transitive: transitive_priorities
H1: TaskMaxNonpreemptiveSegment Task
H2: JobPreemptable Job
H_valid_model_with_bounded_nonpreemptive_segments: valid_model_with_bounded_nonpreemptive_segments arr_seq sched
H3: JobReady Job (processor_state Job)
H_job_ready: work_bearing_readiness arr_seq sched
H_sched_valid: valid_schedule sched arr_seq
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_work_conserving: work_conserving arr_seq sched
H_respects_policy: respects_JLFP_policy_at_preemption_point arr_seq sched JLFP
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix arr_seq sched j t1 t2
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. End PriorityInversionIsBounded.