Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.0. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use instead of Ctrl.
[Loading ML file ssrmatching_plugin.cmxs (using legacy method) ... done]
[Loading ML file ssreflect_plugin.cmxs (using legacy method) ... done]
[Loading ML file ring_plugin.cmxs (using legacy method) ... done]
[Loading ML file coq-elpi.elpi ... done]
[Loading ML file zify_plugin.cmxs (using legacy method) ... done]
[Loading ML file micromega_plugin.cmxs (using legacy method) ... done]
[Loading ML file btauto_plugin.cmxs (using legacy method) ... done]
Notation "_ + _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ - _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ <= _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ < _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ >= _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ > _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ <= _ <= _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ < _ <= _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ <= _ < _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ < _ < _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Notation "_ * _" was already used in scope nat_scope. [notation-overridden,parsing,default]
Require Export prosa.analysis.facts.model.workload. Require Export prosa.analysis.abstract.definitions. (** * Lemmas About Abstract Busy Intervals *) (** In this file we prove a few basic lemmas about the notion of an abstract busy interval. *) Section LemmasAboutAbstractBusyInterval. (** Consider any type of tasks ... *) Context {Task : TaskType}. Context `{TaskCost Task}. (** ... and any type of jobs associated with these tasks. *) Context {Job : JobType}. Context `{JobTask Job Task}. Context `{JobArrival Job}. Context `{JobCost Job}. (** Consider any kind of processor state model. *) Context {PState : ProcessorState Job}. (** Assume we are provided with abstract functions for interference and interfering workload. *) Context `{Interference Job}. Context `{InterferingWorkload Job}. (** Consider any arrival sequence. *) Variable arr_seq : arrival_sequence Job. (** Consider an arbitrary task [tsk]. *) Variable tsk : Task. (** Next, consider any work-conserving schedule of this arrival sequence ... *) Variable sched : schedule PState. Hypothesis H_work_conserving : work_conserving arr_seq sched. (** ... where jobs do not execute before their arrival. *) Hypothesis H_jobs_must_arrive_to_execute : jobs_must_arrive_to_execute sched. (** Consider an arbitrary job [j] with positive cost. Notice that a positive-cost assumption is required to ensure that one cannot construct a busy interval without any workload inside of it. *) Variable j : Job. Hypothesis H_from_arrival_sequence : arrives_in arr_seq j. Hypothesis H_job_cost_positive : job_cost_positive j. (** We first prove that any interval <<[t1, t2)>> is either a busy interval of job [j] or not. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j

forall t1 t2 : instant, busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j

forall t1 t2 : instant, busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant

busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
NAT: ~~ (t1 <= job_arrival j < t2)

busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
NAT: ~~ (t1 <= job_arrival j < t2)

busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
by right; move => PREF; move: NAT => /negP NQT; apply: NQT; apply PREF.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2

busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
NQT: ~~ quiet_time sched j t1

busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
QT1: quiet_time sched j t1
busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
NQT: ~~ quiet_time sched j t1

busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
by right; move => PREF; move: NQT => /negP NQT; apply: NQT; apply PREF.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
QT1: quiet_time sched j t1

busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
QT1: quiet_time sched j t1
NQT: ~~ all (fun t : instant => ~~ quiet_time sched j t) (index_iota t1.+1 t2)

busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
QT1: quiet_time sched j t1
AQT: all (fun t : instant => ~~ quiet_time sched j t) (index_iota t1.+1 t2)
busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
QT1: quiet_time sched j t1
NQT: ~~ all (fun t : instant => ~~ quiet_time sched j t) (index_iota t1.+1 t2)

busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
QT1: quiet_time sched j t1
PREF: busy_interval_prefix sched j t1 t2

all (fun t : instant => ~~ quiet_time sched j t) (index_iota t1.+1 t2)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
QT1: quiet_time sched j t1
PREF: busy_interval_prefix sched j t1 t2
t: Datatypes_nat__canonical__eqtype_Equality
IO: t \in index_iota t1.+1 t2

~ quiet_time sched j t
by apply PREF; move: IO; rewrite mem_index_iota.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
QT1: quiet_time sched j t1
AQT: all (fun t : instant => ~~ quiet_time sched j t) (index_iota t1.+1 t2)

busy_interval_prefix sched j t1 t2 \/ ~ busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
QT1: quiet_time sched j t1
AQT: all (fun t : instant => ~~ quiet_time sched j t) (index_iota t1.+1 t2)

forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
JA: t1 <= job_arrival j < t2
QT1: quiet_time sched j t1
t: nat
NEQ: t1 < t < t2

t \in index_iota t1.+1 t2
by rewrite mem_index_iota. Qed. (** Consider two intervals <<[t1, t2)>> ⊆ <<[t1, t2')>>, where <<[t1, t2)>> is a busy-interval prefix and <<[t1, t2')>> is not a busy-interval prefix. Then there exists [t2''] such that <<[t1, t2'')>> is a busy interval. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j

forall (t1 : instant) (t2 t2' : nat), t2 <= t2' -> busy_interval_prefix sched j t1 t2 -> ~ busy_interval_prefix sched j t1 t2' -> exists t2'' : instant, busy_interval sched j t1 t2''
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j

forall (t1 : instant) (t2 t2' : nat), t2 <= t2' -> busy_interval_prefix sched j t1 t2 -> ~ busy_interval_prefix sched j t1 t2' -> exists t2'' : instant, busy_interval sched j t1 t2''
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, t2': nat
LE: t2 <= t2'
BUSY: busy_interval_prefix sched j t1 t2
NBUSY: ~ busy_interval_prefix sched j t1 t2'

exists t2'' : instant, busy_interval sched j t1 t2''
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
NBUSY: ~ busy_interval_prefix sched j t1 (t2 + δ)

exists t2'' : instant, busy_interval sched j t1 t2''
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2: nat
BUSY: busy_interval_prefix sched j t1 t2
NBUSY: ~ busy_interval_prefix sched j t1 (t2 + 0)

exists t2'' : instant, busy_interval sched j t1 t2''
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
NBUSY: ~ busy_interval_prefix sched j t1 (t2 + δ.+1)
IHδ: ~ busy_interval_prefix sched j t1 (t2 + δ) -> exists t2'' : instant, busy_interval sched j t1 t2''
exists t2'' : instant, busy_interval sched j t1 t2''
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2: nat
BUSY: busy_interval_prefix sched j t1 t2
NBUSY: ~ busy_interval_prefix sched j t1 (t2 + 0)

exists t2'' : instant, busy_interval sched j t1 t2''
by exfalso; apply: NBUSY; rewrite addn0.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
NBUSY: ~ busy_interval_prefix sched j t1 (t2 + δ.+1)
IHδ: ~ busy_interval_prefix sched j t1 (t2 + δ) -> exists t2'' : instant, busy_interval sched j t1 t2''

exists t2'' : instant, busy_interval sched j t1 t2''
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
NBUSY: ~ busy_interval_prefix sched j t1 (t2 + δ.+1)
IHδ: ~ busy_interval_prefix sched j t1 (t2 + δ) -> exists t2'' : instant, busy_interval sched j t1 t2''
BUSY': busy_interval_prefix sched j t1 (t2 + δ)

exists t2'' : instant, busy_interval sched j t1 t2''
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
NBUSY: ~ busy_interval_prefix sched j t1 (t2 + δ.+1)
BUSY': busy_interval_prefix sched j t1 (t2 + δ)

exists t2'' : instant, busy_interval sched j t1 t2''
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
NBUSY: ~ busy_interval_prefix sched j t1 (t2 + δ.+1)
BUSY': busy_interval_prefix sched j t1 (t2 + δ)

quiet_time sched j (t2 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
NBUSY: ~ busy_interval_prefix sched j t1 (t2 + δ.+1)
BUSY': busy_interval_prefix sched j t1 (t2 + δ)
FF: ~~ quiet_time sched j (t2 + δ)

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
BUSY': busy_interval_prefix sched j t1 (t2 + δ)
FF: ~~ quiet_time sched j (t2 + δ)

quiet_time sched j t1 /\ (forall t : nat, t1 < t < t2 + δ.+1 -> ~ quiet_time sched j t)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
BUSY': busy_interval_prefix sched j t1 (t2 + δ)
FF: ~~ quiet_time sched j (t2 + δ)

forall t : nat, t1 < t < t2 + δ.+1 -> ~ quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
BUSY': busy_interval_prefix sched j t1 (t2 + δ)
FF: ~~ quiet_time sched j (t2 + δ)
t: nat

(t1 < t) && ((t == t2 + δ) || (t < t2 + δ)) -> ~ quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
BUSY': busy_interval_prefix sched j t1 (t2 + δ)
FF: ~~ quiet_time sched j (t2 + δ)
t: nat
LT1: t1 < t
WDFW: t = t2 + δ

~ quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
BUSY': busy_interval_prefix sched j t1 (t2 + δ)
FF: ~~ quiet_time sched j (t2 + δ)
t: nat
LT1: t1 < t
VB: t < t2 + δ
~ quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
BUSY': busy_interval_prefix sched j t1 (t2 + δ)
FF: ~~ quiet_time sched j (t2 + δ)
t: nat
LT1: t1 < t
WDFW: t = t2 + δ

~ quiet_time sched j t
by subst; apply/negP.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1: instant
t2, δ: nat
BUSY: busy_interval_prefix sched j t1 t2
BUSY': busy_interval_prefix sched j t1 (t2 + δ)
FF: ~~ quiet_time sched j (t2 + δ)
t: nat
LT1: t1 < t
VB: t < t2 + δ

~ quiet_time sched j t
by apply BUSY'; lia. Qed. (** Next, consider a busy interval <<[t1, t2)>> of job [j]. *) Variable t1 t2 : instant. Hypothesis H_busy_interval : busy_interval sched j t1 t2. (** First, we prove that job [j] completes by the end of the busy interval. Note that the busy interval contains the execution of job [j]; in addition, time instant [t2] is a quiet time. Thus by the definition of a quiet time the job must be completed before time [t2]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2

completed_by sched j t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2

completed_by sched j t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
LT: job_arrival j < t2
QT2: ~~ pending_earlier_and_at sched j t2

completed_by sched j t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
LT: job_arrival j < t2
QT2: ~~ (arrived_before j t2 && ~~ completed_by sched j t2)

completed_by sched j t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
LT: job_arrival j < t2
QT2: ~~ arrived_before j t2

completed_by sched j t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
LT: job_arrival j < t2
QT2: ~~ ~~ completed_by sched j t2
completed_by sched j t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
LT: job_arrival j < t2
QT2: ~~ arrived_before j t2

completed_by sched j t2
by move: QT2 => /negP QT2; exfalso; apply QT2, ltnW.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
LT: job_arrival j < t2
QT2: ~~ ~~ completed_by sched j t2

completed_by sched j t2
by rewrite Bool.negb_involutive in QT2. Qed. (** We show that, similarly to the classical notion of busy interval, the job does not receive service before the busy interval starts. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2

forall t : instant, service sched j t = service_during sched j t1 t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2

forall t : instant, service sched j t = service_during sched j t1 t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2

service sched j t = service_during sched j t1 t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t1 <= t
NEQ2: t2 <= t

service sched j t = service_during sched j t1 t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t1 <= t
NEQ2: t < t2
service sched j t = service_during sched j t1 t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t < t1
service sched j t = service_during sched j t1 t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t1 <= t
NEQ2: t2 <= t

service sched j t = service_during sched j t1 t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t1 <= t
NEQ2: t2 <= t

service sched j t <= service_during sched j t1 t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t1 <= t
NEQ2: t2 <= t
service_during sched j t1 t <= service sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t1 <= t
NEQ2: t2 <= t

service sched j t <= service_during sched j t1 t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t1 <= t
NEQ2: t2 <= t

service_during sched j 0 t1 + service_during sched j t1 t <= service_during sched j t1 t
by rewrite cumulative_service_before_job_arrival_zero; eauto 2.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t1 <= t
NEQ2: t2 <= t

service_during sched j t1 t <= service sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t1 <= t
NEQ2: t2 <= t

service_during sched j t1 t <= service_during sched j 0 t1 + service_during sched j t1 t
by (erewrite cumulative_service_before_job_arrival_zero with (t1 := 0) || erewrite cumulative_service_before_job_arrival_zero with (t3 := 0)).
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t1 <= t
NEQ2: t < t2

service sched j t = service_during sched j t1 t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t1 <= t
NEQ2: t < t2

service_during sched j 0 t1 + service_during sched j t1 t = service_during sched j t1 t
by rewrite cumulative_service_before_job_arrival_zero; eauto 2.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t < t1

service sched j t = service_during sched j t1 t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
t: instant
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2
NEQ1: t < t1

service sched j t = 0
by rewrite /service cumulative_service_before_job_arrival_zero//; lia. Qed. (** Since the job cannot arrive before the busy interval starts and completes by the end of the busy interval, it receives at least [job_cost j] units of service within the interval. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2

job_cost j <= service_during sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2

job_cost j <= service_during sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2

job_cost j <= service_during sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2

job_cost j <= 0 + service_during sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2

job_cost j <= service_during sched j 0 t1 + service_during sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2

job_cost j <= service_during sched j 0 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
LE1: t1 <= job_arrival j
LE2: job_arrival j < t2
QT1: quiet_time sched j t1
AQT: forall t : nat, t1 < t < t2 -> ~ quiet_time sched j t
QT2: quiet_time sched j t2

completed_by sched j t2
exact: job_completes_within_busy_interval. Qed. (** Trivially, job [j] arrives before the end of the busy window (if arrival times are consistent), which is a useful fact to observe for proof automation. *) Hypothesis H_consistent_arrival_times : consistent_arrival_times arr_seq.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq

j \in arrivals_before arr_seq t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq

j \in arrivals_before arr_seq t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
LT: job_arrival j < t2

j \in arrivals_before arr_seq t2
by apply: arrived_between_implies_in_arrivals. Qed. (** For the same reason, we note the trivial fact that by definition [j] arrives no earlier than at time [t1]. For automation, we note this both as a fact on busy-interval prefixes ... *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq

forall t t' : instant, busy_interval_prefix sched j t t' -> t <= job_arrival j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq

forall t t' : instant, busy_interval_prefix sched j t t' -> t <= job_arrival j
by move=> ? ? [/andP [GEQ _] _]. Qed. (** ... and complete busy-intervals. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq

t1 <= job_arrival j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq

t1 <= job_arrival j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
PREFIX: busy_interval_prefix sched j t1 t2

t1 <= job_arrival j
exact: abstract_busy_interval_prefix_job_arrival. Qed. (** Next, let us assume that the introduced processor model is unit-supply. *) Hypothesis H_unit_service_proc_model : unit_service_proc_model PState. (** Under this assumption, the sum of the total service during the time interval <<[t1, t1 + Δ)>> and the cumulative interference during the same interval is bounded by the length of the time interval. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState

forall Δ : nat, t1 + Δ <= t2 -> service_during sched j t1 (t1 + Δ) + cumulative_interference j t1 (t1 + Δ) <= Δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState

forall Δ : nat, t1 + Δ <= t2 -> service_during sched j t1 (t1 + Δ) + cumulative_interference j t1 (t1 + Δ) <= Δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2

\sum_(t1 <= i < t1 + Δ) (service_at sched j i + cond_interference (fun=> xpredT) j i) <= \sum_(t1 <= x < t1 + Δ) 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ

service_at sched j t + cond_interference (fun=> xpredT) j t <= 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: arrives_in arr_seq j -> 0 < job_cost j -> busy_interval_prefix sched j t1 t2 -> t1 <= t < t2 -> ~ interference j t <-> receives_service_at sched j t

service_at sched j t + cond_interference (fun=> xpredT) j t <= 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: busy_interval_prefix sched j t1 t2 -> t1 <= t < t2 -> ~ interference j t <-> receives_service_at sched j t

busy_interval_prefix sched j t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: t1 <= t < t2 -> ~ interference j t <-> receives_service_at sched j t
t1 <= t < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: ~ interference j t <-> receives_service_at sched j t
service_at sched j t + cond_interference (fun=> xpredT) j t <= 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: busy_interval_prefix sched j t1 t2 -> t1 <= t < t2 -> ~ interference j t <-> receives_service_at sched j t

busy_interval_prefix sched j t1 t2
by move: H_busy_interval => [PREF QT].
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: t1 <= t < t2 -> ~ interference j t <-> receives_service_at sched j t

t1 <= t < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: ~ interference j t <-> receives_service_at sched j t
service_at sched j t + cond_interference (fun=> xpredT) j t <= 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: t1 <= t < t2 -> ~ interference j t <-> receives_service_at sched j t

t1 <= t < t2
by apply/andP; split; lia.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: ~ interference j t <-> receives_service_at sched j t

service_at sched j t + cond_interference (fun=> xpredT) j t <= 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: ~ true <-> receives_service_at sched j t

service_at sched j t + true <= 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: ~ false <-> receives_service_at sched j t
service_at sched j t + false <= 1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: ~ true <-> receives_service_at sched j t

service_at sched j t + true <= 1
by rewrite addn1 ltnS; move_neq_up NE; apply Workj.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H3: Interference Job
H4: InterferingWorkload Job
arr_seq: arrival_sequence Job
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval sched j t1 t2
H_consistent_arrival_times: consistent_arrival_times arr_seq
H_unit_service_proc_model: unit_service_proc_model PState
Δ: nat
LE: t1 + Δ <= t2
t: nat
Lo: t1 <= t
Hi: t < t1 + Δ
Workj: ~ false <-> receives_service_at sched j t

service_at sched j t + false <= 1
by rewrite addn0; apply: H_unit_service_proc_model. Qed. End LemmasAboutAbstractBusyInterval. (** In the following section, we derive a sufficient condition for the existence of abstract busy intervals for unit-service processors. *) Section AbstractBusyIntervalExists. (** Consider any type of tasks ... *) Context {Task : TaskType}. Context `{TaskCost Task}. (** ... and any type of jobs associated with these tasks. *) Context {Job : JobType}. Context `{JobTask Job Task}. Context `{JobArrival Job}. Context `{JobCost Job}. (** Consider any kind of of unit-service processor model. *) Context {PState : ProcessorState Job}. Hypothesis H_unit_service_proc_model : unit_service_proc_model PState. (** Assume we are provided with abstract functions for interference and interfering workload ... *) Context `{Interference Job}. Context `{InterferingWorkload Job}. (** ... that do not allow speculative execution. *) Hypothesis H_no_speculative_exec : no_speculative_execution. (** Consider any arrival sequence with consistent, non-duplicate arrivals. *) Variable arr_seq : arrival_sequence Job. Hypothesis H_arrival_times_are_consistent : consistent_arrival_times arr_seq. Hypothesis H_arrival_sequence_is_a_set : arrival_sequence_uniq arr_seq. (** Consider an arbitrary task [tsk]. *) Variable tsk : Task. (** Next, consider any work-conserving (in the abstract sense) schedule of this arrival sequence ... *) Variable sched : schedule PState. Hypothesis H_work_conserving : work_conserving arr_seq sched. (** ... 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. (** Consider an arbitrary job [j] from task [tsk] with positive cost. *) 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. (** In this section, we prove a fact that allows one to extend an inequality between cumulative interference and interfering workload from a busy-interval prefix <<[t1, t)>> to the whole timeline <<[0, t)>>. *) Section CumulativeIntIntWorkExtension. (** Consider any busy-interval prefix of job [j]. *) Variable t1 t_busy : instant. Hypothesis H_is_busy_prefix : busy_interval_prefix sched j t1 t_busy.+1. (** We assume that, for some positive [δ], the cumulative interfering workload within interval <<[t1, t1 + δ)>> is bounded by cumulative interference in the same interval. *) Variable δ : duration. Hypothesis H_iw_bounded : cumulative_interfering_workload j t1 (t1 + δ) <= cumulative_interference j t1 (t1 + δ). (** Then the cumulative interfering workload within interval <<[0, t1 + δ)>> is bounded by the cumulative interference in the same interval. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t_busy: instant
H_is_busy_prefix: busy_interval_prefix sched j t1 t_busy.+1
δ: duration
H_iw_bounded: cumulative_interfering_workload j t1 (t1 + δ) <= cumulative_interference j t1 (t1 + δ)

cumulative_interfering_workload j 0 (t1 + δ) <= cumulative_interference j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t_busy: instant
H_is_busy_prefix: busy_interval_prefix sched j t1 t_busy.+1
δ: duration
H_iw_bounded: cumulative_interfering_workload j t1 (t1 + δ) <= cumulative_interference j t1 (t1 + δ)

cumulative_interfering_workload j 0 (t1 + δ) <= cumulative_interference j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t_busy: instant
H_is_busy_prefix: busy_interval_prefix sched j t1 t_busy.+1
δ: duration
H_iw_bounded, LE: cumulative_interfering_workload j t1 (t1 + δ) <= cumulative_interference j t1 (t1 + δ)

cumulative_interfering_workload j 0 (t1 + δ) <= cumulative_interference j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t_busy: instant
H_is_busy_prefix: busy_interval_prefix sched j t1 t_busy.+1
δ: duration
H_iw_bounded, LE: cumulative_interfering_workload j t1 (t1 + δ) <= cumulative_interference j t1 (t1 + δ)

\sum_(0 <= t < t1 + δ) interfering_workload j t <= \sum_(0 <= t < t1 + δ) cond_interference (fun=> xpredT) j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t_busy: instant
H_is_busy_prefix: busy_interval_prefix sched j t1 t_busy.+1
δ: duration
H_iw_bounded, LE: cumulative_interfering_workload j t1 (t1 + δ) <= cumulative_interference j t1 (t1 + δ)

\sum_(0 <= i < t1) interfering_workload j i + \sum_(t1 <= i < t1 + δ) interfering_workload j i <= \sum_(0 <= t < t1 + δ) cond_interference (fun=> xpredT) j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t_busy: instant
H_is_busy_prefix: busy_interval_prefix sched j t1 t_busy.+1
δ: duration
H_iw_bounded, LE: cumulative_interfering_workload j t1 (t1 + δ) <= cumulative_interference j t1 (t1 + δ)

\sum_(0 <= i < t1) interfering_workload j i + \sum_(t1 <= i < t1 + δ) interfering_workload j i <= \sum_(0 <= i < t1) cond_interference (fun=> xpredT) j i + \sum_(t1 <= i < t1 + δ) cond_interference (fun=> xpredT) j i
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t_busy: instant
H_is_busy_prefix: busy_interval_prefix sched j t1 t_busy.+1
δ: duration
H_iw_bounded, LE: cumulative_interfering_workload j t1 (t1 + δ) <= cumulative_interference j t1 (t1 + δ)
DD: cumulative_interference j 0 t1 = cumulative_interfering_workload j 0 t1
KK: ~~ pending_earlier_and_at sched j t1
ADD: forall t : nat, t1 < t < t_busy.+1 -> ~ quiet_time sched j t

\sum_(0 <= i < t1) interfering_workload j i + \sum_(t1 <= i < t1 + δ) interfering_workload j i <= \sum_(0 <= i < t1) cond_interference (fun=> xpredT) j i + \sum_(t1 <= i < t1 + δ) cond_interference (fun=> xpredT) j i
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t_busy: instant
H_is_busy_prefix: busy_interval_prefix sched j t1 t_busy.+1
δ: duration
H_iw_bounded: cumulative_interfering_workload j t1 (t1 + δ) <= cumulative_interference j t1 (t1 + δ)
DD: cumulative_interference j 0 t1 = cumulative_interfering_workload j 0 t1
KK: ~~ pending_earlier_and_at sched j t1
ADD: forall t : nat, t1 < t < t_busy.+1 -> ~ quiet_time sched j t

\sum_(0 <= i < t1) interfering_workload j i + cumulative_interference j t1 (t1 + δ) <= \sum_(0 <= i < t1) cond_interference (fun=> xpredT) j i + \sum_(t1 <= i < t1 + δ) cond_interference (fun=> xpredT) j i
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t_busy: instant
H_is_busy_prefix: busy_interval_prefix sched j t1 t_busy.+1
δ: duration
H_iw_bounded: cumulative_interfering_workload j t1 (t1 + δ) <= cumulative_interference j t1 (t1 + δ)
DD: cumulative_interference j 0 t1 = cumulative_interfering_workload j 0 t1
KK: ~~ pending_earlier_and_at sched j t1
ADD: forall t : nat, t1 < t < t_busy.+1 -> ~ quiet_time sched j t

\sum_(0 <= i < t1) interfering_workload j i <= \sum_(0 <= i < t1) cond_interference (fun=> xpredT) j i
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t_busy: instant
H_is_busy_prefix: busy_interval_prefix sched j t1 t_busy.+1
δ: duration
H_iw_bounded: cumulative_interfering_workload j t1 (t1 + δ) <= cumulative_interference j t1 (t1 + δ)
KK: ~~ pending_earlier_and_at sched j t1
ADD: forall t : nat, t1 < t < t_busy.+1 -> ~ quiet_time sched j t
DD: cumulative_interference j 0 t1 = \sum_(0 <= t < t1) interfering_workload j t

\sum_(0 <= i < t1) interfering_workload j i <= \sum_(0 <= i < t1) cond_interference (fun=> xpredT) j i
by rewrite -DD; clear DD. Qed. End CumulativeIntIntWorkExtension. (** In the following section, we show that the busy interval is bounded. More specifically, we show that the length of any abstract busy interval is bounded, as long as there is enough supply to accommodate the interfering workload. *) Section BoundingBusyInterval. (** For simplicity, let us define some local names. *) Let quiet_time t := quiet_time sched j t. Let busy_interval_prefix := busy_interval_prefix sched j. Let busy_interval := busy_interval sched j. (** Suppose that job [j] is pending at time [t_busy]. *) Variable t_busy : instant. Hypothesis H_j_is_pending : pending sched j t_busy. (** First, we show that there must exist a busy interval prefix. *) Section LowerBound. (** Since job [j] is pending at time [t_busy], there is a (potentially unbounded) busy interval that starts no later than with the arrival of [j]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
EX: [exists t, quiet_time 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
EX: [exists t, quiet_time 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
EX: [exists t, quiet_time 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
EX: [exists t, quiet_time t] = true
last0:= \max_(t < t_busy.+1 | quiet_time 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
PRED: 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
QUIET: quiet_time last0

busy_interval_prefix last0 t_busy.+1 /\ last0 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
QUIET: quiet_time last0

last0 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
QUIET: quiet_time last0
JARRIN: 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
QUIET: quiet_time last0

last0 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
QUIET: quiet_time last0
ARR: has_arrived j t_busy
NCOM: ~~ completed_by sched j t_busy

last0 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
QUIET: quiet_time last0
ARR: has_arrived j t_busy
NCOM: ~~ completed_by sched j t_busy

last0 <= job_arrival j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
ARR: has_arrived j t_busy
NCOM: ~~ completed_by sched j t_busy
PE: ~~ pending_earlier_and_at sched j last0

last0 <= job_arrival j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
ARR: has_arrived j t_busy
NCOM: ~~ completed_by sched j t_busy
COMPL: completed_by sched j last0

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
ARR: has_arrived j t_busy
NCOM: ~~ completed_by sched j t_busy
COMPL: completed_by sched j t_busy

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
ARR: has_arrived j t_busy
NCOM: ~~ completed_by sched j t_busy
COMPL: completed_by sched j last0
last0 <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
ARR: has_arrived j t_busy
NCOM: ~~ completed_by sched j t_busy
COMPL: completed_by sched j t_busy

False
by move: NCOM => /negP.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
ARR: has_arrived j t_busy
NCOM: ~~ completed_by sched j t_busy
COMPL: completed_by sched j last0

last0 <= t_busy
by rewrite -ltnS; eapply bigmax_ltn_ord.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
QUIET: quiet_time last0
JARRIN: 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
QUIET: quiet_time last0
JARRIN: last0 <= job_arrival j <= t_busy

forall t : nat, last0 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
QUIET: quiet_time last0
JARRIN: last0 <= job_arrival j <= t_busy
t0: nat
GTlast: last0 < t0
LTbusy: t0 < t_busy.+1
QUIET0: definitions.quiet_time sched j t0

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
last0:= \max_(t < t_busy.+1 | quiet_time t) t: nat
t: fintype_ordinal__canonical__fintype_Finite t_busy.+1
EX: quiet_time t
QUIET: quiet_time last0
JARRIN: last0 <= job_arrival j <= t_busy
t0: nat
LTbusy: t0 < t_busy.+1
QUIET0: definitions.quiet_time sched j t0

t0 <= last0
by eapply (@leq_bigmax_cond _ (fun (x: 'I_t_busy.+1) => quiet_time x) (fun x => x) (Ordinal LTbusy)).
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
EX: [exists t, quiet_time 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
EX: [exists t, quiet_time 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
ALL: forall x : fintype_ordinal__canonical__fintype_Finite t_busy.+1, ~~ quiet_time x

exists t1 : instant, busy_interval_prefix t1 t_busy.+1 /\ t1 <= job_arrival j <= t_busy
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
ALL: forall x : fintype_ordinal__canonical__fintype_Finite t_busy.+1, ~~ quiet_time x

busy_interval_prefix 0 t_busy.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
ALL: forall x : fintype_ordinal__canonical__fintype_Finite t_busy.+1, ~~ quiet_time x

0 <= job_arrival j < t_busy.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
ALL: forall x : fintype_ordinal__canonical__fintype_Finite t_busy.+1, ~~ quiet_time x
definitions.quiet_time sched j 0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
ALL: forall x : fintype_ordinal__canonical__fintype_Finite t_busy.+1, ~~ quiet_time x
forall t : nat, 0 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
ALL: forall x : fintype_ordinal__canonical__fintype_Finite t_busy.+1, ~~ quiet_time x

0 <= job_arrival j < t_busy.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
ALL: forall x : fintype_ordinal__canonical__fintype_Finite t_busy.+1, ~~ quiet_time x

job_arrival j <= t_busy
by move: PEND => /andP PEND; apply PEND.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
ALL: forall x : fintype_ordinal__canonical__fintype_Finite t_busy.+1, ~~ quiet_time x

definitions.quiet_time sched j 0
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
ALL: forall x : fintype_ordinal__canonical__fintype_Finite t_busy.+1, ~~ quiet_time x

~~ pending_earlier_and_at sched j 0
by apply not_pending_earlier_and_at_0.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
ALL: forall x : fintype_ordinal__canonical__fintype_Finite t_busy.+1, ~~ quiet_time x

forall t : nat, 0 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
ALL: forall x : fintype_ordinal__canonical__fintype_Finite t_busy.+1, ~~ quiet_time x
t: nat
GE: 0 < t
LT: t < t_busy.+1
QUIET: definitions.quiet_time sched j t

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
PEND: pending sched j t_busy
ALL: forall x : fintype_ordinal__canonical__fintype_Finite t_busy.+1, ~~ quiet_time x
t: nat
GE: 0 < t
LT: t < t_busy.+1
QUIET: definitions.quiet_time sched j t
ALL': ~ quiet_time (Ordinal (n:=t_busy.+1) (m:=t) LT)

False
by apply ALL'. } 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. (** Consider any busy interval prefix of job [j]. *) Variable t1 : instant. Hypothesis H_is_busy_prefix : busy_interval_prefix t1 t_busy.+1. (** We assume that for some positive [δ], the cumulative interfering workload within interval <<[t1, t1 + δ)>> is bounded by [δ]. *) Variable δ : duration. Hypothesis H_δ_positive : δ > 0. Hypothesis H_workload_is_bounded : workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ. (** If there is a quiet time by time [t1 + δ], 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 + δ]>>. *) Hypothesis H_no_quiet_time : forall t, t1 < t <= t1 + δ -> ~ quiet_time t. (** We prove that the sum of cumulative service and cumulative interference in the interval <<[t, t + δ)>> is equal to [δ]. *) (** Since the interval is always non-quiet, the processor is always busy processing job [j] and the job's interference and, hence, the sum of service of [j] and its cumulative interference within the interval <<[t1, t1 + δ)>> is greater than or equal to [δ]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

δ <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

δ <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

δ <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

δ <= \sum_(t1 <= t < t1 + δ) service_in j (sched t) + \sum_(t1 <= t < t1 + δ) true && interference j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

\sum_(t1 <= x < t1 + δ) 1 <= \sum_(t1 <= i < t1 + δ) (service_in j (sched i) + interference j i)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

\sum_(t1 <= i < t1 + δ | t1 <= i < t1 + δ) 1 <= \sum_(t1 <= i < t1 + δ | t1 <= i < t1 + δ) (service_in j (sched i) + interference j i)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ

0 < service_in j (sched x) + interference j x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LE: t1 + δ <= t_busy.+1

0 < service_in j (sched x) + interference j x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
0 < service_in j (sched x) + interference j x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LE: t1 + δ <= t_busy.+1

0 < service_in j (sched x) + interference j x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LE: t1 + δ <= t_busy.+1
Workj: arrives_in arr_seq j -> 0 < job_cost j -> definitions.busy_interval_prefix sched j t1 t_busy.+1 -> t1 <= x < t_busy.+1 -> ~ interference j x <-> receives_service_at sched j x

0 < service_in j (sched x) + interference j x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LE: t1 + δ <= t_busy.+1
Workj: t1 <= x < t_busy.+1 -> ~ interference j x <-> receives_service_at sched j x

t1 <= x < t_busy.+1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LE: t1 + δ <= t_busy.+1
Workj: ~ interference j x <-> receives_service_at sched j x
0 < service_in j (sched x) + interference j x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LE: t1 + δ <= t_busy.+1
Workj: t1 <= x < t_busy.+1 -> ~ interference j x <-> receives_service_at sched j x

t1 <= x < t_busy.+1
by apply/andP; split; eapply leq_trans; eauto.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LE: t1 + δ <= t_busy.+1
Workj: ~ interference j x <-> receives_service_at sched j x

0 < service_in j (sched x) + interference j x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LE: t1 + δ <= t_busy.+1
Workj: ~ true <-> receives_service_at sched j x

0 < service_in j (sched x) + true
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LE: t1 + δ <= t_busy.+1
Workj: ~ false <-> receives_service_at sched j x
0 < service_in j (sched x) + false
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LE: t1 + δ <= t_busy.+1
Workj: ~ true <-> receives_service_at sched j x

0 < service_in j (sched x) + true
by lia.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LE: t1 + δ <= t_busy.+1
Workj: ~ false <-> receives_service_at sched j x

0 < service_in j (sched x) + false
by rewrite //= addn0; apply Workj.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ

0 < service_in j (sched x) + interference j x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ

0 < service_in j (sched x) + interference j x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: arrives_in arr_seq j -> 0 < job_cost j -> definitions.busy_interval_prefix sched j t1 (t1 + δ) -> t1 <= x < t1 + δ -> ~ interference j x <-> receives_service_at sched j x

0 < service_in j (sched x) + interference j x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: definitions.busy_interval_prefix sched j t1 (t1 + δ) -> t1 <= x < t1 + δ -> ~ interference j x <-> receives_service_at sched j x

definitions.busy_interval_prefix sched j t1 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: t1 <= x < t1 + δ -> ~ interference j x <-> receives_service_at sched j x
t1 <= x < t1 + δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: ~ interference j x <-> receives_service_at sched j x
0 < service_in j (sched x) + interference j x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: definitions.busy_interval_prefix sched j t1 (t1 + δ) -> t1 <= x < t1 + δ -> ~ interference j x <-> receives_service_at sched j x

definitions.busy_interval_prefix sched j t1 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: definitions.busy_interval_prefix sched j t1 (t1 + δ) -> t1 <= x < t1 + δ -> ~ interference j x <-> receives_service_at sched j x
A1: t1 <= job_arrival j
A2: job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t

t1 <= job_arrival j < t1 + δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: definitions.busy_interval_prefix sched j t1 (t1 + δ) -> t1 <= x < t1 + δ -> ~ interference j x <-> receives_service_at sched j x
A1: t1 <= job_arrival j
A2: job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
definitions.quiet_time sched j t1
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: definitions.busy_interval_prefix sched j t1 (t1 + δ) -> t1 <= x < t1 + δ -> ~ interference j x <-> receives_service_at sched j x
A1: t1 <= job_arrival j
A2: job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
forall t : nat, t1 < t < t1 + δ -> ~ definitions.quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: definitions.busy_interval_prefix sched j t1 (t1 + δ) -> t1 <= x < t1 + δ -> ~ interference j x <-> receives_service_at sched j x
A1: t1 <= job_arrival j
A2: job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t

t1 <= job_arrival j < t1 + δ
by apply/andP; split => //; rewrite (leqRW A2) -(leqRW LT).
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: definitions.busy_interval_prefix sched j t1 (t1 + δ) -> t1 <= x < t1 + δ -> ~ interference j x <-> receives_service_at sched j x
A1: t1 <= job_arrival j
A2: job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t

definitions.quiet_time sched j t1
by apply QT.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: definitions.busy_interval_prefix sched j t1 (t1 + δ) -> t1 <= x < t1 + δ -> ~ interference j x <-> receives_service_at sched j x
A1: t1 <= job_arrival j
A2: job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t

forall t : nat, t1 < t < t1 + δ -> ~ definitions.quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: definitions.busy_interval_prefix sched j t1 (t1 + δ) -> t1 <= x < t1 + δ -> ~ interference j x <-> receives_service_at sched j x
A1: t1 <= job_arrival j
A2: job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t: nat
A3: t1 < t
A4: t < t1 + δ

t1 < t <= t1 + δ
by apply/andP; split; lia.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: t1 <= x < t1 + δ -> ~ interference j x <-> receives_service_at sched j x

t1 <= x < t1 + δ
by apply/andP; split; eapply leq_trans; eauto 2.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: ~ interference j x <-> receives_service_at sched j x

0 < service_in j (sched x) + interference j x
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: ~ true <-> receives_service_at sched j x

0 < service_in j (sched x) + true
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: ~ false <-> receives_service_at sched j x
0 < service_in j (sched x) + false
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: ~ true <-> receives_service_at sched j x

0 < service_in j (sched x) + true
by lia.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy, t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
x: nat
Lo: t1 <= x
Hi: x < t1 + δ
LT: t_busy.+1 < t1 + δ
Workj: ~ false <-> receives_service_at sched j x

0 < service_in j (sched x) + false
by rewrite //= addn0; apply Workj. } Qed. (** However, since the total workload is bounded (see [H_workload_is_bounded]), the sum of [j]'s cost and its interfering workload within the interval <<[t1, t1 + δ)>> is bounded by [j]'s service and its interference within the same time interval. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

job_cost j + cumulative_interfering_workload j t1 (t1 + δ) <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

job_cost j + cumulative_interfering_workload j t1 (t1 + δ) <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

workload_of_job arr_seq j t1 (t1 + δ) = job_cost j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j

workload_of_job arr_seq j t1 (t1 + δ) = job_cost j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j

(if t1 <= job_arrival j < t1 + δ then job_cost j else 0) = job_cost j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j

(if job_arrival j < t1 + δ then job_cost j else 0) = job_cost j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j

job_arrival j < t1 + δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j

t1 < t1 + δ <= t1 + δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j
quiet_time (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j

t1 < t1 + δ <= t1 + δ
by apply/andP; split; [rewrite -addn1 leq_add2l | done].
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j

quiet_time (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j

cumulative_interference j 0 (t1 + δ) == cumulative_interfering_workload j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j
~~ pending_earlier_and_at sched j (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j

cumulative_interference j 0 (t1 + δ) == cumulative_interfering_workload j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j

(if t1 <= job_arrival j < t1 + δ then job_cost j else 0) + cumulative_interfering_workload j t1 (t1 + δ) <= δ -> cumulative_interference j 0 (t1 + δ) == cumulative_interfering_workload j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j
LE: cumulative_interfering_workload j t1 (t1 + δ) <= δ

cumulative_interference j 0 (t1 + δ) == cumulative_interfering_workload j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j
LE: cumulative_interfering_workload j t1 (t1 + δ) <= δ

cumulative_interference j 0 (t1 + δ) <= cumulative_interfering_workload j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j
LE: cumulative_interfering_workload j t1 (t1 + δ) <= δ
cumulative_interfering_workload j 0 (t1 + δ) <= cumulative_interference j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j
LE: cumulative_interfering_workload j t1 (t1 + δ) <= δ

cumulative_interference j 0 (t1 + δ) <= cumulative_interfering_workload j 0 (t1 + δ)
by apply H_no_speculative_exec.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j
LE: cumulative_interfering_workload j t1 (t1 + δ) <= δ

cumulative_interfering_workload j 0 (t1 + δ) <= cumulative_interference j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j
LE: cumulative_interfering_workload j t1 (t1 + δ) <= δ

δ <= cumulative_interference j t1 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j
LE: cumulative_interfering_workload j t1 (t1 + δ) <= δ

service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ) <= cumulative_interference j t1 (t1 + δ)
by have -> : service_during sched j t1 (t1 + δ) = 0 by rewrite cumulative_service_before_job_arrival_zero.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
NEQ1: t1 <= job_arrival j
GE: t1 + δ <= job_arrival j

~~ pending_earlier_and_at sched j (t1 + δ)
by rewrite /pending_earlier_and_at negb_and; apply/orP; left; rewrite -ltnNge ltnS. Qed. (** The latter two lemmas imply that [t1 + δ] is a quiet time ... *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

quiet_time (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

quiet_time (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
LW: job_cost j + cumulative_interfering_workload j t1 (t1 + δ) <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)

quiet_time (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
LW: job_cost j + cumulative_interfering_workload j t1 (t1 + δ) <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

quiet_time (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
EQ1: job_cost j = service_during sched j t1 (t1 + δ)
EQ2: cumulative_interfering_workload j t1 (t1 + δ) = cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

quiet_time (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
LW: job_cost j + cumulative_interfering_workload j t1 (t1 + δ) <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d
service_during sched j t1 (t1 + δ) <= job_cost j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
LW: job_cost j + cumulative_interfering_workload j t1 (t1 + δ) <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d
cumulative_interference j t1 (t1 + δ) <= cumulative_interfering_workload j t1 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
EQ1: job_cost j = service_during sched j t1 (t1 + δ)
EQ2: cumulative_interfering_workload j t1 (t1 + δ) = cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

quiet_time (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
EQ1: job_cost j = service_during sched j t1 (t1 + δ)
EQ2: cumulative_interfering_workload j t1 (t1 + δ) = cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

cumulative_interference j 0 (t1 + δ) == cumulative_interfering_workload j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
EQ1: job_cost j = service_during sched j t1 (t1 + δ)
EQ2: cumulative_interfering_workload j t1 (t1 + δ) = cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d
~~ pending_earlier_and_at sched j (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
EQ1: job_cost j = service_during sched j t1 (t1 + δ)
EQ2: cumulative_interfering_workload j t1 (t1 + δ) = cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

cumulative_interference j 0 (t1 + δ) == cumulative_interfering_workload j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
EQ1: job_cost j = service_during sched j t1 (t1 + δ)
EQ2: cumulative_interfering_workload j t1 (t1 + δ) = cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

cumulative_interference j 0 (t1 + δ) <= cumulative_interfering_workload j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
EQ1: job_cost j = service_during sched j t1 (t1 + δ)
EQ2: cumulative_interfering_workload j t1 (t1 + δ) = cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d
cumulative_interfering_workload j 0 (t1 + δ) <= cumulative_interference j 0 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
EQ1: job_cost j = service_during sched j t1 (t1 + δ)
EQ2: cumulative_interfering_workload j t1 (t1 + δ) = cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

cumulative_interference j 0 (t1 + δ) <= cumulative_interfering_workload j 0 (t1 + δ)
by apply H_no_speculative_exec.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
EQ1: job_cost j = service_during sched j t1 (t1 + δ)
EQ2: cumulative_interfering_workload j t1 (t1 + δ) = cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

cumulative_interfering_workload j 0 (t1 + δ) <= cumulative_interference j 0 (t1 + δ)
by apply (cumul_iw_bounded_by_cumul_i _ t_busy) => //=; rewrite EQ2.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
EQ1: job_cost j = service_during sched j t1 (t1 + δ)
EQ2: cumulative_interfering_workload j t1 (t1 + δ) = cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

~~ pending_earlier_and_at sched j (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
EQ1: job_cost j = service_during sched j t1 (t1 + δ)
EQ2: cumulative_interfering_workload j t1 (t1 + δ) = cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

completed_by sched j (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
EQ1: job_cost j = service_during sched j t1 (t1 + δ)
EQ2: cumulative_interfering_workload j t1 (t1 + δ) = cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

service_during sched j t1 (t1 + δ) <= service sched j (t1 + δ)
by erewrite <-(service_cat); [apply leq_addl | ]; lia.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
LW: job_cost j + cumulative_interfering_workload j t1 (t1 + δ) <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

service_during sched j t1 (t1 + δ) <= job_cost j
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
LW: job_cost j + cumulative_interfering_workload j t1 (t1 + δ) <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

service_during sched j t1 (t1 + δ) <= service sched j ?t
by erewrite <-(service_cat); [apply leq_addl | ]; lia.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
LW: job_cost j + cumulative_interfering_workload j t1 (t1 + δ) <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d

cumulative_interference j t1 (t1 + δ) <= cumulative_interfering_workload j t1 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
LW: job_cost j + cumulative_interfering_workload j t1 (t1 + δ) <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d
D: cumulative_interference j 0 t1 = cumulative_interfering_workload j 0 t1

cumulative_interference j t1 (t1 + δ) <= cumulative_interfering_workload j t1 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
LW: job_cost j + cumulative_interfering_workload j t1 (t1 + δ) <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d
D: cumulative_interference j 0 t1 = cumulative_interfering_workload j 0 t1

cumulative_interference j 0 t1 + cumulative_interference j t1 (t1 + δ) <= cumulative_interfering_workload j 0 t1 + cumulative_interfering_workload j t1 (t1 + δ)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
LW: job_cost j + cumulative_interfering_workload j t1 (t1 + δ) <= service_during sched j t1 (t1 + δ) + cumulative_interference j t1 (t1 + δ)
NEQ: forall a b c d : nat, c <= a -> d <= b -> a + b <= c + d -> a = c /\ b = d
D: cumulative_interference j 0 t1 = cumulative_interfering_workload j 0 t1

\sum_(0 <= i < t1 + δ) cond_interference (fun=> xpredT) j i <= cumulative_interfering_workload j 0 t1 + cumulative_interfering_workload j t1 (t1 + δ)
by rewrite -(big_cat_nat) //=; last by lia. Qed. (** ... which is a contradiction with the initial assumption. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

t1 < t1 + δ <= t1 + δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
H_no_quiet_time: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

t1 < t1 + δ
by rewrite -addn1 leq_add2l. Qed. End CannotBeBusyForSoLong. (** Since the interval cannot remain busy for so long, we prove that the busy interval finishes at some point [t2 <= t1 + δ]. *)
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ

exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ

exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t

exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
EX: [exists t2, (t1 < t2) && quiet_time t2] = true

exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
EX: [exists t2, (t1 < t2) && quiet_time t2] = false
exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
EX: [exists t2, (t1 < t2) && quiet_time t2] = true

exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
EX: [exists t2, (t1 < t2) && quiet_time t2] = true

exists t2 : instant, (t1 < t2 <= t1 + δ) && quiet_time t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
EX: [exists t2, (t1 < t2) && quiet_time t2] = true
EX': exists t2 : instant, (t1 < t2 <= t1 + δ) && quiet_time t2
exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
EX: [exists t2, (t1 < t2) && quiet_time t2] = true

exists t2 : instant, (t1 < t2 <= t1 + δ) && quiet_time t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: fintype_ordinal__canonical__fintype_Finite (t1 + δ).+1
LE: t1 < t2
QUIET: quiet_time t2

exists t2 : instant, (t1 < t2 <= t1 + δ) && quiet_time t2
exists t2; apply/andP; split => //; by apply/andP; split; last (rewrite -ltnS; apply ltn_ord).
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
EX: [exists t2, (t1 < t2) && quiet_time t2] = true
EX': exists t2 : instant, (t1 < t2 <= t1 + δ) && quiet_time t2

exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n

exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n

t_busy < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n
t1 <= job_arrival j < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n
forall t : nat, t1 < t < t2 -> ~ definitions.quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n

t_busy < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n
NEQ2: t2 <= t_busy

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n
NEQ2: t2 <= t_busy
NQ: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t

t1 < t2 < t_busy.+1
by apply/andP; split => //.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n

t1 <= job_arrival j < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n
forall t : nat, t1 < t < t2 -> ~ definitions.quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n

t1 <= job_arrival j < t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time 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
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n

forall t : nat, t1 < t < t2 -> ~ definitions.quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n

forall t : nat, t1 < t < t2 -> ~ definitions.quiet_time sched j t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n
t: nat
GT1: t1 < t
LT2: t < t2
BUG: definitions.quiet_time sched j t

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n
t: nat
GT1: t1 < t
LT2: t < t2
BUG: definitions.quiet_time sched j t

t1 < t <= t1 + δ
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
t: nat
MIN: t2 <= t
GT1: t1 < t
LT2: t < t2
BUG: definitions.quiet_time sched j t
False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
MIN: forall n : nat, (t1 < n <= t1 + δ) && quiet_time n -> t2 <= n
t: nat
GT1: t1 < t
LT2: t < t2
BUG: definitions.quiet_time sched j t

t1 < t <= t1 + δ
by apply/andP; split; last apply leq_trans with (n := t2); eauto using ltnW.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
t: nat
MIN: t2 <= t
GT1: t1 < t
LT2: t < t2
BUG: definitions.quiet_time sched j t

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t2: nat
GT: t1 < t2
LE: t2 <= t1 + δ
QUIET: quiet_time t2
t: nat
MIN: t2 <= t
GT1: t1 < t
LT2: t < t2
BUG: definitions.quiet_time sched j t

False
by lia. } }
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
EX: [exists t2, (t1 < t2) && quiet_time t2] = false

exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
EX: [exists t2, (t1 < t2) && quiet_time t2] = false

exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
ALL': forall x : fintype_ordinal__canonical__fintype_Finite (t1 + δ).+1, ~~ ((t1 < x) && quiet_time x)

exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
ALL': forall x : fintype_ordinal__canonical__fintype_Finite (t1 + δ).+1, ~~ ((t1 < x) && quiet_time x)

forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
ALL': forall x : fintype_ordinal__canonical__fintype_Finite (t1 + δ).+1, ~~ ((t1 < x) && quiet_time x)
ALL: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
ALL': forall x : fintype_ordinal__canonical__fintype_Finite (t1 + δ).+1, ~~ ((t1 < x) && quiet_time x)

forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
ALL': forall x : fintype_ordinal__canonical__fintype_Finite (t1 + δ).+1, ~~ ((t1 < x) && quiet_time x)
t: nat
GTt: t1 < t
QUIET: quiet_time t
LEt: t < (t1 + δ).+1

False
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
t: nat
LEt: t < (t1 + δ).+1
GTt: t1 < t
QUIET: quiet_time t
ALL': ~~ quiet_time t

False
by move: ALL' => /negP ALL'; apply ALL'; clear ALL'.
Task: TaskType
H: TaskCost Task
Job: JobType
H0: JobTask Job Task
H1: JobArrival Job
H2: JobCost Job
PState: ProcessorState Job
H_unit_service_proc_model: unit_service_proc_model PState
H3: Interference Job
H4: InterferingWorkload Job
H_no_speculative_exec: no_speculative_execution
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arrival_sequence_is_a_set: arrival_sequence_uniq arr_seq
tsk: Task
sched: schedule PState
H_work_conserving: work_conserving arr_seq sched
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
j: Job
H_from_arrival_sequence: arrives_in arr_seq j
H_job_task: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
quiet_time:= [eta definitions.quiet_time sched j]: instant -> bool
busy_interval_prefix:= definitions.busy_interval_prefix sched j: instant -> instant -> Prop
busy_interval:= definitions.busy_interval sched j: instant -> instant -> Prop
t_busy: instant
H_j_is_pending: pending sched j t_busy
t1: instant
H_is_busy_prefix: busy_interval_prefix t1 t_busy.+1
δ: duration
H_δ_positive: 0 < δ
H_workload_is_bounded: workload_of_job arr_seq j t1 (t1 + δ) + cumulative_interfering_workload j t1 (t1 + δ) <= δ
NEQ: t1 <= job_arrival j < t_busy.+1
QT: definitions.quiet_time sched j t1
NQT: forall t : nat, t1 < t < t_busy.+1 -> ~ definitions.quiet_time sched j t
ALL': forall x : fintype_ordinal__canonical__fintype_Finite (t1 + δ).+1, ~~ ((t1 < x) && quiet_time x)
ALL: forall t : nat, t1 < t <= t1 + δ -> ~ quiet_time t

exists t2 : nat, t_busy < t2 /\ t2 <= t1 + δ /\ busy_interval t1 t2
by clear ALL'; exfalso; eapply t1δ_is_quiet_contra. } Qed. End UpperBound. End BoundingBusyInterval. End AbstractBusyIntervalExists. (** We add some facts into the "Hint Database" basic_rt_facts, so Coq will be able to apply them automatically where needed. *) Global Hint Resolve abstract_busy_interval_arrivals_before job_completes_within_busy_interval abstract_busy_interval_prefix_job_arrival abstract_busy_interval_job_arrival : basic_rt_facts.