Built with Alectryon, running Coq+SerAPI v8.20.0+0.20.0. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use instead of Ctrl.
[Loading ML file ssrmatching_plugin.cmxs (using legacy method) ... done]
[Loading ML file ssreflect_plugin.cmxs (using legacy method) ... done]
[Loading ML file ring_plugin.cmxs (using legacy method) ... done]
Serlib plugin: coq-elpi.elpi is not available: serlib support is missing. Incremental checking for commands in this plugin will be impacted.
[Loading ML file coq-elpi.elpi ... done]
[Loading ML file zify_plugin.cmxs (using legacy method) ... done]
[Loading ML file micromega_core_plugin.cmxs (using legacy method) ... done]
[Loading ML file micromega_plugin.cmxs (using legacy method) ... done]
[Loading ML file btauto_plugin.cmxs (using legacy method) ... done]
Notation "_ + _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ - _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ <= _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ < _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ >= _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ > _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ <= _ <= _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ < _ <= _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ <= _ < _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ < _ < _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ * _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Require Export prosa.analysis.definitions.job_properties. Require Export prosa.analysis.facts.model.service_of_jobs. Require Export prosa.analysis.definitions.work_bearing_readiness. Require Export prosa.analysis.facts.priority.inversion. (** * Existence of Busy Interval for JLFP-models *) (** In this module we derive a sufficient condition for existence of busy intervals for uni-processor for JLFP schedulers. *) Section ExistsBusyIntervalJLFP. (** 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 : JobTask Job Task}. Context {Arrival: JobArrival Job}. Context {Cost : JobCost Job}. (** Consider any valid arrival sequence. *) Variable arr_seq : arrival_sequence Job. Hypothesis H_valid_arrival_time : valid_arrival_sequence arr_seq. (** Next, consider any schedule of this arrival sequence ... *) Context {PState : ProcessorState Job}. Variable sched : schedule PState. Hypothesis H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq. (** ... where jobs do not execute before their arrival or after completion. *) Hypothesis H_jobs_must_arrive_to_execute : jobs_must_arrive_to_execute sched. Hypothesis H_completed_jobs_dont_execute : completed_jobs_dont_execute sched. (** Assume a given JLFP policy. *) Context {JLFP : JLFP_policy Job}. (** Further, allow for any work-bearing notion of job readiness. *) Context `{@JobReady Job PState Cost Arrival}. Hypothesis H_job_ready : work_bearing_readiness arr_seq sched. (** For simplicity, let's define some local names. *) Let job_pending_at := pending sched. Let job_completed_by := completed_by sched. (** Consider an arbitrary task [tsk]. *) Variable tsk : Task. (** Consider an arbitrary job [j]. *) Variable j : Job. Hypothesis H_from_arrival_sequence : arrives_in arr_seq j. Hypothesis H_job_task : job_of_task tsk j. Hypothesis H_job_cost_positive : job_cost_positive j. (** Recall the list of jobs that arrive in any interval. *) Let quiet_time t1 := quiet_time arr_seq sched j t1. Let quiet_time_dec t1 := quiet_time_dec arr_seq sched j t1. Let busy_interval_prefix t1 t2 := busy_interval_prefix arr_seq sched j t1 t2. Let busy_interval t1 t2 := busy_interval arr_seq sched j t1 t2. Let is_priority_inversion_bounded_by K := priority_inversion_of_job_is_bounded_by arr_seq sched j K. (** We begin by proving a few basic lemmas about busy intervals. *) Section BasicLemmas. (** Assume that the priority relation is reflexive. *) Hypothesis H_priority_is_reflexive : reflexive_job_priorities JLFP. (** Consider any busy interval <<[t1, t2)>> of job [j]. *) Variable t1 t2 : instant. Hypothesis H_busy_interval : busy_interval t1 t2. (** We prove that job [j] completes by the end of the busy interval. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_priority_is_reflexive: reflexive_job_priorities JLFP
t1, t2: instant
H_busy_interval: busy_interval t1 t2

job_completed_by j t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_priority_is_reflexive: reflexive_job_priorities JLFP
t1, t2: instant
H_busy_interval: busy_interval t1 t2

job_completed_by j t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
REFL: reflexive_job_priorities JLFP
t1, t2: instant
BUSY: busy_interval t1 t2

job_completed_by j t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
REFL: reflexive_job_priorities JLFP
t1, t2: instant
ARR: job_arrival j < t2
QUIET: classical.quiet_time arr_seq sched j t2

