diff --git a/analysis/abstract/busy_interval.v b/analysis/abstract/busy_interval.v
index 8743a4a027902e0cbc6d2843cc4b43d745bdbb7e..17fd72fae8a7adafd7d74b5f62ca0a2c151b97b7 100644
--- a/analysis/abstract/busy_interval.v
+++ b/analysis/abstract/busy_interval.v
@@ -1,5 +1,6 @@
 Require Export prosa.analysis.abstract.iw_auxiliary.
 Require Export prosa.analysis.facts.model.workload.
+Require Export prosa.analysis.abstract.definitions.
 
 (** * Lemmas About Abstract Busy Intervals *)
 
diff --git a/analysis/abstract/ideal/iw_instantiation.v b/analysis/abstract/ideal/iw_instantiation.v
index 73f0c97ec7c05e87da86f0e3805aaf30c25c0cd2..b8c121db3162156dce8695b419a9cf878db55b02 100644
--- a/analysis/abstract/ideal/iw_instantiation.v
+++ b/analysis/abstract/ideal/iw_instantiation.v
@@ -344,42 +344,6 @@ Section JLFPInstantiation.
 
     End InstantiatedWorkloadEquivalence.
 
-    (** In this section, we prove that the (abstract) cumulative
-        interference of jobs with higher or equal priority is equal to
-        total service of jobs with higher or equal priority. *)
-    Section InstantiatedServiceEquivalences.
-
-      (** 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.
-
-      (** We consider an arbitrary time interval <<[t1, t)>> that
-          starts with a quiet time. *)
-      Variable t1 t : instant.
-      Hypothesis H_quiet_time : classical.quiet_time arr_seq sched j t1.
-
-      (** As follows from lemma [cumulative_pred_served_eq_service],
-          the (abstract) instantiated function of interference is
-          equal to the total service of any subset of jobs with higher
-          or equal priority. *)
-
-      (** The above is in particular true for the jobs other
-          than [j] with higher or equal priority... *)
-      Lemma  cumulative_i_ohep_eq_service_of_ohep :
-        cumulative_another_hep_job_interference arr_seq sched j t1 t
-        = service_of_other_hep_jobs arr_seq sched j t1 t.
-      Proof. by apply: cumulative_pred_served_eq_service => // => ? /andP[]. Qed.
-
-      (** ...and for jobs from other tasks than [j] with higher
-          or equal priority. *)
-      Lemma cumulative_i_thep_eq_service_of_othep :
-        cumulative_another_task_hep_job_interference arr_seq sched j t1 t
-        = service_of_other_task_hep_jobs arr_seq sched j t1 t.
-      Proof. by apply: cumulative_pred_served_eq_service => // => ? /andP[]. Qed.
-
-    End InstantiatedServiceEquivalences.
-
     (** In this section we prove that the abstract definition of busy
         interval is equivalent to the conventional, concrete
         definition of busy interval for JLFP scheduling. *)
@@ -390,15 +354,15 @@ Section JLFPInstantiation.
           notion of quiet time in the _abstract_ sense as
           [quiet_time_ab]. *)
       Let quiet_time_cl := classical.quiet_time arr_seq sched.
-      Let quiet_time_ab := definitions.quiet_time sched.
+      Let quiet_time_ab := abstract.definitions.quiet_time sched.
 
       (** Same for the two notions of a busy interval prefix ... *)
       Let busy_interval_prefix_cl := classical.busy_interval_prefix arr_seq sched.
-      Let busy_interval_prefix_ab := definitions.busy_interval_prefix sched.
+      Let busy_interval_prefix_ab := abstract.definitions.busy_interval_prefix sched.
 
       (** ... and the two notions of a busy interval. *)
       Let busy_interval_cl := classical.busy_interval arr_seq sched.
-      Let busy_interval_ab := definitions.busy_interval sched.
+      Let busy_interval_ab := abstract.definitions.busy_interval sched.
 
       (** Consider any job j of [tsk]. *)
       Variable j : Job.
