Built with Alectryon, running Coq+SerAPI v8.15.0+0.15.0. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use instead of Ctrl.
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "_ + _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ - _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ >= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ > _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _ <= _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ <= _ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ < _ < _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "_ * _" was already used in scope nat_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ : _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ & _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ | _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
Notation "[ rel _ _ in _ ]" was already used in scope fun_scope. [notation-overridden,parsing]
(** * Abstract Response-Time Analysis with sequential tasks *) (** In this section we propose the general framework for response-time analysis (RTA) of uni-processor scheduling of real-time tasks with arbitrary arrival models and sequential tasks. *) (** We prove that the maximum among the solutions of the response-time bound recurrence for some set of parameters is a response-time bound for [tsk]. Note that in this section we _do_ rely on the hypothesis about task sequentiality. This allows us to provide a more precise response-time bound function, since jobs of the same task will be executed strictly in the order they arrive. *) Section Sequential_Abstract_RTA. (** Consider any type of tasks ... *) Context {Task : TaskType}. Context `{TaskCost Task}. Context `{TaskRunToCompletionThreshold Task}. (** ... and any type of jobs associated with these tasks. *) Context {Job : JobType}. Context `{JobTask Job Task}. Context `{JobArrival Job}. Context `{JobCost Job}. Context `{JobPreemptable Job}. (** 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_arr_seq_is_a_set : arrival_sequence_uniq arr_seq. (** Next, consider any ideal uniprocessor schedule of this arrival sequence...*) Variable sched : schedule (ideal.processor_state Job). Hypothesis H_jobs_come_from_arrival_sequence : jobs_come_from_arrival_sequence sched arr_seq. (** ... where jobs do not execute before their arrival nor after completion. *) Hypothesis H_jobs_must_arrive_to_execute : jobs_must_arrive_to_execute sched. Hypothesis H_completed_jobs_dont_execute : completed_jobs_dont_execute sched. (** Assume that the job costs are no larger than the task costs. *) Hypothesis H_valid_job_cost: arrivals_have_valid_job_costs arr_seq. (** Consider an arbitrary task set. *) Variable ts : list Task. (** Let [tsk] be any task in ts that is to be analyzed. *) Variable tsk : Task. Hypothesis H_tsk_in_ts : tsk \in ts. (** Consider a valid preemption model... *) Hypothesis H_valid_preemption_model: valid_preemption_model arr_seq sched. (** ...and a valid task run-to-completion threshold function. That is, [task_rtct tsk] is (1) no bigger than [tsk]'s cost, (2) for any job of task [tsk] [job_rtct] is bounded by [task_rtct]. *) Hypothesis H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk. (** Let max_arrivals be a family of valid arrival curves, i.e., for any task [tsk] in ts [max_arrival tsk] is (1) an arrival bound of [tsk], and (2) it is a monotonic function that equals [0] for the empty interval [delta = 0]. *) Context `{MaxArrivals Task}. Hypothesis H_valid_arrival_curve : valid_taskset_arrival_curve ts max_arrivals. Hypothesis H_is_arrival_curve : taskset_respects_max_arrivals arr_seq ts. (** Assume we are provided with abstract functions for interference and interfering workload. *) Variable interference : Job -> instant -> bool. Variable interfering_workload : Job -> instant -> duration. (** Let's define some local names for clarity. *) Let task_rbf := task_request_bound_function tsk. Let busy_interval := busy_interval sched interference interfering_workload. Let arrivals_between := arrivals_between arr_seq. Let service_of_jobs_at := service_of_jobs_at sched. Let task_workload_between := task_workload_between arr_seq tsk. Let task_service_of_jobs_in := task_service_of_jobs_in sched tsk. Let response_time_bounded_by := task_response_time_bound arr_seq sched. (** In this section, we introduce a few new definitions to make it easier to express the new bound of the worst-case execution time. *) Section Definitions. (** When assuming sequential tasks, we can introduce an additional hypothesis that ensures that the values of interference and workload remain consistent. It states that any of [tsk]'s job, that arrived before the busy interval, should be completed by the beginning of the busy interval. *) Definition interference_and_workload_consistent_with_sequential_tasks := forall (j : Job) (t1 t2 : instant), arrives_in arr_seq j -> job_of_task tsk j -> job_cost j > 0 -> busy_interval j t1 t2 -> task_workload_between 0 t1 = task_service_of_jobs_in (arrivals_between 0 t1) 0 t1. (** Next we introduce the notion of task interference. Intuitively, task [tsk] incurs interference when some of the jobs of task [tsk] incur interference. As a result, [tsk] cannot make any progress. More formally, task [tsk] experiences interference at a time instant time [t], if at time t task [tsk] is not scheduled and there exists a job of [tsk] that (1) experiences interference and (2) has arrived before some time instant [upper_bound]. It is important to note two subtle points: according to our semantics of the interference function, jobs from the same task can cause interference to each other. In the definition of interference of a task we want to avoid such situations. That is why we use the term [~~ task_scheduled_at tsk t]. Moreover, in order to make the definition constructive, we introduce an upper bound on the arrival time of jobs from task [tsk]. As a result, we need to consider only a finite number of jobs. For the function to produce the correct values it is enough to specify a sufficiently large upper_bound. Usually as upper_bound one can use the end of the corresponding busy interval. *) Definition task_interference_received_before (tsk : Task) (upper_bound : instant) (t : instant) := (~~ task_scheduled_at sched tsk t) && has (fun j => interference j t) (task_arrivals_before arr_seq tsk upper_bound). (** Next we define the cumulative task interference. *) Definition cumul_task_interference tsk upper_bound t1 t2 := \sum_(t1 <= t < t2) task_interference_received_before tsk upper_bound t. (** We say that task interference is bounded by task_interference_bound_function ([tIBF]) iff for any job [j] of task [tsk] cumulative _task_ interference within the interval [t1, t1 + R) is bounded by function [tIBF(tsk, A, R)]. Note that this definition is almost the same as the definition of job_interference_is_bounded_by from the non-necessary-sequential case. However, in this case we ignore the interference that comes from jobs from the same task. *) Definition task_interference_is_bounded_by (task_interference_bound_function : Task -> duration -> duration -> duration) := forall j R t1 t2, arrives_in arr_seq j -> job_of_task tsk j -> t1 + R < t2 -> ~~ completed_by sched j (t1 + R) -> busy_interval j t1 t2 -> let offset := job_arrival j - t1 in cumul_task_interference tsk t2 t1 (t1 + R) <= task_interference_bound_function tsk offset R. End Definitions. (** In this section, we prove that the maximum among the solutions of the response-time bound recurrence is a response-time bound for [tsk]. *) Section ResponseTimeBound. (** For simplicity, let's define some local names. *) Let cumul_interference := cumul_interference interference. Let cumul_workload := cumul_interfering_workload interfering_workload. Let cumul_task_interference := cumul_task_interference tsk. (** We assume that the schedule is work-conserving. *) Hypothesis H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload. (** Unlike the previous theorem [uniprocessor_response_time_bound], we assume that (1) tasks are sequential, moreover (2) functions interference and interfering_workload are consistent with the hypothesis of sequential tasks. *) Hypothesis H_sequential_tasks : sequential_tasks arr_seq sched. Hypothesis H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks. (** Assume we have a constant L which bounds the busy interval of any of [tsk]'s jobs. *) Variable L : duration. Hypothesis H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L. (** Next, we assume that task_interference_bound_function is a bound on interference incurred by the task. *) Variable task_interference_bound_function : Task -> duration -> duration -> duration. Hypothesis H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function. (** Given any job [j] of task [tsk] that arrives exactly [A] units after the beginning of the busy interval, the bound on the total interference incurred by [j] within an interval of length [Δ] is no greater than [task_rbf (A + ε) - task_cost tsk + task's IBF Δ]. Note that in case of sequential tasks the bound consists of two parts: (1) the part that bounds the interference received from other jobs of task [tsk] -- [task_rbf (A + ε) - task_cost tsk] and (2) any other interference that is bounded by [task_IBF(tsk, A, Δ)]. *) Let total_interference_bound (tsk : Task) (A Δ : duration) := task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ. (** Note that since we consider the modified interference bound function, the search space has also changed. One can see that the new search space is guaranteed to include any A for which [task_rbf (A) ≠ task_rbf (A + ε)], since this implies the fact that [total_interference_bound (tsk, A, Δ) ≠ total_interference_bound (tsk, A + ε, Δ)]. *) Let is_in_search_space_seq := is_in_search_space tsk L total_interference_bound. (** Consider any value [R], and assume that for any relative arrival time [A] from the search space there is a solution [F] of the response-time recurrence that is bounded by [R]. In contrast to the formula in "non-sequential" Abstract RTA, assuming that tasks are sequential leads to a more precise response-time bound. Now we can explicitly express the interference caused by other jobs of the task under consideration. To understand the right part of the fix-point in the equation it is helpful to note that the bound on the total interference ([bound_of_total_interference]) is equal to [task_rbf (A + ε) - task_cost tsk + tIBF tsk A Δ]. Besides, a job must receive enough service to become non-preemptive [task_lock_in_service tsk]. The sum of these two quantities is exactly the right-hand side of the equation. *) Variable R : nat. Hypothesis H_R_is_maximum_seq: forall (A : duration), is_in_search_space_seq A -> exists (F : duration), A + F >= (task_rbf (A + ε) - (task_cost tsk - task_rtct tsk)) + task_interference_bound_function tsk A (A + F) /\ R >= F + (task_cost tsk - task_rtct tsk). (** In this section we prove a few simple lemmas about the completion of jobs from the task considering the busy interval of the job under consideration. *) Section CompletionOfJobsFromSameTask. (** Consider any two jobs [j1] [j2] of [tsk]. *) Variable j1 j2 : Job. Hypothesis H_j1_arrives: arrives_in arr_seq j1. Hypothesis H_j2_arrives: arrives_in arr_seq j2. Hypothesis H_j1_from_tsk: job_of_task tsk j1. Hypothesis H_j2_from_tsk: job_of_task tsk j2. Hypothesis H_j1_cost_positive: job_cost_positive j1. (** Consider the busy interval <<[t1, t2)>> of job j1. *) Variable t1 t2 : instant. Hypothesis H_busy_interval : busy_interval j1 t1 t2. (** We prove that if a job from task [tsk] arrived before the beginning of the busy interval, then it must be completed before the beginning of the busy interval *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2

job_arrival j2 < t1 -> completed_by sched j2 t1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2

job_arrival j2 < t1 -> completed_by sched j2 t1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
JA: job_arrival j2 < t1
TSK2eq: job_task j2 = tsk

completed_by sched j2 t1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
JA: job_arrival j2 < t1
TSK2eq: job_task j2 = tsk

job_cost j2 <= service sched j2 t1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
JA: job_arrival j2 < t1
TSK2eq: job_task j2 = tsk
POS: 0 < job_cost j2

job_cost j2 <= service sched j2 t1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
JA: job_arrival j2 < t1
TSK2eq: job_task j2 = tsk
POS: 0 < job_cost j2
SWEQ: arrives_in arr_seq j1 -> job_of_task tsk j1 -> 0 < job_cost j1 -> busy_interval j1 t1 t2 -> task_workload_between 0 t1 = task_service_of_jobs_in (arrivals_between 0 t1) 0 t1

job_cost j2 <= service sched j2 t1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
JA: job_arrival j2 < t1
TSK2eq: job_task j2 = tsk
POS: 0 < job_cost j2
SWEQ: task_workload_between 0 t1 = task_service_of_jobs_in (arrivals_between 0 t1) 0 t1

job_cost j2 <= service sched j2 t1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
JA: job_arrival j2 < t1
TSK2eq: job_task j2 = tsk
POS: 0 < job_cost j2
SWEQ: task_workload_between 0 t1 = task_service_of_jobs_in (arrivals_between 0 t1) 0 t1
H6: unit_service_proc_model (processor_state Job) -> forall arr_seq : arrival_sequence Job, consistent_arrival_times arr_seq -> forall sched : schedule (processor_state Job), jobs_must_arrive_to_execute sched -> completed_jobs_dont_execute sched -> forall (P : pred Job) (t1 t2 t_compl : instant), workload_of_jobs P (arrival_sequence.arrivals_between arr_seq t1 t2) = service_of_jobs sched P (arrival_sequence.arrivals_between arr_seq t1 t2) t1 t_compl -> forall j : Job, j \in arrival_sequence.arrivals_between arr_seq t1 t2 -> P j -> completed_by sched j t_compl

unit_service_proc_model (processor_state Job)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
JA: job_arrival j2 < t1
TSK2eq: job_task j2 = tsk
POS: 0 < job_cost j2
SWEQ: task_workload_between 0 t1 = task_service_of_jobs_in (arrivals_between 0 t1) 0 t1
H6: unit_service_proc_model (processor_state Job) -> forall arr_seq : arrival_sequence Job, consistent_arrival_times arr_seq -> forall sched : schedule (processor_state Job), jobs_must_arrive_to_execute sched -> completed_jobs_dont_execute sched -> forall (P : pred Job) (t1 t2 t_compl : instant), workload_of_jobs P (arrival_sequence.arrivals_between arr_seq t1 t2) = service_of_jobs sched P (arrival_sequence.arrivals_between arr_seq t1 t2) t1 t_compl -> forall j : Job, j \in arrival_sequence.arrivals_between arr_seq t1 t2 -> P j -> completed_by sched j t_compl
j2 \in arrival_sequence.arrivals_between arr_seq 0 t1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
JA: job_arrival j2 < t1
TSK2eq: job_task j2 = tsk
POS: 0 < job_cost j2
SWEQ: task_workload_between 0 t1 = task_service_of_jobs_in (arrivals_between 0 t1) 0 t1
H6: unit_service_proc_model (processor_state Job) -> forall arr_seq : arrival_sequence Job, consistent_arrival_times arr_seq -> forall sched : schedule (processor_state Job), jobs_must_arrive_to_execute sched -> completed_jobs_dont_execute sched -> forall (P : pred Job) (t1 t2 t_compl : instant), workload_of_jobs P (arrival_sequence.arrivals_between arr_seq t1 t2) = service_of_jobs sched P (arrival_sequence.arrivals_between arr_seq t1 t2) t1 t_compl -> forall j : Job, j \in arrival_sequence.arrivals_between arr_seq t1 t2 -> P j -> completed_by sched j t_compl

unit_service_proc_model (processor_state Job)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
JA: job_arrival j2 < t1
TSK2eq: job_task j2 = tsk
POS: 0 < job_cost j2
SWEQ: task_workload_between 0 t1 = task_service_of_jobs_in (arrivals_between 0 t1) 0 t1
H6: unit_service_proc_model (processor_state Job) -> forall arr_seq : arrival_sequence Job, consistent_arrival_times arr_seq -> forall sched : schedule (processor_state Job), jobs_must_arrive_to_execute sched -> completed_jobs_dont_execute sched -> forall (P : pred Job) (t1 t2 t_compl : instant), workload_of_jobs P (arrival_sequence.arrivals_between arr_seq t1 t2) = service_of_jobs sched P (arrival_sequence.arrivals_between arr_seq t1 t2) t1 t_compl -> forall j : Job, j \in arrival_sequence.arrivals_between arr_seq t1 t2 -> P j -> completed_by sched j t_compl
j2 \in arrival_sequence.arrivals_between arr_seq 0 t1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
JA: job_arrival j2 < t1
TSK2eq: job_task j2 = tsk
POS: 0 < job_cost j2
SWEQ: task_workload_between 0 t1 = task_service_of_jobs_in (arrivals_between 0 t1) 0 t1
H6: unit_service_proc_model (processor_state Job) -> forall arr_seq : arrival_sequence Job, consistent_arrival_times arr_seq -> forall sched : schedule (processor_state Job), jobs_must_arrive_to_execute sched -> completed_jobs_dont_execute sched -> forall (P : pred Job) (t1 t2 t_compl : instant), workload_of_jobs P (arrival_sequence.arrivals_between arr_seq t1 t2) = service_of_jobs sched P (arrival_sequence.arrivals_between arr_seq t1 t2) t1 t_compl -> forall j : Job, j \in arrival_sequence.arrivals_between arr_seq t1 t2 -> P j -> completed_by sched j t_compl

j2 \in arrival_sequence.arrivals_between arr_seq 0 t1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
JA: job_arrival j2 < t1
TSK2eq: job_task j2 = tsk
POS: 0 < job_cost j2
SWEQ: task_workload_between 0 t1 = task_service_of_jobs_in (arrivals_between 0 t1) 0 t1
H6: unit_service_proc_model (processor_state Job) -> forall arr_seq : arrival_sequence Job, consistent_arrival_times arr_seq -> forall sched : schedule (processor_state Job), jobs_must_arrive_to_execute sched -> completed_jobs_dont_execute sched -> forall (P : pred Job) (t1 t2 t_compl : instant), workload_of_jobs P (arrival_sequence.arrivals_between arr_seq t1 t2) = service_of_jobs sched P (arrival_sequence.arrivals_between arr_seq t1 t2) t1 t_compl -> forall j : Job, j \in arrival_sequence.arrivals_between arr_seq t1 t2 -> P j -> completed_by sched j t_compl

j2 \in arrival_sequence.arrivals_between arr_seq 0 t1
by apply arrived_between_implies_in_arrivals. Qed. (** Next we prove that if a job is pending after the beginning of the busy interval <<[t1, t2)>> then it arrives after t1. *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2

forall t : nat, t1 <= t -> pending sched j2 t -> arrived_between j2 t1 t.+1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2

forall t : nat, t1 <= t -> pending sched j2 t -> arrived_between j2 t1 t.+1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
t: nat
GE: t1 <= t
PEND: pending sched j2 t

arrived_between j2 t1 t.+1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
t: nat
GE: t1 <= t
PEND: pending sched j2 t

job_arrival j2 < t.+1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
t: nat
GE: t1 <= t
PEND: pending sched j2 t
t1 <= job_arrival j2
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
t: nat
GE: t1 <= t
PEND: pending sched j2 t

job_arrival j2 < t.+1
by move: PEND => /andP [ARR _]; rewrite ltnS.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
t: nat
GE: t1 <= t
PEND: pending sched j2 t

t1 <= job_arrival j2
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
t: nat
GE: t1 <= t
PEND: pending sched j2 t
LT: job_arrival j2 < t1

False
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
t: nat
GE: t1 <= t
PEND: pending sched j2 t
LT: job_arrival j2 < t1
AFR1: t1 <= job_arrival j1
AFR2: job_arrival j1 < t2
QT: quiet_time sched interference interfering_workload j1 t1

False
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
t: nat
GE: t1 <= t
PEND: pending sched j2 t
LT: job_arrival j2 < t1
AFR1: t1 <= job_arrival j1
AFR2: job_arrival j1 < t2
QT: quiet_time sched interference interfering_workload j1 t1
L12: completed_by sched j2 t1

False
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j1, j2: Job
H_j1_arrives: arrives_in arr_seq j1
H_j2_arrives: arrives_in arr_seq j2
H_j1_from_tsk: job_of_task tsk j1
H_j2_from_tsk: job_of_task tsk j2
H_j1_cost_positive: job_cost_positive j1
t1, t2: instant
H_busy_interval: busy_interval j1 t1 t2
t: nat
GE: t1 <= t
PEND: pending sched j2 t
LT: job_arrival j2 < t1
AFR1: t1 <= job_arrival j1
AFR2: job_arrival j1 < t2
QT: quiet_time sched interference interfering_workload j1 t1
L12: completed_by sched j2 t

False
by move: PEND => /andP [_ /negP T2]. Qed. End CompletionOfJobsFromSameTask. (** Since we are going to use the [uniprocessor_response_time_bound] theorem to prove the theorem of this section, we have to show that all the hypotheses are satisfied. Namely, we need to show that hypotheses [H_sequential_tasks, H_i_w_are_task_consistent and H_task_interference_is_bounded_by] imply [H_job_interference_is_bounded], and the fact that [H_R_is_maximum_seq] implies [H_R_is_maximum]. *) (** In this section we show that there exists a bound for cumulative interference for any job of task [tsk], i.e., the hypothesis [H_job_interference_is_bounded] holds. *) Section BoundOfCumulativeJobInterference. (** Consider any job [j] of [tsk]. *) Variable j : Job. Hypothesis H_j_arrives : arrives_in arr_seq j. Hypothesis H_job_of_tsk : job_of_task tsk j. Hypothesis H_job_cost_positive : job_cost_positive j. (** Consider the busy interval <<[t1, t2)>> of job j. *) Variable t1 t2 : instant. Hypothesis H_busy_interval : busy_interval j t1 t2. (** Let's define A as a relative arrival time of job j (with respect to time t1). *) Let A : duration := job_arrival j - t1. (** Consider an arbitrary time x ... *) Variable x : duration. (** ... such that (t1 + x) is inside the busy interval... *) Hypothesis H_inside_busy_interval : t1 + x < t2. (** ... and job j is not completed by time (t1 + x). *) Hypothesis H_job_j_is_not_completed : ~~ completed_by sched j (t1 + x). (** In this section, we show that the cumulative interference of job j in the interval <<[t1, t1 + x)>> is bounded by the sum of the task workload in the interval [t1, t1 + A + ε) and the cumulative interference of [j]'s task in the interval [t1, t1 + x). Note that the task workload is computed only on the interval [t1, t1 + A + ε). Thanks to the hypothesis about sequential tasks, jobs of task [tsk] that arrive after [t1 + A + ε] cannot interfere with j. *) Section TaskInterferenceBoundsInterference. (** We start by proving a simpler analog of the lemma which states that at any time instant t ∈ <<[t1, t1 + x)>> the sum of [interference j t] and [scheduled_at j t] is no larger than the sum of [the service received by jobs of task tsk at time t] and [task_iterference tsk t]. *) (** Next we consider 4 cases. *) Section CaseAnalysis. (** Consider an arbitrary time instant t ∈ <<[t1, t1 + x)>>. *) Variable t : instant. Hypothesis H_t_in_interval : t1 <= t < t1 + x. Section Case1. (** Assume the processor is idle at time [t]. *) Hypothesis H_idle : sched t = None. (** In case when the processor is idle, one can show that [interference j t = 1, scheduled_at j t = 0]. But since interference doesn't come from a job of task [tsk] [task_interference tsk = 1]. Which reduces to [1 ≤ 1]. *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_idle: sched t = None

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_idle: sched t = None

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_idle: sched t = None
BUS: t1 <= job_arrival j
LT: job_arrival j < t2

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_idle: sched t = None
BUS: t1 <= job_arrival j
LT: job_arrival j < t2

interference j t + (sched t == Some j) <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t + ~~ match sched t with | Some j => job_task j == tsk | None => false end && has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_idle: sched t = None
BUS: t1 <= job_arrival j
LT: job_arrival j < t2

interference j t + (sched t == Some j) <= \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i) (fun=> 0) i + ~~ match sched t with | Some j => job_task j == tsk | None => false end && has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_idle: sched t = None
BUS: t1 <= job_arrival j
LT: job_arrival j < t2

interference j t <= ~~ false && has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_idle: sched t = None
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
INT: interference j t = true

true <= ~~ false && has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_idle: sched t = None
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
INT: interference j t = true

has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_idle: sched t = None
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
INT: interference j t = true

j \in task_arrivals_before arr_seq tsk t2
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_idle: sched t = None
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
INT: interference j t = true

j \in arrival_sequence.arrivals_between arr_seq 0 t2
by apply arrived_between_implies_in_arrivals. Qed. End Case1. Section Case2. (** Assume a job [j'] from another task is scheduled at time [t]. *) Variable j' : Job. Hypothesis H_sched : sched t = Some j'. Hypothesis H_not_job_of_tsk : ~~ job_of_task tsk j'. (** If a job [j]' from another task is scheduled at time [t], then [interference j t = 1, scheduled_at j t = 0]. But since interference doesn't come from a job of task [tsk] [task_interference tsk = 1]. Which reduces to [1 ≤ 1]. *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2

interference j t + (sched t == Some j) <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t + ~~ match sched t with | Some j => job_task j == tsk | None => false end && has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

interference j t + (sched t == Some j) <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t + ~~ match sched t with | Some j => job_task j == tsk | None => false end && has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

interference j t + (Some j' == Some j) <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t + has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

(Some j' == Some j) = false
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
interference j t <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t + has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

(Some j' == Some j) = false
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_not_job_of_tsk: ~~ job_of_task tsk j
H_sched: sched t = Some j
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
CONTR: Some j = Some j
ARRs: arrives_in arr_seq j

False
by move: (H_not_job_of_tsk); rewrite H_job_of_tsk.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

interference j t <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t + has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

interference j t <= \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i) (fun i0 : Job => nat_of_bool (Some j' == Some i0)) i + has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

\sum_(i <- arrivals_between t1 (t1 + A + ε) | job_task i == tsk) (Some j' == Some i) = 0
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ZERO: \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_task i == tsk) (Some j' == Some i) = 0
interference j t <= \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i) (Some j' == Some i) + has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

\sum_(i <- arrivals_between t1 (t1 + A + ε) | job_task i == tsk) (Some j' == Some i) = 0
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
j2: Job
TSK: job_task j2 == tsk

(Some j' == Some j2) = 0
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j2: Job
H_not_job_of_tsk: ~~ job_of_task tsk j2
H_sched: sched t = Some j2
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j2
TSK: job_task j2 == tsk
EQ: Some j2 = Some j2

False
by move: (H_not_job_of_tsk); rewrite / job_of_task TSK.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ZERO: \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_task i == tsk) (Some j' == Some i) = 0

interference j t <= \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i) (Some j' == Some i) + has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

interference j t <= has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
INT: interference j t = true

true <= has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
INT: interference j t = true

has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
INT: interference j t = true

j \in task_arrivals_before arr_seq tsk t2
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: ~~ job_of_task tsk j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
INT: interference j t = true

j \in arrival_sequence.arrivals_between arr_seq 0 t2
by eapply arrived_between_implies_in_arrivals. Qed. End Case2. Section Case3. (** Assume a job [j'] (different from j) of task [tsk] is scheduled at time [t]. *) Variable j' : Job. Hypothesis H_sched : sched t = Some j'. Hypothesis H_not_job_of_tsk : job_of_task tsk j'. Hypothesis H_j_neq_j' : j != j'. (** If a job [j'] (different from [j]) of task [tsk] is scheduled at time [t], then [interference j t = 1, scheduled_at j t = 0]. Moreover, since interference comes from a job of the same task [task_interference tsk = 0]. However, in this case [service_of_jobs of tsk = 1]. Which reduces to [1 ≤ 1]. *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2

interference j t + (sched t == Some j) <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t + ~~ match sched t with | Some j => job_task j == tsk | None => false end && has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

interference j t + (sched t == Some j) <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t + ~~ match sched t with | Some j => job_task j == tsk | None => false end && has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

interference j t + (Some j' == Some j) <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

interference j t + false <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

true = interference j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
true + false <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

true = interference j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

t1 <= t < t2
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
NEQT: t1 <= t < t2
true = interference j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

t1 <= t < t2
by move: H_t_in_interval => /andP [NEQ1 NEQ2]; apply/andP; split; last apply ltn_trans with (t1 + x).
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
NEQT: t1 <= t < t2

true = interference j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
NEQT: t1 <= t < t2
Hn: ~ interference j t -> scheduled_at sched j t

true = interference j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
NEQT: t1 <= t < t2
Hn: ~ interference j t -> scheduled_at sched j t
CONTR: ~ interference j t

False
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
NEQT: t1 <= t < t2
Hn: ~ interference j t -> scheduled_at sched j t
CONTR: sched t == Some j

False
by move: CONTR; rewrite H_sched => /eqP EQ; inversion EQ; subst; move: H_j_neq_j' => /eqP.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

true + false <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

0 < (if job_of_task tsk j' then service_at sched j' t else 0)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

0 < (if job_of_task tsk j' then service_at sched j' t else 0)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
TSK: job_task j' = tsk

0 < (if job_of_task tsk j' then service_at sched j' t else 0)
by rewrite /job_of_task TSK eq_refl service_at_def H_sched eq_refl.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'

j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrives_in arr_seq j -> arrives_in arr_seq j' -> job_of_task tsk j -> job_of_task tsk j' -> job_cost_positive j -> busy_interval j t1 t2 -> t1 <= t -> pending sched j' t -> arrived_between j' t1 t.+1

j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: pending sched j' t -> arrived_between j' t1 t.+1

pending sched j' t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: pending sched j' t -> arrived_between j' t1 t.+1

pending sched j' t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: pending sched j' t -> arrived_between j' t1 t.+1
SCHEDt: sched t == Some j'

pending sched j' t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: pending sched j' t -> arrived_between j' t1 t.+1
SCHEDt: sched t == Some j'

scheduled_at sched j' t
by rewrite scheduled_at_def.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1

j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: (job_arrival j' <= job_arrival j) = true

j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: (job_arrival j' <= job_arrival j) = false
j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: (job_arrival j' <= job_arrival j) = true

j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARRNEQ: (job_arrival j' <= job_arrival j) = true
РР: t1 <= job_arrival j'

j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARRNEQ: (job_arrival j' <= job_arrival j) = true
РР: t1 <= job_arrival j'

arrived_between j' t1 (t1 + A + ε)
by apply/andP; split; last rewrite /A subnKC // addn1 ltnS.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: (job_arrival j' <= job_arrival j) = false

j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: (job_arrival j' <= job_arrival j) = false

j' \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: (job_arrival j' <= job_arrival j) = false

False
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: job_arrival j < job_arrival j'

False
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: job_arrival j < job_arrival j'
CONTR: arrives_in arr_seq j -> arrives_in arr_seq j' -> same_task j j' -> job_arrival j < job_arrival j' -> scheduled_at sched j' t -> completed_by sched j t

False
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: job_arrival j < job_arrival j'
CONTR: same_task j j' -> job_arrival j < job_arrival j' -> scheduled_at sched j' t -> completed_by sched j t

same_task j j'
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: job_arrival j < job_arrival j'
CONTR: scheduled_at sched j' t -> completed_by sched j t
scheduled_at sched j' t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: job_arrival j < job_arrival j'
CONTR: completed_by sched j t
False
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: job_arrival j < job_arrival j'
CONTR: same_task j j' -> job_arrival j < job_arrival j' -> scheduled_at sched j' t -> completed_by sched j t

same_task j j'
by rewrite /same_task eq_sym; move: (H_job_of_tsk) => /eqP ->.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: job_arrival j < job_arrival j'
CONTR: scheduled_at sched j' t -> completed_by sched j t

scheduled_at sched j' t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: job_arrival j < job_arrival j'
CONTR: completed_by sched j t
False
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: job_arrival j < job_arrival j'
CONTR: scheduled_at sched j' t -> completed_by sched j t

scheduled_at sched j' t
by move: H_sched => /eqP SCHEDt; rewrite scheduled_at_def.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: job_arrival j < job_arrival j'
CONTR: completed_by sched j t

False
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: job_arrival j < job_arrival j'
CONTR: completed_by sched j t

completed_by sched j (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
j': Job
H_sched: sched t = Some j'
H_not_job_of_tsk: job_of_task tsk j'
H_j_neq_j': j != j'
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
ARRs: arrives_in arr_seq j'
ARR: arrived_between j' t1 t.+1
ARRNEQ: job_arrival j < job_arrival j'
CONTR: completed_by sched j t

t <= t1 + x
by apply ltnW; move: H_t_in_interval => /andP [_ NEQ]. } } Qed. End Case3. Section Case4. (** Assume that job [j] is scheduled at time [t]. *) Hypothesis H_sched : sched t = Some j. (** If job [j] is scheduled at time [t], then [interference = 0, scheduled_at = 1], but note that [service_of_jobs of tsk = 1], therefore inequality reduces to [1 ≤ 1]. *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j

j \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j

j \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j

arrived_between j t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
GE: t1 <= job_arrival j

arrived_between j t1 (t1 + A + ε)
by apply/andP; split; last rewrite /A subnKC // addn1.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

interference j t + (sched t == Some j) <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t + ~~ match sched t with | Some j => job_task j == tsk | None => false end && has (interference^~ t) (task_arrivals_before arr_seq tsk t2)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

interference j t + 1 <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
WORK: t1 <= t < t2 -> ~ interference j t <-> scheduled_at sched j t

interference j t + 1 <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
WORK: t1 <= t < t2 -> ~ interference j t <-> scheduled_at sched j t

t1 <= t < t2
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
WORK: ~ interference j t <-> scheduled_at sched j t
interference j t + 1 <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
WORK: t1 <= t < t2 -> ~ interference j t <-> scheduled_at sched j t

t1 <= t < t2
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
WORK: t1 <= t < t2 -> ~ interference j t <-> scheduled_at sched j t
NEQ1: t1 <= t
NEQ2: t < t1 + x

t1 <= t < t2
by apply/andP; split; last apply ltn_trans with (t1 + x).
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
WORK: ~ interference j t <-> scheduled_at sched j t

interference j t + 1 <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
ZIJT: scheduled_at sched j t -> ~ interference j t

interference j t + 1 <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
ZIJT: ~ interference j t

interference j t + 1 <= \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
ZIJT: interference j t = false

0 < \sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_at sched j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
ZIJT: interference j t = false

exists i : Job, i \in arrivals_between t1 (t1 + A + ε) /\ 0 < (if job_of_task tsk i then service_at sched i t else 0)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
H_sched: sched t = Some j
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
ZIJT: interference j t = false

0 < (if job_of_task tsk j then service_at sched j t else 0)
by move: (H_job_of_tsk) => ->; rewrite service_at_def H_sched eq_refl. Qed. End Case4. (** We use the above case analysis to prove that any time instant t ∈ <<[t1, t1 + x)>> the sum of [interference j t] and [scheduled_at j t] is no larger than the sum of [the service received by jobs of task tsk at time t] and [task_iterference tsk t]. *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
BUS: t1 <= job_arrival j
LT: job_arrival j < t2

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
j1: Job
SCHEDt: sched t = Some j1

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
SCHEDt: sched t = None
interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
j1: Job
SCHEDt: sched t = Some j1

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
j1: Job
SCHEDt: sched t = Some j1
ARRs: arrives_in arr_seq j1

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
j1: Job
SCHEDt: sched t = Some j1
ARRs: arrives_in arr_seq j1
TSK: (job_task j1 == tsk) = true

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
j1: Job
SCHEDt: sched t = Some j1
ARRs: arrives_in arr_seq j1
TSK: (job_task j1 == tsk) = false
interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
j1: Job
SCHEDt: sched t = Some j1
ARRs: arrives_in arr_seq j1
TSK: (job_task j1 == tsk) = true

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
TSK: (job_task j == tsk) = true
ARRs: arrives_in arr_seq j
SCHEDt: sched t = Some j

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
j1: Job
SCHEDt: sched t = Some j1
ARRs: arrives_in arr_seq j1
TSK: (job_task j1 == tsk) = true
EQ: (j == j1) = false
interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
t: instant
H_t_in_interval: t1 <= t < t1 + x
BUS: t1 <= job_arrival j
LT: job_arrival j < t2
j1: Job
SCHEDt: sched t = Some j1
ARRs: arrives_in arr_seq j1
TSK: (job_task j1 == tsk) = true
EQ: (j == j1) = false

interference j t + scheduled_at sched j t <= service_of_jobs_at (job_of_task tsk) (arrivals_between t1 (t1 + A + ε)) t + task_interference_received_before tsk t2 t
eapply interference_plus_sched_le_serv_of_task_plus_task_interference_job; auto; repeat split; eauto; apply/eqP; move: EQ => /eqP EQ; auto. Qed. End CaseAnalysis. (** Next we prove cumulative version of the lemma above. *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

cumul_interference j t1 (t1 + x) <= task_service_of_jobs_in (arrivals_between t1 (t1 + A + ε)) t1 (t1 + x) - service_during sched j t1 (t1 + x) + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

cumul_interference j t1 (t1 + x) <= task_service_of_jobs_in (arrivals_between t1 (t1 + A + ε)) t1 (t1 + x) - service_during sched j t1 (t1 + x) + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

j \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
cumul_interference j t1 (t1 + x) <= task_service_of_jobs_in (arrivals_between t1 (t1 + A + ε)) t1 (t1 + x) - service_during sched j t1 (t1 + x) + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

j \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

arrived_between j t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
GE: t1 <= job_arrival j

arrived_between j t1 (t1 + A + ε)
by apply/andP; split; last rewrite /A subnKC // addn1.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

cumul_interference j t1 (t1 + x) <= task_service_of_jobs_in (arrivals_between t1 (t1 + A + ε)) t1 (t1 + x) - service_during sched j t1 (t1 + x) + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

definitions.cumul_interference interference j t1 (t1 + x) <= \sum_(t1 <= j < t1 + x) \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i) service_at sched i j - service_during sched j t1 (t1 + x) + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

definitions.cumul_interference interference j t1 (t1 + x) + \sum_(t1 <= t < t1 + x) service_at sched j t <= \sum_(t1 <= j < t1 + x) \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i) service_at sched i j - service_during sched j t1 (t1 + x) + cumul_task_interference t2 t1 (t1 + x) + \sum_(t1 <= t < t1 + x) service_at sched j t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

\sum_(t1 <= t < t1 + x) service_at sched j t <= \sum_(t1 <= j < t1 + x) \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i) service_at sched i j
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
definitions.cumul_interference interference j t1 (t1 + x) + \sum_(t1 <= t < t1 + x) service_at sched j t <= \sum_(t1 <= j < t1 + x) \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i) service_at sched i j + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

\sum_(t1 <= t < t1 + x) service_at sched j t <= \sum_(t1 <= j < t1 + x) \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i) service_at sched i j
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

\sum_(t1 <= t < t1 + x) service_at sched j t <= (if job_of_task tsk j then \sum_(t1 <= i < t1 + x) service_at sched j i else 0) + \sum_(y <- rem (T:=Job) j (arrivals_between t1 (t1 + A + ε)) | job_of_task tsk y) \sum_(t1 <= i < t1 + x) service_at sched y i
by rewrite H_job_of_tsk leq_addr.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

definitions.cumul_interference interference j t1 (t1 + x) + \sum_(t1 <= t < t1 + x) service_at sched j t <= \sum_(t1 <= j < t1 + x) \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i) service_at sched i j + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

\sum_(t1 <= i < t1 + x) (interference j i + service_at sched j i) <= \sum_(t1 <= i < t1 + x) (\sum_(i0 <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i0) service_at sched i0 i + task_interference_received_before tsk t2 i)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
t: nat
NEQ: t1 <= t < t1 + x

interference j t + service_at sched j t <= \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i) service_at sched i t + task_interference_received_before tsk t2 t
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
t: nat
NEQ: t1 <= t < t1 + x

interference j t + scheduled_at sched j t <= \sum_(i <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk i) service_at sched i t + task_interference_received_before tsk t2 t
by apply interference_plus_sched_le_serv_of_task_plus_task_interference. Qed. (** On the other hand, the service terms in the inequality above can be upper-bound by the workload terms. *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

task_service_of_jobs_in (arrivals_between t1 (t1 + A + ε)) t1 (t1 + x) - service_during sched j t1 (t1 + x) + cumul_task_interference t2 t1 (t1 + x) <= task_workload_between t1 (t1 + A + ε) - job_cost j + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

task_service_of_jobs_in (arrivals_between t1 (t1 + A + ε)) t1 (t1 + x) - service_during sched j t1 (t1 + x) + cumul_task_interference t2 t1 (t1 + x) <= task_workload_between t1 (t1 + A + ε) - job_cost j + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

j \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)
task_service_of_jobs_in (arrivals_between t1 (t1 + A + ε)) t1 (t1 + x) - service_during sched j t1 (t1 + x) + cumul_task_interference t2 t1 (t1 + x) <= task_workload_between t1 (t1 + A + ε) - job_cost j + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

j \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

arrived_between j t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
GE: t1 <= job_arrival j

arrived_between j t1 (t1 + A + ε)
by apply/andP; split; last rewrite /A subnKC // addn1.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

task_service_of_jobs_in (arrivals_between t1 (t1 + A + ε)) t1 (t1 + x) - service_during sched j t1 (t1 + x) + cumul_task_interference t2 t1 (t1 + x) <= task_workload_between t1 (t1 + A + ε) - job_cost j + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

task_service_of_jobs_in (arrivals_between t1 (t1 + A + ε)) t1 (t1 + x) - service_during sched j t1 (t1 + x) <= task_workload_between t1 (t1 + A + ε) - job_cost j
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

\sum_(j <- arrivals_between t1 (t1 + A + ε) | job_of_task tsk j) service_during sched j t1 (t1 + x) - service_during sched j t1 (t1 + x) <= task_workload_between t1 (t1 + A + ε) - job_cost j
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

(if job_of_task tsk j then service_during sched j t1 (t1 + x) else 0) + \sum_(y <- rem (T:=Job) j (arrivals_between t1 (t1 + A + ε)) | job_of_task tsk y) service_during sched y t1 (t1 + x) - service_during sched j t1 (t1 + x) <= (if job_of_task tsk j then job_cost j else 0) + \sum_(y <- rem (T:=Job) j (arrival_sequence.arrivals_between arr_seq t1 (t1 + A + ε)) | job_of_task tsk y) job_cost y - job_cost j
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

\sum_(y <- rem (T:=Job) j (arrivals_between t1 (t1 + A + ε)) | job_of_task tsk y) service_during sched y t1 (t1 + x) + (service_during sched j t1 (t1 + x) - service_during sched j t1 (t1 + x)) <= job_cost j + \sum_(y <- rem (T:=Job) j (arrival_sequence.arrivals_between arr_seq t1 (t1 + A + ε)) | job_of_task tsk y) job_cost y - job_cost j
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

\sum_(y <- rem (T:=Job) j (arrivals_between t1 (t1 + A + ε)) | job_of_task tsk y) service_during sched y t1 (t1 + x) + (service_during sched j t1 (t1 + x) - service_during sched j t1 (t1 + x)) <= \sum_(y <- rem (T:=Job) j (arrival_sequence.arrivals_between arr_seq t1 (t1 + A + ε)) | job_of_task tsk y) job_cost y + (job_cost j - job_cost j)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
j_is_in_arrivals_between: j \in arrivals_between t1 (t1 + A + ε)

\sum_(y <- rem (T:=Job) j (arrivals_between t1 (t1 + A + ε)) | job_of_task tsk y) service_during sched y t1 (t1 + x) <= \sum_(y <- rem (T:=Job) j (arrival_sequence.arrivals_between arr_seq t1 (t1 + A + ε)) | job_of_task tsk y) job_cost y
by apply service_of_jobs_le_workload; auto using ideal_proc_model_provides_unit_service. Qed. (** Finally, we show that the cumulative interference of job j in the interval <<[t1, t1 + x)>> is bounded by the sum of the task workload in the interval [t1, t1 + A + ε) and the cumulative interference of [j]'s task in the interval [t1, t1 + x). *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

cumul_interference j t1 (t1 + x) <= task_workload_between t1 (t1 + A + ε) - job_cost j + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

cumul_interference j t1 (t1 + x) <= task_workload_between t1 (t1 + A + ε) - job_cost j + cumul_task_interference t2 t1 (t1 + x)
apply leq_trans with (task_service_of_jobs_in (arrivals_between t1 (t1 + A + ε)) t1 (t1 + x) - service_during sched j t1 (t1 + x) + cumul_task_interference t2 t1 (t1 + x)); [ apply cumul_interference_plus_sched_le_serv_of_task_plus_cumul_task_interference | apply serv_of_task_le_workload_of_task_plus]. Qed. End TaskInterferenceBoundsInterference. (** In order to obtain a more convenient bound of the cumulative interference, we need to abandon the actual workload in favor of a bound which depends on task parameters only. So, we show that actual workload of the task excluding workload of any job [j] is no greater than bound of workload excluding the cost of job [j]'s task. *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

task_workload_between t1 (t1 + A + ε) - job_cost j <= task_rbf (A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

task_workload_between t1 (t1 + A + ε) - job_cost j <= task_rbf (A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2

task_workload_between t1 (t1 + A + ε) - job_cost j <= task_rbf (A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2

task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A + ε) - task_cost tsk <= task_rbf (A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
task_workload_between t1 (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2

task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A + ε) - task_cost tsk <= task_rbf (A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2

number_of_task_arrivals arr_seq tsk t1 (t1 + A + ε) <= max_arrivals tsk (A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2

number_of_task_arrivals arr_seq tsk t1 (t1 + (A + ε)) <= max_arrivals tsk (t1 + (A + 1) - t1)
by apply H_is_arrival_curve; auto using leq_addr.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2

task_workload_between t1 (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2

j \in arrivals_between (t1 + A) (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
task_workload_between t1 (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2

j \in arrivals_between (t1 + A) (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2

arrived_between j (t1 + A) (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2

job_arrival j < job_arrival j + ε
by rewrite addn1 ltnSn //.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)

task_workload_between t1 (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)

j \in arrivals_at arr_seq (t1 + A)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
task_workload_between t1 (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)

j \in arrivals_at arr_seq (t1 + A)
by move: ARR => [t ARR]; rewrite subnKC //; feed (H_arrival_times_are_consistent j t); try (subst t).
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)

task_workload_between t1 (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)

0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
task_workload_between t1 (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)

0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)

0 < size [seq j <- \cat_(t1 + A<=t<t1 + A + ε) arrivals_at arr_seq t | job_of_task tsk j]
by rewrite size_filter -has_count; apply/hasP; exists j; last rewrite TSK.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

task_workload_between t1 (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

task_workload_between t1 (t1 + A + ε) - job_cost j <= task_cost tsk * (number_of_task_arrivals arr_seq tsk t1 (t1 + A) + number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

task_workload_between t1 (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A) + task_cost tsk * number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

task_workload_between t1 (t1 + A + ε) = task_workload_between t1 (t1 + A) + task_workload_between (t1 + A) (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
Step1: task_workload_between t1 (t1 + A + ε) = task_workload_between t1 (t1 + A) + task_workload_between (t1 + A) (t1 + A + ε)
task_workload_between t1 (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A) + task_cost tsk * number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

task_workload_between t1 (t1 + A + ε) = task_workload_between t1 (t1 + A) + task_workload_between (t1 + A) (t1 + A + ε)
by apply workload_of_jobs_cat; apply/andP; split; rewrite leq_addr.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
Step1: task_workload_between t1 (t1 + A + ε) = task_workload_between t1 (t1 + A) + task_workload_between (t1 + A) (t1 + A + ε)

task_workload_between t1 (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A) + task_cost tsk * number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

task_workload_between t1 (t1 + A) + task_workload_between (t1 + A) (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A) + task_cost tsk * number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

job_cost j <= task_workload_between (t1 + A) (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
task_cost tsk <= task_cost tsk * number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
task_workload_between t1 (t1 + A) + (task_workload_between (t1 + A) (t1 + A + ε) - job_cost j) <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A) + (task_cost tsk * number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε) - task_cost tsk)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

job_cost j <= task_workload_between (t1 + A) (t1 + A + ε)
by rewrite /task_workload_between /workload.task_workload_between /task_workload /workload_of_jobs (big_rem j) //= TSK leq_addr.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

task_cost tsk <= task_cost tsk * number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
task_workload_between t1 (t1 + A) + (task_workload_between (t1 + A) (t1 + A + ε) - job_cost j) <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A) + (task_cost tsk * number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε) - task_cost tsk)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

task_cost tsk <= task_cost tsk * number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

task_cost tsk <= task_cost tsk * number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
by rewrite -{1}[task_cost tsk]muln1 leq_mul2l; apply/orP; right.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

task_workload_between t1 (t1 + A) + (task_workload_between (t1 + A) (t1 + A + ε) - job_cost j) <= task_cost tsk * number_of_task_arrivals arr_seq tsk t1 (t1 + A) + (task_cost tsk * number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε) - task_cost tsk)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

task_workload_between (t1 + A) (t1 + A + ε) - job_cost j <= task_cost tsk * number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

\sum_(j <- \cat_(t1 + A<=t<t1 + A + ε) arrivals_at arr_seq t | job_of_task tsk j) job_cost j - job_cost j <= task_cost tsk * size [seq j <- \cat_(t1 + A<=t<t1 + A + ε) arrivals_at arr_seq t | job_of_task tsk j] - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

\sum_(j <- arrivals_at arr_seq (t1 + A) | job_of_task tsk j) job_cost j - job_cost j <= task_cost tsk * size [seq j <- arrivals_at arr_seq (t1 + A) | job_of_task tsk j] - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

\sum_(y <- rem (T:=Job) j (arrivals_at arr_seq (t1 + A)) | job_of_task tsk y) job_cost y <= task_cost tsk * size [seq j <- arrivals_at arr_seq (t1 + A) | job_of_task tsk j] - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

\sum_(y <- rem (T:=Job) j (arrivals_at arr_seq (t1 + A)) | job_of_task tsk y) job_cost y <= task_cost tsk * (size [seq y <- rem (T:=Job) j (arrivals_at arr_seq (t1 + A)) | job_of_task tsk y] + 1) - task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

\sum_(y <- rem (T:=Job) j (arrivals_at arr_seq (t1 + A)) | job_of_task tsk y) job_cost y <= task_cost tsk * size [seq y <- rem (T:=Job) j (arrivals_at arr_seq (t1 + A)) | job_of_task tsk y]
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)

forall a : Job, a \in rem (T:=Job) j (arrivals_at arr_seq (t1 + A)) -> job_of_task tsk a -> job_cost a <= task_cost tsk
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
JAGET1: t1 <= job_arrival j
JALTT2: job_arrival j < t2
Fact6: j \in arrivals_between (t1 + A) (t1 + A + ε)
Fact4: j \in arrivals_at arr_seq (t1 + A)
Fact1: 0 < number_of_task_arrivals arr_seq tsk (t1 + A) (t1 + A + ε)
j': Job
ARR': j' \in rem (T:=Job) j (arrivals_at arr_seq (t1 + A))
TSK2: job_task j' = tsk

job_cost j' <= task_cost tsk
by rewrite -TSK2; apply H_valid_job_cost; exists (t1 + A); apply rem_in in ARR'. Qed. (** Finally, we use the lemmas above to obtain the bound on [interference] in terms of [task_rbf] and [task_interference]. *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

cumul_interference j t1 (t1 + x) <= task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
H_inside_busy_interval: t1 + x < t2
H_job_j_is_not_completed: ~~ completed_by sched j (t1 + x)

cumul_interference j t1 (t1 + x) <= task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 (t1 + x)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y

cumul_interference j t1 y <= task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 y
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y

j \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y
IN: j \in arrivals_between t1 (t1 + A + ε)
cumul_interference j t1 y <= task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 y
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y

j \in arrivals_between t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y

arrived_between j t1 (t1 + A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y
GE: t1 <= job_arrival j

arrived_between j t1 (t1 + A + ε)
by apply/andP; split; last rewrite /A subnKC // addn1.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y
IN: j \in arrivals_between t1 (t1 + A + ε)

cumul_interference j t1 y <= task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 y
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y
IN: j \in arrivals_between t1 (t1 + A + ε)

cumul_interference j t1 y <= task_workload_between t1 (t1 + A + ε) - job_cost j + cumul_task_interference t2 t1 y
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y
IN: j \in arrivals_between t1 (t1 + A + ε)
task_workload_between t1 (t1 + A + ε) - job_cost j + cumul_task_interference t2 t1 y <= task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 y
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y
IN: j \in arrivals_between t1 (t1 + A + ε)

cumul_interference j t1 y <= task_workload_between t1 (t1 + A + ε) - job_cost j + cumul_task_interference t2 t1 y
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y
IN: j \in arrivals_between t1 (t1 + A + ε)
task_workload_between t1 (t1 + A + ε) - job_cost j + cumul_task_interference t2 t1 y <= task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 y
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y
IN: j \in arrivals_between t1 (t1 + A + ε)

task_workload_between t1 (t1 + A + ε) - job_cost j + cumul_task_interference t2 t1 y <= task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 y
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y
IN: j \in arrivals_between t1 (t1 + A + ε)

task_workload_between t1 (t1 + A + ε) - job_cost j + cumul_task_interference t2 t1 y <= task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 y
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
H_job_cost_positive: job_cost_positive j
t1, t2: instant
H_busy_interval: busy_interval j t1 t2
A:= job_arrival j - t1: duration
x: duration
y:= t1 + x: nat
H_inside_busy_interval: y < t2
H_job_j_is_not_completed: ~~ completed_by sched j y
IN: j \in arrivals_between t1 (t1 + A + ε)

task_workload_between t1 (t1 + A + ε) - job_cost j <= task_rbf (A + ε) - task_cost tsk
eapply task_rbf_excl_tsk_bounds_task_workload_excl_j; eauto 2. Qed. End BoundOfCumulativeJobInterference. (** In this section, we prove that [H_R_is_maximum_seq] implies [H_R_is_maximum]. *) Section MaxInSeqHypothesisImpMaxInNonseqHypothesis. (** Consider any job [j] of [tsk]. *) Variable j : Job. Hypothesis H_j_arrives : arrives_in arr_seq j. Hypothesis H_job_of_tsk : job_of_task tsk j. (** For simplicity, let's define a local name for the search space. *) Let is_in_search_space A := is_in_search_space tsk L total_interference_bound A. (** We prove that [H_R_is_maximum] holds. *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop

forall A : duration, is_in_search_space A -> exists F : duration, task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop

forall A : duration, is_in_search_space A -> exists F : duration, task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk

forall A : duration, is_in_search_space A -> exists F : duration, task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A

exists F : duration, task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A

exists F : duration, task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A
F: duration
FIX: task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F
LE: F + (task_cost tsk - task_rtct tsk) <= R

exists F : duration, task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A
F: duration
FIX: task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F
LE: F + (task_cost tsk - task_rtct tsk) <= R

task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= A + F
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A
F: duration
FIX: task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F
LE: F + (task_cost tsk - task_rtct tsk) <= R

task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A
F: duration
FIX: task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F
LE: F + (task_cost tsk - task_rtct tsk) <= R

task_rtct tsk + (task_rbf (A + ε) - task_cost tsk) <= task_rbf (A + ε) - (task_cost tsk - task_rtct tsk)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A
F: duration
FIX: task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F
LE: F + (task_cost tsk - task_rtct tsk) <= R

task_cost tsk <= task_rbf (A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A
F: duration
FIX: task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F
LE: F + (task_cost tsk - task_rtct tsk) <= R
task_rtct tsk + task_rbf (A + ε) - task_cost tsk <= task_rbf (A + ε) - (task_cost tsk - task_rtct tsk)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A
F: duration
FIX: task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F
LE: F + (task_cost tsk - task_rtct tsk) <= R

task_cost tsk <= task_rbf (A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A
F: duration
FIX: task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F
LE: F + (task_cost tsk - task_rtct tsk) <= R

task_cost tsk <= task_rbf 1
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A
F: duration
FIX: task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F
LE: F + (task_cost tsk - task_rtct tsk) <= R
task_rbf 1 <= task_rbf (A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A
F: duration
FIX: task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F
LE: F + (task_cost tsk - task_rtct tsk) <= R

task_rbf 1 <= task_rbf (A + ε)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A
F: duration
FIX: task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F
LE: F + (task_cost tsk - task_rtct tsk) <= R

0 < A + ε
by rewrite addn1.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= search_space.is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
H_j_arrives: arrives_in arr_seq j
H_job_of_tsk: job_of_task tsk j
is_in_search_space:= [eta search_space.is_in_search_space tsk L total_interference_bound]: nat -> Prop
PRT1: task_rtc_bounded_by_cost tsk
PRT2: job_respects_task_rtc arr_seq tsk
A: duration
INSP: is_in_search_space A
F: duration
FIX: task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F
LE: F + (task_cost tsk - task_rtct tsk) <= R

task_rtct tsk + task_rbf (A + ε) - task_cost tsk <= task_rbf (A + ε) - (task_cost tsk - task_rtct tsk)
by rewrite subnBA; auto; rewrite addnC. Qed. End MaxInSeqHypothesisImpMaxInNonseqHypothesis. (** Finally, we apply the [uniprocessor_response_time_bound] theorem, and using the lemmas above, we prove that all the requirements are satisfied. So, R is a response time bound. *)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R

response_time_bounded_by tsk R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R

response_time_bounded_by tsk R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j

job_response_time_bound sched j R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j

ideal_progress_proc_model (processor_state Job)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
unit_service_proc_model (processor_state Job)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
job_interference_is_bounded_by arr_seq sched tsk interference interfering_workload (fun (tsk : Task) (A : nat) (R : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A R)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
forall A : nat, is_in_search_space tsk L (fun (tsk : Task) (A0 : nat) (R : duration) => task_rbf (A0 + ε) - task_cost tsk + task_interference_bound_function tsk A0 R) A -> exists F : nat, task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j

unit_service_proc_model (processor_state Job)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
job_interference_is_bounded_by arr_seq sched tsk interference interfering_workload (fun (tsk : Task) (A : nat) (R : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A R)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
forall A : nat, is_in_search_space tsk L (fun (tsk : Task) (A0 : nat) (R : duration) => task_rbf (A0 + ε) - task_cost tsk + task_interference_bound_function tsk A0 R) A -> exists F : nat, task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j

job_interference_is_bounded_by arr_seq sched tsk interference interfering_workload (fun (tsk : Task) (A : nat) (R : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A R)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j
forall A : nat, is_in_search_space tsk L (fun (tsk : Task) (A0 : nat) (R : duration) => task_rbf (A0 + ε) - task_cost tsk + task_interference_bound_function tsk A0 R) A -> exists F : nat, task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j

job_interference_is_bounded_by arr_seq sched tsk interference interfering_workload (fun (tsk : Task) (A : nat) (R : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A R)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop

job_interference_is_bounded_by arr_seq sched tsk interference interfering_workload (fun (tsk : Task) (A : nat) (R : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A R)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)

let offset := job_arrival j - t1 in definitions.cumul_interference interference j t1 (t1 + R) <= task_rbf (offset + ε) - task_cost tsk + task_interference_bound_function tsk offset R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)
ZERO: job_cost j = 0

let offset := job_arrival j - t1 in definitions.cumul_interference interference j t1 (t1 + R) <= task_rbf (offset + ε) - task_cost tsk + task_interference_bound_function tsk offset R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)
POS: 0 < job_cost j
let offset := job_arrival j - t1 in definitions.cumul_interference interference j t1 (t1 + R) <= task_rbf (offset + ε) - task_cost tsk + task_interference_bound_function tsk offset R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)
ZERO: job_cost j = 0

let offset := job_arrival j - t1 in definitions.cumul_interference interference j t1 (t1 + R) <= task_rbf (offset + ε) - task_cost tsk + task_interference_bound_function tsk offset R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)
ZERO: job_cost j = 0

False
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
ZERO: job_cost j = 0

completed_by sched j (t1 + R)
by rewrite /service.completed_by /completed_by ZERO.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)
POS: 0 < job_cost j

let offset := job_arrival j - t1 in definitions.cumul_interference interference j t1 (t1 + R) <= task_rbf (offset + ε) - task_cost tsk + task_interference_bound_function tsk offset R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)
POS: 0 < job_cost j
A:= job_arrival j - t1: nat

let offset := A in definitions.cumul_interference interference j t1 (t1 + R) <= task_rbf (offset + ε) - task_cost tsk + task_interference_bound_function tsk offset R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)
POS: 0 < job_cost j
A:= job_arrival j - t1: nat

definitions.cumul_interference interference j t1 (t1 + R) <= task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 (t1 + R)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)
POS: 0 < job_cost j
A:= job_arrival j - t1: nat
task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 (t1 + R) <= task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)
POS: 0 < job_cost j
A:= job_arrival j - t1: nat

definitions.cumul_interference interference j t1 (t1 + R) <= task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 (t1 + R)
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)
POS: 0 < job_cost j
A:= job_arrival j - t1: nat
task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 (t1 + R) <= task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)
POS: 0 < job_cost j
A:= job_arrival j - t1: nat

task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 (t1 + R) <= task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
t1, t2: instant
R: nat
j: Job
BUSY: arrives_in arr_seq j
NEQ: job_of_task tsk j
ARR: definitions.busy_interval sched interference interfering_workload j t1 t2
TSK: t1 + R < t2
COMPL: ~~ completed_by sched j (t1 + R)
POS: 0 < job_cost j
A:= job_arrival j - t1: nat

task_rbf (A + ε) - task_cost tsk + cumul_task_interference t2 t1 (t1 + R) <= task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A R
by rewrite leq_add2l; apply H_task_interference_is_bounded.
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j

forall A : nat, is_in_search_space tsk L (fun (tsk : Task) (A0 : nat) (R : duration) => task_rbf (A0 + ε) - task_cost tsk + task_interference_bound_function tsk A0 R) A -> exists F : nat, task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
Task: TaskType
H: TaskCost Task
H0: TaskRunToCompletionThreshold Task
Job: JobType
H1: JobTask Job Task
H2: JobArrival Job
H3: JobCost Job
H4: JobPreemptable Job
arr_seq: arrival_sequence Job
H_arrival_times_are_consistent: consistent_arrival_times arr_seq
H_arr_seq_is_a_set: arrival_sequence_uniq arr_seq
sched: schedule (processor_state Job)
H_jobs_come_from_arrival_sequence: jobs_come_from_arrival_sequence sched arr_seq
H_jobs_must_arrive_to_execute: jobs_must_arrive_to_execute sched
H_completed_jobs_dont_execute: completed_jobs_dont_execute sched
H_valid_job_cost: arrivals_have_valid_job_costs arr_seq
ts: seq Task
tsk: Task
H_tsk_in_ts: tsk \in ts
H_valid_preemption_model: valid_preemption_model arr_seq sched
H_valid_run_to_completion_threshold: valid_task_run_to_completion_threshold arr_seq tsk
H5: MaxArrivals Task
H_valid_arrival_curve: valid_taskset_arrival_curve ts max_arrivals
H_is_arrival_curve: taskset_respects_max_arrivals arr_seq ts
interference: Job -> instant -> bool
interfering_workload: Job -> instant -> duration
task_rbf:= task_request_bound_function tsk: duration -> nat
busy_interval:= definitions.busy_interval sched interference interfering_workload: Job -> instant -> instant -> Prop
arrivals_between:= arrival_sequence.arrivals_between arr_seq: instant -> instant -> seq Job
service_of_jobs_at:= service_of_jobs.service_of_jobs_at sched: pred Job -> seq Job -> instant -> nat
task_workload_between:= workload.task_workload_between arr_seq tsk: instant -> instant -> nat
task_service_of_jobs_in:= service_of_jobs.task_service_of_jobs_in sched tsk: seq Job -> instant -> instant -> nat
response_time_bounded_by:= task_response_time_bound arr_seq sched: Task -> duration -> Prop
cumul_interference:= definitions.cumul_interference interference: Job -> nat -> nat -> nat
cumul_workload:= cumul_interfering_workload interfering_workload: Job -> nat -> nat -> nat
cumul_task_interference:= Sequential_Abstract_RTA.cumul_task_interference tsk: instant -> nat -> nat -> nat
H_work_conserving: work_conserving arr_seq sched tsk interference interfering_workload
H_sequential_tasks: sequential_tasks arr_seq sched
H_interference_and_workload_consistent_with_sequential_tasks: interference_and_workload_consistent_with_sequential_tasks
L: duration
H_busy_interval_exists: busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L
task_interference_bound_function: Task -> duration -> duration -> duration
H_task_interference_is_bounded: task_interference_is_bounded_by task_interference_bound_function
total_interference_bound:= fun (tsk : Task) (A Δ : duration) => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A Δ: Task -> duration -> duration -> nat
is_in_search_space_seq:= is_in_search_space tsk L total_interference_bound: nat -> Prop
R: nat
H_R_is_maximum_seq: forall A : duration, is_in_search_space_seq A -> exists F : duration, task_rbf (A + ε) - (task_cost tsk - task_rtct tsk) + task_interference_bound_function tsk A (A + F) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
j: Job
ARR: arrives_in arr_seq j
TSK: job_of_task tsk j

forall A : nat, is_in_search_space tsk L (fun (tsk : Task) (A0 : nat) (R : duration) => task_rbf (A0 + ε) - task_cost tsk + task_interference_bound_function tsk A0 R) A -> exists F : nat, task_rtct tsk + (task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A (A + F)) <= A + F /\ F + (task_cost tsk - task_rtct tsk) <= R
by eapply max_in_seq_hypothesis_implies_max_in_nonseq_hypothesis; eauto. } Qed. End ResponseTimeBound. End Sequential_Abstract_RTA.