job_completed_by j t2
exact: QUIET. Qed. End BasicLemmas. (** In this section, we prove that during a busy interval there always exists a pending job. *) Section ExistsPendingJob. (** Let <<[t1, t2]>> be any interval where time [t1] is quiet and time [t2] is not quiet. *) Variable t1 t2 : instant. Hypothesis H_interval : t1 <= t2. Hypothesis H_quiet : quiet_time t1. Hypothesis H_not_quiet : ~ quiet_time t2. (** Then, we prove that there is a job pending at time [t2] that has higher or equal priority (with respect to [tsk]). *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
H_quiet: quiet_time t1
H_not_quiet: ~ quiet_time t2

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
H_quiet: quiet_time t1
H_not_quiet: ~ quiet_time t2

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
COMP: has (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j) (arrivals_between arr_seq t1 t2) = true

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
COMP: has (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j) (arrivals_between arr_seq t1 t2) = false
exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
COMP: has (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j) (arrivals_between arr_seq t1 t2) = true

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
j_hp: Job
ARR: j_hp \in arrivals_between arr_seq t1 t2
NOTCOMP: ~~ job_completed_by j_hp t2
HP: hep_job j_hp j

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
j_hp: Job
ARR: j_hp \in arrivals_between arr_seq t1 t2
NOTCOMP: ~~ job_completed_by j_hp t2
HP: hep_job j_hp j
INarr: j_hp \in arrivals_between arr_seq t1 t2

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
j_hp: Job
ARR: arrived_between j_hp t1 t2
NOTCOMP: ~~ job_completed_by j_hp t2
HP: hep_job j_hp j
INarr: j_hp \in arrivals_between arr_seq t1 t2

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
j_hp: Job
ARR: arrived_between j_hp t1 t2
NOTCOMP: ~~ job_completed_by j_hp t2
HP: hep_job j_hp j
INarr: arrives_in arr_seq j_hp

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
by exists j_hp; repeat split; last by apply/negP.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
COMP: has (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j) (arrivals_between arr_seq t1 t2) = false

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
COMP: has (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j) (arrivals_between arr_seq t1 t2) = false

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
COMP: all (predC (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j)) (arrivals_between arr_seq t1 t2)

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
COMP: {in arrivals_between arr_seq t1 t2, forall x : Job, predC (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j) x}

exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
COMP: {in arrivals_between arr_seq t1 t2, forall x : Job, predC (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j) x}
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t2

completed_by sched j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
COMP: {in arrivals_between arr_seq t1 t2, forall x : Job, predC (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j) x}
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t2
AFTER: t1 <= job_arrival j_hp

completed_by sched j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
COMP: {in arrivals_between arr_seq t1 t2, forall x : Job, predC (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j) x}
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t2
AFTER: t1 <= job_arrival j_hp

j_hp \in arrivals_between arr_seq t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
j_hp: Job
COMP: (fun x : Job => is_true (predC (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j) x)) j_hp
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t2
AFTER: t1 <= job_arrival j_hp
completed_by sched j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
COMP: {in arrivals_between arr_seq t1 t2, forall x : Job, predC (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j) x}
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t2
AFTER: t1 <= job_arrival j_hp

j_hp \in arrivals_between arr_seq t1 t2
by apply: arrived_between_implies_in_arrivals => //; apply/andP; split.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t1, t2: instant
H_interval: t1 <= t2
QUIET: quiet_time t1
NOTQUIET: ~ quiet_time t2
j_hp: Job
COMP: (fun x : Job => is_true (predC (fun j_hp : Job => ~~ job_completed_by j_hp t2 && hep_job j_hp j) x)) j_hp
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t2
AFTER: t1 <= job_arrival j_hp

completed_by sched j_hp t2
by rewrite /= HP andbT negbK in COMP. } Qed. End ExistsPendingJob. (** In this section, we prove that during a busy interval the processor is never idle. *) Section ProcessorAlwaysBusy. (** Assume that the schedule is work-conserving ... *) Hypothesis H_work_conserving : work_conserving arr_seq sched. (** ... and the priority relation is reflexive and transitive. *) Hypothesis H_priority_is_reflexive : reflexive_job_priorities JLFP. Hypothesis H_priority_is_transitive : transitive_job_priorities JLFP. (** Consider any busy interval prefix <<[t1, t2)>>. *) Variable t1 t2 : instant. Hypothesis H_busy_interval_prefix : busy_interval_prefix t1 t2. (** We prove that if the processor is idle at a time instant [t], then the next time instant [t+1] will be a quiet time. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2

forall t : instant, is_idle arr_seq sched t -> quiet_time t.+1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2

forall t : instant, is_idle arr_seq sched t -> quiet_time t.+1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1

completed_by sched jhp t.+1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1

job_pending_at jhp t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1
PEND: job_pending_at jhp t
False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1

job_pending_at jhp t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1

~~ completed_by sched jhp t
by move: NCOMP; apply contra, completion_monotonic.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1
PEND: job_pending_at jhp t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
WC: arrives_in arr_seq j' -> backlogged sched j' t -> exists j_other : Job, scheduled_at sched j_other t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
WC: backlogged sched j' t -> exists j_other : Job, scheduled_at sched j_other t

backlogged sched j' t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
WC: exists j_other : Job, scheduled_at sched j_other t
False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
WC: backlogged sched j' t -> exists j_other : Job, scheduled_at sched j_other t

backlogged sched j' t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
WC: backlogged sched j' t -> exists j_other : Job, scheduled_at sched j_other t

~~ scheduled_at sched j' t
exact: not_scheduled_when_idle.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
WC: exists j_other : Job, scheduled_at sched j_other t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: instant
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
AB: arrived_before jhp t.+1
NCOMP: ~~ completed_by sched jhp t.+1
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
jo: Job

~~ scheduled_at sched jo t
exact: not_scheduled_when_idle. Qed. (** Next, we prove that at any time instant [t] within the busy interval there exists a job [jhp] such that (1) job [jhp] is pending at time [t] and (2) job [jhp] has higher-or-equal priority than task [tsk]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2

forall t : nat, t1 <= t < t2 -> exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2

forall t : nat, t1 <= t < t2 -> exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
EQ: t1.+1 = t2

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
CONTR: t2 < t1.+1
exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
EQ: t1.+1 = t2

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1: instant
H_busy_interval_prefix: busy_interval_prefix t1 t1.+1
t: nat
GE: t1 <= t
QTt: classical.quiet_time arr_seq sched j t1
REL: t1 <= job_arrival j < t1.+1
NQT: forall t : nat, t1 < t < t1.+1 -> ~ classical.quiet_time arr_seq sched j t
LT: t <= t1

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1: instant
H_busy_interval_prefix: busy_interval_prefix t1 t1.+1
t: nat
GE: t1 <= t
QTt: classical.quiet_time arr_seq sched j t1
REL: t1 <= job_arrival j < t1.+1
NQT: forall t : nat, t1 < t < t1.+1 -> ~ classical.quiet_time arr_seq sched j t
LT: t <= t1
EQ: t1 = t

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t: nat
NQT: forall t0 : nat, t < t0 < t.+1 -> ~ classical.quiet_time arr_seq sched j t0
REL: t <= job_arrival j < t.+1
QTt: classical.quiet_time arr_seq sched j t
H_busy_interval_prefix: busy_interval_prefix t t.+1

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t: nat
NQT: forall t0 : nat, t < t0 < t.+1 -> ~ classical.quiet_time arr_seq sched j t0
REL: t <= job_arrival j < t.+1
QTt: classical.quiet_time arr_seq sched j t
H_busy_interval_prefix: busy_interval_prefix t t.+1

job_pending_at j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t: nat
NQT: forall t0 : nat, t < t0 < t.+1 -> ~ classical.quiet_time arr_seq sched j t0
REL: t <= job_arrival j < t.+1
QTt: classical.quiet_time arr_seq sched j t
H_busy_interval_prefix: busy_interval_prefix t t.+1

job_pending_at j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t: nat
NQT: forall t0 : nat, t < t0 < t.+1 -> ~ classical.quiet_time arr_seq sched j t0
QTt: classical.quiet_time arr_seq sched j t
H_busy_interval_prefix: busy_interval_prefix t t.+1
REL: job_arrival j = t

job_pending_at j t
by rewrite -REL; eapply job_pending_at_arrival; eauto 2.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
CONTR: t2 < t1.+1

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
by exfalso; move_neq_down CONTR; eapply leq_ltn_trans; eauto 2.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2

exists hp__seq : seq Job, forall j__hp : Job, j__hp \in hp__seq <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
EX: exists hp__seq : seq Job, forall j__hp : Job, j__hp \in hp__seq <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2

exists hp__seq : seq Job, forall j__hp : Job, j__hp \in hp__seq <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2

forall j__hp : Job, j__hp \in [seq jo <- arrivals_between arr_seq 0 t.+1 | job_pending_at jo t & hep_job jo j] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
j__hp: Job
T: j__hp \in [seq jo <- arrivals_between arr_seq 0 t.+1 | job_pending_at jo t & hep_job jo j]

arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
j__hp: Job
T: arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
j__hp \in [seq jo <- arrivals_between arr_seq 0 t.+1 | job_pending_at jo t & hep_job jo j]
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
j__hp: Job
T: j__hp \in [seq jo <- arrivals_between arr_seq 0 t.+1 | job_pending_at jo t & hep_job jo j]

arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
j__hp: Job
PEN: job_pending_at j__hp t
HP: hep_job j__hp j
IN: j__hp \in arrivals_between arr_seq 0 t.+1

arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
repeat split; eauto using in_arrivals_implies_arrived.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
j__hp: Job
T: arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j

j__hp \in [seq jo <- arrivals_between arr_seq 0 t.+1 | job_pending_at jo t & hep_job jo j]
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
j__hp: Job
ARR: arrives_in arr_seq j__hp
PEN: job_pending_at j__hp t
HP: hep_job j__hp j

j__hp \in [seq jo <- arrivals_between arr_seq 0 t.+1 | job_pending_at jo t & hep_job jo j]
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
j__hp: Job
ARR: arrives_in arr_seq j__hp
PEN: job_pending_at j__hp t
HP: hep_job j__hp j

j__hp \in arrivals_between arr_seq 0 t.+1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
j__hp: Job
ARR: arrives_in arr_seq j__hp
PEN: job_pending_at j__hp t
HP: hep_job j__hp j

arrived_between j__hp 0 t.+1
by apply/andP; split; last rewrite ltnS; move: PEN => /andP [T _].
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
EX: exists hp__seq : seq Job, forall j__hp : Job, j__hp \in hp__seq <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
hp__seq: seq Job
SE: forall j__hp : Job, j__hp \in hp__seq <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
FL: hp__seq = [::]

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
hp__seq: seq Job
SE: forall j__hp : Job, j__hp \in hp__seq <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
jhp: Job
jhps: seq Job
FL: hp__seq = jhp :: jhps
exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
hp__seq: seq Job
SE: forall j__hp : Job, j__hp \in hp__seq <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
FL: hp__seq = [::]

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
EQ: t1 = t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
GE: t1 < t
False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
EQ: t1 = t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
LT: t1 < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t1 /\ hep_job j__hp j

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
LT: t1 < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t1 /\ hep_job j__hp j

classical.quiet_time arr_seq sched j t1.+1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
LT: t1 < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t1 /\ hep_job j__hp j
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
ARRB: arrived_before jhp t1.+1
NCOMP: ~~ completed_by sched jhp t1.+1

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
LT: t1 < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t1 /\ hep_job j__hp j
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
ARRB: arrived_before jhp t1.+1
NCOMP: ~~ completed_by sched jhp t1.+1
SE2: arrives_in arr_seq jhp /\ job_pending_at jhp t1 /\ hep_job jhp j -> jhp \in [::]

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
LT: t1 < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t1 /\ hep_job j__hp j
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
ARRB: arrived_before jhp t1.+1
NCOMP: ~~ completed_by sched jhp t1.+1

arrives_in arr_seq jhp /\ job_pending_at jhp t1 /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
LT: t1 < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t1 /\ hep_job j__hp j
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
ARRB: arrived_before jhp t1.+1
NCOMP: ~~ completed_by sched jhp t1.+1

~~ completed_by sched jhp t1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
LT: t1 < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t1 /\ hep_job j__hp j
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
ARRB: arrived_before jhp t1.+1
NCOMP: ~~ completed_by sched jhp t1.+1
COMLP: completed_by sched jhp t1

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
LT: t1 < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t1 /\ hep_job j__hp j
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
ARRB: arrived_before jhp t1.+1
COMLP: completed_by sched jhp t1

completed_by sched jhp t1.+1
by apply completion_monotonic with t1.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
GE: t1 < t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
GE: t1 < t

classical.quiet_time arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
GE: t1 < t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
ARRB: arrived_before jhp t
NCOMP: ~~ completed_by sched jhp t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
GE: t1 < t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
ARRB: arrived_before jhp t
NCOMP: ~~ completed_by sched jhp t
SE2: arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j -> jhp \in [::]

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
SE: forall j__hp : Job, j__hp \in [::] <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
GE: t1 < t
jhp: Job
ARR: arrives_in arr_seq jhp
HP: hep_job jhp j
ARRB: arrived_before jhp t
NCOMP: ~~ completed_by sched jhp t

arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
by repeat split; auto; apply/andP; split; first apply ltnW.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
hp__seq: seq Job
SE: forall j__hp : Job, j__hp \in hp__seq <-> arrives_in arr_seq j__hp /\ job_pending_at j__hp t /\ hep_job j__hp j
jhp: Job
jhps: seq Job
FL: hp__seq = jhp :: jhps

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
GE: t1 <= t
LT: t < t2
QTt: classical.quiet_time arr_seq sched j t1
NQT: forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
REL: t1 <= job_arrival j < t2
GT: t1.+1 < t2
jhp: Job
jhps: seq Job
SE1: jhp \in jhp :: jhps -> arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j

exists jhp : Job, arrives_in arr_seq jhp /\ job_pending_at jhp t /\ hep_job jhp j
by exists jhp; apply SE1; rewrite in_cons; apply/orP; left. Qed. (** We prove that at any time instant [t] within <<[t1, t2)>> the processor is not idle. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2

forall t : nat, t1 <= t < t2 -> ~ is_idle arr_seq sched t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2

forall t : nat, t1 <= t < t2 -> ~ is_idle arr_seq sched t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
NEQ: t1 <= t < t2
IDLE: is_idle arr_seq sched t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
NEQ: t1 <= t < t2
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
PEND: job_pending_at jhp t
HP: hep_job jhp j

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
NEQ: t1 <= t < t2
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
HP: hep_job jhp j

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
NEQ: t1 <= t < t2
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
HP: hep_job jhp j

backlogged sched j' t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t: nat
H_work_conserving: exists j_other : Job, scheduled_at sched j_other t
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
NEQ: t1 <= t < t2
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
HP: hep_job jhp j
False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
NEQ: t1 <= t < t2
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
HP: hep_job jhp j

backlogged sched j' t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
t: nat
NEQ: t1 <= t < t2
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
HP: hep_job jhp j

~~ scheduled_at sched j' t
exact: not_scheduled_when_idle.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t: nat
H_work_conserving: exists j_other : Job, scheduled_at sched j_other t
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
NEQ: t1 <= t < t2
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
HP: hep_job jhp j

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t: nat
H_work_conserving: exists j_other : Job, scheduled_at sched j_other t
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
t1, t2: instant
H_busy_interval_prefix: busy_interval_prefix t1 t2
NEQ: t1 <= t < t2
IDLE: is_idle arr_seq sched t
jhp: Job
ARR: arrives_in arr_seq jhp
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t
HP: hep_job jhp j
jo: Job

~~ scheduled_at sched jo t
exact: not_scheduled_when_idle. Qed. End ProcessorAlwaysBusy. (** In section we prove a few auxiliary lemmas about quiet time and service. *) Section QuietTimeAndServiceOfJobs. (** Assume that the schedule is work-conserving ... *) Hypothesis H_work_conserving : work_conserving arr_seq sched. (** ... and there are no duplicate job arrivals. *) Hypothesis H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq. (** Let [t1] be a quiet time. *) Variable t1 : instant. Hypothesis H_quiet_time : quiet_time t1. (** Assume that there is no quiet time in the interval <<(t1, t1 + Δ]>>. *) Variable Δ : duration. Hypothesis H_no_quiet_time : forall t, t1 < t <= t1 + Δ -> ~ quiet_time t. (** For clarity, we introduce a notion of the total service of jobs released in time interval <<[t_beg, t_end)>> during the time interval <<[t1, t1 + Δ)>>. *) Let service_received_by_hep_jobs_released_during t_beg t_end := service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ). (** We prove that jobs with higher-than-or-equal priority that released before time instant [t1] receive no service after time instant [t1]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat

service_received_by_hep_jobs_released_during t1 (t1 + Δ) = service_received_by_hep_jobs_released_during 0 (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat

service_received_by_hep_jobs_released_during t1 (t1 + Δ) = service_received_by_hep_jobs_released_during 0 (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat

service_received_by_hep_jobs_released_during t1 (t1 + Δ) = service_received_by_hep_jobs_released_during 0 (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat

\sum_(j0 <- arrivals_between arr_seq t1 (t1 + Δ) | hep_job j0 j) service_during sched j0 t1 (t1 + Δ) = \sum_(j0 <- arrivals_between arr_seq 0 (t1 + Δ) | hep_job j0 j) service_during sched j0 t1 (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat

\sum_(j0 <- arrivals_between arr_seq t1 (t1 + Δ) | hep_job j0 j) service_during sched j0 t1 (t1 + Δ) = \sum_(j0 <- (arrivals_between arr_seq 0 t1 ++ arrivals_between arr_seq t1 (t1 + Δ)) | hep_job j0 j) service_during sched j0 t1 (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat

\sum_(j0 <- arrivals_between arr_seq t1 (t1 + Δ) | hep_job j0 j) service_during sched j0 t1 (t1 + Δ) = \sum_(i <- arrivals_between arr_seq 0 t1 | hep_job i j) service_during sched i t1 (t1 + Δ) + \sum_(i <- arrivals_between arr_seq t1 (t1 + Δ) | hep_job i j) service_during sched i t1 (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat

0 + \sum_(j0 <- arrivals_between arr_seq t1 (t1 + Δ) | hep_job j0 j) service_during sched j0 t1 (t1 + Δ) = \sum_(i <- arrivals_between arr_seq 0 t1 | hep_job i j) service_during sched i t1 (t1 + Δ) + \sum_(i <- arrivals_between arr_seq t1 (t1 + Δ) | hep_job i j) service_during sched i t1 (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat

0 + \sum_(j0 <- arrivals_between arr_seq t1 (t1 + Δ) | hep_job j0 j) service_during sched j0 t1 (t1 + Δ) == \sum_(i <- arrivals_between arr_seq 0 t1 | hep_job i j) service_during sched i t1 (t1 + Δ) + \sum_(i <- arrivals_between arr_seq t1 (t1 + Δ) | hep_job i j) service_during sched i t1 (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat

\sum_(t1 <= j0 < t1 + Δ) \sum_(i <- arrivals_between arr_seq 0 t1 | hep_job i j) service_at sched i j0 == 0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat

forall i : Datatypes_nat__canonical__eqtype_Equality, true && (i \in index_iota t1 (t1 + Δ)) -> \sum_(i0 <- arrivals_between arr_seq 0 t1 | hep_job i0 j) service_at sched i0 i = 0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
t': Datatypes_nat__canonical__eqtype_Equality
NEQ: t1 <= t' < t1 + (t1 + Δ - t1)

\sum_(i <- arrivals_between arr_seq 0 t1 | hep_job i j) service_at sched i t' = 0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
t': Datatypes_nat__canonical__eqtype_Equality
NEQ: t1 <= t' < t1 + (t1 + Δ - t1)

forall i : Job, hep_job i j && (i \in arrivals_between arr_seq 0 t1) -> service_at sched i t' = 0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
t': Datatypes_nat__canonical__eqtype_Equality
NEQ: t1 <= t' < t1 + (t1 + Δ - t1)
jhp: Job
HP: hep_job jhp j
ARR: jhp \in arrivals_between arr_seq 0 t1

service_at sched jhp t' = 0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
t': Datatypes_nat__canonical__eqtype_Equality
NEQ: t1 <= t' < t1 + (t1 + Δ - t1)
jhp: Job
HP: hep_job jhp j
ARR: jhp \in arrivals_between arr_seq 0 t1

~~ scheduled_at sched jhp t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
t': Datatypes_nat__canonical__eqtype_Equality
NEQ: t1 <= t' < t1 + (t1 + Δ - t1)
jhp: Job
HP: hep_job jhp j
ARR: jhp \in arrivals_between arr_seq 0 t1

completed_by sched jhp t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
t': Datatypes_nat__canonical__eqtype_Equality
NEQ: t1 <= t' < t1 + (t1 + Δ - t1)
jhp: Job
HP: hep_job jhp j
ARR: jhp \in arrivals_between arr_seq 0 t1

completed_by sched jhp t1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
t': Datatypes_nat__canonical__eqtype_Equality
NEQ: t1 <= t' < t1 + (t1 + Δ - t1)
jhp: Job
HP: hep_job jhp j
ARR: jhp \in arrivals_between arr_seq 0 t1

arrives_in arr_seq jhp
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
t': Datatypes_nat__canonical__eqtype_Equality
NEQ: t1 <= t' < t1 + (t1 + Δ - t1)
jhp: Job
HP: hep_job jhp j
ARR: jhp \in arrivals_between arr_seq 0 t1
arrived_before jhp t1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
t': Datatypes_nat__canonical__eqtype_Equality
NEQ: t1 <= t' < t1 + (t1 + Δ - t1)
jhp: Job
HP: hep_job jhp j
ARR: jhp \in arrivals_between arr_seq 0 t1

arrives_in arr_seq jhp
exact: in_arrivals_implies_arrived.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
t': Datatypes_nat__canonical__eqtype_Equality
NEQ: t1 <= t' < t1 + (t1 + Δ - t1)
jhp: Job
HP: hep_job jhp j
ARR: jhp \in arrivals_between arr_seq 0 t1

arrived_before jhp t1
exact: in_arrivals_implies_arrived_before. Qed. (** Next, assume that the processor is an ideal-progress, unit-speed uniprocessor. *) Hypothesis H_uni : uniprocessor_model PState. Hypothesis H_unit : unit_service_proc_model PState. Hypothesis H_progress : ideal_progress_proc_model PState. (** Under this assumption, we prove that the total service within a "non-quiet" time interval <<[t1, t1 + Δ)>> is exactly [Δ]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState

total_service_of_jobs_in sched (arrivals_between arr_seq 0 (t1 + Δ)) t1 (t1 + Δ) = Δ
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState

total_service_of_jobs_in sched (arrivals_between arr_seq 0 (t1 + Δ)) t1 (t1 + Δ) = Δ
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState

\sum_(j <- arrivals_between arr_seq 0 (t1 + Δ) | predT j) service_during sched j t1 (t1 + Δ) = Δ
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState

\sum_(t1 <= j < t1 + Δ) \sum_(i <- arrivals_between arr_seq 0 (t1 + Δ)) service_at sched i j = \sum_(t1 <= x < t1 + Δ) 1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState

\sum_(t1 <= j < t1 + Δ) \sum_(i <- arrivals_between arr_seq 0 (t1 + Δ)) service_at sched i j <= \sum_(t1 <= x < t1 + Δ) 1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
\sum_(t1 <= x < t1 + Δ) 1 <= \sum_(t1 <= j < t1 + Δ) \sum_(i <- arrivals_between arr_seq 0 (t1 + Δ)) service_at sched i j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState

\sum_(t1 <= j < t1 + Δ) \sum_(i <- arrivals_between arr_seq 0 (t1 + Δ)) service_at sched i j <= \sum_(t1 <= x < t1 + Δ) 1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat

\sum_(i <- arrivals_between arr_seq 0 (t1 + Δ)) service_at sched i t' <= 1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
SCH: unit_service_proc_model PState -> uniprocessor_model PState -> uniq (arrivals_between arr_seq 0 (t1 + Δ)) -> forall t : instant, service_of_jobs_at sched predT (arrivals_between arr_seq 0 (t1 + Δ)) t <= 1

\sum_(i <- arrivals_between arr_seq 0 (t1 + Δ)) service_at sched i t' <= 1
by eapply leq_trans; [apply leqnn | apply SCH; eauto using arrivals_uniq with basic_rt_facts].
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState

\sum_(t1 <= x < t1 + Δ) 1 <= \sum_(t1 <= j < t1 + Δ) \sum_(i <- arrivals_between arr_seq 0 (t1 + Δ)) service_at sched i j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState

\sum_(t1 <= x < t1 + Δ) 1 <= \sum_(t1 <= j < t1 + Δ) \sum_(i <- arrivals_between arr_seq 0 (t1 + Δ)) service_at sched i j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ

0 < \sum_(i <- arrivals_between arr_seq 0 (t1 + Δ)) service_at sched i t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ

exists2 x : Job, x \in arrivals_between arr_seq 0 (t1 + Δ) & 0 < service_at sched x t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'

exists2 x : Job, x \in arrivals_between arr_seq 0 (t1 + Δ) & 0 < service_at sched x t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ
jo: Job
Sched_jo: scheduled_at sched jo t'
exists2 x : Job, x \in arrivals_between arr_seq 0 (t1 + Δ) & 0 < service_at sched x t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'

exists2 x : Job, x \in arrivals_between arr_seq 0 (t1 + Δ) & 0 < service_at sched x t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
EQ: t1 = t'

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
EQ: t1 = t'

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
Idle: is_idle arr_seq sched t1
GT: t1 < t1 + Δ

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: ~ quiet_time t1.+1
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
Idle: is_idle arr_seq sched t1
GT: t1 < t1 + Δ

False
by apply H_no_quiet_time, idle_time_implies_quiet_time_at_the_next_time_instant.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'

completed_by sched j_hp t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'

false
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'

job_pending_at j_hp t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'
PEND: job_pending_at j_hp t'
false
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'

job_pending_at j_hp t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'

has_arrived j_hp t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'
~~ completed_by sched j_hp t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'

has_arrived j_hp t'
by rewrite /has_arrived ltnW.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'

~~ completed_by sched j_hp t'
by move: NCOMP; apply contra, completion_monotonic.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'
PEND: job_pending_at j_hp t'

false
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t'

false
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t'

backlogged sched j' t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t': nat
H_work_conserving: exists j_other : Job, scheduled_at sched j_other t'
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t'
false
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
t': nat
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t'

backlogged sched j' t'
by apply/andP; split => //; apply: not_scheduled_when_idle.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t': nat
H_work_conserving: exists j_other : Job, scheduled_at sched j_other t'
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t'

false
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
t': nat
H_work_conserving: exists j_other : Job, scheduled_at sched j_other t'
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: ~ quiet_time t'
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
GT: t' < t1 + Δ
Idle: is_idle arr_seq sched t'
LT: t1 < t'
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t'
NCOMP: ~~ completed_by sched j_hp t'
j': Job
ARR': arrives_in arr_seq j'
READY': job_ready sched j' t'
j_other: Job

~~ scheduled_at sched j_other t'
exact: not_scheduled_when_idle. }
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ
jo: Job
Sched_jo: scheduled_at sched jo t'

exists2 x : Job, x \in arrivals_between arr_seq 0 (t1 + Δ) & 0 < service_at sched x t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ
jo: Job
Sched_jo: scheduled_at sched jo t'

exists2 x : Job, x \in arrivals_between arr_seq 0 (t1 + Δ) & 0 < service_at sched x t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ
jo: Job
Sched_jo: scheduled_at sched jo t'

jo \in arrivals_between arr_seq 0 (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ
jo: Job
Sched_jo: scheduled_at sched jo t'
0 < service_at sched jo t'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ
jo: Job
Sched_jo: scheduled_at sched jo t'

jo \in arrivals_between arr_seq 0 (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ
jo: Job
Sched_jo: scheduled_at sched jo t'

arrived_between jo 0 (t1 + Δ)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ
jo: Job
Sched_jo: scheduled_at sched jo t'

job_arrival jo < t1 + Δ
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ
jo: Job
Sched_jo: has_arrived jo t'

job_arrival jo < t1 + Δ
by apply leq_ltn_trans with t'.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
t1: instant
H_quiet_time: quiet_time t1
Δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + Δ -> ~ quiet_time t
service_received_by_hep_jobs_released_during:= fun t_beg t_end : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t_beg t_end) j t1 (t1 + Δ): instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t': nat
LT: t1 <= t'
GT: t' < t1 + Δ
jo: Job
Sched_jo: scheduled_at sched jo t'

0 < service_at sched jo t'
by apply: H_progress. } } Qed. End QuietTimeAndServiceOfJobs. (** In this section, we show that the length of any busy interval is bounded, as long as there is enough supply to accommodate the workload of tasks with higher or equal priority. *) Section BoundingBusyInterval. (** Assume that the schedule is work-conserving, ... *) Hypothesis H_work_conserving : work_conserving arr_seq sched. (** ... and there are no duplicate job arrivals, ... *) Hypothesis H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq. (** ... and the priority relation is reflexive and transitive. *) Hypothesis H_priority_is_reflexive: reflexive_job_priorities JLFP. Hypothesis H_priority_is_transitive: transitive_job_priorities JLFP. (** Next, we recall the notion of workload of all jobs released in a given interval <<[t1, t2)>> that have higher-or-equal priority w.r.t. the job [j] being analyzed. *) Let hp_workload t1 t2 := workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2). (** With regard to the jobs with higher-or-equal priority that are released in a given interval <<[t1, t2)>>, we also recall the service received by these jobs in the same interval <<[t1, t2)>>. *) Let hp_service t1 t2 := service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2. (** Now we begin the proof. First, we show that the busy interval is bounded. *) Section BoundingBusyInterval. (** Suppose that job [j] is pending at time [t_busy]. *) Variable t_busy : instant. Hypothesis H_j_is_pending : job_pending_at j t_busy. (** First, we show that there must exist a busy interval prefix. *) Section LowerBound. (** Since job [j] is pending, there is a (potentially unbounded) busy interval that starts no later than with the arrival of [j]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
EX: [exists t, quiet_time_dec t] = true

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
EX: [exists t, quiet_time_dec t] = false
exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
EX: [exists t, quiet_time_dec t] = true

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
EX: [exists t, quiet_time_dec t] = true
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0

quiet_time last0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0
exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0

quiet_time last0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp last0
PRED: {in arrivals_before arr_seq last0, forall x : Job, hep_job x j ==> completed_by sched x last0}

j_hp \in arrivals_before arr_seq last0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp last0
PRED: (fun x : Job => is_true (hep_job x j ==> completed_by sched x last0)) j_hp
completed_by sched j_hp last0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp last0
PRED: {in arrivals_before arr_seq last0, forall x : Job, hep_job x j ==> completed_by sched x last0}

j_hp \in arrivals_before arr_seq last0
by eapply arrived_between_implies_in_arrivals; eauto.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp last0
PRED: (fun x : Job => is_true (hep_job x j ==> completed_by sched x last0)) j_hp

completed_by sched j_hp last0
by rewrite HP implyTb in PRED.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0

busy_interval_prefix last0 t_busy.+1 /\ last0 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0

last0 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0
JAIN: last0 <= job_arrival j <= t_busy
busy_interval_prefix last0 t_busy.+1 /\ last0 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0

last0 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0

last0 <= job_arrival j
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0
BEFORE: job_arrival j < last0

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0
BEFORE: job_arrival j < last0
NOTCOMP: ~~ completed_by sched j t_busy

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: arrived_before j last0 -> completed_by sched j last0
BEFORE: job_arrival j < last0
NOTCOMP: ~~ completed_by sched j t_busy

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: completed_by sched j last0
BEFORE: job_arrival j < last0
NOTCOMP: ~~ completed_by sched j t_busy

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: completed_by sched j last0
BEFORE: job_arrival j < last0
NOTCOMP: ~~ completed_by sched j t_busy

last0 <= t_busy
by apply bigmax_ltn_ord with (i0 := t).
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0
JAIN: last0 <= job_arrival j <= t_busy

busy_interval_prefix last0 t_busy.+1 /\ last0 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0
JAIN: last0 <= job_arrival j <= t_busy

last0 < t_busy.+1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0
JAIN: last0 <= job_arrival j <= t_busy
forall t : nat, last0 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0
JAIN: last0 <= job_arrival j <= t_busy

last0 < t_busy.+1
by apply bigmax_ltn_ord with (i0 := t).
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0
JAIN: last0 <= job_arrival j <= t_busy

forall t : nat, last0 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0
JAIN: last0 <= job_arrival j <= t_busy
t0: nat
GTlast: last0 < t0
LTbusy: t0 < t_busy.+1
QUIET0: classical.quiet_time arr_seq sched j t0

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0
JAIN: last0 <= job_arrival j <= t_busy
t0: nat
GTlast: last0 < t0
LTbusy: t0 < t_busy.+1
QUIET0: classical.quiet_time arr_seq sched j t0
PRED0: quiet_time_dec t0

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time_dec t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time_dec t
PRED: quiet_time_dec last0
QUIET: quiet_time last0
JAIN: last0 <= job_arrival j <= t_busy
t0: nat
GTlast: last0 < t0
LTbusy: t0 < t_busy.+1
QUIET0: classical.quiet_time arr_seq sched j t0
PRED0: quiet_time_dec t0

t0 <= \max_(i < t_busy.+1 | quiet_time_dec i) i -> False
by rewrite -/last0; move: GTlast; clear; lia.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
EX: [exists t, quiet_time_dec t] = false

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
ALL: forall x : 'I_t_busy.+1, ~~ quiet_time_dec x

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
ALL: forall x : 'I_t_busy.+1, ~~ quiet_time_dec x

busy_interval_prefix 0 t_busy.+1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
ALL: forall x : 'I_t_busy.+1, ~~ quiet_time_dec x

forall t : nat, 0 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
ALL: forall x : 'I_t_busy.+1, ~~ quiet_time_dec x
0 <= job_arrival j < t_busy.+1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
ALL: forall x : 'I_t_busy.+1, ~~ quiet_time_dec x

forall t : nat, 0 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
ALL: forall x : 'I_t_busy.+1, ~~ quiet_time_dec x
t: nat
GE: 0 < t
LT: t < t_busy.+1
QUIET: consistent_arrival_times arr_seq -> classical.quiet_time_dec arr_seq sched j t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
ALL: forall x : 'I_t_busy.+1, ~~ quiet_time_dec x
t: nat
GE: 0 < t
LT: t < t_busy.+1
QUIET: consistent_arrival_times arr_seq -> classical.quiet_time_dec arr_seq sched j t

quiet_time_dec t
exact: QUIET.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
ALL: forall x : 'I_t_busy.+1, ~~ quiet_time_dec x

0 <= job_arrival j < t_busy.+1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
WORK: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
PEND: job_pending_at j t_busy
ALL: forall x : 'I_t_busy.+1, ~~ quiet_time_dec x

job_arrival j < t_busy.+1
by move: PEND => /andP[]. Qed. End LowerBound. (** Next we prove that, if there is a point where the requested workload is upper-bounded by the supply, then the busy interval eventually ends. *) Section UpperBound. (** The following proofs assume that the processor is an ideal-progress, unit-speed uniprocessor. *) Hypothesis H_uni : uniprocessor_model PState. Hypothesis H_unit : unit_service_proc_model PState. Hypothesis H_progress : ideal_progress_proc_model PState. (** Consider any busy interval prefix of job [j]. *) Variable t1 : instant. Hypothesis H_is_busy_prefix : busy_interval_prefix t1 t_busy.+1. (** Let's define A as the relative arrival time of job [j] (with respect to time [t1]). *) Let A := job_arrival j - t1. (** Let [priority_inversion_bound] be a constant that bounds the length of any priority inversion. *) Variable priority_inversion_bound : instant -> instant. Hypothesis H_priority_inversion_is_bounded : is_priority_inversion_bounded_by priority_inversion_bound. (** Next, assume that for some positive delta, the sum of requested workload at time [t1 + delta] and constant priority_inversion_bound is bounded by delta (i.e., the supply). *) Variable delta : duration. Hypothesis H_delta_positive : delta > 0. Hypothesis H_workload_is_bounded : priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta. (** If there is a quiet time by time [t1 + delta], it trivially follows that the busy interval is bounded. Thus, let's consider first the harder case where there is no quiet time, which turns out to be impossible. *) Section CannotBeBusyForSoLong. (** Assume that there is no quiet time in the interval <<(t1, t1 + delta]>>. *) Hypothesis H_no_quiet_time: forall t, t1 < t <= t1 + delta -> ~ quiet_time t. (** Since the interval is always non-quiet, the processor is always busy with tasks of higher-or-equal priority or some lower priority job which was scheduled, i.e., the sum of service done by jobs with actual arrival time in <<[t1, t1 + delta)>> and priority inversion equals [delta]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

delta <= priority_inversion_bound A + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

delta <= priority_inversion_bound A + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1

delta <= priority_inversion_bound A + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: (delta <= priority_inversion_bound A) = true

delta <= priority_inversion_bound A + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: (delta <= priority_inversion_bound A) = false
delta <= priority_inversion_bound A + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: (delta <= priority_inversion_bound A) = true

delta <= priority_inversion_bound A + hp_service t1 (t1 + delta)
by apply leq_trans with (priority_inversion_bound A); last rewrite leq_addr.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: (delta <= priority_inversion_bound A) = false

delta <= priority_inversion_bound A + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta

delta <= priority_inversion_bound A + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta

delta <= cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) + hp_service t1 (t1 + delta) <= priority_inversion_bound A + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta

delta <= cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta

delta <= cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) + service_of_jobs sched (hep_job^~ j) (arrivals_between arr_seq 0 (t1 + delta)) t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta

delta <= cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) + total_service_of_jobs_in sched (arrivals_between arr_seq 0 (t1 + delta)) t1 (t1 + delta) - service_of_jobs sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta

service_of_jobs sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t1 (t1 + delta) <= cumulative_priority_inversion arr_seq sched j t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta

\sum_(t1 <= t < t1 + delta) service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t <= cumulative_priority_inversion arr_seq sched j t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta

service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t <= priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
IDLE: is_idle arr_seq sched t

service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t <= priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t <= priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
IDLE: is_idle arr_seq sched t

service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t <= priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
IDLE: is_idle arr_seq sched t

service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t = 0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
IDLE: is_idle arr_seq sched t
j': Job
NHEP: ~~ hep_job j' j

service_at sched j' t = 0
by apply/not_scheduled_implies_no_service/not_scheduled_when_idle.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t

service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t <= priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t

service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t <= priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = true

service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t <= priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false
service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t <= priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = true

service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t <= priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = true

forall j0 : Job, j0 \in arrivals_between arr_seq 0 (t1 + delta) -> ~~ (~~ hep_job j0 j && scheduled_at sched j0 t)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = true
j'': Job
IN: j'' \in arrivals_between arr_seq 0 (t1 + delta)
NHEP: ~~ hep_job j'' j
SCHED'': scheduled_at sched j'' t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = true
j'': Job
IN: j'' \in arrivals_between arr_seq 0 (t1 + delta)
NHEP: ~~ hep_job j'' j
SCHED'': scheduled_at sched j'' t
EQ: j'' = j'

False
by subst j''; rewrite PRIO1 in NHEP.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false

service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t <= priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false
SCH: forall p : ProcessorState Job, unit_service_proc_model p -> uniprocessor_model p -> forall (s : schedule p) (j0 : JLFP_policy Job), uniq (arrivals_between arr_seq 0 (t1 + delta)) -> forall t : instant, service_of_jobs_at s (fun i : Job => ~~ hep_job i j) (arrivals_between arr_seq 0 (t1 + delta)) t <= 1

service_of_jobs_at sched (fun j0 : Job => ~~ hep_job j0 j) (arrivals_between arr_seq 0 (t1 + delta)) t <= priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false
SCH: forall p : ProcessorState Job, unit_service_proc_model p -> uniprocessor_model p -> forall (s : schedule p) (j0 : JLFP_policy Job), uniq (arrivals_between arr_seq 0 (t1 + delta)) -> forall t : instant, service_of_jobs_at s (fun i : Job => ~~ hep_job i j) (arrivals_between arr_seq 0 (t1 + delta)) t <= 1

0 < priority_inversion arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false

j \notin scheduled_jobs_at arr_seq sched t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false
has (fun jlp : Job => ~~ hep_job jlp j) (scheduled_jobs_at arr_seq sched t)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false

j \notin scheduled_jobs_at arr_seq sched t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false
SCHED': j \in scheduled_jobs_at arr_seq sched t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false
SCHED': j \in scheduled_jobs_at arr_seq sched t

j = j'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false
SCHED': j \in scheduled_jobs_at arr_seq sched t
EQ: j = j'
False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false
SCHED': j \in scheduled_jobs_at arr_seq sched t

j = j'
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
PRIO1: hep_job j' j = false
SCHED': j \in scheduled_jobs_at arr_seq sched t

scheduled_at sched j t
by rewrite -(scheduled_jobs_at_iff arr_seq).
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false
SCHED': j \in scheduled_jobs_at arr_seq sched t
EQ: j = j'

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j': Job
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j']: (duration -> duration) -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j' t1]: instant -> instant -> Prop
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j' t1]: instant -> instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j']: instant -> bool
quiet_time:= [eta classical.quiet_time arr_seq sched j']: instant -> Prop
H_job_cost_positive: job_cost_positive j'
H_job_task: job_of_task tsk j'
H_from_arrival_sequence: arrives_in arr_seq j'
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j' t1 t2: instant -> instant -> nat
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j' (arrivals_between arr_seq t1 t2): instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j' t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
A:= job_arrival j' - t1: nat
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_strictly_larger: t1 < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
EXj: t1 <= job_arrival j' < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j' t1
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
SCHED: scheduled_at sched j' t
SCHED': j' \in scheduled_jobs_at arr_seq sched t

hep_job j' j'
apply H_priority_is_reflexive.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false

has (fun jlp : Job => ~~ hep_job jlp j) (scheduled_jobs_at arr_seq sched t)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
t: Datatypes_nat__canonical__eqtype_Equality
GEi: t1 <= t
LEt: t < t1 + delta
j': Job
SCHED: scheduled_at sched j' t
PRIO1: hep_job j' j = false

j' \in scheduled_jobs_at arr_seq sched t
by rewrite scheduled_jobs_at_iff. }
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta

cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) + hp_service t1 (t1 + delta) <= priority_inversion_bound A + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta

cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) + hp_service t1 (t1 + delta) <= priority_inversion_bound A + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta

cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) <= priority_inversion_bound A
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
NEQ: (t1 + delta <= t_busy.+1) = true

cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) <= priority_inversion_bound A
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
NEQ: t_busy.+1 < t1 + delta
cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) <= priority_inversion_bound A
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
NEQ: (t1 + delta <= t_busy.+1) = true

cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) <= priority_inversion_bound A
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
NEQ: (t1 + delta <= t_busy.+1) = true

cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) <= cumulative_priority_inversion arr_seq sched j t1 t_busy.+1
by rewrite [in X in _ <= X](cumulative_priority_inversion_cat _ _ _ (t1 + delta)) //= leq_addr.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
NEQ: t_busy.+1 < t1 + delta

cumulative_priority_inversion arr_seq sched j t1 (t1 + delta) <= priority_inversion_bound A
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
NEQ: t_busy.+1 < t1 + delta

t1 < t1 + delta
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
NEQ: t_busy.+1 < t1 + delta
forall t : nat, t1 < t < t1 + delta -> ~ classical.quiet_time arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
NEQ: t_busy.+1 < t1 + delta
t1 <= job_arrival j < t1 + delta
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
NEQ: t_busy.+1 < t1 + delta

t1 < t1 + delta
by rewrite -addn1 leq_add2l.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
NEQ: t_busy.+1 < t1 + delta

forall t : nat, t1 < t < t1 + delta -> ~ classical.quiet_time arr_seq sched j t
by move => t' /andP [LT GT]; apply H_no_quiet_time; apply/andP; split; last rewrite ltnW.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
H_strictly_larger: t1 < t_busy.+1
H_quiet: classical.quiet_time arr_seq sched j t1
EXj: t1 <= job_arrival j < t_busy.+1
KLEΔ: priority_inversion_bound A < delta
NEQ: t_busy.+1 < t1 + delta