@@ -445,8 +409,7 @@ Section JLFPInstantiation.
         erewrite service_of_jobs_case_on_pred with (P2 := fun j' => j' != j).
         erewrite workload_of_jobs_case_on_pred with (P' := fun j' => j' != j) => //.
         replace ((fun j0 : Job => hep_job j0 j && (j0 != j))) with (another_hep_job^~j); last by rewrite /another_hep_job.
-        rewrite -/(service_of_other_hep_jobs arr_seq _ j 0 t) -cumulative_i_ohep_eq_service_of_ohep; eauto;
-          last by move => ? _ _ ; unfold arrived_before; lia.
+        rewrite -/(service_of_other_hep_jobs arr_seq _ j 0 t) -cumulative_i_ohep_eq_service_of_ohep => //.
         rewrite -/(workload_of_other_hep_jobs _ j 0 t) -cumulative_iw_hep_eq_workload_of_ohep; eauto.
         move: T1; rewrite negb_and => /orP [NA | /negPn COMP].
         { have PRED__eq: {in arrivals_between arr_seq 0 t, (fun j__copy : Job => hep_job j__copy j && ~~ (j__copy != j)) =1 pred0}.
diff --git a/analysis/abstract/iw_auxiliary.v b/analysis/abstract/iw_auxiliary.v
index fb17f86922faf22325535fa79ed7a02d7566577e..2aa1dbc6b74af9b09b3dec1225bb9c7f8d70ee16 100644
--- a/analysis/abstract/iw_auxiliary.v
+++ b/analysis/abstract/iw_auxiliary.v
@@ -2,6 +2,9 @@ Require Export prosa.analysis.definitions.interference.
 Require Export prosa.analysis.definitions.task_schedule.
 Require Export prosa.analysis.facts.priority.classes.
 Require Export prosa.analysis.abstract.restricted_supply.busy_prefix.
+Require Export prosa.model.aggregate.service_of_jobs.
+Require Export prosa.analysis.facts.model.service_of_jobs.
+
 
 (** * Auxiliary Lemmas About Interference and Interfering Workload. *)
 
@@ -416,6 +419,53 @@ Section InterferenceAndInterferingWorkloadAuxiliary.
 
     End SupplyAndScheduledJob.
 
+    (** In this section, we prove that the (abstract) cumulative
+        interference of jobs with higher or equal priority is equal to
+        total service of jobs with higher or equal priority. *)
+    Section InstantiatedServiceEquivalences.
+
+      (** First, let us assume that the introduced processor model is
+          unit-service. *)
+      Hypothesis H_unit_service : unit_service_proc_model PState.
+
+      (** 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.
+
+      (** We consider an arbitrary time interval <<[t1, t)>> that
+          starts with a (classic) quiet time. *)
+      Variable t1 t : instant.
+      Hypothesis H_quiet_time : classical.quiet_time arr_seq sched j t1.
+
+      (** As follows from lemma [cumulative_pred_served_eq_service],
+          the (abstract) instantiated function of interference is
+          equal to the total service of any subset of jobs with higher
+          or equal priority. *)
+
+      (** The above is in particular true for the jobs other
+          than [j] with higher or equal priority... *)
+      Lemma  cumulative_i_ohep_eq_service_of_ohep :
+        cumulative_another_hep_job_interference arr_seq sched j t1 t
+        = service_of_other_hep_jobs arr_seq sched j t1 t.
+      Proof.
+        apply: cumulative_pred_served_eq_service => //.
+        - by move => ? /andP[].
+      Qed.
+
+      (** ...and for jobs from other tasks than [j] with higher
+          or equal priority. *)
+      Lemma cumulative_i_thep_eq_service_of_othep :
+        cumulative_another_task_hep_job_interference arr_seq sched j t1 t
+        = service_of_other_task_hep_jobs arr_seq sched j t1 t.
+      Proof.
+        apply: cumulative_pred_served_eq_service => //.
+        by move => ? /andP[].
+      Qed.
+
+    End InstantiatedServiceEquivalences.
+
+
   End Equivalences.
 
 End InterferenceAndInterferingWorkloadAuxiliary.
diff --git a/analysis/abstract/restricted_supply/bounded_bi/aux.v b/analysis/abstract/restricted_supply/bounded_bi/aux.v
index 657576fe275d094e6acbca5da6e02cc11832c93c..59733026b57da75093ac077ae21706c68d2775f4 100644
--- a/analysis/abstract/restricted_supply/bounded_bi/aux.v
+++ b/analysis/abstract/restricted_supply/bounded_bi/aux.v
@@ -156,7 +156,10 @@ Section BoundedBusyIntervalsAux.
       }
     }
     rewrite cumulative_interfering_workload_split // cumulative_interference_split //.
-    rewrite cumulative_iw_hep_eq_workload_of_ohep cumulative_i_ohep_eq_service_of_ohep //; last by apply PREF.
+    rewrite cumulative_iw_hep_eq_workload_of_ohep cumulative_i_ohep_eq_service_of_ohep //;
+            [
+            | exact: unit_supply_is_unit_service
+            | by apply PREF ].
     rewrite -[leqRHS]addnC -[leqRHS]addnA [(_ + workload_of_job _ _ _ _ )]addnC.
     rewrite workload_job_and_ahep_eq_workload_hep //.
     rewrite -addnC -addnA [(_ + service_during _ _ _ _ )]addnC.
diff --git a/analysis/abstract/restricted_supply/iw_instantiation.v b/analysis/abstract/restricted_supply/iw_instantiation.v
index 8d0a27938200ae22cfbd4c647629ff7a65562265..b2daab1abc06c93a1ce6db55c78884ebe4208efa 100644
--- a/analysis/abstract/restricted_supply/iw_instantiation.v
+++ b/analysis/abstract/restricted_supply/iw_instantiation.v
@@ -249,50 +249,6 @@ Section JLFPInstantiation.
 
     End InstantiatedWorkloadEquivalence.
 
-    (** In this section, we prove that the (abstract) cumulative
-        interference of jobs with higher or equal priority is equal to
-        total service of jobs with higher or equal priority. *)
-    Section InstantiatedServiceEquivalences.
-
-      (** 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.
-
-      (** We consider an arbitrary time interval <<[t1, t)>> that
-          starts with a (classic) quiet time. *)
-      Variable t1 t : instant.
-      Hypothesis H_quiet_time : classical.quiet_time arr_seq sched j t1.
-
-      (** As follows from lemma [cumulative_pred_served_eq_service],
-          the (abstract) instantiated function of interference is
-          equal to the total service of any subset of jobs with higher
-          or equal priority. *)
-
-      (** The above is in particular true for the jobs other
-          than [j] with higher or equal priority... *)
-      Lemma  cumulative_i_ohep_eq_service_of_ohep :
-        cumulative_another_hep_job_interference arr_seq sched j t1 t
-        = service_of_other_hep_jobs arr_seq sched j t1 t.
-      Proof.
-        apply: cumulative_pred_served_eq_service => //.
-        - by apply unit_supply_is_unit_service.
-        - by move => ? /andP[].
-      Qed.
-
-      (** ...and for jobs from other tasks than [j] with higher
-          or equal priority. *)
-      Lemma cumulative_i_thep_eq_service_of_othep :
-        cumulative_another_task_hep_job_interference arr_seq sched j t1 t
-        = service_of_other_task_hep_jobs arr_seq sched j t1 t.
-      Proof.
-        apply: cumulative_pred_served_eq_service => //.
-        - by apply unit_supply_is_unit_service.
-        - by move => ? /andP[].
-      Qed.
-
-    End InstantiatedServiceEquivalences.
-
     (** In this section we prove that the abstract definition of busy
         interval is equivalent to the conventional, concrete
         definition of busy interval for JLFP scheduling. *)
@@ -303,15 +259,15 @@ Section JLFPInstantiation.
           notion of quiet time in the _abstract_ sense as
           [quiet_time_ab]. *)
       Let quiet_time_cl := classical.quiet_time arr_seq sched.
-      Let quiet_time_ab := definitions.quiet_time sched.
+      Let quiet_time_ab := abstract.definitions.quiet_time sched.
 
       (** Same for the two notions of a busy interval prefix ... *)
       Let busy_interval_prefix_cl := classical.busy_interval_prefix arr_seq sched.
-      Let busy_interval_prefix_ab := definitions.busy_interval_prefix sched.
+      Let busy_interval_prefix_ab := abstract.definitions.busy_interval_prefix sched.
 
       (** ... and the two notions of a busy interval. *)
       Let busy_interval_cl := classical.busy_interval arr_seq sched.
-      Let busy_interval_ab := definitions.busy_interval sched.
+      Let busy_interval_ab := abstract.definitions.busy_interval sched.
 
       (** Consider any job [j] of [tsk]. *)
       Variable j : Job.
@@ -332,7 +288,8 @@ Section JLFPInstantiation.
         { rewrite negb_and negbK; apply/orP.
           by case ARR: (arrived_before j t); [right | left]; [apply QT | ]. }
         { erewrite cumulative_interference_split, cumulative_interfering_workload_split; rewrite eqn_add2l.
-          rewrite cumulative_i_ohep_eq_service_of_ohep//.
+          rewrite cumulative_i_ohep_eq_service_of_ohep //=; last first.
+          { exact: unit_supply_is_unit_service. }
           rewrite //= cumulative_iw_hep_eq_workload_of_ohep eq_sym; apply/eqP.
           apply all_jobs_have_completed_equiv_workload_eq_service => //.
           { by apply unit_supply_is_unit_service. }
@@ -357,7 +314,8 @@ Section JLFPInstantiation.
         erewrite service_of_jobs_case_on_pred with (P2 := fun j' => j' != j).
         erewrite workload_of_jobs_case_on_pred with (P' := fun j' => j' != j) => //.
         replace ((fun j0 : Job => hep_job j0 j && (j0 != j))) with (another_hep_job^~j); last by rewrite /another_hep_job.
-        rewrite -/(service_of_other_hep_jobs arr_seq sched j 0 t) -cumulative_i_ohep_eq_service_of_ohep //.
+        rewrite -/(service_of_other_hep_jobs arr_seq sched j 0 t) -cumulative_i_ohep_eq_service_of_ohep //; last first.
+        { exact: unit_supply_is_unit_service. }
         rewrite -/(workload_of_other_hep_jobs arr_seq j 0 t) -cumulative_iw_hep_eq_workload_of_ohep //.
         move: T1; rewrite negb_and => /orP [NA | /negPn COMP].
         { have PRED__eq: {in arrivals_between arr_seq 0 t, (fun j__copy : Job => hep_job j__copy j && ~~ (j__copy != j)) =1 pred0}.
@@ -586,8 +544,8 @@ Section JLFPInstantiation.
     Proof.
       move=> j t1.
       rewrite cumulative_interference_split cumulative_interfering_workload_split.
-      rewrite leq_add2l cumulative_i_ohep_eq_service_of_ohep; last first.
-      { by move => jhp ARR HP AB; move: AB; rewrite /arrived_before ltn0. }
+      rewrite leq_add2l cumulative_i_ohep_eq_service_of_ohep //=; last first.
+      { exact: unit_supply_is_unit_service. }
       rewrite cumulative_iw_hep_eq_workload_of_ohep.
       apply service_of_jobs_le_workload => //.
       by apply unit_supply_is_unit_service.
diff --git a/analysis/abstract/restricted_supply/task_intra_interference_bound.v b/analysis/abstract/restricted_supply/task_intra_interference_bound.v
index 725daae2bb05cff91a2e29b482d9aa11cd32b371..0fd3c36084cc7cb42f2184ee1f48b88fbbd44722 100644
--- a/analysis/abstract/restricted_supply/task_intra_interference_bound.v
+++ b/analysis/abstract/restricted_supply/task_intra_interference_bound.v
@@ -110,6 +110,7 @@ Section TaskIntraInterferenceIsBounded.
       by rewrite [X in _ <= X](@big_cat_nat _ _ _ (t1 + Δ)) //= leq_addr. }
     { erewrite cumulative_i_thep_eq_service_of_othep; eauto 2 => //; last first.
       { by apply instantiated_quiet_time_equivalent_quiet_time => //; apply BUSY. }
+      { exact: unit_supply_is_unit_service. }
       apply: leq_trans.
       { by apply service_of_jobs_le_workload => //; apply unit_supply_is_unit_service. }
       { apply H_workload_is_bounded => //; apply: abstract_busy_interval_classic_quiet_time => //. }
diff --git a/analysis/facts/priority/fifo_ahep_bound.v b/analysis/facts/priority/fifo_ahep_bound.v
new file mode 100644
index 0000000000000000000000000000000000000000..d46cc3ca82533ceba23b0ea15a8b8eeace742191
--- /dev/null
+++ b/analysis/facts/priority/fifo_ahep_bound.v
@@ -0,0 +1,126 @@
+Require Export prosa.analysis.abstract.iw_auxiliary.
+Require Export prosa.analysis.facts.model.restricted_supply.schedule.
+Require Import prosa.analysis.facts.priority.fifo.
+Require Import prosa.analysis.facts.model.rbf.
+
+
+(** * Higher-or-Equal-Priority Interference Bound under FIFO *)
+
+(** In this file, we introduce a bound on the cumulative interference
+    from higher- and equal-priority under FIFO scheduling. *)
+Section RTAforFullyPreemptiveFIFOModelwithArrivalCurves.
+
+  (** Consider any type of tasks, each characterized by a WCET
+      [task_cost] and an arrival curve [max_arrivals] ... *)
+  Context {Task : TaskType}.
+  Context `{TaskCost Task}.
+  Context `{MaxArrivals Task}.
+
+  (** ... and any type of jobs associated with these tasks, where each
+      job has a task [job_task], a cost [job_cost], and an arrival
+      time [job_arrival]. *)
+  Context {Job : JobType}.
+  Context `{JobTask Job Task}.
+  Context `{JobCost Job}.
+  Context `{JobArrival Job}.
+
+  (** Consider any kind of unit-supply uniprocessor model. *)
+  Context `{PState : ProcessorState Job}.
+  Hypothesis H_uniprocessor_proc_model : uniprocessor_model PState.
+  Hypothesis H_unit_supply_proc_model : unit_supply_proc_model PState.
+
+  (** Consider any arrival sequence [arr_seq] with consistent, non-duplicate arrivals. *)
+  Variable arr_seq : arrival_sequence Job.
+  Hypothesis H_valid_arrival_sequence : valid_arrival_sequence arr_seq.
+
+  (** We further require that a job's cost cannot exceed its task's stated WCET. *)
+  Hypothesis H_valid_job_cost : arrivals_have_valid_job_costs arr_seq.
+
+  (** We consider an arbitrary task set [ts] ... *)
+  Variable ts : seq Task.
+
+  (** ... and assume that all jobs stem from tasks in this task set. *)
+  Hypothesis H_all_jobs_from_taskset : all_jobs_from_taskset arr_seq ts.
+
+  (** We assume that [max_arrivals] is a family of valid arrival
+      curves that constrains the arrival sequence [arr_seq], i.e., for
+      any task [tsk] in [ts], [max_arrival tsk] is (1) an arrival
+      bound of [tsk], and ... *)
+  Hypothesis H_is_arrival_curve : taskset_respects_max_arrivals arr_seq ts.
+
+  (** ... (2) a monotonic function that equals 0 for the empty interval [delta = 0]. *)
+  Hypothesis H_valid_arrival_curve : valid_taskset_arrival_curve ts max_arrivals.
+
+  (** Let [tsk] be any task in [ts] that is to be analyzed. *)
+  Variable tsk : Task.
+  Hypothesis H_tsk_in_ts : tsk \in ts.
+
+  (** Consider any schedule ... *)
+  Variable sched : schedule PState.
+
+  (** ... 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.
+
+  (** Next, we establish a bound on the interference produced by higher- and
+      equal-priority jobs. *)
+
+  (** Consider a job [j] of the task under analysis [tsk] with a positive cost. *)
+  Variable j : Job.
+  Hypothesis H_job_of_task : job_of_task tsk j.
+  Hypothesis H_j_in_arrivals : arrives_in arr_seq j.
+  Hypothesis H_job_cost_positive : job_cost_positive j.
+
+  (** Consider the busy window of [j] and denote it as <<[t1, t2)>>. *)
+  Variable t1 t2 : instant.
+  Hypothesis H_busy_window : classical.busy_interval arr_seq sched j t1 t2.
+
+  (** Consider any arbitrary sub-interval <<[t1, Δ)>> within the busy
+      window of [j]. *)
+  Variable Δ : instant.
+  Hypothesis H_in_busy : t1 + Δ < t2.
+
+  (** The cumulative interference from higher- and equal-priority jobs
+      during <<[t1, Δ)>> is bounded as follows. *)
+  Lemma bound_on_hep_workload :
+    cumulative_another_hep_job_interference arr_seq sched j t1 (t1 + Δ) <=
+      \sum_(tsko <- ts) task_request_bound_function tsko (job_arrival j - t1 + ε) - task_cost tsk.
+  Proof.
+    move: (H_busy_window) => [[_ [_ [_ /andP [ARR1 ARR2]]]] _].
+    rewrite (cumulative_i_ohep_eq_service_of_ohep _ arr_seq) => //; last  eauto 6 with basic_rt_facts; last first.
+    { by move: (H_busy_window) => [[_ [Q _]] _]. }
+    { exact: unit_supply_is_unit_service. }
+    eapply leq_trans.
+    { apply service_of_jobs_le_workload => //.
+      by apply unit_supply_is_unit_service. }
+    rewrite (leqRW (workload_equal_subset _ _ _ _ _ _  _)) => //.
+    rewrite (workload_minus_job_cost j)//;
+            last by apply job_in_arrivals_between => //; last by rewrite addn1.
+    rewrite /workload_of_jobs (big_rem tsk) //=
+            (addnC (task_request_bound_function tsk (job_arrival j - t1 + ε))).
+    rewrite -addnBA; last first.
+    - apply leq_trans with (task_request_bound_function tsk ε).
+      { by apply: task_rbf_1_ge_task_cost; exact: non_pathological_max_arrivals. }
+      { by apply task_rbf_monotone; [apply H_valid_arrival_curve | lia]. }
+    - eapply leq_trans; last first.
+      { by erewrite leq_add2l; apply task_rbf_without_job_under_analysis; (try apply ARR1) => //; lia. }
+      rewrite addnBA.
+      + rewrite leq_sub2r //; eapply leq_trans.
+        * apply sum_over_partitions_le => j' inJOBS => _.
+          by apply H_all_jobs_from_taskset, (in_arrivals_implies_arrived _ _ _ _ inJOBS).
+        * rewrite (big_rem tsk) //= addnC leq_add //; last by rewrite addnA subnKC.
+          rewrite big_seq_cond [in X in _ <= X]big_seq_cond big_mkcond [in X in _ <= X]big_mkcond //=.
+          apply leq_sum => tsk' _; rewrite andbC //=.
+          destruct (tsk' \in rem (T:=Task) tsk ts) eqn:IN; last by [].
+          apply rem_in in IN.
+          eapply leq_trans;
+            last by apply (task_workload_le_task_rbf _ _ _ IN H_valid_job_cost H_is_arrival_curve t1).
+          by rewrite addnBAC //= subnKC //= addn1; apply leqW.
+      + move : H_job_of_task => TSKj.
+        rewrite /task_workload_between /task_workload /workload_of_jobs (big_rem j) //=;
+                first by rewrite TSKj; apply leq_addr.
+        apply job_in_arrivals_between => //.
+        by lia.
+  Qed.
+
+End RTAforFullyPreemptiveFIFOModelwithArrivalCurves.
diff --git a/results/fifo/rta.v b/results/fifo/rta.v
index b06002f920b9597f6d1a28a6e2cff66474d480c4..a1aed95cf58e9611b01f79654ab96672f5f18dd5 100644
--- a/results/fifo/rta.v
+++ b/results/fifo/rta.v
@@ -1,5 +1,6 @@
 Require Import prosa.model.readiness.basic.
 Require Import prosa.analysis.facts.priority.fifo.
+Require Export prosa.analysis.facts.priority.fifo_ahep_bound.
 Require Export prosa.analysis.abstract.ideal.cumulative_bounds.
 Require Export prosa.analysis.abstract.ideal.abstract_rta.
 Require Export prosa.analysis.facts.model.task_cost.
@@ -274,70 +275,11 @@ Section AbstractRTAforFIFOwithArrivalCurves.
 
   (** *** Higher- and Equal-Priority Interference *)
 
-  (** Next, we establish a bound on the interference produced by higher- and
-      equal-priority jobs. *)
-  Section BoundOnHEPWorkload.
-
-    (** Consider again a job [j] of the task under analysis [tsk] with a positive cost. *)
-    Variable j : Job.
-    Hypothesis H_job_of_task : job_of_task tsk j.
-    Hypothesis H_j_in_arrivals : arrives_in arr_seq j.
-    Hypothesis H_job_cost_positive : job_cost_positive j.
-
-    (** Consider the (abstract) busy window of [j] and denote it as  <<[t1, t2)>>. *)
-    Variable t1 t2 : instant.
-    Hypothesis H_busy_window :
-      definitions.busy_interval sched j t1 t2.
-
-    (** Consider any arbitrary sub-interval <<[t1, Δ)>> within the busy window
-        of [j]. *)
-    Variable Δ : instant.
-    Hypothesis H_in_busy : t1 + Δ < t2.
-
-    (** The cumulative interference from higher- and equal-priority jobs during
-        <<[t1, Δ)>> is bounded as follows. *)
-    Lemma bound_on_hep_workload :
-      cumulative_another_hep_job_interference arr_seq sched j t1 (t1 + Δ) <=
-        \sum_(tsko <- ts) task_request_bound_function tsko (job_arrival j - t1 + ε) - task_cost tsk.
-    Proof.
-      rewrite (cumulative_i_ohep_eq_service_of_ohep arr_seq) => //;
-        last by eauto 6 with basic_rt_facts.
-      eapply leq_trans; first exact: service_of_jobs_le_workload.
-      rewrite (leqRW (workload_equal_subset _ _ _ _ _ _  _)) => //.
-      rewrite (workload_minus_job_cost j)//;
-        last by apply job_in_arrivals_between => //; last by rewrite addn1.
-      rewrite /workload_of_jobs /IBF (big_rem tsk) //=
-        (addnC (task_request_bound_function tsk (job_arrival j - t1 + ε))).
-      rewrite -addnBA; last first.
-      - apply leq_trans with (task_request_bound_function tsk ε).
-        { by apply: task_rbf_1_ge_task_cost; exact: non_pathological_max_arrivals. }
-        { by apply task_rbf_monotone; [apply H_valid_arrival_curve | lia]. }
-      - eapply leq_trans;
-          last by (
-            erewrite leq_add2l;
-            eapply task_rbf_without_job_under_analysis with (t1 := t1) =>//;
-            lia).
-        rewrite addnBA.
-        + rewrite leq_sub2r //; eapply leq_trans.
-          * apply sum_over_partitions_le => j' inJOBS => _.
-            by apply H_all_jobs_from_taskset, (in_arrivals_implies_arrived _ _ _ _ inJOBS).
-          * rewrite (big_rem tsk) //= addnC leq_add //;
-              last by rewrite addnBAC //= subnKC // addn1; apply leqW.
-            rewrite big_seq_cond [in X in _ <= X]big_seq_cond big_mkcond [in X in _ <= X]big_mkcond //=.
-            apply leq_sum => tsk' _; rewrite andbC //=.
-            destruct (tsk' \in rem (T:=Task) tsk ts) eqn:IN; last by [].
-            apply rem_in in IN.
-            eapply leq_trans;
-              last by apply (task_workload_le_task_rbf _ _ _ IN H_valid_job_cost H_is_arrival_curve t1).
-            by rewrite addnBAC //= subnKC //= addn1; apply leqW.
-        + move : H_job_of_task => TSKj.
-          rewrite /task_workload_between /task_workload /workload_of_jobs (big_rem j) //=;
-            first by rewrite TSKj; apply leq_addr.
-          apply job_in_arrivals_between => //.
-          by lia.
-    Qed.
-
-  End BoundOnHEPWorkload.
+  (** We establish a bound on the interference produced by higher- and
+      equal-priority jobs in a separate file. To see the result,
+      simply click on the link bellow. *)
+  Let bound_on_hep_workload :=
+    @analysis.facts.priority.fifo_ahep_bound.bound_on_hep_workload.
 
   (** *** Correctness of [IBF]  *)
 
@@ -361,7 +303,8 @@ Section AbstractRTAforFIFOwithArrivalCurves.
     have JPOS: job_cost_positive j by rewrite -ltnNge in NCOMPL; unfold job_cost_positive; lia.
     rewrite (no_priority_inversion j ARRj _ JPOS _ t2) //= add0n.
     have ->: A = job_arrival j - t1 by erewrite Pred with (t1 := t1); [lia | apply BUSY].
-    exact: bound_on_hep_workload.
+    apply: bound_on_hep_workload; (try apply IN_BUSY) => //.
+    by apply instantiated_busy_interval_equivalent_busy_interval.
   Qed.
 
   (** The preceding lemma [IBF_correct] corresponds to Lemma 3 in the paper. To