t1 <= job_arrival j < t1 + delta
by move: EXj => /andP [T1 T2]; apply/andP; split; last apply ltn_trans with (t_busy.+1). } Qed. (** Moreover, the fact that the interval is not quiet also implies that there's more workload requested than service received. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

hp_service t1 (t1 + delta) < hp_workload t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

hp_service t1 (t1 + delta) < hp_workload t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: forall t1 t2 : instant, t1 <= t2 -> quiet_time t1 -> ~ quiet_time t2 -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2

hp_service t1 (t1 + delta) < hp_workload t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: forall t1 t2 : instant, t1 <= t2 -> quiet_time t1 -> ~ quiet_time t2 -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2

hp_service t1 (t1 + delta) < hp_workload t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: forall t1 t2 : instant, t1 <= t2 -> quiet_time t1 -> ~ quiet_time t2 -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job

hp_service t1 (t1 + delta) < hp_workload t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: forall t1 t2 : instant, t1 <= t2 -> quiet_time t1 -> ~ quiet_time t2 -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job

hp_service t1 (t1 + delta) < hp_workload t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: forall t1 t2 : instant, t1 <= t2 -> quiet_time t1 -> ~ quiet_time t2 -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job

\sum_(j0 <- arrivals_between arr_seq t1 (t1 + delta) | hep_job j0 j) service_during sched j0 t1 (t1 + delta) < \sum_(j0 <- arrivals_between arr_seq t1 (t1 + delta) | hep_job j0 j) job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: forall t1 t2 : instant, t1 <= t2 -> quiet_time t1 -> ~ quiet_time t2 -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job

\sum_(j0 <- l | hep j0 j) service_during sched j0 t1 (t1 + delta) < \sum_(j0 <- l | hep j0 j) job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: forall t1 t2 : instant, t1 <= t2 -> quiet_time t1 -> ~ quiet_time t2 -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1

\sum_(j0 <- l | hep j0 j) service_during sched j0 t1 (t1 + delta) < \sum_(j0 <- l | hep j0 j) job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: forall t1 t2 : instant, t1 <= t2 -> quiet_time t1 -> ~ quiet_time t2 -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

\sum_(j0 <- l | hep j0 j) service_during sched j0 t1 (t1 + delta) < \sum_(j0 <- l | hep j0 j) job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: forall t1 t2 : instant, t1 <= t2 -> quiet_time t1 -> ~ quiet_time t2 -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

t1 < t1 + delta <= t1 + delta
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: forall t1 t2 : instant, t1 <= t2 -> quiet_time t1 -> ~ quiet_time t2 -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
\sum_(j0 <- l | hep j0 j) service_during sched j0 t1 (t1 + delta) < \sum_(j0 <- l | hep j0 j) job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: forall t1 t2 : instant, t1 <= t2 -> quiet_time t1 -> ~ quiet_time t2 -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

t1 < t1 + delta <= t1 + delta
by apply/andP; split; first rewrite -addn1 leq_add2l.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: forall t1 t2 : instant, t1 <= t2 -> quiet_time t1 -> ~ quiet_time t2 -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 t2 /\ hep_job j_hp j /\ ~ job_completed_by j_hp t2
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)

\sum_(j0 <- l | hep j0 j) service_during sched j0 t1 (t1 + delta) < \sum_(j0 <- l | hep j0 j) job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: quiet_time t1 -> ~ quiet_time (t1 + delta) -> exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 (t1 + delta) /\ hep_job j_hp j /\ ~ job_completed_by j_hp (t1 + delta)
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)

\sum_(j0 <- l | hep j0 j) service_during sched j0 t1 (t1 + delta) < \sum_(j0 <- l | hep j0 j) job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
PEND: exists j_hp : Job, arrives_in arr_seq j_hp /\ arrived_between j_hp t1 (t1 + delta) /\ hep_job j_hp j /\ ~ job_completed_by j_hp (t1 + delta)
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)

\sum_(j0 <- l | hep j0 j) service_during sched j0 t1 (t1 + delta) < \sum_(j0 <- l | hep j0 j) job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)

\sum_(j0 <- l | hep j0 j) service_during sched j0 t1 (t1 + delta) < \sum_(j0 <- l | hep j0 j) job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)

j0 \in l
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
\sum_(j0 <- l | hep j0 j) service_during sched j0 t1 (t1 + delta) < \sum_(j0 <- l | hep j0 j) job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)

j0 \in l
by apply: arrived_between_implies_in_arrivals => //; apply/andP; split.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l

\sum_(j0 <- l | hep j0 j) service_during sched j0 t1 (t1 + delta) < \sum_(j0 <- l | hep j0 j) job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
UNIQ: uniq l

\sum_(j0 <- l | hep j0 j) service_during sched j0 t1 (t1 + delta) < \sum_(j0 <- l | hep j0 j) job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
UNIQ: uniq l

\sum_(i <- l) (if hep i j then service_during sched i t1 (t1 + delta) else 0) < \sum_(i <- l) (if hep i j then job_cost i else 0)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
UNIQ: uniq l

service_during sched j0 t1 (t1 + delta) + \sum_(i <- l | i != j0) (if hep_job i j then service_during sched i t1 (t1 + delta) else 0) < job_cost j0 + \sum_(i <- l | i != j0) (if hep_job i j then job_cost i else 0)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
UNIQ: uniq l

(service_during sched j0 t1 (t1 + delta)).+1 + \sum_(i <- l | i != j0) (if hep_job i j then service_during sched i t1 (t1 + delta) else 0) <= job_cost j0 + \sum_(i <- l | i != j0) (if hep_job i j then job_cost i else 0)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
UNIQ: uniq l

\sum_(i <- l | i != j0) (if hep_job i j then service_during sched i t1 (t1 + delta) else 0) <= \sum_(i <- l | i != j0) (if hep_job i j then job_cost i else 0)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
UNIQ: uniq l
service_during sched j0 t1 (t1 + delta) < job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
UNIQ: uniq l

\sum_(i <- l | i != j0) (if hep_job i j then service_during sched i t1 (t1 + delta) else 0) <= \sum_(i <- l | i != j0) (if hep_job i j then job_cost i else 0)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
UNIQ: uniq l
j1: Job
NEQ: j1 != j0

(if hep_job j1 j then service_during sched j1 t1 (t1 + delta) else 0) <= (if hep_job j1 j then job_cost j1 else 0)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
UNIQ: uniq l
j1: Job
NEQ: j1 != j0

service_during sched j1 t1 (t1 + delta) <= job_cost j1
by apply: cumulative_service_le_job_cost.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
UNIQ: uniq l

service_during sched j0 t1 (t1 + delta) < job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
UNIQ: uniq l

service_during sched j0 (job_arrival j0) (t1 + delta) < job_cost j0
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
PREFIX: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
NOTQUIET: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
l:= arrivals_between arr_seq t1 (t1 + delta): seq Job
hep:= hep_job: rel Job
QUIET: classical.quiet_time arr_seq sched j t1
NOTQUIET': ~ quiet_time (t1 + delta)
j0: Job
ARR0: arrives_in arr_seq j0
GE0: t1 <= job_arrival j0
LT0: job_arrival j0 < t1 + delta
HP0: hep_job j0 j
NOTCOMP0: ~ job_completed_by j0 (t1 + delta)
IN0: j0 \in l
UNIQ: uniq l

service_during sched j0 0 (t1 + delta) < job_cost j0
by rewrite ltnNge; apply/negP. Qed. (** Using the two lemmas above, we infer that the workload is larger than the interval length. However, this contradicts the assumption [H_workload_is_bounded]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

delta < priority_inversion_bound A + hp_workload t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

delta < priority_inversion_bound A + hp_workload t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

delta <= priority_inversion_bound A + hp_service t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
priority_inversion_bound A + hp_service t1 (t1 + delta) < priority_inversion_bound A + hp_workload t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

delta <= priority_inversion_bound A + hp_service t1 (t1 + delta)
by apply busy_interval_has_uninterrupted_service.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

priority_inversion_bound A + hp_service t1 (t1 + delta) < priority_inversion_bound A + hp_workload t1 (t1 + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
H_no_quiet_time: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

hp_service t1 (t1 + delta) < hp_workload t1 (t1 + delta)
by apply busy_interval_too_much_workload. Qed. End CannotBeBusyForSoLong. (** Since the interval cannot remain busy for so long, we prove that the busy interval finishes at some point [t2 <= t1 + delta]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta

exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta

exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1

exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
EX: [exists t2, (t1 < t2) && quiet_time_dec t2] = true

exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
EX: [exists t2, (t1 < t2) && quiet_time_dec t2] = false
exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
EX: [exists t2, (t1 < t2) && quiet_time_dec t2] = true

exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
EX: [exists t2, (t1 < t2) && quiet_time_dec t2] = true

exists t2 : instant, (t1 < t2 <= t1 + delta) && quiet_time_dec t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
EX: [exists t2, (t1 < t2) && quiet_time_dec t2] = true
EX': exists t2 : instant, (t1 < t2 <= t1 + delta) && quiet_time_dec t2
exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
EX: [exists t2, (t1 < t2) && quiet_time_dec t2] = true

exists t2 : instant, (t1 < t2 <= t1 + delta) && quiet_time_dec t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: fintype_ordinal__canonical__fintype_Finite (t1 + delta).+1
LE: t1 < t2
QUIET: quiet_time_dec t2

exists t2 : instant, (t1 < t2 <= t1 + delta) && quiet_time_dec t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: fintype_ordinal__canonical__fintype_Finite (t1 + delta).+1
LE: t1 < t2
QUIET: quiet_time_dec t2

t1 < t2 <= t1 + delta
by apply/andP; split; last (rewrite -ltnS; apply ltn_ord).
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
EX: [exists t2, (t1 < t2) && quiet_time_dec t2] = true
EX': exists t2 : instant, (t1 < t2 <= t1 + delta) && quiet_time_dec t2

exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n

exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n

forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
t1 <= job_arrival j < t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
classical.quiet_time arr_seq sched j t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n

forall t : nat, t1 < t < t2 -> ~ classical.quiet_time arr_seq sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
t: nat
GT1: t1 < t
LT2: t < t2
BUG: classical.quiet_time arr_seq sched j t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
t: nat
GT1: t1 < t
LT2: t < t2
BUG: classical.quiet_time arr_seq sched j t

t1 < t <= t1 + delta
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
t: nat
GT1: t1 < t
LT2: t < t2
BUG: classical.quiet_time arr_seq sched j t
quiet_time_dec t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
t: nat
MIN: t2 <= t
GT1: t1 < t
LT2: t < t2
BUG: classical.quiet_time arr_seq sched j t
False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
t: nat
GT1: t1 < t
LT2: t < t2
BUG: classical.quiet_time arr_seq sched j t

t1 < t <= t1 + delta
by apply/andP; split; last by apply leq_trans with (n := t2); eauto using ltnW.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
t: nat
GT1: t1 < t
LT2: t < t2
BUG: classical.quiet_time arr_seq sched j t

quiet_time_dec t
by apply/quiet_time_P.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
t: nat
MIN: t2 <= t
GT1: t1 < t
LT2: t < t2
BUG: classical.quiet_time arr_seq sched j t

False
by apply leq_ltn_trans with (p := t2) in MIN; first by rewrite ltnn in MIN.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n

t1 <= job_arrival j < t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
IN1: t1 <= job_arrival j
IN2: job_arrival j < t_busy.+1

t1 <= job_arrival j < t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
IN1: t1 <= job_arrival j
IN2: job_arrival j < t_busy.+1

job_arrival j < t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
IN1: t1 <= job_arrival j
IN2: job_arrival j < t_busy.+1

t_busy < t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
IN1: t1 <= job_arrival j
IN2: job_arrival j < t_busy.+1
CONTR: t2 <= t_busy

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
IN1: t1 <= job_arrival j
IN2: job_arrival j < t_busy.+1
CONTR: t2 <= t_busy

t1 < t2 < t_busy.+1
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
IN1: t1 <= job_arrival j
IN2: job_arrival j < t_busy.+1
CONTR: t2 <= t_busy
classical.quiet_time arr_seq sched j t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
IN1: t1 <= job_arrival j
IN2: job_arrival j < t_busy.+1
CONTR: t2 <= t_busy

t1 < t2 < t_busy.+1
by apply/andP; split; last rewrite ltnS.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
IN1: t1 <= job_arrival j
IN2: job_arrival j < t_busy.+1
CONTR: t2 <= t_busy

classical.quiet_time arr_seq sched j t2
by apply/quiet_time_P.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n

classical.quiet_time arr_seq sched j t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
QUIET: quiet_time_dec t2
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t2

completed_by sched j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t2
QUIET: {in arrivals_before arr_seq t2, forall x : Job, hep_job x j ==> completed_by sched x t2}

j_hp \in arrivals_before arr_seq t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t2
QUIET: (fun x : Job => is_true (hep_job x j ==> completed_by sched x t2)) j_hp
completed_by sched j_hp t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t2
QUIET: {in arrivals_before arr_seq t2, forall x : Job, hep_job x j ==> completed_by sched x t2}

j_hp \in arrivals_before arr_seq t2
by eapply arrived_between_implies_in_arrivals; last apply ARR.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
t2: nat
GT: t1 < t2
LE: t2 <= t1 + delta
MIN: forall n : nat, (t1 < n <= t1 + delta) && quiet_time_dec n -> t2 <= n
j_hp: Job
IN: arrives_in arr_seq j_hp
HP: hep_job j_hp j
ARR: arrived_before j_hp t2
QUIET: (fun x : Job => is_true (hep_job x j ==> completed_by sched x t2)) j_hp

completed_by sched j_hp t2
by move: QUIET => /implyP QUIET; apply QUIET.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
EX: [exists t2, (t1 < t2) && quiet_time_dec t2] = false

exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
ALL': forall x : 'I_(t1 + delta).+1, ~~ ((t1 < x) && quiet_time_dec x)

exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
ALL': forall x : 'I_(t1 + delta).+1, ~~ ((t1 < x) && quiet_time_dec x)

forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
ALL': forall x : 'I_(t1 + delta).+1, ~~ ((t1 < x) && quiet_time_dec x)
ALL: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
ALL': forall x : 'I_(t1 + delta).+1, ~~ ((t1 < x) && quiet_time_dec x)

forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
ALL': forall x : 'I_(t1 + delta).+1, ~~ ((t1 < x) && quiet_time_dec x)
t: nat
GTt: t1 < t
QUIET: quiet_time t
LEt: t < (t1 + delta).+1

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
ALL': forall x : 'I_(t1 + delta).+1, ~~ ((t1 < x) && quiet_time_dec x)
t: nat
GTt: t1 < t
QUIET: quiet_time t
LEt: t < (t1 + delta).+1

(t1 < t) && quiet_time_dec t
by apply/andP; split => //; apply/quiet_time_P.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
ALL': forall x : 'I_(t1 + delta).+1, ~~ ((t1 < x) && quiet_time_dec x)
ALL: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
ALL: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
ALL: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
TOOMUCH: (forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t) -> delta < priority_inversion_bound A + hp_workload t1 (t1 + delta)

False
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
t_busy: instant
H_j_is_pending: job_pending_at j t_busy
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
A:= job_arrival j - t1: nat
priority_inversion_bound: instant -> instant
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta
LT: t1 < t_busy.+1
QT: classical.quiet_time arr_seq sched j t1
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ classical.quiet_time arr_seq sched j t
NEQ: t1 <= job_arrival j < t_busy.+1
ALL: forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t
TOOMUCH: (forall t : nat, t1 < t <= t1 + delta -> ~ quiet_time t) -> delta < priority_inversion_bound A + hp_workload t1 (t1 + delta)
BOUNDED: priority_inversion_bound A + hp_workload t1 (t1 + delta) <= delta

False
by move: (leq_trans (TOOMUCH ALL) BOUNDED); rewrite ltnn. Qed. End UpperBound. End BoundingBusyInterval. (** The following proofs assume that the processor is an ideal-progress, unit-speed uniprocessor. *) Hypothesis H_uni : uniprocessor_model PState. Hypothesis H_unit : unit_service_proc_model PState. Hypothesis H_progress : ideal_progress_proc_model PState. (** In this section, we show that from a workload bound we can infer the existence of a busy interval. *) Section BusyIntervalFromWorkloadBound. (** Let [priority_inversion_bound] be a constant that bounds the length of a priority inversion. *) Variable priority_inversion_bound : duration -> duration. Hypothesis H_priority_inversion_is_bounded : is_priority_inversion_bounded_by priority_inversion_bound . (** Assume that for some positive delta, the sum of requested workload at time [t1 + delta] and priority inversion is bounded by delta (i.e., the supply). *) Variable delta : duration. Hypothesis H_delta_positive : delta > 0. Hypothesis H_workload_is_bounded : forall t, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta. (** Next, we assume that job j has positive cost, from which we can infer that there is a time in which j is pending. *) Hypothesis H_positive_cost : job_cost j > 0. (** Therefore there must exists a busy interval <<[t1, t2)>> that contains the arrival time of [j]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j

exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j

exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
PREFIX: forall t_busy : instant, job_pending_at j t_busy -> exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy

exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
PREFIX: forall t_busy : instant, job_pending_at j t_busy -> exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta

exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
PREFIX: forall t_busy : instant, job_pending_at j t_busy -> exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta

job_pending_at j (job_arrival j)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
PREFIX: exists t1 : instant, busy_interval_prefix t1 (job_arrival j).+1 /\ t1 <= job_arrival j <= job_arrival j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
PREFIX: forall t_busy : instant, job_pending_at j t_busy -> exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta

job_pending_at j (job_arrival j)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
PREFIX: forall t_busy : instant, job_pending_at j t_busy -> exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta

~~ completed_by sched j (job_arrival j)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
PREFIX: forall t_busy : instant, job_pending_at j t_busy -> exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta

~~ (job_cost j <= service_during sched j 0 (job_arrival j))
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
PREFIX: forall t_busy : instant, job_pending_at j t_busy -> exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta

~~ (job_cost j <= \sum_(job_arrival j <= t < job_arrival j) service_at sched j t)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
PREFIX: forall t_busy : instant, job_pending_at j t_busy -> exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta

~~ (job_cost j <= 0)
by rewrite -ltnNge.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
PREFIX: exists t1 : instant, busy_interval_prefix t1 (job_arrival j).+1 /\ t1 <= job_arrival j <= job_arrival j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta

exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j

exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
BOUNDED: job_pending_at j (job_arrival j) -> is_priority_inversion_bounded_by priority_inversion_bound -> priority_inversion_bound (job_arrival j - t1) + hp_workload t1 (t1 + delta) <= delta -> exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2

exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
BOUNDED: job_pending_at j (job_arrival j) -> is_priority_inversion_bounded_by priority_inversion_bound -> priority_inversion_bound (job_arrival j - t1) + hp_workload t1 (t1 + delta) <= delta -> exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2

job_pending_at j (job_arrival j)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
BOUNDED: exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2
exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
BOUNDED: job_pending_at j (job_arrival j) -> is_priority_inversion_bounded_by priority_inversion_bound -> priority_inversion_bound (job_arrival j - t1) + hp_workload t1 (t1 + delta) <= delta -> exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2

job_pending_at j (job_arrival j)
by apply job_pending_at_arrival.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
BOUNDED: exists t2 : nat, t2 <= t1 + delta /\ busy_interval t1 t2

exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
t2: nat
GE2: t2 <= t1 + delta
BUSY: busy_interval t1 t2

exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
t2: nat
GE2: t2 <= t1 + delta
BUSY: busy_interval t1 t2

t1 <= job_arrival j < t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
t2: nat
GE2: t2 <= t1 + delta
BUSY: busy_interval t1 t2
t2 <= t1 + delta /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
t2: nat
GE2: t2 <= t1 + delta
BUSY: busy_interval t1 t2

t1 <= job_arrival j < t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
t2: nat
GE2: t2 <= t1 + delta
BUSY: busy_interval t1 t2

job_arrival j < t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
t2: nat
GE2: t2 <= t1 + delta
BUSY: busy_interval t1 t2
BUG: t2 <= job_arrival j

false
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
t2: nat
GE2: t2 <= t1 + delta
BUG: t2 <= job_arrival j
LE12: t1 < t2
QUIET: classical.quiet_time arr_seq sched j t2
NOTQUIET: forall t : nat, t1 < t < (job_arrival j).+1 -> ~ classical.quiet_time arr_seq sched j t

false
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
t2: nat
GE2: t2 <= t1 + delta
BUG: t2 <= job_arrival j
LE12: t1 < t2
QUIET: classical.quiet_time arr_seq sched j t2
NOTQUIET: ~ classical.quiet_time arr_seq sched j t2

false
by exfalso; apply NOTQUIET.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
H_positive_cost: 0 < job_cost j
WORK: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
t1: instant
PREFIX: busy_interval_prefix t1 (job_arrival j).+1
GE1: t1 <= job_arrival j
GEarr: job_arrival j <= job_arrival j
t2: nat
GE2: t2 <= t1 + delta
BUSY: busy_interval t1 t2

t2 <= t1 + delta /\ busy_interval t1 t2
by split. Qed. End BusyIntervalFromWorkloadBound. (** If we know that the workload is bounded, we can also use the busy interval to infer a response-time bound. *) Section ResponseTimeBoundFromBusyInterval. (** Let priority_inversion_bound be a constant that bounds the length of a priority inversion. *) Variable priority_inversion_bound: duration -> duration. Hypothesis H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound. (** Assume that for some positive delta, the sum of requested workload at time [t1 + delta] and priority inversion is bounded by delta (i.e., the supply). *) Variable delta: duration. Hypothesis H_delta_positive: delta > 0. Hypothesis H_workload_is_bounded: forall t, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta. (** Then, job [j] must complete by [job_arrival j + delta]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta

job_completed_by j (job_arrival j + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta

job_completed_by j (job_arrival j + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
BUSY: is_priority_inversion_bounded_by priority_inversion_bound -> 0 < delta -> (forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta) -> 0 < job_cost j -> exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2

job_completed_by j (job_arrival j + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
BUSY: is_priority_inversion_bounded_by priority_inversion_bound -> 0 < delta -> (forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta) -> 0 < job_cost j -> exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
ZERO: job_cost j = 0

job_completed_by j (job_arrival j + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
BUSY: is_priority_inversion_bounded_by priority_inversion_bound -> 0 < delta -> (forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta) -> 0 < job_cost j -> exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
POS: 0 < job_cost j
job_completed_by j (job_arrival j + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
BUSY: is_priority_inversion_bounded_by priority_inversion_bound -> 0 < delta -> (forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta) -> 0 < job_cost j -> exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
ZERO: job_cost j = 0

job_completed_by j (job_arrival j + delta)
by rewrite /job_completed_by /completed_by ZERO.
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
BUSY: is_priority_inversion_bounded_by priority_inversion_bound -> 0 < delta -> (forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta) -> 0 < job_cost j -> exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
POS: 0 < job_cost j

job_completed_by j (job_arrival j + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
BUSY: exists t1 t2 : nat, t1 <= job_arrival j < t2 /\ t2 <= t1 + delta /\ busy_interval t1 t2
POS: 0 < job_cost j

job_completed_by j (job_arrival j + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
POS: 0 < job_cost j
t1, t2: nat
GE1: t1 <= job_arrival j
LT2: job_arrival j < t2
GE2: t2 <= t1 + delta
BUSY: busy_interval t1 t2

job_completed_by j (job_arrival j + delta)
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
POS: 0 < job_cost j
t1, t2: nat
GE1: t1 <= job_arrival j
LT2: job_arrival j < t2
GE2: t2 <= t1 + delta
BUSY: busy_interval t1 t2

t2 <= job_arrival j + delta
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
POS: 0 < job_cost j
t1, t2: nat
GE1: t1 <= job_arrival j
LT2: job_arrival j < t2
GE2: t2 <= t1 + delta
BUSY: busy_interval t1 t2
completed_by sched j t2
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
POS: 0 < job_cost j
t1, t2: nat
GE1: t1 <= job_arrival j
LT2: job_arrival j < t2
GE2: t2 <= t1 + delta
BUSY: busy_interval t1 t2

t2 <= job_arrival j + delta
by apply leq_trans with (n := t1 + delta); [| rewrite leq_add2r].
Task: TaskType
H: TaskCost Task
Job: JobType
JobTask: concept.JobTask Job Task
Arrival: JobArrival Job
Cost: JobCost Job
arr_seq: arrival_sequence Job
H_valid_arrival_time: valid_arrival_sequence arr_seq
PState: ProcessorState Job
sched: schedule PState
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
JLFP: JLFP_policy Job
H0: JobReady Job PState
H_job_ready: work_bearing_readiness arr_seq sched
job_pending_at:= pending sched: Job -> instant -> bool
job_completed_by:= completed_by sched: Job -> instant -> bool
tsk: Task
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta classical.quiet_time arr_seq sched j]: instant -> Prop
quiet_time_dec:= [eta classical.quiet_time_dec arr_seq sched j]: instant -> bool
busy_interval_prefix:= fun t1 : instant => [eta classical.busy_interval_prefix arr_seq sched j t1]: instant -> instant -> Prop
busy_interval:= fun t1 : instant => [eta classical.busy_interval arr_seq sched j t1]: instant -> instant -> Prop
is_priority_inversion_bounded_by:= [eta priority_inversion_of_job_is_bounded_by arr_seq sched j]: (duration -> duration) -> Prop
H_work_conserving: work_conserving arr_seq sched
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
H_priority_is_reflexive: reflexive_job_priorities JLFP
H_priority_is_transitive: transitive_job_priorities JLFP
hp_workload:= fun t1 t2 : instant => workload_of_higher_or_equal_priority_jobs j (arrivals_between arr_seq t1 t2): instant -> instant -> nat
hp_service:= fun t1 t2 : instant => service_of_higher_or_equal_priority_jobs sched (arrivals_between arr_seq t1 t2) j t1 t2: instant -> instant -> nat
H_uni: uniprocessor_model PState
H_unit: unit_service_proc_model PState
H_progress: ideal_progress_proc_model PState
priority_inversion_bound: duration -> duration
H_priority_inversion_is_bounded: is_priority_inversion_bounded_by priority_inversion_bound
delta: duration
H_delta_positive: 0 < delta
H_workload_is_bounded: forall t : nat, priority_inversion_bound (job_arrival j - t) + hp_workload t (t + delta) <= delta
POS: 0 < job_cost j
t1, t2: nat
GE1: t1 <= job_arrival j
LT2: job_arrival j < t2
GE2: t2 <= t1 + delta
BUSY: busy_interval t1 t2

completed_by sched j t2
by apply job_completes_within_busy_interval with (t1 := t1). Qed. End ResponseTimeBoundFromBusyInterval. End BoundingBusyInterval. End ExistsBusyIntervalJLFP.