diff --git a/analysis/facts/job_index.v b/analysis/facts/job_index.v
index 0d2354c6181fce55a7bfcdf34d13ab14d42ba1e8..c03967b93d2d208fda05ae3260b6474f0593b6f4 100644
--- a/analysis/facts/job_index.v
+++ b/analysis/facts/job_index.v
@@ -46,8 +46,10 @@ Section JobIndexLemmas.
     Proof.
       move => ARR_LT.
       move: H_equal_index => IND. 
+      try ( apply task_arrivals_up_to_prefix_cat with (arr_seq0 := arr_seq) in ARR_LT => // ) ||
       apply task_arrivals_up_to_prefix_cat with (arr_seq := arr_seq) in ARR_LT => //.
       move : ARR_LT => [xs ARR_CAT]. 
+      try ( apply eq_ind_in_seq with (xs0 := task_arrivals_up_to_job_arrival arr_seq j2) => // ) ||
       apply eq_ind_in_seq with (xs := task_arrivals_up_to_job_arrival arr_seq j2) => //.
       - now rewrite -/(job_index _ _) -IND -ARR_CAT index_cat ifT;
           try apply arrives_in_task_arrivals_up_to.
diff --git a/analysis/facts/sporadic.v b/analysis/facts/sporadic.v
index 79fd0e7565ded9e399c7d0fabd5af8b83b37ee6b..24afade5787d4f9eb926c353c02ab61cb0216362 100644
--- a/analysis/facts/sporadic.v
+++ b/analysis/facts/sporadic.v
@@ -97,7 +97,8 @@ Section DifferentJobsImplyDifferentArrivalTimes.
     intros UNEQ EQ_ARR.
     rewrite -> diff_jobs_iff_diff_indices in UNEQ => //; eauto; last by rewrite H_j1_task.
     move /neqP: UNEQ; rewrite neq_ltn => /orP [LT|LT].
-    all: now apply lower_index_implies_earlier_arrival with (tsk := tsk) in LT => //; ssrlia.
+    all: try ( now apply lower_index_implies_earlier_arrival with (tsk0 := tsk) in LT => //; ssrlia ) ||
+      now apply lower_index_implies_earlier_arrival with (tsk := tsk) in LT => //; ssrlia.
   Qed.
 
   (** We prove a stronger version of the above lemma by showing 
@@ -112,7 +113,7 @@ Section DifferentJobsImplyDifferentArrivalTimes.
     case: (boolP (j1 == j2)) => [/eqP EQ | /eqP NEQ]; first by auto.
     rewrite -> diff_jobs_iff_diff_indices in NEQ => //; eauto; last by rewrite H_j1_task.
     move /neqP: NEQ; rewrite neq_ltn => /orP [LT|LT].
-    all: now apply lower_index_implies_earlier_arrival with (tsk := tsk) in LT => //; ssrlia.
+    all: try ( now apply lower_index_implies_earlier_arrival with (tsk0 := tsk) in LT => //; ssrlia ) || now apply lower_index_implies_earlier_arrival with (tsk := tsk) in LT => //; ssrlia.
   Qed.
     
 End DifferentJobsImplyDifferentArrivalTimes.
@@ -172,6 +173,7 @@ Section SporadicArrivals.
     apply in_arrseq_implies_arrives in A_IN; apply in_arrseq_implies_arrives in B_IN.
     have EQ_ARR_A : (job_arrival a = job_arrival j) by apply H_consistent_arrivals.
     have EQ_ARR_B : (job_arrival b = job_arrival j) by apply H_consistent_arrivals.
+    try ( apply uneq_job_uneq_arr with (arr_seq0 := arr_seq) (tsk0 := job_task j) in NEQ => // ) ||
     apply uneq_job_uneq_arr with (arr_seq := arr_seq) (tsk := job_task j) in NEQ => //.
     now rewrite EQ_ARR_A EQ_ARR_B in NEQ.
   Qed.
@@ -231,6 +233,7 @@ Section SporadicArrivals.
     have PREV_ARR_LTE : job_arrival (prev_job arr_seq j1) <= job_arrival j1 by apply prev_job_arr_lte => //. 
     rewrite ltn_neqAle; apply /andP.
     split => //; apply /eqP.
+    try ( apply uneq_job_uneq_arr with (arr_seq0 := arr_seq) (tsk0 := job_task j1) => //; try by rewrite H_j1_task ) ||
     apply uneq_job_uneq_arr with (arr_seq := arr_seq) (tsk := job_task j1) => //; try by rewrite H_j1_task.
     - now apply prev_job_arr.
     - now apply prev_job_task.
diff --git a/analysis/facts/transform/edf_opt.v b/analysis/facts/transform/edf_opt.v
index f4c43a6957a0fac01b7efa41e42fa0dcc1eb6451..1f335140902a0c53b4e2f08935aefae3dc0b1464 100644
--- a/analysis/facts/transform/edf_opt.v
+++ b/analysis/facts/transform/edf_opt.v
@@ -256,6 +256,7 @@ Section MakeEDFAtFacts.
         now apply scheduled_job_in_sched_has_later_deadline.
       - have EX: (exists t', scheduled_at sched j t').
         {
+          try ( apply swap_job_scheduled with (t1 := t_edf) (t2 := find_swap_candidate sched t_edf j_orig) (t0 := t) ) ||
           apply swap_job_scheduled with (t1 := t_edf) (t2 := find_swap_candidate sched t_edf j_orig) (t := t).
           now move: SCHED; rewrite /sched' /make_edf_at SCHED_orig.
         }
@@ -419,6 +420,7 @@ Section MakeEDFAtFacts.
       + by rewrite -EQ; apply fsc_range1.
     - case (boolP(t_edf == t)) => [/eqP EQ'| /eqP NEQ'].
       + move=> SCHED_j.
+        try ( have ARR_j: job_arrival j <= t_edf by apply fsc_found_job_arrival with (sched0 := sched) (j1 := j_orig) => //; rewrite scheduled_at_def ) ||
         have ARR_j: job_arrival j <= t_edf by apply fsc_found_job_arrival with (sched := sched) (j1 := j_orig) => //; rewrite scheduled_at_def.
         now rewrite -EQ'.
       + move=> SCHED_j.
@@ -703,7 +705,7 @@ Section EDFPrefixInclusion.
       by rewrite scheduled_at_def /edf_transform_prefix; apply /eqP.
     apply fsc_range1 => //.
     - by apply edf_prefix_jobs_must_arrive.
-    - apply edf_prefix_scheduled_job_has_later_deadline with (sched := sched) (horizon := h2) => //.
+    - try ( apply edf_prefix_scheduled_job_has_later_deadline with (sched0 := sched) (horizon := h2) => // ) || apply edf_prefix_scheduled_job_has_later_deadline with (sched := sched) (horizon := h2) => //.
   Qed.
 
 End EDFPrefixInclusion.
@@ -798,7 +800,7 @@ Section EDFTransformFacts.
                                         H_completed_jobs_dont_execute H_no_deadline_misses t_dl.+1) => [_ [_ DL]].
       now apply (DL j t).
     - by apply (identical_prefix_inclusion _ _ t_dl.+1) => //; apply edf_finite_prefix.
-    - by apply edf_prefix_scheduled_job_has_later_deadline with (sched := sched) (horizon := t.+1).
+    - try ( by apply edf_prefix_scheduled_job_has_later_deadline with (sched0 := sched) (horizon := t.+1) ) || by apply edf_prefix_scheduled_job_has_later_deadline with (sched := sched) (horizon := t.+1).
   Qed.
 
   (** We observe that no new jobs are introduced: any job scheduled in the EDF
@@ -817,12 +819,15 @@ Section EDFTransformFacts.
     forall j t, scheduled_at sched j t -> exists t', scheduled_at sched_edf j t'.
   Proof.
     move=> j t SCHED_j.
+    try ( have EX: exists t', scheduled_at (edf_transform_prefix sched (job_deadline j)) j t'
+      by apply edf_prefix_job_scheduled' with (t0 := t) ) ||
     have EX: exists t', scheduled_at (edf_transform_prefix sched (job_deadline j)) j t'
       by apply edf_prefix_job_scheduled' with (t := t).
     move: EX => [t' SCHED'].
     exists t'.
     rewrite /sched_edf /edf_transform scheduled_at_def.
     rewrite (edf_prefix_inclusion _ _ _ _ t'.+1 (job_deadline j)) -?scheduled_at_def=> //.
+    try ( now apply edf_prefix_scheduled_job_has_later_deadline with (sched0 := sched) (horizon := job_deadline j) ) ||
     now apply edf_prefix_scheduled_job_has_later_deadline with (sched := sched) (horizon := job_deadline j).
   Qed.
 
diff --git a/analysis/facts/transform/swaps.v b/analysis/facts/transform/swaps.v
index 84e1d082bf146c3d467e8551f87599422483c1a2..b4d43fc47cf8d5782a3414d8f17c917e8d12dc28 100644
--- a/analysis/facts/transform/swaps.v
+++ b/analysis/facts/transform/swaps.v
@@ -435,6 +435,7 @@ Section EDFSwap.
       move=> AT_t2.
       rewrite -service_invariant_implies_deadline_met; first by exact H_deadline_met.
       apply service_after_swap_invariant => //.
+      try ( by apply scheduled_at_implies_later_deadline with (sched0 := sched) => // ) ||
       by apply scheduled_at_implies_later_deadline with (sched := sched) => //.
     Qed.
 
diff --git a/classic/analysis/apa/bertogna_edf_theory.v b/classic/analysis/apa/bertogna_edf_theory.v
index b6c04b21d181c9f69e43d570a160e662c6b9b212..47da1d50962402f0ca7eec2f8b084136179ba63a 100644
--- a/classic/analysis/apa/bertogna_edf_theory.v
+++ b/classic/analysis/apa/bertogna_edf_theory.v
@@ -206,23 +206,29 @@ Module ResponseTimeAnalysisEDF.
           apply leq_trans with (n := workload job_task sched tsk_other
                                          (job_arrival j) (job_arrival j + R));
             first by apply task_interference_le_workload.
-          by apply workload_bounded_by_W with (task_deadline := task_deadline)
+          by ((try ( apply workload_bounded_by_W with (task_deadline0 := task_deadline)
+             (job_arrival0 := job_arrival) (arr_seq0 := arr_seq)
+             (job_cost0 := job_cost) (job_deadline0 := job_deadline)) ||
+          apply workload_bounded_by_W with (task_deadline := task_deadline)
              (job_arrival := job_arrival) (arr_seq := arr_seq)
-             (job_cost := job_cost) (job_deadline := job_deadline); try (by ins); last 2 first;
+             (job_cost := job_cost) (job_deadline := job_deadline)); try (by ins); last 2 first;
             [ by apply bertogna_edf_R_other_ge_cost
             | by ins; apply NOMISS
             | by ins; apply TASK_PARAMS
             | by ins; apply RESTR
-            | by ins; apply BEFOREok with (tsk_other := tsk_other)].
+            | by ins; apply BEFOREok with (tsk_other := tsk_other)]).
         Qed.
 
         (* Recall that the edf-specific interference bound also holds for tsk_other. *)
         Lemma bertogna_edf_specific_bound_holds :
           x tsk_other <= edf_specific_bound tsk_other R_other.
         Proof.
+          (try ( apply interference_bound_edf_bounds_interference with
+              (job_deadline0 := job_deadline)
+              (arr_seq0 := arr_seq) (ts0 := ts) ) ||
           apply interference_bound_edf_bounds_interference with
               (job_deadline := job_deadline)
-              (arr_seq := arr_seq) (ts := ts); try (by done);
+              (arr_seq := arr_seq) (ts := ts)); try (by done);
             [ by apply bertogna_edf_tsk_other_in_ts | 
                 by apply H_tasks_miss_no_deadlines | ].
             by ins; apply H_all_previous_jobs_completed_on_time with (tsk_other := tsk_other). 
@@ -300,14 +306,17 @@ Module ResponseTimeAnalysisEDF.
           by apply/existsP; exists cpu.
         clear SCHED; rename SCHED' into SCHED.
         move: (SCHED) => PENDING.
+        (try ( apply scheduled_implies_pending with (job_arrival0 := job_arrival) (job_cost0 := job_cost)
+           in PENDING ) ||
         apply scheduled_implies_pending with (job_arrival := job_arrival) (job_cost := job_cost)
-           in PENDING; try (by done).
+           in PENDING); try (by done).
         destruct (ltnP (job_arrival j_other) (job_arrival j)) as [BEFOREother | BEFOREj].
          {
           move: (BEFOREother) => LT; rewrite -(ltn_add2r R) in LT.
           specialize (BEFOREok j_other tsk R ARRother SAMEtsk INbounds LT).
           move: PENDING => /andP [_ /negP NOTCOMP]; apply NOTCOMP.
-          apply completion_monotonic with (t := job_arrival j_other + R); try (by done).
+          (try ( apply completion_monotonic with (t0 := job_arrival j_other + R)) ||
+          apply completion_monotonic with (t := job_arrival j_other + R)); try (by done).
           apply leq_trans with (n := job_arrival j); last by done.
           apply leq_trans with (n := job_arrival j_other + task_deadline tsk);
             first by rewrite leq_add2l; apply NOMISS.
@@ -352,6 +361,7 @@ Module ResponseTimeAnalysisEDF.
         intros t j0 ARR0 LEt LE.
         cut ((job_task j0) \in unzip1 rt_bounds = true); last by rewrite UNZIP FROMTS.
         move => /mapP [p IN EQ]; destruct p as [tsk' R0]; simpl in *; subst tsk'.
+        try ( apply completion_monotonic with (t0 := job_arrival j0 + R0) ) ||
         apply completion_monotonic with (t := job_arrival j0 + R0).
         {
           rewrite leq_add2l; apply leq_trans with (n := task_deadline (job_task j0));
@@ -556,10 +566,14 @@ Module ResponseTimeAnalysisEDF.
                 apply scheduled_implies_pending; try by done.
                 by apply/existsP; exists cpu2; rewrite /scheduled_on -SCHED2. 
               }
+              ( try ( apply platform_at_most_one_pending_job_of_each_task with (task_cost0 := task_cost)
+              (task_period0 := task_period) (task_deadline0 := task_deadline) (tsk0 := tsk)
+              (job_cost0 := job_cost) (job_task0 := job_task) (sched0 := sched) (j0 := j) (t0 := t)
+              (job_arrival0 := job_arrival) (arr_seq0 := arr_seq) ) ||
               apply platform_at_most_one_pending_job_of_each_task with (task_cost := task_cost)
               (task_period := task_period) (task_deadline := task_deadline) (tsk := tsk)
               (job_cost := job_cost) (job_task := job_task) (sched := sched) (j := j) (t := t)
-              (job_arrival := job_arrival) (arr_seq := arr_seq);
+              (job_arrival := job_arrival) (arr_seq := arr_seq) );
                 rewrite ?JOBtsk ?SAMEtsk //; first by apply PARAMS; rewrite -JOBtsk FROMTS.
               intros j0 tsk0 ARR0 TSK0 LE.
               by apply (COMP t); rewrite ?TSK0.
@@ -592,14 +606,20 @@ Module ResponseTimeAnalysisEDF.
                 by apply/existsP; exists cpu; rewrite /scheduled_on -SCHED'.
               }
               move: (SCHEDULED') => PENDING'.
+              ( try ( apply scheduled_implies_pending with (job_cost0 := job_cost) (job_arrival0:=job_arrival)
+                in PENDING' ) ||
               apply scheduled_implies_pending with (job_cost := job_cost) (job_arrival:=job_arrival)
-                in PENDING'; try by done.
+                in PENDING' ); try by done.
               assert (BUG: j = j').
               {
+                (try ( apply platform_at_most_one_pending_job_of_each_task with (task_cost0 := task_cost)
+                (task_period0 := task_period) (task_deadline0 := task_deadline) (tsk0 := tsk)
+                (job_cost0 := job_cost) (job_task0 := job_task) (sched0 := sched) (j0 := j) (t0 := t)
+                (job_arrival0 := job_arrival) (arr_seq0 := arr_seq) ) ||
                 apply platform_at_most_one_pending_job_of_each_task with (task_cost := task_cost)
                 (task_period := task_period) (task_deadline := task_deadline) (tsk := tsk)
                 (job_cost := job_cost) (job_task := job_task) (sched := sched) (j := j) (t := t)
-                (job_arrival := job_arrival) (arr_seq := arr_seq);
+                (job_arrival := job_arrival) (arr_seq := arr_seq));
                   rewrite ?JOBtsk ?SAMEtsk //; first by apply PARAMS; rewrite -JOBtsk FROMTS.
                 intros j0 tsk0 ARR0 TSK0 LE.
                 by apply (COMP t); rewrite ?TSK0.
@@ -702,11 +722,16 @@ Module ResponseTimeAnalysisEDF.
               apply scheduled_implies_pending; try by done.
               by apply/existsP; exists cpu'; rewrite /scheduled_on -SCHED2. 
             }
+            ( try ( apply platform_at_most_one_pending_job_of_each_task with (task_cost0 := task_cost)
+              (task_period0 := task_period) (task_deadline0 := task_deadline) (tsk0 := tsk)
+              (job_cost0 := job_cost) (job_task0 := job_task) (sched0 := sched) (j0 := j) (t0 := t)
+              (job_arrival0 := job_arrival) (arr_seq0 := arr_seq);
+              rewrite ?JOBtsk ?SAMEtsk // ) ||
             apply platform_at_most_one_pending_job_of_each_task with (task_cost := task_cost)
               (task_period := task_period) (task_deadline := task_deadline) (tsk := tsk)
               (job_cost := job_cost) (job_task := job_task) (sched := sched) (j := j) (t := t)
               (job_arrival := job_arrival) (arr_seq := arr_seq);
-              rewrite ?JOBtsk ?SAMEtsk //; first by apply PARAMS; rewrite -JOBtsk FROMTS.
+              rewrite ?JOBtsk ?SAMEtsk //); first by apply PARAMS; rewrite -JOBtsk FROMTS.
             intros j0 tsk0 ARR0 TSK0 LE.
             by apply (COMP t); rewrite ?TSK0.
           }
diff --git a/classic/analysis/apa/bertogna_fp_comp.v b/classic/analysis/apa/bertogna_fp_comp.v
index 8be71da92438fa9123b757546d7a2284ba1e5352..39e694dd803be0f8c14a9857a9710d5b242fb4d0 100644
--- a/classic/analysis/apa/bertogna_fp_comp.v
+++ b/classic/analysis/apa/bertogna_fp_comp.v
@@ -613,12 +613,18 @@ Module ResponseTimeIterationFP.
         }
         intros [_ [_ [REC DL]]].
 
+        (try ( apply bertogna_cirinei_response_time_bound_fp with
+              (alpha0 := alpha) (alpha'0 := alpha')
+              (task_cost0 := task_cost) (task_period0 := task_period)
+              (task_deadline0 := task_deadline) (job_deadline0 := job_deadline) (tsk0 := (TASK idx))
+              (job_task0 := job_task) (ts0 := ts) (hp_bounds0 := take idx hp_bounds)
+              (higher_eq_priority := higher_priority) ) ||
         apply bertogna_cirinei_response_time_bound_fp with
               (alpha := alpha) (alpha' := alpha')
               (task_cost := task_cost) (task_period := task_period)
               (task_deadline := task_deadline) (job_deadline := job_deadline) (tsk := (TASK idx))
               (job_task := job_task) (ts := ts) (hp_bounds := take idx hp_bounds)
-              (higher_eq_priority := higher_priority); try (by ins).
+              (higher_eq_priority := higher_priority)); try (by ins).
         {
           cut (NTH idx \in hp_bounds = true); [intros IN | by apply mem_nth].
           by rewrite set_mem -UNZIP; apply/mapP; exists (TASK idx, RESP idx); rewrite PAIR.
diff --git a/classic/analysis/apa/bertogna_fp_theory.v b/classic/analysis/apa/bertogna_fp_theory.v
index f3ae2bcbca64abee757784a4419b723e1680fdf2..63b395a8f533543856fb85ac7723f90eebd9180f 100644
--- a/classic/analysis/apa/bertogna_fp_theory.v
+++ b/classic/analysis/apa/bertogna_fp_theory.v
@@ -229,8 +229,10 @@ Module ResponseTimeAnalysisFP.
           apply leq_trans with (n := workload job_task sched tsk_other
                                               (job_arrival j) (job_arrival j + R));
             first by apply task_interference_le_workload.
-          by apply workload_bounded_by_W with (task_deadline := task_deadline) (arr_seq := arr_seq)
-             (job_arrival := job_arrival) (job_cost := job_cost) (job_deadline := job_deadline);
+          by ( try ( apply workload_bounded_by_W with (task_deadline0 := task_deadline) (arr_seq0 := arr_seq)
+             (job_arrival0 := job_arrival) (job_cost0 := job_cost) (job_deadline0 := job_deadline) ) ||
+          apply workload_bounded_by_W with (task_deadline := task_deadline) (arr_seq := arr_seq)
+             (job_arrival := job_arrival) (job_cost := job_cost) (job_deadline := job_deadline));
             try (by ins); last 2 first;
               [ by ins; apply GE_COST 
               | by ins; apply NOMISS
@@ -311,14 +313,17 @@ Module ResponseTimeAnalysisFP.
             by apply/existsP; exists cpu.
           clear SCHED; rename SCHED' into SCHED.
           move: (SCHED) => PENDING.
+          ( try ( apply scheduled_implies_pending with (job_arrival0 := job_arrival)
+                                               (job_cost0 := job_cost) in PENDING ) ||
           apply scheduled_implies_pending with (job_arrival := job_arrival)
-                                               (job_cost := job_cost) in PENDING; try (by done).
+                                               (job_cost := job_cost) in PENDING); try (by done).
           destruct (ltnP (job_arrival j_other) (job_arrival j)) as [BEFOREother | BEFOREj].
            {
             move: (BEFOREother) => LT; rewrite -(ltn_add2r R) in LT.
             specialize (BEFOREok j_other ARRother SAMEtsk BEFOREother).
             move: PENDING => /andP [_ /negP NOTCOMP]; apply NOTCOMP.
-            apply completion_monotonic with (t := job_arrival j_other + R); try (by done).
+            ( try ( apply completion_monotonic with (t0 := job_arrival j_other + R) ) ||
+            apply completion_monotonic with (t := job_arrival j_other + R)); try (by done).
             apply leq_trans with (n := job_arrival j); last by done.
             apply leq_trans with (n := job_arrival j_other + task_deadline tsk);
               first by rewrite leq_add2l; apply NOMISS.
@@ -571,10 +576,14 @@ Module ResponseTimeAnalysisFP.
                   by apply/existsP; exists cpu2; rewrite /scheduled_on -SCHED2. 
                 }
 
+                ( try ( apply platform_fp_no_multiple_jobs_of_interfering_tasks with
+                  (arr_seq0 := arr_seq) (task_period0 := task_period) (tsk0 := tsk) (alpha0 := alpha)
+                  (job_arrival0 := job_arrival) (higher_eq_priority0 := higher_eq_priority) (t0 := t)
+                (job_cost0 := job_cost) (job_task0 := job_task) (sched0 := sched) ) ||
                 apply platform_fp_no_multiple_jobs_of_interfering_tasks with
                   (arr_seq := arr_seq) (task_period := task_period) (tsk := tsk) (alpha := alpha)
                   (job_arrival := job_arrival) (higher_eq_priority := higher_eq_priority) (t := t)
-                (job_cost := job_cost) (job_task := job_task) (sched := sched);
+                (job_cost := job_cost) (job_task := job_task) (sched := sched));
                   rewrite ?JOBtsk ?SAMEtsk //.
                 {
                   by intros j0 tsk0 TSK0 LE; subst tsk0; apply COMP.
@@ -630,14 +639,20 @@ Module ResponseTimeAnalysisFP.
                   by apply/existsP; exists cpu; rewrite /scheduled_on -SCHED'.
                 }
                 move: (SCHEDULED') => PENDING'.
+                ( try ( apply scheduled_implies_pending with (job_cost0 := job_cost)
+                            (job_arrival0 := job_arrival) in PENDING' ) ||
                 apply scheduled_implies_pending with (job_cost := job_cost)
-                            (job_arrival := job_arrival) in PENDING'; try by done.
+                            (job_arrival := job_arrival) in PENDING'); try by done.
                 assert (BUG: j' = j).
                 {
+                  ( try ( apply platform_fp_no_multiple_jobs_of_tsk with (task_cost0 := task_cost)
+                    (task_period0 := task_period) (task_deadline0 := task_deadline)
+                    (job_arrival0 := job_arrival) (job_cost0 := job_cost) (job_task0 := job_task)
+                    (arr_seq0 := arr_seq) (sched0 := sched) (tsk0 := tsk) (t0 := t) ) ||
                   apply platform_fp_no_multiple_jobs_of_tsk with (task_cost := task_cost)
                     (task_period := task_period) (task_deadline := task_deadline)
                     (job_arrival := job_arrival) (job_cost := job_cost) (job_task := job_task)
-                    (arr_seq := arr_seq) (sched := sched) (tsk := tsk) (t := t);
+                    (arr_seq := arr_seq) (sched := sched) (tsk := tsk) (t := t) );
                     try (by done);
                     [by apply PARAMS | by apply/andP; split | |].
                   {
@@ -647,7 +662,8 @@ Module ResponseTimeAnalysisFP.
                   }
                   {
                     intros j0 JOB0 ARR0 LT0.
-                    apply completion_monotonic with (t := job_arrival j0 + R); [| by apply BEFOREok].
+                    ( try ( apply completion_monotonic with (t0 := job_arrival j0 + R) ) ||
+                    apply completion_monotonic with (t := job_arrival j0 + R)); [| by apply BEFOREok].
                     by rewrite leq_add2l; apply leq_trans with (n := task_deadline tsk);
                       last by apply CONSTR; rewrite -JOBtsk FROMTS.
                   }
@@ -748,10 +764,14 @@ Module ResponseTimeAnalysisFP.
                 apply scheduled_implies_pending; try by done.
                 by apply/existsP; exists cpu'; rewrite /scheduled_on -SCHED2. 
               }
+              ( try ( apply platform_fp_no_multiple_jobs_of_interfering_tasks with
+                (arr_seq0 := arr_seq) (task_period0 := task_period) (tsk0 := tsk) (alpha0 := alpha)
+                (job_arrival0 := job_arrival) (higher_eq_priority0 := higher_eq_priority) (t0 := t)
+                (job_cost0 := job_cost) (job_task0 := job_task) (sched0 := sched) ) ||
               apply platform_fp_no_multiple_jobs_of_interfering_tasks with
                 (arr_seq := arr_seq) (task_period := task_period) (tsk := tsk) (alpha := alpha)
                 (job_arrival := job_arrival) (higher_eq_priority := higher_eq_priority) (t := t)
-                (job_cost := job_cost) (job_task := job_task) (sched := sched); try (by done);
+                (job_cost := job_cost) (job_task := job_task) (sched := sched)); try (by done);
                   rewrite ?JOBtsk ?SAMEtsk //.
                 {
                   by intros j0 tsk0 TSK0 LE; subst tsk0; apply COMP.
@@ -1047,3 +1067,4 @@ Module ResponseTimeAnalysisFP.
   End ResponseTimeBound.
 
 End ResponseTimeAnalysisFP.
+
diff --git a/classic/analysis/apa/interference_bound_edf.v b/classic/analysis/apa/interference_bound_edf.v
index 0d1e1d77908f6a6c34d6da9cfaebea69da57dfc0..8b10fba0ed7471d16cb9347e8afff3dd7f7305cc 100644
--- a/classic/analysis/apa/interference_bound_edf.v
+++ b/classic/analysis/apa/interference_bound_edf.v
@@ -329,6 +329,9 @@ Module InterferenceBoundEDF.
           specialize (PARAMS j ARRj); des.
           apply leq_trans with (n := service_during sched j t1 t2);
             first by apply job_interference_le_service.
+          try ( by apply cumulative_service_le_task_cost with (job_task0 := job_task)
+                              (task_deadline0 := task_deadline) (job_cost0 := job_cost)
+                                                        (job_deadline0 := job_deadline) ) ||
           by apply cumulative_service_le_task_cost with (job_task := job_task)
                               (task_deadline := task_deadline) (job_cost := job_cost)
                                                         (job_deadline := job_deadline).
@@ -425,6 +428,8 @@ Module InterferenceBoundEDF.
             rewrite -leqn0; apply leq_trans with (n := service_during sched j_fst t1 t2);
               first by apply job_interference_le_service.
             rewrite leqn0; apply/eqP.
+            try ( by apply cumulative_service_after_job_rt_zero with (job_cost0 := job_cost) (R := R_k)
+              (job_arrival0 := job_arrival); try (by done); apply ltnW ) ||
             by apply cumulative_service_after_job_rt_zero with (job_cost := job_cost) (R := R_k)
               (job_arrival := job_arrival); try (by done); apply ltnW.
           Qed. 
@@ -473,6 +478,8 @@ Module InterferenceBoundEDF.
                 interference_bound_edf_j_fst_completion_implies_rt_bound_inside_interval RBOUND.
               have FST := interference_bound_edf_j_fst_is_job_of_tsk_k.
               destruct FST as [FSTarr [_ [ LEdl _]]].            
+              try ( apply interference_under_edf_implies_shorter_deadlines with
+                    (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LEdl; try (by done) ) ||
               apply interference_under_edf_implies_shorter_deadlines with
                     (arr_seq := arr_seq) (job_deadline := job_deadline) in LEdl; try (by done).
               destruct (D_k - R_k <= D_i) eqn:LEdk; last first.
@@ -493,6 +500,8 @@ Module InterferenceBoundEDF.
                 apply leq_trans with (n := service_during sched j_fst (a_fst + R_k) t2);
                   first by apply job_interference_le_service.
                 unfold service_during; rewrite leqn0; apply/eqP.
+                try ( by apply cumulative_service_after_job_rt_zero with (job_cost0 := job_cost) (R := R_k)
+                   (job_arrival0 := job_arrival); try (by done); apply leqnn ) ||
                 by apply cumulative_service_after_job_rt_zero with (job_cost := job_cost) (R := R_k)
                    (job_arrival := job_arrival); try (by done); apply leqnn.
               }
@@ -592,6 +601,8 @@ Module InterferenceBoundEDF.
                 by apply interference_bound_edf_response_time_bound_of_j_fst_after_interval.
               }
               apply/eqP; rewrite -[_ _ _ _ == 0]negbK; apply/negP; red; intro BUG.
+              try ( apply interference_under_edf_implies_shorter_deadlines with
+                    (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in BUG; try (by done) ) ||
               apply interference_under_edf_implies_shorter_deadlines with
                     (arr_seq := arr_seq) (job_deadline := job_deadline) in BUG; try (by done).
               rewrite interference_bound_edf_j_fst_deadline
@@ -636,6 +647,8 @@ Module InterferenceBoundEDF.
               rewrite big_const_nat iter_addn mul1n addn0 leq_subLR.
               unfold D_i, D_k, t1, a_fst; rewrite -interference_bound_edf_j_fst_deadline
                                                   -interference_bound_edf_j_i_deadline.
+              try ( by apply interference_under_edf_implies_shorter_deadlines with
+                 (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LEdl ) ||
               by apply interference_under_edf_implies_shorter_deadlines with
                  (arr_seq := arr_seq) (job_deadline := job_deadline) in LEdl.
             Qed.
@@ -739,6 +752,7 @@ Module InterferenceBoundEDF.
               apply leq_trans with (n := service_during sched j_lst t1 t2);
                 first by apply job_interference_le_service.
               rewrite leqn0; apply/eqP; unfold service_during.
+              try ( by apply cumulative_service_before_job_arrival_zero with (job_arrival0 := job_arrival) ) ||
               by apply cumulative_service_before_job_arrival_zero with (job_arrival := job_arrival).
             Qed.
 
@@ -763,6 +777,7 @@ Module InterferenceBoundEDF.
                                                                           sched j_snd t1 t2);
                   first by apply job_interference_le_service.
                 rewrite leqn0; apply/eqP.
+                try ( by apply cumulative_service_before_job_arrival_zero with (job_arrival0 := job_arrival) ) ||
                 by apply cumulative_service_before_job_arrival_zero with (job_arrival := job_arrival).
               }
               apply leq_trans with (n := a_fst + p_k).
@@ -859,6 +874,8 @@ Module InterferenceBoundEDF.
             }
             have LST := interference_bound_edf_j_lst_is_job_of_tsk_k.
             destruct LST as [LSTarr [_ [ LEdl _]]].  
+            try ( apply interference_under_edf_implies_shorter_deadlines with
+                  (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LEdl; try (by done) ) ||
             apply interference_under_edf_implies_shorter_deadlines with
                   (arr_seq := arr_seq) (job_deadline := job_deadline) in LEdl; try (by done).
             unfold D_i, D_k in DIST; rewrite interference_bound_edf_j_lst_deadline
@@ -944,6 +961,8 @@ Module InterferenceBoundEDF.
               destruct LST as [LSTarr [_ [ LSTserv _]]].
               unfold D_i, D_k, a_lst, t1; rewrite -interference_bound_edf_j_lst_deadline
                                                   -interference_bound_edf_j_i_deadline.
+              try ( by apply interference_under_edf_implies_shorter_deadlines with
+                           (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LSTserv ) ||
               by apply interference_under_edf_implies_shorter_deadlines with
                            (arr_seq := arr_seq) (job_deadline := job_deadline) in LSTserv.
             Qed.
@@ -989,8 +1008,10 @@ Module InterferenceBoundEDF.
                 apply leq_trans with (n := service_during sched j_fst (a_fst + R_k) t2);
                   first by apply job_interference_le_service.
                 rewrite leqn0; apply/eqP.
+                (try ( apply cumulative_service_after_job_rt_zero with (job_cost0 := job_cost) (R := R_k)
+                  (job_arrival0 := job_arrival) ) ||
                 apply cumulative_service_after_job_rt_zero with (job_cost := job_cost) (R := R_k)
-                  (job_arrival := job_arrival); [ by done | | by apply leqnn].
+                  (job_arrival := job_arrival)); [ by done | | by apply leqnn].
                 by apply interference_bound_edf_j_fst_completed_on_time.
               }
             Qed.
@@ -1066,6 +1087,8 @@ Module InterferenceBoundEDF.
               destruct LST as [LSTarr [_ [ LSTserv _]]].
               unfold D_i, D_k, a_lst, t1; rewrite -interference_bound_edf_j_lst_deadline
                                                   -interference_bound_edf_j_i_deadline.
+              try ( by apply interference_under_edf_implies_shorter_deadlines
+                  with (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LSTserv ) ||
               by apply interference_under_edf_implies_shorter_deadlines
                   with (arr_seq := arr_seq) (job_deadline := job_deadline) in LSTserv.
             Qed.
diff --git a/classic/analysis/apa/workload_bound.v b/classic/analysis/apa/workload_bound.v
index d6db90a79b310771b1a684a0f3b4a63e11003f89..9bd2aef4cb190275588b05be16c0aece6ce641fc 100644
--- a/classic/analysis/apa/workload_bound.v
+++ b/classic/analysis/apa/workload_bound.v
@@ -416,6 +416,7 @@ Module WorkloadBound.
           }  
           instantiate (1 := elem); move => [LSTarr [LSTtsk [/eqP LSTserv LSTin]]].
           unfold service_during; apply LSTserv.
+          try ( by apply cumulative_service_before_job_arrival_zero with (job_arrival0 := job_arrival) ) ||
           by apply cumulative_service_before_job_arrival_zero with (job_arrival := job_arrival).
         Qed.
 
@@ -656,6 +657,9 @@ Module WorkloadBound.
             have INlst := workload_bound_j_lst_is_job_of_tsk; des.
             have PARAMSfst := JOBPARAMS j_fst INfst; des.
             have PARAMSlst := JOBPARAMS j_lst INlst; des.
+            try ( by apply leq_add; apply cumulative_service_le_task_cost with
+                    (task_deadline0 := task_deadline)
+                    (job_cost0 := job_cost) (job_deadline0 := job_deadline) (job_task0 := job_task) ) ||
             by apply leq_add; apply cumulative_service_le_task_cost with
                     (task_deadline := task_deadline)
                     (job_cost := job_cost) (job_deadline := job_deadline) (job_task := job_task).
diff --git a/classic/analysis/global/basic/bertogna_edf_theory.v b/classic/analysis/global/basic/bertogna_edf_theory.v
index d31bb7f9e29ffa64382e57471ce6eb7db49f719e..b3a6b86786b0f88d519ae7962fedf45de3d4f72f 100644
--- a/classic/analysis/global/basic/bertogna_edf_theory.v
+++ b/classic/analysis/global/basic/bertogna_edf_theory.v
@@ -194,8 +194,10 @@ Module ResponseTimeAnalysisEDF.
           apply leq_trans with (n := workload job_task sched tsk_other
                                          (job_arrival j) (job_arrival j + R));
             first by apply task_interference_le_workload.
-          by apply workload_bounded_by_W with (task_deadline := task_deadline) (arr_seq := arr_seq)
-            (job_arrival := job_arrival) (job_cost := job_cost) (job_deadline := job_deadline);
+          by ( try ( apply workload_bounded_by_W with (task_deadline0 := task_deadline) (arr_seq0 := arr_seq)
+            (job_arrival0 := job_arrival) (job_cost0 := job_cost) (job_deadline0 := job_deadline) ) ||
+          apply workload_bounded_by_W with (task_deadline := task_deadline) (arr_seq := arr_seq)
+            (job_arrival := job_arrival) (job_cost := job_cost) (job_deadline := job_deadline));
             try (by ins); last 2 first;
             [ by apply bertogna_edf_R_other_ge_cost
             | by ins; apply NOMISS
@@ -208,8 +210,10 @@ Module ResponseTimeAnalysisEDF.
         Lemma bertogna_edf_specific_bound_holds :
           x tsk_other <= edf_specific_bound tsk_other R_other.
         Proof.
+          ( try ( apply interference_bound_edf_bounds_interference with (job_deadline0 := job_deadline)
+                                              (arr_seq0 := arr_seq) (ts0 := ts); try (by done) ) ||
           apply interference_bound_edf_bounds_interference with (job_deadline := job_deadline)
-                                              (arr_seq := arr_seq) (ts := ts); try (by done);
+                                              (arr_seq := arr_seq) (ts := ts); try (by done));
             [ by apply bertogna_edf_tsk_other_in_ts
             | by apply H_tasks_miss_no_deadlines
             | ].
@@ -288,6 +292,8 @@ Module ResponseTimeAnalysisEDF.
           by apply/existsP; exists cpu.
         clear SCHED; rename SCHED' into SCHED.
         move: (SCHED) => PENDING.
+        try ( apply scheduled_implies_pending with (job_cost0 := job_cost) (job_arrival0 := job_arrival)
+          in PENDING; try (by done) ) ||
         apply scheduled_implies_pending with (job_cost := job_cost) (job_arrival := job_arrival)
           in PENDING; try (by done).
         destruct (ltnP (job_arrival j_other) (job_arrival j)) as [BEFOREother | BEFOREj].
@@ -295,6 +301,7 @@ Module ResponseTimeAnalysisEDF.
           move: (BEFOREother) => LT; rewrite -(ltn_add2r R) in LT.
           specialize (BEFOREok j_other tsk R ARRother SAMEtsk INbounds LT).
           move: PENDING => /andP [_ /negP NOTCOMP]; apply NOTCOMP.
+          try ( apply completion_monotonic with (t0 := job_arrival j_other + R); try (by done) ) ||
           apply completion_monotonic with (t := job_arrival j_other + R); try (by done).
           apply leq_trans with (n := job_arrival j); last by done.
           apply leq_trans with (n := job_arrival j_other + task_deadline tsk);
@@ -340,6 +347,7 @@ Module ResponseTimeAnalysisEDF.
         intros t j0 ARR0 LEt LE.
         cut ((job_task j0) \in unzip1 rt_bounds = true); last by rewrite UNZIP FROMTS.
         move => /mapP [p IN EQ]; destruct p as [tsk' R0]; simpl in *; subst tsk'.
+        try ( apply completion_monotonic with (t0 := job_arrival j0 + R0) ) ||
         apply completion_monotonic with (t := job_arrival j0 + R0).
         {
           rewrite leq_add2l; apply leq_trans with (n := task_deadline (job_task j0));
@@ -385,6 +393,7 @@ Module ResponseTimeAnalysisEDF.
         intros j0 tsk0 ARR0 TSK0 LE.
         cut (tsk0 \in unzip1 rt_bounds = true); last by rewrite UNZIP -TSK0 FROMTS.
         move => /mapP [p IN EQ]; destruct p as [tsk' R0]; simpl in *; subst tsk'.
+        try ( apply completion_monotonic with (t0 := job_arrival j0 + R0); try (by done) ) ||
         apply completion_monotonic with (t := job_arrival j0 + R0); try (by done).
         {
           rewrite leq_add2l TSK0.
@@ -536,10 +545,14 @@ Module ResponseTimeAnalysisEDF.
           }
           assert (BUG: j1 = j2).
           {
+            ( try ( apply platform_at_most_one_pending_job_of_each_task with (task_cost0 := task_cost)
+            (task_period0 := task_period) (task_deadline0 := task_deadline) (tsk0 := tsk)
+            (job_cost0 := job_cost) (job_task0 := job_task) (sched0 := sched) (j0 := j) (t0 := t)
+            (job_arrival0 := job_arrival) (arr_seq0 := arr_seq) ) ||
             apply platform_at_most_one_pending_job_of_each_task with (task_cost := task_cost)
             (task_period := task_period) (task_deadline := task_deadline) (tsk := tsk)
             (job_cost := job_cost) (job_task := job_task) (sched := sched) (j := j) (t := t)
-            (job_arrival := job_arrival) (arr_seq := arr_seq);
+            (job_arrival := job_arrival) (arr_seq := arr_seq));
                rewrite ?JOBtsk ?SAMEtsk //; first by apply PARAMS; rewrite -JOBtsk FROMTS.
             intros j0 tsk0 ARR0 TSK0 LE.
             by apply (COMP t); rewrite ?TSK0.
diff --git a/classic/analysis/global/basic/bertogna_fp_comp.v b/classic/analysis/global/basic/bertogna_fp_comp.v
index 5d6497f181c6366ba819c7d9ae65d3262d1c6ea1..c2cd7bc75761f6bd5ba4c1c5dee7605d8e2f39ec 100644
--- a/classic/analysis/global/basic/bertogna_fp_comp.v
+++ b/classic/analysis/global/basic/bertogna_fp_comp.v
@@ -598,11 +598,16 @@ Module ResponseTimeIterationFP.
         }
         intros [_ [_ [REC DL]]].
 
+        ( try ( apply bertogna_cirinei_response_time_bound_fp with
+              (task_cost0 := task_cost) (task_period0 := task_period)
+              (task_deadline0 := task_deadline) (job_deadline0 := job_deadline) (tsk0 := (TASK idx))
+              (job_task0 := job_task) (ts0 := ts) (hp_bounds0 := take idx hp_bounds)
+              (higher_eq_priority := higher_priority) ) ||
         apply bertogna_cirinei_response_time_bound_fp with
               (task_cost := task_cost) (task_period := task_period)
               (task_deadline := task_deadline) (job_deadline := job_deadline) (tsk := (TASK idx))
               (job_task := job_task) (ts := ts) (hp_bounds := take idx hp_bounds)
-              (higher_eq_priority := higher_priority); try (by done).
+              (higher_eq_priority := higher_priority) ); try (by done).
         {
           cut (NTH idx \in hp_bounds = true); [intros IN | by apply mem_nth].
           by rewrite set_mem -UNZIP; apply/mapP; exists (TASK idx, RESP idx); rewrite PAIR.
diff --git a/classic/analysis/global/basic/bertogna_fp_theory.v b/classic/analysis/global/basic/bertogna_fp_theory.v
index cd2a14bf667ced006170179b297f7094539e97a0..226c0fec894f68eb264dccf2114f59097b2bfb91 100644
--- a/classic/analysis/global/basic/bertogna_fp_theory.v
+++ b/classic/analysis/global/basic/bertogna_fp_theory.v
@@ -213,8 +213,10 @@ Module ResponseTimeAnalysisFP.
           apply leq_trans with (n := workload job_task sched tsk_other
                                               (job_arrival j) (job_arrival j + R));
             first by apply task_interference_le_workload.
-          by apply workload_bounded_by_W with (task_deadline := task_deadline) (arr_seq := arr_seq)
-             (job_arrival := job_arrival) (job_cost := job_cost) (job_deadline := job_deadline);
+          by ( try ( apply workload_bounded_by_W with (task_deadline0 := task_deadline) (arr_seq0 := arr_seq)
+             (job_arrival0 := job_arrival) (job_cost0 := job_cost) (job_deadline0 := job_deadline) ) ||
+          apply workload_bounded_by_W with (task_deadline := task_deadline) (arr_seq := arr_seq)
+             (job_arrival := job_arrival) (job_cost := job_cost) (job_deadline := job_deadline));
             try (by ins); last 2 first;
               [ by ins; apply GE_COST 
               | by ins; apply NOMISS
@@ -295,6 +297,8 @@ Module ResponseTimeAnalysisFP.
             by apply/existsP; exists cpu.
           clear SCHED; rename SCHED' into SCHED.
           move: (SCHED) => PENDING.
+          try ( apply scheduled_implies_pending with (job_arrival0 := job_arrival)
+                                               (job_cost0 := job_cost) in PENDING; try (by done) ) ||
           apply scheduled_implies_pending with (job_arrival := job_arrival)
                                                (job_cost := job_cost) in PENDING; try (by done).
           destruct (ltnP (job_arrival j_other) (job_arrival j)) as [BEFOREother | BEFOREj].
@@ -302,6 +306,7 @@ Module ResponseTimeAnalysisFP.
             move: (BEFOREother) => LT; rewrite -(ltn_add2r R) in LT.
             specialize (PREV j_other ARRother SAMEtsk BEFOREother).
             move: PENDING => /andP [_ /negP NOTCOMP]; apply NOTCOMP.
+            try ( apply completion_monotonic with (t0 := job_arrival j_other + R); try (by done) ) ||
             apply completion_monotonic with (t := job_arrival j_other + R); try (by done).
             apply leq_trans with (n := job_arrival j); last by done.
             apply leq_trans with (n := job_arrival j_other + task_deadline tsk);
@@ -350,10 +355,14 @@ Module ResponseTimeAnalysisFP.
                  H_response_time_of_interfering_tasks_is_known into PREV.
           unfold sporadic_task_model, is_response_time_bound_of_task in *.
           move => t /andP [LEt LTt] BACK.
+          (try ( apply platform_fp_cpus_busy_with_interfering_tasks with (task_cost0 := task_cost)
+          (task_period0 := task_period) (task_deadline0 := task_deadline) (job_task0 := job_task)
+          (arr_seq0 := arr_seq) (ts0 := ts) (tsk0 := tsk) (higher_eq_priority0 := higher_eq_priority)
+            in BACK ) ||
           apply platform_fp_cpus_busy_with_interfering_tasks with (task_cost := task_cost)
           (task_period := task_period) (task_deadline := task_deadline) (job_task := job_task)
           (arr_seq := arr_seq) (ts := ts) (tsk := tsk) (higher_eq_priority := higher_eq_priority)
-            in BACK; try (by done); first by apply PARAMS.
+            in BACK); try (by done); first by apply PARAMS.
           {
             apply leq_trans with (n := job_arrival j + R); first by done.
             rewrite leq_add2l.
@@ -363,7 +372,8 @@ Module ResponseTimeAnalysisFP.
             intros j_other tsk_other ARRother JOBother INTERF.
             feed (HAS tsk_other); first by rewrite -JOBother FROMTS.
             move: (HAS INTERF) => [R' IN].
-            apply completion_monotonic with (t := job_arrival j_other + R'); try (by done);
+            ( try ( apply completion_monotonic with (t0 := job_arrival j_other + R'); try (by done) ) ||
+            apply completion_monotonic with (t := job_arrival j_other + R'); try (by done));
               last by apply PREV with (hp_tsk := tsk_other).
             {
               rewrite leq_add2l.
@@ -372,7 +382,8 @@ Module ResponseTimeAnalysisFP.
             }
           }
           {
-            ins; apply completion_monotonic with (t := job_arrival j0 + R); try (by done);
+            ins; ( try ( apply completion_monotonic with (t0 := job_arrival j0 + R) ) ||
+            apply completion_monotonic with (t := job_arrival j0 + R)); try (by done);
               last by apply H_previous_jobs_of_tsk_completed.
             rewrite leq_add2l.
             by apply leq_trans with (n := task_deadline tsk); last by apply RESTR.
@@ -508,9 +519,12 @@ Module ResponseTimeAnalysisFP.
               {
                 move: SAMEtsk => /eqP SAMEtsk.
                 move: (PENDING1) => SAMEjob. 
+                ( try ( apply platform_fp_no_multiple_jobs_of_tsk with (task_cost0 := task_cost)
+                  (arr_seq0 := arr_seq) (task_period0 := task_period) (task_deadline0 := task_deadline)
+                  (job_task0 := job_task) (tsk0 := tsk) (j0 := j) in SAMEjob ) ||
                 apply platform_fp_no_multiple_jobs_of_tsk with (task_cost := task_cost)
                   (arr_seq := arr_seq) (task_period := task_period) (task_deadline := task_deadline)
-                  (job_task := job_task) (tsk := tsk) (j := j) in SAMEjob; try (by done);
+                  (job_task := job_task) (tsk := tsk) (j := j) in SAMEjob); try (by done);
                   [ | by apply PARAMS | |]; last 2 first.
                   {
                     apply (leq_trans LTt); rewrite leq_add2l.
@@ -518,7 +532,8 @@ Module ResponseTimeAnalysisFP.
                   }
                   {
                     intros j0 ARR0 JOB0 LT0.
-                    apply completion_monotonic with (t := job_arrival j0 + R); try (by done);
+                    ( try ( apply completion_monotonic with (t0 := job_arrival j0 + R) ) ||
+                    apply completion_monotonic with (t := job_arrival j0 + R)); try (by done);
                       last by apply BEFOREok.
                     rewrite leq_add2l.
                     by apply leq_trans with (n := task_deadline tsk); last by apply CONSTR.
@@ -533,16 +548,21 @@ Module ResponseTimeAnalysisFP.
                   rewrite -JOBtsk; apply FP with (t := t); try (by done).
                   by apply/existsP; exists cpu; apply/eqP.
                 }
+                ( try ( apply platform_fp_no_multiple_jobs_of_interfering_tasks with
+                  (job_arrival0 := job_arrival) (arr_seq0 := arr_seq) (task_period0 := task_period)
+                  (tsk0 := tsk) (higher_eq_priority0 := higher_eq_priority)
+                  (job_cost0 := job_cost) (job_task0 := job_task) (sched0 := sched) (t0 := t) ) ||
                 apply platform_fp_no_multiple_jobs_of_interfering_tasks with
                   (job_arrival := job_arrival) (arr_seq := arr_seq) (task_period := task_period)
                   (tsk := tsk) (higher_eq_priority := higher_eq_priority)
-                  (job_cost := job_cost) (job_task := job_task) (sched := sched) (t := t);
+                  (job_cost := job_cost) (job_task := job_task) (sched := sched) (t := t));
                   rewrite ?JOBtsk ?SAMEtsk //.
                 {
                   intros j0 tsk0 ARR0 JOB0 INTERF0.
                   feed (HASHP tsk0); first by rewrite -JOB0 FROMTS.
                   move: (HASHP INTERF0) => [R0 IN0].
-                  apply completion_monotonic with (t := job_arrival j0 + R0); try (by done);
+                  ( try ( apply completion_monotonic with (t0 := job_arrival j0 + R0); try (by done) ) ||
+                  apply completion_monotonic with (t := job_arrival j0 + R0); try (by done));
                     last by eapply H_response_time_of_interfering_tasks_is_known; first by apply IN0.
                   rewrite leq_add2l.
                   by apply leq_trans with (n := task_deadline tsk0);
diff --git a/classic/analysis/global/basic/interference_bound_edf.v b/classic/analysis/global/basic/interference_bound_edf.v
index dc63774995adaa098bee730aaca55e067fe9c70c..c7acc1cbabbc23946c94eb4fa7c44535afe1bbcf 100644
--- a/classic/analysis/global/basic/interference_bound_edf.v
+++ b/classic/analysis/global/basic/interference_bound_edf.v
@@ -316,8 +316,10 @@ Module InterferenceBoundEDF.
           move => [ARRj [TSKj _]].
           apply leq_trans with (n := service_during sched j t1 t2);
             first by apply job_interference_le_service.
+          ( try ( apply cumulative_service_le_task_cost with (job_task0 := job_task)
+            (task_deadline0 := task_deadline) (job_cost0 := job_cost) (job_deadline0 := job_deadline) ) ||
           apply cumulative_service_le_task_cost with (job_task := job_task)
-            (task_deadline := task_deadline) (job_cost := job_cost) (job_deadline := job_deadline);
+            (task_deadline := task_deadline) (job_cost := job_cost) (job_deadline := job_deadline));
             try (by done).
           by apply PARAMS.
         Qed.
@@ -413,6 +415,8 @@ Module InterferenceBoundEDF.
             rewrite -leqn0; apply leq_trans with (n := service_during sched j_fst t1 t2);
               first by apply job_interference_le_service.
             rewrite leqn0; apply/eqP.
+            try ( by apply cumulative_service_after_job_rt_zero with (job_cost0 := job_cost) (R := R_k)
+              (job_arrival0 := job_arrival); try (by done); apply ltnW ) ||
             by apply cumulative_service_after_job_rt_zero with (job_cost := job_cost) (R := R_k)
               (job_arrival := job_arrival); try (by done); apply ltnW.
           Qed. 
@@ -460,6 +464,8 @@ Module InterferenceBoundEDF.
                 interference_bound_edf_j_fst_completion_implies_rt_bound_inside_interval RBOUND.
               have FST := interference_bound_edf_j_fst_is_job_of_tsk_k.
               destruct FST as [FSTarr [_ [ LEdl _]]].            
+              try ( apply interference_under_edf_implies_shorter_deadlines with
+                    (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LEdl; try (by done) ) ||
               apply interference_under_edf_implies_shorter_deadlines with
                     (arr_seq := arr_seq) (job_deadline := job_deadline) in LEdl; try (by done).
               destruct (D_k - R_k <= D_i) eqn:LEdk; last first.
@@ -480,6 +486,8 @@ Module InterferenceBoundEDF.
                 apply leq_trans with (n := service_during sched j_fst (a_fst + R_k) t2);
                   first by apply job_interference_le_service.
                 unfold service_during; rewrite leqn0; apply/eqP.
+                try ( by apply cumulative_service_after_job_rt_zero with (job_cost0 := job_cost) (R := R_k)
+                   (job_arrival0 := job_arrival); try (by done); apply leqnn ) ||
                 by apply cumulative_service_after_job_rt_zero with (job_cost := job_cost) (R := R_k)
                    (job_arrival := job_arrival); try (by done); apply leqnn.
               }
@@ -513,6 +521,8 @@ Module InterferenceBoundEDF.
                       by apply job_interference_le_service.
                     }
                     unfold service_during.
+                    try ( rewrite -> cumulative_service_after_job_rt_zero with
+                      (job_arrival0 := job_arrival) (job_cost0 := job_cost) (R := R_k); try (by done) ) ||
                     rewrite -> cumulative_service_after_job_rt_zero with
                       (job_arrival := job_arrival) (job_cost := job_cost) (R := R_k); try (by done). 
                     rewrite addn0; apply extend_sum; first by apply leqnn.
@@ -530,6 +540,8 @@ Module InterferenceBoundEDF.
                   by apply job_interference_le_service.
                 }
                 unfold service_during.
+                try ( rewrite -> cumulative_service_after_job_rt_zero with
+                  (job_arrival0 := job_arrival) (job_cost0 := job_cost) (R:=R_k); try (by done) ) ||
                 rewrite -> cumulative_service_after_job_rt_zero with
                   (job_arrival := job_arrival) (job_cost := job_cost) (R:=R_k); try (by done).
                 rewrite addn0.
@@ -587,6 +599,8 @@ Module InterferenceBoundEDF.
               apply/eqP; rewrite -[_ _ _ _ == 0]negbK; apply/negP; red; intro BUG.
               have FST := interference_bound_edf_j_fst_is_job_of_tsk_k.
               destruct FST as [FSTarr [_ [LEdl _]]].  
+              try ( apply interference_under_edf_implies_shorter_deadlines with
+                     (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in BUG; try (by done) ) ||
               apply interference_under_edf_implies_shorter_deadlines with
                      (arr_seq := arr_seq) (job_deadline := job_deadline) in BUG; try (by done).
               rewrite interference_bound_edf_j_fst_deadline
@@ -631,6 +645,8 @@ Module InterferenceBoundEDF.
               rewrite big_const_nat iter_addn mul1n addn0 leq_subLR.
               unfold D_i, D_k, t1, a_fst; rewrite -interference_bound_edf_j_fst_deadline
                                                   -interference_bound_edf_j_i_deadline.
+              try ( by apply interference_under_edf_implies_shorter_deadlines with
+                (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LEdl ) ||
               by apply interference_under_edf_implies_shorter_deadlines with
                 (arr_seq := arr_seq) (job_deadline := job_deadline) in LEdl.
             Qed.
@@ -734,6 +750,7 @@ Module InterferenceBoundEDF.
               apply leq_trans with (n := service_during sched j_lst t1 t2);
                 first by apply job_interference_le_service.
               rewrite leqn0; apply/eqP; unfold service_during.
+              try ( by apply cumulative_service_before_job_arrival_zero with (job_arrival0 := job_arrival) ) ||
               by apply cumulative_service_before_job_arrival_zero with (job_arrival := job_arrival).
             Qed.
 
@@ -758,6 +775,7 @@ Module InterferenceBoundEDF.
                                                                           sched j_snd t1 t2);
                   first by apply job_interference_le_service.
                 rewrite leqn0; apply/eqP.
+                try ( by apply cumulative_service_before_job_arrival_zero with (job_arrival0 := job_arrival) ) ||
                 by apply cumulative_service_before_job_arrival_zero with (job_arrival := job_arrival).
               }
               apply leq_trans with (n := a_fst + p_k).
@@ -854,6 +872,8 @@ Module InterferenceBoundEDF.
             }
             have LST := interference_bound_edf_j_lst_is_job_of_tsk_k.
             destruct LST as [LSTarr [_ [ LEdl _]]].  
+            try ( apply interference_under_edf_implies_shorter_deadlines with
+                  (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LEdl; try (by done) ) ||
             apply interference_under_edf_implies_shorter_deadlines with
                   (arr_seq := arr_seq) (job_deadline := job_deadline) in LEdl; try (by done).
             unfold D_i, D_k in DIST; rewrite interference_bound_edf_j_lst_deadline
@@ -939,6 +959,8 @@ Module InterferenceBoundEDF.
               destruct LST as [LSTarr [_ [ LSTserv _]]].
               unfold D_i, D_k, a_lst, t1; rewrite -interference_bound_edf_j_lst_deadline
                                                   -interference_bound_edf_j_i_deadline.
+              try ( by apply interference_under_edf_implies_shorter_deadlines with
+                            (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LSTserv ) ||
               by apply interference_under_edf_implies_shorter_deadlines with
                             (arr_seq := arr_seq) (job_deadline := job_deadline) in LSTserv.
             Qed.
@@ -984,8 +1006,10 @@ Module InterferenceBoundEDF.
                 apply leq_trans with (n := service_during sched j_fst (a_fst + R_k) t2);
                   first by apply job_interference_le_service.
                 rewrite leqn0; apply/eqP.
+                (try ( apply cumulative_service_after_job_rt_zero with (job_cost0 := job_cost) (R := R_k)
+                  (job_arrival0 := job_arrival) ) ||
                 apply cumulative_service_after_job_rt_zero with (job_cost := job_cost) (R := R_k)
-                  (job_arrival := job_arrival); [ by done | | by apply leqnn].
+                  (job_arrival := job_arrival)); [ by done | | by apply leqnn].
                 by apply interference_bound_edf_j_fst_completed_on_time.
               }
             Qed.
@@ -1061,6 +1085,8 @@ Module InterferenceBoundEDF.
               destruct LST as [LSTarr [_ [ LSTserv _]]].
               unfold D_i, D_k, a_lst, t1; rewrite -interference_bound_edf_j_lst_deadline
                                                   -interference_bound_edf_j_i_deadline.
+              try ( by apply interference_under_edf_implies_shorter_deadlines
+                with (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LSTserv ) ||
               by apply interference_under_edf_implies_shorter_deadlines
                 with (arr_seq := arr_seq) (job_deadline := job_deadline) in LSTserv.
             Qed.
diff --git a/classic/analysis/global/basic/workload_bound.v b/classic/analysis/global/basic/workload_bound.v
index 5ea1e680a27801574eaed7eafe43b8cd367dcd92..e0806cef23dc937bfc1cf9882d608f9ed848fec9 100644
--- a/classic/analysis/global/basic/workload_bound.v
+++ b/classic/analysis/global/basic/workload_bound.v
@@ -418,6 +418,7 @@ Module WorkloadBound.
           }  
           instantiate (1 := elem); move => [LSTarr [LSTtsk [/eqP LSTserv LSTin]]].
           unfold service_during; apply LSTserv.
+          try ( by apply cumulative_service_before_job_arrival_zero with (job_arrival0 := job_arrival) ) ||
           by apply cumulative_service_before_job_arrival_zero with (job_arrival := job_arrival).
         Qed.
 
@@ -657,6 +658,9 @@ Module WorkloadBound.
               by rewrite H_at_least_two_jobs.
             have INfst := workload_bound_j_fst_is_job_of_tsk SIZE elem;
             have INlst := workload_bound_j_lst_is_job_of_tsk; des.
+            try ( by apply leq_add; apply cumulative_service_le_task_cost with
+               (task_deadline0 := task_deadline) (job_cost0 := job_cost)
+               (job_deadline0 := job_deadline) (job_task0 := job_task); eauto 2 ) ||
             by apply leq_add; apply cumulative_service_le_task_cost with
                (task_deadline := task_deadline) (job_cost := job_cost)
                (job_deadline := job_deadline) (job_task := job_task); eauto 2.
diff --git a/classic/analysis/global/jitter/bertogna_edf_theory.v b/classic/analysis/global/jitter/bertogna_edf_theory.v
index 91c6d1252fd33951c326b6cda5256ffc484e4e27..dcbf04c18afac9239d0473e1e91e39e4de7e08a7 100644
--- a/classic/analysis/global/jitter/bertogna_edf_theory.v
+++ b/classic/analysis/global/jitter/bertogna_edf_theory.v
@@ -225,8 +225,10 @@ Module ResponseTimeAnalysisEDFJitter.
         Lemma bertogna_edf_specific_bound_holds :
           x tsk_other <= edf_specific_bound tsk_other R_other.
         Proof.
-          by apply interference_bound_edf_bounds_interference with (job_deadline := job_deadline)
-                   (arr_seq := arr_seq) (ts := ts); try (by done);
+          by ( try ( apply interference_bound_edf_bounds_interference with (job_deadline0 := job_deadline)
+                   (arr_seq0 := arr_seq) (ts0 := ts) ) ||
+          apply interference_bound_edf_bounds_interference with (job_deadline := job_deadline)
+                   (arr_seq := arr_seq) (ts := ts)); try (by done);
           [  by apply bertogna_edf_tsk_other_in_ts
           |  by apply H_tasks_miss_no_deadlines         
           |  by ins; apply H_all_previous_jobs_completed_on_time with (tsk_other := tsk_other)].
@@ -307,8 +309,10 @@ Module ResponseTimeAnalysisEDFJitter.
           have ARRother: arrives_in arr_seq j_other.
             by apply (H_jobs_come_from_arrival_sequence j_other t).
           move: (SCHED) => PENDING.
+          ( try ( apply scheduled_implies_pending with (job_cost0 := job_cost) (job_jitter0 := job_jitter)
+            (job_arrival0 := job_arrival) in PENDING ) ||
           apply scheduled_implies_pending with (job_cost := job_cost) (job_jitter := job_jitter)
-            (job_arrival := job_arrival) in PENDING; try (by done).
+            (job_arrival := job_arrival) in PENDING); try (by done).
           destruct (ltnP (job_arrival j_other) (job_arrival j)) as [BEFOREother | BEFOREj].
           {
             move: (BEFOREother) => LT; rewrite -(ltn_add2r R) in LT.
@@ -319,7 +323,8 @@ Module ResponseTimeAnalysisEDFJitter.
             }
             intros COMP.
             move: PENDING => /andP [_ /negP NOTCOMP]; apply NOTCOMP.
-            apply completion_monotonic with (t := job_arrival j_other + task_jitter tsk + R);
+            ( try ( apply completion_monotonic with (t0 := job_arrival j_other + task_jitter tsk + R) ) ||
+            apply completion_monotonic with (t := job_arrival j_other + task_jitter tsk + R));
               try by done.
             apply leq_trans with (n := job_arrival j);
               last by apply leq_trans with (n := t1); [by apply leq_addr | by done].
@@ -379,6 +384,7 @@ Module ResponseTimeAnalysisEDFJitter.
           intros t j0 LEt ARR0 LE.
           cut ((job_task j0) \in unzip1 rt_bounds = true); last by rewrite UNZIP FROMTS.
           move => /mapP [p IN EQ]; destruct p as [tsk' R0]; simpl in *; subst tsk'.
+          try ( apply completion_monotonic with (t0 := job_arrival j0 + task_jitter (job_task j0) + R0) ) ||
           apply completion_monotonic with (t := job_arrival j0 + task_jitter (job_task j0) + R0).
           {
             rewrite -addnA leq_add2l.
@@ -433,6 +439,7 @@ Module ResponseTimeAnalysisEDFJitter.
           intros j0 tsk0 ARR0 TSK0 LE.
           cut (tsk0 \in unzip1 rt_bounds = true); last by rewrite UNZIP -TSK0 FROMTS //.
           move => /mapP [p IN EQ]; destruct p as [tsk' R0]; simpl in *; subst tsk'.
+          try ( apply completion_monotonic with (t0 := job_arrival j0 + task_jitter tsk0 + R0); try (by done) ) ||
           apply completion_monotonic with (t := job_arrival j0 + task_jitter tsk0 + R0); try (by done).
           {
             rewrite -addnA leq_add2l TSK0.
@@ -577,11 +584,16 @@ Module ResponseTimeAnalysisEDFJitter.
             }
             assert (BUG: j1 = j2).
             {
+              ( try ( apply platform_at_most_one_pending_job_of_each_task with (task_cost0 := task_cost)
+               (job_jitter0 := job_jitter) (task_period0 := task_period) (job_cost0 := job_cost)
+               (task_deadline0 := task_deadline) (tsk0 := tsk) (job_task0 := job_task)
+               (sched0 := sched) (job_arrival0 := job_arrival) (arr_seq0 := arr_seq)
+               (j0 := j) (t0 := t) ) ||
               apply platform_at_most_one_pending_job_of_each_task with (task_cost := task_cost)
                (job_jitter := job_jitter) (task_period := task_period) (job_cost := job_cost)
                (task_deadline := task_deadline) (tsk := tsk) (job_task := job_task)
                (sched := sched) (job_arrival := job_arrival) (arr_seq := arr_seq)
-               (j := j) (t := t);
+               (j := j) (t := t));
               rewrite ?JOBtsk ?SAMEtsk //; first by apply PARAMS; rewrite -JOBtsk FROMTS.
               by intros j0 tsk0 ARR0 TSK0 LE; apply (COMP t); rewrite ?TSK0.
             }
diff --git a/classic/analysis/global/jitter/bertogna_fp_comp.v b/classic/analysis/global/jitter/bertogna_fp_comp.v
index d2aeef9dc46165880847442b9cb831065b280096..3982a2438da4a15d6922afbdf58f8191bb4d0c3b 100644
--- a/classic/analysis/global/jitter/bertogna_fp_comp.v
+++ b/classic/analysis/global/jitter/bertogna_fp_comp.v
@@ -607,6 +607,11 @@ Module ResponseTimeIterationFP.
         }
         intros [_ [_ [REC DL]]].
 
+        try ( apply bertogna_cirinei_response_time_bound_fp with
+              (task_cost0 := task_cost) (task_period0 := task_period)
+              (task_deadline0 := task_deadline) (job_deadline0 := job_deadline) (tsk0 := (TASK idx))
+              (job_task0 := job_task) (ts0 := ts) (hp_bounds0 := take idx hp_bounds)
+              (job_jitter0 := job_jitter) (higher_eq_priority := higher_priority); try (by done) ) ||
         apply bertogna_cirinei_response_time_bound_fp with
               (task_cost := task_cost) (task_period := task_period)
               (task_deadline := task_deadline) (job_deadline := job_deadline) (tsk := (TASK idx))
diff --git a/classic/analysis/global/jitter/bertogna_fp_theory.v b/classic/analysis/global/jitter/bertogna_fp_theory.v
index 6d290d6b55de6fd486d2a98edad8dc8d675b670c..6326824745d4754c3194e55e8faf9bfc468581ad 100644
--- a/classic/analysis/global/jitter/bertogna_fp_theory.v
+++ b/classic/analysis/global/jitter/bertogna_fp_theory.v
@@ -225,6 +225,9 @@ Module ResponseTimeAnalysisFP.
           }
           apply leq_trans with (n := workload job_task sched tsk_other t1 (t1 + R));
             first by apply task_interference_le_workload.
+          try ( apply workload_bounded_by_W with (task_deadline0 := task_deadline)
+              (job_arrival0 := job_arrival) (arr_seq0 := arr_seq)
+              (job_jitter0 := job_jitter) (job_cost0 := job_cost) (job_deadline0 := job_deadline) ) ||
           apply workload_bounded_by_W with (task_deadline := task_deadline)
               (job_arrival := job_arrival) (arr_seq := arr_seq)
               (job_jitter := job_jitter) (job_cost := job_cost) (job_deadline := job_deadline);
@@ -310,6 +313,8 @@ Module ResponseTimeAnalysisFP.
           have SCHED': scheduled sched j_other t by apply/existsP; exists cpu.
           clear SCHED; rename SCHED' into SCHED.
           move: (SCHED) => PENDING.
+          try ( apply scheduled_implies_pending with (job_arrival0 := job_arrival)
+                (job_cost0 := job_cost) (job_jitter0 := job_jitter) in PENDING; try (by done) ) ||
           apply scheduled_implies_pending with (job_arrival := job_arrival)
                 (job_cost := job_cost) (job_jitter := job_jitter) in PENDING; try (by done).
           destruct (ltnP (job_arrival j_other) (job_arrival j)) as [BEFOREother | BEFOREj].
@@ -317,6 +322,7 @@ Module ResponseTimeAnalysisFP.
             move: (BEFOREother) => LT; rewrite -(ltn_add2r R) in LT.
             specialize (PREV j_other ARRother SAMEtsk BEFOREother).
             move: PENDING => /andP [_ /negP NOTCOMP]; apply NOTCOMP.
+            try ( apply completion_monotonic with (t0 := job_arrival j_other + task_jitter tsk + R) ) ||
             apply completion_monotonic with (t := job_arrival j_other + task_jitter tsk + R);
               try by done.
             apply leq_trans with (n := job_arrival j);
@@ -380,10 +386,14 @@ Module ResponseTimeAnalysisFP.
                  valid_sporadic_job_with_jitter in *.
           move => t /andP [LEt LTt] BACK.
 
+          ( try ( apply platform_fp_cpus_busy_with_interfering_tasks with (task_cost0 := task_cost)
+          (task_period0 := task_period) (task_deadline0 := task_deadline) (job_task0 := job_task)
+          (ts0 := ts) (tsk0 := tsk) (higher_eq_priority0 := higher_eq_priority) (arr_seq0 := arr_seq)
+            in BACK ) ||
           apply platform_fp_cpus_busy_with_interfering_tasks with (task_cost := task_cost)
           (task_period := task_period) (task_deadline := task_deadline) (job_task := job_task)
           (ts := ts) (tsk := tsk) (higher_eq_priority := higher_eq_priority) (arr_seq := arr_seq)
-            in BACK; try (by done); first by apply PARAMS; rewrite -JOBtsk FROMTS.
+            in BACK); try (by done); first by apply PARAMS; rewrite -JOBtsk FROMTS.
           {
             apply leq_trans with (n := job_arrival j + job_jitter j + R); first by done.
             rewrite -addnA leq_add2l.
@@ -395,13 +405,15 @@ Module ResponseTimeAnalysisFP.
             intros j_other tsk_other ARRother JOBother INTERF.
             feed (HAS tsk_other); first by rewrite -JOBother FROMTS.
             move: (HAS INTERF) => [R' IN].
+            try ( apply completion_monotonic with (t0 := job_arrival j_other + task_jitter tsk_other + R') ) ||
             apply completion_monotonic with (t := job_arrival j_other + task_jitter tsk_other + R');
               try (by done); last by rewrite -addnA; apply PREV.
             rewrite -addnA leq_add2l; apply leq_trans with (n := task_deadline tsk_other);
               [by apply NOMISS | by apply RESTR; rewrite -JOBother; apply FROMTS].
           }
           {
-            ins; apply completion_monotonic with (t := job_arrival j0 + task_jitter tsk + R);
+            ins; ( try ( apply completion_monotonic with (t0 := job_arrival j0 + task_jitter tsk + R) ) ||
+            apply completion_monotonic with (t := job_arrival j0 + task_jitter tsk + R));
               try (by done); last by apply PREVtsk.
             rewrite -addnA leq_add2l.
             by apply leq_trans with (n := task_deadline tsk); [by done | by apply RESTR].
@@ -542,9 +554,12 @@ Module ResponseTimeAnalysisFP.
               {
                 move: SAMEtsk => /eqP SAMEtsk.
                 move: (PENDING1) => SAMEjob. 
+                ( try ( apply platform_fp_no_multiple_jobs_of_tsk with (task_cost0 := task_cost)
+                  (task_period0 := task_period) (task_deadline0 := task_deadline) (arr_seq0 := arr_seq)
+                  (job_task0 := job_task) (tsk0 := tsk) (j0 := j) in SAMEjob) ||
                 apply platform_fp_no_multiple_jobs_of_tsk with (task_cost := task_cost)
                   (task_period := task_period) (task_deadline := task_deadline) (arr_seq := arr_seq)
-                  (job_task := job_task) (tsk := tsk) (j := j) in SAMEjob; try (by done);
+                  (job_task := job_task) (tsk := tsk) (j := j) in SAMEjob); try (by done);
                   [ | by apply PARAMS | |]; last 2 first.
                 {
                   apply (leq_trans LTt); rewrite -addnA leq_add2l.
@@ -554,7 +569,8 @@ Module ResponseTimeAnalysisFP.
                 }
                 {
                   intros j0 ARR0 JOB0 LT0.
-                  apply completion_monotonic with (t := job_arrival j0 + task_jitter tsk + R);
+                  ( try ( apply completion_monotonic with (t0 := job_arrival j0 + task_jitter tsk + R) ) ||
+                  apply completion_monotonic with (t := job_arrival j0 + task_jitter tsk + R));
                     try (by done); last by apply BEFOREok.
                   rewrite -addnA leq_add2l.
                   by apply leq_trans with (n := task_deadline tsk); last by apply CONSTR.
@@ -569,17 +585,23 @@ Module ResponseTimeAnalysisFP.
                   rewrite -JOBtsk; apply FP with (t := t); try (by done).
                   by apply/existsP; exists cpu; apply/eqP.
                 }
+                ( try ( apply platform_fp_no_multiple_jobs_of_interfering_tasks with
+                 (task_period0 := task_period) (tsk0 := tsk) (job_arrival0 := job_arrival)
+                 (higher_eq_priority0 := higher_eq_priority) (job_jitter0 := job_jitter)
+                 (arr_seq0 := arr_seq)
+                 (job_cost0 := job_cost) (job_task0 := job_task) (sched0 := sched) (t0 := t) ) ||
                 apply platform_fp_no_multiple_jobs_of_interfering_tasks with
                  (task_period := task_period) (tsk := tsk) (job_arrival := job_arrival)
                  (higher_eq_priority := higher_eq_priority) (job_jitter := job_jitter)
                  (arr_seq := arr_seq)
-                 (job_cost := job_cost) (job_task := job_task) (sched := sched) (t := t);
+                 (job_cost := job_cost) (job_task := job_task) (sched := sched) (t := t));
                   rewrite ?JOBtsk ?SAMEtsk //.
                 {
                   intros j0 tsk0 ARR0 JOB0 INTERF0.
                   feed (HASHP tsk0); first by rewrite -JOB0 FROMTS.
                   move: (HASHP INTERF0) => [R0 IN0].
-                  apply completion_monotonic with (t := job_arrival j0 + task_jitter tsk0 + R0);
+                  ( try ( apply completion_monotonic with (t0 := job_arrival j0 + task_jitter tsk0 + R0) ) ||
+                  apply completion_monotonic with (t := job_arrival j0 + task_jitter tsk0 + R0));
                     try (by done).
                   {
                     rewrite -addnA leq_add2l.
diff --git a/classic/analysis/global/jitter/interference_bound_edf.v b/classic/analysis/global/jitter/interference_bound_edf.v
index d808bc95d2eddb3fe2b30bf80170c8103da4e053..4948f71ee887f30b0c6d769a034825934dc16ba2 100644
--- a/classic/analysis/global/jitter/interference_bound_edf.v
+++ b/classic/analysis/global/jitter/interference_bound_edf.v
@@ -327,6 +327,9 @@ Module InterferenceBoundEDFJitter.
           specialize (PARAMS j ARRj); des.
           apply leq_trans with (n := service_during sched j t1 t2);
             first by apply job_interference_le_service.
+          try ( by apply cumulative_service_le_task_cost with (job_task0 := job_task)
+                              (task_deadline0 := task_deadline) (job_cost0 := job_cost)
+                              (job_deadline0 := job_deadline); try (by done) ) ||
           by apply cumulative_service_le_task_cost with (job_task := job_task)
                               (task_deadline := task_deadline) (job_cost := job_cost)
                               (job_deadline := job_deadline); try (by done).
@@ -424,8 +427,10 @@ Module InterferenceBoundEDFJitter.
               first by apply job_interference_le_service.
             rewrite leqn0; apply/eqP.
             unfold service_during.
-            by apply cumulative_service_after_job_rt_zero with
-               (job_arrival := job_arrival) (job_cost := job_cost) (R := J_k + R_k);
+            by ( try ( apply cumulative_service_after_job_rt_zero with
+               (job_arrival0 := job_arrival) (job_cost0 := job_cost) (R := J_k + R_k) ) ||
+            apply cumulative_service_after_job_rt_zero with
+               (job_arrival := job_arrival) (job_cost := job_cost) (R := J_k + R_k) );
             try (by done); rewrite addnA; last by apply ltnW.
           Qed. 
           
@@ -474,6 +479,8 @@ Module InterferenceBoundEDFJitter.
                 interference_bound_edf_j_fst_completion_implies_rt_bound_inside_interval RBOUND.
               have FST := interference_bound_edf_j_fst_is_job_of_tsk_k.
               destruct FST as [ARRfst [_ [LEdl _]]].
+              try ( apply interference_under_edf_implies_shorter_deadlines with
+                   (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LEdl; try (by done) ) ||
               apply interference_under_edf_implies_shorter_deadlines with
                    (arr_seq := arr_seq) (job_deadline := job_deadline) in LEdl; try (by done).
               destruct (D_k - R_k - J_k <= D_i) eqn:LEdk; last first.
@@ -486,6 +493,9 @@ Module InterferenceBoundEDFJitter.
                   apply leq_trans with (n := service_during sched j_fst (a_fst + J_k + R_k) t2);
                     first by apply job_interference_le_service.
                   unfold service_during; rewrite leqn0; apply/eqP.
+                  try ( by apply cumulative_service_after_job_rt_zero with
+                     (job_arrival0 := job_arrival) (job_cost0 := job_cost) (R := J_k + R_k);
+                    try (by done); rewrite addnA // leqnn ) ||
                   by apply cumulative_service_after_job_rt_zero with
                      (job_arrival := job_arrival) (job_cost := job_cost) (R := J_k + R_k);
                     try (by done); rewrite addnA // leqnn.
@@ -546,8 +556,10 @@ Module InterferenceBoundEDFJitter.
                     by apply job_interference_le_service.
                   }
                   unfold service_during.
+                  ( try ( rewrite -> cumulative_service_after_job_rt_zero with (job_cost0 := job_cost)
+                                                (job_arrival0 := job_arrival) (R := J_k + R_k) ) ||
                   rewrite -> cumulative_service_after_job_rt_zero with (job_cost := job_cost)
-                                                (job_arrival := job_arrival) (R := J_k + R_k);
+                                                (job_arrival := job_arrival) (R := J_k + R_k));
                       rewrite ?addnA //.
                   rewrite addn0; apply extend_sum; first by done.
                   rewrite -addnA leq_add2l.
@@ -572,8 +584,10 @@ Module InterferenceBoundEDFJitter.
                 by apply job_interference_le_service.
               }
               unfold service_during.
+              ( try ( rewrite -> cumulative_service_after_job_rt_zero with (job_arrival0 := job_arrival)
+                                                         (job_cost0 := job_cost) (R:=J_k + R_k) ) ||
               rewrite -> cumulative_service_after_job_rt_zero with (job_arrival := job_arrival)
-                                                         (job_cost := job_cost) (R:=J_k + R_k);
+                                                         (job_cost := job_cost) (R:=J_k + R_k));
                 rewrite ?addnA //.
               rewrite addn0.
               apply leq_trans with (n := (\sum_(a_i <= t < a_fst + J_k + R_k) 1) +
@@ -639,6 +653,8 @@ Module InterferenceBoundEDFJitter.
                 by apply interference_bound_edf_response_time_bound_of_j_fst_after_interval.
               }
               apply/eqP; rewrite -[_ _ _ _ == 0]negbK; apply/negP; red; intro BUG.
+              try ( apply interference_under_edf_implies_shorter_deadlines with
+                    (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in BUG; try (by done) ) ||
               apply interference_under_edf_implies_shorter_deadlines with
                     (arr_seq := arr_seq) (job_deadline := job_deadline) in BUG; try (by done).
               rewrite interference_bound_edf_j_fst_deadline
@@ -707,6 +723,8 @@ Module InterferenceBoundEDFJitter.
                       -interference_bound_edf_j_i_deadline.
               apply leq_trans with (n := a_i + job_deadline j_i);
                 last by rewrite leq_add2r leq_addr.
+              try ( by apply interference_under_edf_implies_shorter_deadlines with (arr_seq0 := arr_seq)
+                (job_arrival0 := job_arrival) (job_deadline0 := job_deadline) in LEdl ) ||
               by apply interference_under_edf_implies_shorter_deadlines with (arr_seq := arr_seq)
                 (job_arrival := job_arrival) (job_deadline := job_deadline) in LEdl.
             Qed.
@@ -808,6 +826,7 @@ Module InterferenceBoundEDFJitter.
                 first by apply job_interference_le_service.
               rewrite leqn0; apply/eqP; unfold service_during.
               rewrite (cumulative_service_before_job_arrival_zero job_arrival) //.
+              try ( by apply arrival_before_jitter with (job_jitter0 := job_jitter) ) ||
               by apply arrival_before_jitter with (job_jitter := job_jitter).
             Qed.
 
@@ -839,8 +858,10 @@ Module InterferenceBoundEDFJitter.
                                                                           sched j_snd t1 t2);
                   first by apply job_interference_le_service.
                 rewrite leqn0; apply/eqP.
-                apply cumulative_service_before_job_arrival_zero with (job_arrival := job_arrival);
+                ( try ( apply cumulative_service_before_job_arrival_zero with (job_arrival0 := job_arrival) ) ||
+                apply cumulative_service_before_job_arrival_zero with (job_arrival := job_arrival));
                   try (by done).
+                try ( by apply arrival_before_jitter with (job_jitter0 := job_jitter) ) ||
                 by apply arrival_before_jitter with (job_jitter := job_jitter).
               }
               apply leq_trans with (n := a_fst + p_k).
@@ -951,6 +972,8 @@ Module InterferenceBoundEDFJitter.
               last by rewrite leq_add2l.
             have LST := interference_bound_edf_j_lst_is_job_of_tsk_k.
             destruct LST as [LSTarr [_ [LEdl _]]].  
+            try ( apply interference_under_edf_implies_shorter_deadlines with
+              (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LEdl; try (by done) ) ||
             apply interference_under_edf_implies_shorter_deadlines with
               (arr_seq := arr_seq) (job_deadline := job_deadline) in LEdl; try (by done).
             unfold D_i, D_k in DIST; rewrite interference_bound_edf_j_lst_deadline
@@ -1040,6 +1063,8 @@ Module InterferenceBoundEDFJitter.
               destruct LST as [LSTarr [_ [ LSTserv _]]].
               unfold D_i, D_k, a_lst, t1; rewrite -interference_bound_edf_j_lst_deadline
                                                   -interference_bound_edf_j_i_deadline.
+              try ( by apply interference_under_edf_implies_shorter_deadlines with
+                       (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LSTserv ) ||
               by apply interference_under_edf_implies_shorter_deadlines with
                        (arr_seq := arr_seq) (job_deadline := job_deadline) in LSTserv.
             Qed.
@@ -1085,8 +1110,10 @@ Module InterferenceBoundEDFJitter.
                 apply leq_trans with (n := service_during sched j_fst (a_fst + J_k + R_k) t2);
                   first by apply job_interference_le_service.
                 rewrite leqn0; apply/eqP.
+                ( try ( apply cumulative_service_after_job_rt_zero with (job_arrival0 := job_arrival)
+                                                     (job_cost0 := job_cost) (R := J_k + R_k) ) ||
                 apply cumulative_service_after_job_rt_zero with (job_arrival := job_arrival)
-                                                     (job_cost := job_cost) (R := J_k + R_k);
+                                                     (job_cost := job_cost) (R := J_k + R_k));
                   [ by done | rewrite addnA | by rewrite addnA leqnn].
                 by apply interference_bound_edf_j_fst_completed_on_time.
               }
@@ -1165,6 +1192,8 @@ Module InterferenceBoundEDFJitter.
                                                   -interference_bound_edf_j_i_deadline.
               apply leq_trans with (n := a_i + job_deadline j_i);
                 last by rewrite -addnA leq_add2l leq_addl.
+              try ( by apply interference_under_edf_implies_shorter_deadlines
+                with (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LSTserv ) ||
               by apply interference_under_edf_implies_shorter_deadlines
                 with (arr_seq := arr_seq) (job_deadline := job_deadline) in LSTserv.
             Qed.
diff --git a/classic/analysis/global/jitter/workload_bound.v b/classic/analysis/global/jitter/workload_bound.v
index de982499420276771455d1393acb20ca434d7525..463f35ccc19bdfe3397d22357aa71cd128f2b556 100644
--- a/classic/analysis/global/jitter/workload_bound.v
+++ b/classic/analysis/global/jitter/workload_bound.v
@@ -399,8 +399,10 @@ Module WorkloadBoundJitter.
           }
           instantiate (1 := elem); move => [FSTARR [FSTtsk [/eqP FSTserv FSTin]]].
           apply FSTserv.
+          ( try ( apply cumulative_service_after_job_rt_zero with (job_arrival0 := job_arrival)
+                  (job_cost0 := job_cost) (R := task_jitter tsk + R_tsk) ) ||
           apply cumulative_service_after_job_rt_zero with (job_arrival := job_arrival)
-                  (job_cost := job_cost) (R := task_jitter tsk + R_tsk);
+                  (job_cost := job_cost) (R := task_jitter tsk + R_tsk));
             [by done | | by rewrite addnA ltnW].
           rewrite addnA; apply H_response_time_bound; try (by done).
           by apply leq_trans with (n := t1); last by apply leq_addr.
@@ -419,6 +421,7 @@ Module WorkloadBoundJitter.
           instantiate (1 := elem); move => [LSTarr [LSTtsk [/eqP LSTserv LSTin]]].
           apply LSTserv.
           apply (cumulative_service_before_job_arrival_zero job_arrival); last by done.
+          try ( by apply arrival_before_jitter with (job_jitter0 := job_jitter) ) ||
           by apply arrival_before_jitter with (job_jitter := job_jitter).
         Qed.
 
@@ -475,6 +478,7 @@ Module WorkloadBoundJitter.
                 last by apply leq_sum; ins; apply service_at_most_one.
               rewrite (cumulative_service_before_job_arrival_zero job_arrival);
                 [by apply leqnn | | by apply leqnn].
+              try ( by apply arrival_before_jitter with (job_jitter0 := job_jitter) ) ||
               by apply arrival_before_jitter with (job_jitter := job_jitter).
             }
           }
@@ -684,6 +688,9 @@ Module WorkloadBoundJitter.
             have INlst := workload_bound_j_lst_is_job_of_tsk; des.
             have PARAMSfst := JOBPARAMS j_fst INfst; des.
             have PARAMSlst := JOBPARAMS j_lst INlst; des.
+            try ( by apply leq_add; apply cumulative_service_le_task_cost with
+                      (task_deadline0 := task_deadline) (job_cost0 := job_cost)
+                      (job_deadline0 := job_deadline) (job_task0 := job_task) ) ||
             by apply leq_add; apply cumulative_service_le_task_cost with
                       (task_deadline := task_deadline) (job_cost := job_cost)
                       (job_deadline := job_deadline) (job_task := job_task).  
diff --git a/classic/analysis/global/parallel/bertogna_edf_theory.v b/classic/analysis/global/parallel/bertogna_edf_theory.v
index 8031119cf6d3f1d2cc7c8fbefac7d6547e91f9a3..7d76bb6e48e8d6cc068b8820c171adc8a459b949 100644
--- a/classic/analysis/global/parallel/bertogna_edf_theory.v
+++ b/classic/analysis/global/parallel/bertogna_edf_theory.v
@@ -206,8 +206,10 @@ Module ResponseTimeAnalysisEDF.
           x tsk_other <= edf_specific_bound tsk_other R_other.
         Proof.
           rename H_job_of_tsk into JOBtsk, H_all_jobs_from_taskset into FROMTS.
+          ( try ( apply interference_bound_edf_bounds_interference with (job_deadline0 := job_deadline)
+                                               (arr_seq0 := arr_seq) (ts0 := ts); try (by done) ) ||
           apply interference_bound_edf_bounds_interference with (job_deadline := job_deadline)
-                                               (arr_seq := arr_seq) (ts := ts); try (by done);
+                                               (arr_seq := arr_seq) (ts := ts); try (by done));
           [ by rewrite -JOBtsk FROMTS
           | by apply bertogna_edf_tsk_other_in_ts
           | by apply H_tasks_miss_no_deadlines
@@ -315,6 +317,8 @@ Module ResponseTimeAnalysisEDF.
         }
         clear SCHED; rename SCHED' into SCHED.
         move: (SCHED) => PENDING.
+        try ( apply scheduled_implies_pending with (job_cost0 := job_cost) (job_arrival0 := job_arrival)
+          in PENDING; try (by done) ) ||
         apply scheduled_implies_pending with (job_cost := job_cost) (job_arrival := job_arrival)
           in PENDING; try (by done).
         destruct (ltnP (job_arrival j_other) (job_arrival j)) as [BEFOREother | BEFOREj].
@@ -322,6 +326,7 @@ Module ResponseTimeAnalysisEDF.
           move: (BEFOREother) => LT; rewrite -(ltn_add2r R) in LT.
           specialize (BEFOREok j_other tsk R ARRother SAMEtsk INbounds LT).
           move: PENDING => /andP [_ /negP NOTCOMP]; apply NOTCOMP.
+          try ( apply completion_monotonic with (t0 := job_arrival j_other + R); try (by done) ) ||
           apply completion_monotonic with (t := job_arrival j_other + R); try (by done).
           apply leq_trans with (n := job_arrival j); last by done.
           apply leq_trans with (n := job_arrival j_other + task_deadline tsk);
diff --git a/classic/analysis/global/parallel/bertogna_fp_comp.v b/classic/analysis/global/parallel/bertogna_fp_comp.v
index 3dcd6cc038c0547337b33ef686346fe1fc9bce32..e4394284dc969456176d2f12a7c355520aaa890d 100644
--- a/classic/analysis/global/parallel/bertogna_fp_comp.v
+++ b/classic/analysis/global/parallel/bertogna_fp_comp.v
@@ -585,6 +585,11 @@ Module ResponseTimeIterationFP.
         }
         intros [_ [_ [REC DL]]].
 
+        try ( apply bertogna_cirinei_response_time_bound_fp with
+              (task_cost0 := task_cost) (task_period0 := task_period)
+              (task_deadline0 := task_deadline) (job_deadline0 := job_deadline) (tsk0 := (TASK idx))
+              (job_task0 := job_task) (ts0 := ts) (hp_bounds0 := take idx hp_bounds)
+              (higher_eq_priority := higher_priority); try (by done) ) ||
         apply bertogna_cirinei_response_time_bound_fp with
               (task_cost := task_cost) (task_period := task_period)
               (task_deadline := task_deadline) (job_deadline := job_deadline) (tsk := (TASK idx))
diff --git a/classic/analysis/global/parallel/bertogna_fp_theory.v b/classic/analysis/global/parallel/bertogna_fp_theory.v
index 333a3d528c663497f33ebe05df5e586cdfc048be..f1f2b7cda7dc6408f770bd58a2bb13a3134b422e 100644
--- a/classic/analysis/global/parallel/bertogna_fp_theory.v
+++ b/classic/analysis/global/parallel/bertogna_fp_theory.v
@@ -201,8 +201,10 @@ Module ResponseTimeAnalysisFP.
           apply leq_trans with (n := workload job_task sched tsk_other
                                               (job_arrival j) (job_arrival j + R));
             first by apply task_interference_le_workload.
-          by apply workload_bounded_by_W with (task_deadline := task_deadline) (arr_seq := arr_seq)
-              (job_arrival := job_arrival)  (job_cost := job_cost) (job_deadline := job_deadline);
+          by ( try ( apply workload_bounded_by_W with (task_deadline0 := task_deadline) (arr_seq0 := arr_seq)
+              (job_arrival0 := job_arrival)  (job_cost0 := job_cost) (job_deadline0 := job_deadline) ) ||
+          apply workload_bounded_by_W with (task_deadline := task_deadline) (arr_seq := arr_seq)
+              (job_arrival := job_arrival)  (job_cost := job_cost) (job_deadline := job_deadline));
             try (by ins);
               [ by ins; apply TASK_PARAMS
               | by ins; apply RESP with (hp_tsk := tsk_other)].
@@ -315,12 +317,15 @@ Module ResponseTimeAnalysisFP.
               by apply/existsP; exists cpu; rewrite SCHED.
             } clear SCHED; rename SCHED' into SCHED.
             move: (SCHED) => PENDING.
+            try ( apply scheduled_implies_pending with (job_arrival0 := job_arrival)
+                                                 (job_cost0 := job_cost) in PENDING; try (by done) ) ||
             apply scheduled_implies_pending with (job_arrival := job_arrival)
                                                  (job_cost := job_cost) in PENDING; try (by done).
             destruct (ltnP (job_arrival j_other) (job_arrival j)) as [BEFOREother | BEFOREj].
             {
               specialize (BEFOREok j_other ARRother SAMEtsk BEFOREother).
               move: PENDING => /andP [_ /negP NOTCOMP]; apply NOTCOMP.
+              try ( apply completion_monotonic with (t0 := job_arrival j_other + R); try (by done) ) ||
               apply completion_monotonic with (t := job_arrival j_other + R); try (by done).
               apply leq_trans with (n := job_arrival j); last by done.
               apply leq_trans with (n := job_arrival j_other + task_deadline tsk);
@@ -466,4 +471,4 @@ Module ResponseTimeAnalysisFP.
 
   End ResponseTimeBound.
 
-End ResponseTimeAnalysisFP.
\ No newline at end of file
+End ResponseTimeAnalysisFP.
diff --git a/classic/analysis/global/parallel/interference_bound_edf.v b/classic/analysis/global/parallel/interference_bound_edf.v
index d3fb6f870e7aceedf3dec44937cc5cb0a1f9eca4..75187d19d69cfed98c580ea7394b893120d34607 100644
--- a/classic/analysis/global/parallel/interference_bound_edf.v
+++ b/classic/analysis/global/parallel/interference_bound_edf.v
@@ -342,6 +342,8 @@ Module InterferenceBoundEDF.
           specialize (PARAMS j ARRj); des.
           apply leq_trans with (n := service_during sched j t1 t2);
             first by apply job_interference_le_service.
+          try ( by apply cumulative_service_le_task_cost with (job_task0 := job_task)
+            (task_deadline0 := task_deadline) (job_cost0 := job_cost) (job_deadline0 := job_deadline) ) ||
           by apply cumulative_service_le_task_cost with (job_task := job_task)
             (task_deadline := task_deadline) (job_cost := job_cost) (job_deadline := job_deadline).
         Qed.
@@ -440,6 +442,9 @@ Module InterferenceBoundEDF.
             rewrite -leqn0; apply leq_trans with (n := service_during sched j_fst t1 t2);
               first by apply job_interference_le_service.
             rewrite leqn0; apply/eqP.
+            try ( by apply cumulative_service_after_job_rt_zero with (job_cost0 := job_cost)
+                                              (job_arrival0 := job_arrival) (R := R_k);
+              try (by done); apply ltnW ) ||
             by apply cumulative_service_after_job_rt_zero with (job_cost := job_cost)
                                               (job_arrival := job_arrival) (R := R_k);
               try (by done); apply ltnW.
@@ -545,6 +550,7 @@ Module InterferenceBoundEDF.
               apply leq_trans with (n := service_during sched j_lst t1 t2);
                 first by apply job_interference_le_service.
               rewrite leqn0; apply/eqP; unfold service_during.
+              try ( by apply cumulative_service_before_job_arrival_zero with (job_arrival0 := job_arrival) ) ||
               by apply cumulative_service_before_job_arrival_zero with (job_arrival := job_arrival).
             Qed.
 
@@ -569,6 +575,7 @@ Module InterferenceBoundEDF.
                                                                           sched j_snd t1 t2);
                   first by apply job_interference_le_service.
                 rewrite leqn0; apply/eqP.
+                try ( by apply cumulative_service_before_job_arrival_zero with (job_arrival0 := job_arrival) ) ||
                 by apply cumulative_service_before_job_arrival_zero with (job_arrival := job_arrival).
               }
               apply leq_trans with (n := a_fst + p_k).
@@ -653,6 +660,8 @@ Module InterferenceBoundEDF.
               last by rewrite leq_add2l.
             have FST := interference_bound_edf_j_fst_is_job_of_tsk_k.
             destruct FST as [ARRfst [_ [ LEdl _]]].  
+            try ( apply interference_under_edf_implies_shorter_deadlines with
+                (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LEdl; try (by done) ) ||
             apply interference_under_edf_implies_shorter_deadlines with
                 (arr_seq := arr_seq) (job_deadline := job_deadline) in LEdl; try (by done).
             rewrite addnC [D_i + _]addnC.
@@ -706,6 +715,8 @@ Module InterferenceBoundEDF.
               last by rewrite leq_add2r.
             have LST := interference_bound_edf_j_lst_is_job_of_tsk_k.
             destruct LST as [ARRlst [_ [ LEdl _]]].  
+            try ( apply interference_under_edf_implies_shorter_deadlines with
+                  (arr_seq0 := arr_seq) (job_deadline0 := job_deadline) in LEdl; try (by done) ) ||
             apply interference_under_edf_implies_shorter_deadlines with
                   (arr_seq := arr_seq) (job_deadline := job_deadline) in LEdl; try (by done).
             unfold D_i, D_k in DIST; rewrite interference_bound_edf_j_lst_deadline
diff --git a/classic/analysis/uni/basic/fp_rta_comp.v b/classic/analysis/uni/basic/fp_rta_comp.v
index 206ee8cb1b14a26d2b795a34b88994dbba0cc77e..58043a5e490bec3a06bcdab032022b03704f9c68 100644
--- a/classic/analysis/uni/basic/fp_rta_comp.v
+++ b/classic/analysis/uni/basic/fp_rta_comp.v
@@ -221,6 +221,8 @@ Module ResponseTimeIterationFP.
                 apply total_workload_bound_fp_non_decreasing.
             }
             apply leq_trans with (n := task_cost tsk); first by done.
+            try ( apply iter_fixpoint_ge_bottom with (f0 := f) (max_steps := s);
+              try (by done) ) ||
             apply iter_fixpoint_ge_bottom with (f := f) (max_steps := s);
               try (by done).
             by apply fp_claimed_bounds_computes_iteration.
@@ -323,18 +325,31 @@ Module ResponseTimeIterationFP.
              valid_sporadic_taskset, is_valid_sporadic_task in *.
       unfold RTA_claimed_bounds; intros tsk R.
       case SOME: fp_claimed_bounds => [rt_bounds|] IN; last by done.
+      try ( apply uniprocessor_response_time_bound_fp with
+            (task_cost0 := task_cost) (task_period0 := task_period)
+            (ts0 := ts) (task_deadline0 := task_deadline)
+            (job_deadline0 := job_deadline)
+            (higher_eq_priority0 := higher_eq_priority); try (by done) ) ||
       apply uniprocessor_response_time_bound_fp with
             (task_cost := task_cost) (task_period := task_period)
             (ts := ts) (task_deadline := task_deadline)
             (job_deadline := job_deadline)
             (higher_eq_priority := higher_eq_priority); try (by done).
       {
+        ( try ( apply fp_claimed_bounds_gt_zero with (task_cost0 := task_cost)
+          (task_period0 := task_period) (task_deadline0 := task_deadline)
+          (higher_eq_priority0 := higher_eq_priority) (ts0 := ts)
+          (rt_bounds0 := rt_bounds) (tsk0 := tsk) ) ||
         apply fp_claimed_bounds_gt_zero with (task_cost := task_cost)
           (task_period := task_period) (task_deadline := task_deadline)
           (higher_eq_priority := higher_eq_priority) (ts := ts)
-          (rt_bounds := rt_bounds) (tsk := tsk); try (by done).
+          (rt_bounds := rt_bounds) (tsk := tsk)); try (by done).
         {
-          feed (PARAMS tsk); last by move: PARAMS => [P1 _].
+          feed (PARAMS tsk) ; last by move: PARAMS => [P1 _].
+          try ( by apply fp_claimed_bounds_from_taskset with
+            (task_cost0 := task_cost) (task_period0 := task_period)
+            (task_deadline0 := task_deadline) (rt_bounds0 := rt_bounds)
+            (higher_eq_priority0 := higher_eq_priority) (R0 := R) ) ||
           by apply fp_claimed_bounds_from_taskset with
             (task_cost := task_cost) (task_period := task_period)
             (task_deadline := task_deadline) (rt_bounds := rt_bounds)
@@ -342,6 +357,8 @@ Module ResponseTimeIterationFP.
         }
         by intros tsk0 IN0; specialize (PARAMS tsk0 IN0); des.
       }
+      try ( by apply fp_claimed_bounds_yields_fixed_point with
+        (task_deadline0 := task_deadline) (rt_bounds0 := rt_bounds) ) ||
       by apply fp_claimed_bounds_yields_fixed_point with
         (task_deadline := task_deadline) (rt_bounds := rt_bounds). 
     Qed.
@@ -367,8 +384,10 @@ Module ResponseTimeIterationFP.
         intros tsk IN.
         move: (RESP rt_bounds TEST tsk IN) => [R INbounds].
         specialize (DL rt_bounds TEST tsk R INbounds).
+        ( try ( apply task_completes_before_deadline with
+                (task_deadline0 := task_deadline) (R0 := R) ) ||
         apply task_completes_before_deadline with
-                (task_deadline := task_deadline) (R := R); try (by done);
+                (task_deadline := task_deadline) (R := R)); try (by done);
           first by intros j ARRj; specialize (JOBPARAMS j ARRj); move: JOBPARAMS => [_ [_ EQ]].
         by apply RTA; rewrite /RTA_claimed_bounds TEST.
       Qed.
@@ -391,4 +410,4 @@ Module ResponseTimeIterationFP.
     
   End ProvingCorrectness.
 
-End ResponseTimeIterationFP.
\ No newline at end of file
+End ResponseTimeIterationFP.
diff --git a/classic/analysis/uni/basic/fp_rta_theory.v b/classic/analysis/uni/basic/fp_rta_theory.v
index 98830276dc2dcb529070bc842a19a1c104d4fe14..1e7ad76b22b8639d69c2ddd96e4ad0f4248a00e1 100644
--- a/classic/analysis/uni/basic/fp_rta_theory.v
+++ b/classic/analysis/uni/basic/fp_rta_theory.v
@@ -101,6 +101,10 @@ Module ResponseTimeAnalysisFP.
       move: (posnP (job_cost j)) => [Z|POS].
       { by rewrite /is_response_time_bound_of_job /completed_by Z. }
       set prio := FP_to_JLFP job_task higher_eq_priority.
+      try ( apply busy_interval_bounds_response_time with
+          (arr_seq0 := arr_seq)
+          (higher_eq_priority0 := prio)
+          (priority_inversion_bound := 0); try by done ) ||
       apply busy_interval_bounds_response_time with
           (arr_seq := arr_seq)
           (higher_eq_priority := prio)
@@ -129,6 +133,10 @@ Module ResponseTimeAnalysisFP.
         } 
         { by rewrite /scheduled_at SCHED. }
       }
+      try ( apply fp_workload_bound_holds with
+          (job_arrival0 := job_arrival) (task_cost0 := task_cost)
+          (task_period0 := task_period) (task_deadline0 := task_deadline)
+          (job_deadline0 := job_deadline) (ts0 := ts); try (by done) ) ||
       apply fp_workload_bound_holds with
           (job_arrival := job_arrival) (task_cost := task_cost)
           (task_period := task_period) (task_deadline := task_deadline)
@@ -138,4 +146,4 @@ Module ResponseTimeAnalysisFP.
 
   End ResponseTimeBound.
 
-End ResponseTimeAnalysisFP.
\ No newline at end of file
+End ResponseTimeAnalysisFP.
diff --git a/classic/analysis/uni/basic/tdma_rta_theory.v b/classic/analysis/uni/basic/tdma_rta_theory.v
index 6c4f833072e1d939c2182f2a1bd8f67f4702128b..21fe61975f8aa59b50e44e1dafe67c9607b2cdf5 100644
--- a/classic/analysis/uni/basic/tdma_rta_theory.v
+++ b/classic/analysis/uni/basic/tdma_rta_theory.v
@@ -132,16 +132,25 @@ Module ResponseTimeAnalysisTDMA.
       induction t as [ t IHt ] using (well_founded_induction lt_wf).
       case t eqn:GT;intros. 
       - have INJ: arrives_in arr_seq j by exists 0.
-        (apply completion_monotonic with (t:=job_arrival j + WCRT task_cost task_time_slot ts tsk )
-        ;trivial;try by rewrite leq_add2l H); apply job_completed_by_WCRT
+        (( try ( apply completion_monotonic with (t0:=job_arrival j + WCRT task_cost task_time_slot ts tsk ) ) ||  apply completion_monotonic with (t:=job_arrival j + WCRT task_cost task_time_slot ts tsk ) )
+        ;trivial;try by rewrite leq_add2l H); ( try ( apply job_completed_by_WCRT
+        with (task_deadline0:=task_deadline)
+                 (arr_seq0:=arr_seq)(job_deadline0:=job_deadline)
+                 (job_task0:=job_task)(slot_order0:=slot_order) ) || apply job_completed_by_WCRT
         with (task_deadline:=task_deadline)
                  (arr_seq:=arr_seq)(job_deadline:=job_deadline)
-                 (job_task:=job_task)(slot_order:=slot_order);eauto 2.
+                 (job_task:=job_task)(slot_order:=slot_order) );eauto 2.
         intros. apply H_arrival_times_are_consistent in ARR. ssrlia.
       - have INJ: arrives_in arr_seq j by exists n.+1.
+        try ( apply completion_monotonic 
+          with (t0:=job_arrival j + WCRT task_cost task_time_slot ts tsk);auto ) ||
         apply completion_monotonic 
           with (t:=job_arrival j + WCRT task_cost task_time_slot ts tsk);auto.
-        by rewrite leq_add2l H. apply job_completed_by_WCRT
+        by rewrite leq_add2l H. try ( apply job_completed_by_WCRT
+        with (task_deadline0:=task_deadline)
+                 (arr_seq0:=arr_seq)(job_deadline0:=job_deadline)
+                 (job_task0:=job_task)(slot_order0:=slot_order);auto ) ||
+                                    apply job_completed_by_WCRT
         with (task_deadline:=task_deadline)
                  (arr_seq:=arr_seq)(job_deadline:=job_deadline)
                  (job_task:=job_task)(slot_order:=slot_order);auto. 
@@ -149,6 +158,8 @@ Module ResponseTimeAnalysisTDMA.
         have PERIOD: job_arrival j_other + task_period (job_task j_other)<= job_arrival j.
         apply H_sporadic_tasks;auto. case (j==j_other)eqn: JJ;move/eqP in JJ;last auto.
         have JO:job_arrival j_other = job_arrival j by f_equal. ssrlia.
+        try ( apply completion_monotonic with (t0:= job_arrival j_other +
+           task_period (job_task j_other)); auto ) ||
         apply completion_monotonic with (t:= job_arrival j_other +
            task_period (job_task j_other)); auto.
         have ARRJ: job_arrival j = n.+1 by auto.
@@ -189,21 +200,35 @@ Module ResponseTimeAnalysisTDMA.
       intros j arr_seq_j JobTsk.
       apply completion_monotonic with (t:=job_arrival j + RT j); try done. 
       - rewrite leq_add2l /BOUND. 
+        (try ( apply (response_time_le_WCRT) 
+        with (task_cost0:=task_cost) (task_deadline0:=task_deadline)(sched0:=sched)
+             (job_arrival0:=job_arrival)(job_cost0:=job_cost)(job_deadline0:=job_deadline)
+             (job_task0:=job_task)(ts0:=ts)(arr_seq0:=arr_seq)
+             (slot_order0:=slot_order)(Job0:=Job)(tsk0:=tsk) ) ||
         apply (response_time_le_WCRT) 
         with (task_cost:=task_cost) (task_deadline:=task_deadline)(sched:=sched)
              (job_arrival:=job_arrival)(job_cost:=job_cost)(job_deadline:=job_deadline)
              (job_task:=job_task)(ts:=ts)(arr_seq:=arr_seq)
-             (slot_order:=slot_order)(Job:=Job)(tsk:=tsk); try done;auto;try (intros; 
+             (slot_order:=slot_order)(Job:=Job)(tsk:=tsk)); try done;auto;try (intros; 
         by apply all_previous_jobs_of_same_task_completed).
-      - apply completed_by_end_time 
+      - ( try ( apply completed_by_end_time 
+        with (sched0:=sched)(job_arrival0:=job_arrival)
+             (job_cost0:=job_cost) ) ||
+        apply completed_by_end_time 
         with (sched:=sched)(job_arrival:=job_arrival)
-             (job_cost:=job_cost); first exact.
+             (job_cost:=job_cost)); first exact.
+        ( try ( apply completes_at_end_time
+        with 
+             (job_arrival0:=job_arrival)(task_cost0:=task_cost)(arr_seq0:=arr_seq)
+             (job_task0:=job_task)(job_deadline0:=job_deadline)(task_deadline0:=task_deadline)
+             (sched0:=sched)(ts0:=ts)(slot_order0:=slot_order)
+             (tsk0:=tsk) (j0:=j) ) ||
         apply completes_at_end_time
         with 
              (job_arrival:=job_arrival)(task_cost:=task_cost)(arr_seq:=arr_seq)
              (job_task:=job_task)(job_deadline:=job_deadline)(task_deadline:=task_deadline)
              (sched:=sched)(ts:=ts)(slot_order:=slot_order)
-             (tsk:=tsk) (j:=j); try auto;try (intros; 
+             (tsk:=tsk) (j:=j)); try auto;try (intros; 
         by apply all_previous_jobs_of_same_task_completed).
     Qed. 
 
@@ -218,7 +243,8 @@ Module ResponseTimeAnalysisTDMA.
       (* We can prove the theorem: there is no deadline miss of task tsk *)
       Theorem taskset_schedulable_by_tdma : no_deadline_missed_by_task tsk.
       Proof.
-        apply task_completes_before_deadline with (task_deadline:=task_deadline) (R:=BOUND)
+        ( try ( apply task_completes_before_deadline with (task_deadline0:=task_deadline) (R:=BOUND) ) ||
+        apply task_completes_before_deadline with (task_deadline:=task_deadline) (R:=BOUND) )
         ;try done.
         move => j arr_seqJ.
         - by apply H_valid_job_parameters.
@@ -241,6 +267,3 @@ Module ResponseTimeAnalysisTDMA.
   End ResponseTimeBound.
 
 End ResponseTimeAnalysisTDMA.
-
-
-
diff --git a/classic/analysis/uni/basic/tdma_wcrt_analysis.v b/classic/analysis/uni/basic/tdma_wcrt_analysis.v
index 76d7a36047b3227d1874899a165d930a5b941a58..0075cfbf39a274bf2aa765a10af569ac1933e3a4 100644
--- a/classic/analysis/uni/basic/tdma_wcrt_analysis.v
+++ b/classic/analysis/uni/basic/tdma_wcrt_analysis.v
@@ -185,6 +185,8 @@ Import Job  TaskArrival ScheduleOfTask  ResponseTime Platform_TDMA end_time Sche
         apply /andP. split.
         - rewrite /has_arrived. auto.
         - rewrite /completed_by /service /service_during.
+          try ( rewrite ->cumulative_service_before_job_arrival_zero
+          with (job_arrival0:=job_arrival)) ||
           rewrite ->cumulative_service_before_job_arrival_zero
           with (job_arrival:=job_arrival). rewrite -ltnNge. 
           apply H_valid_job. apply H_jobs_must_arrive_to_execute. auto.
@@ -710,6 +712,7 @@ Import Job  TaskArrival ScheduleOfTask  ResponseTime Platform_TDMA end_time Sche
     apply completes_at_end_time_pre.
     by apply pendingArrival.
     rewrite /service /service_during.
+    try ( by rewrite ->cumulative_service_before_job_arrival_zero with (job_arrival0:=job_arrival) ) ||
     by rewrite ->cumulative_service_before_job_arrival_zero with (job_arrival:=job_arrival).
     Qed.
 
@@ -826,6 +829,7 @@ Import Job  TaskArrival ScheduleOfTask  ResponseTime Platform_TDMA end_time Sche
         apply completion_monotonic with (t:= job_arrival j + job_response_time_tdma_in_at_most_one_job_is_pending);auto.
         rewrite leq_add2l.
         apply response_time_le_WCRT.
+        try ( apply completed_by_end_time with (job_arrival0:=job_arrival);auto ) ||
         apply completed_by_end_time with (job_arrival:=job_arrival);auto.
         apply completes_at_end_time.
       Qed.
diff --git a/classic/analysis/uni/jitter/fp_rta_comp.v b/classic/analysis/uni/jitter/fp_rta_comp.v
index cbafbe9b443ccd4fc7e93f9b01ceb1a23c12ef30..4317091000217dbe704d42076611acd0e7cb3020 100644
--- a/classic/analysis/uni/jitter/fp_rta_comp.v
+++ b/classic/analysis/uni/jitter/fp_rta_comp.v
@@ -344,11 +344,19 @@ Module ResponseTimeIterationFP.
              valid_sporadic_taskset, is_valid_sporadic_task in *.
       unfold RTA_claimed_bounds; intros tsk R.
       case SOME: fp_claimed_bounds => [rt_bounds|] IN; last by done.
+      try ( apply uniprocessor_response_time_bound_fp with
+            (task_cost0 := task_cost) (task_period0 := task_period)
+            (ts0 := ts) (job_jitter0 := job_jitter)
+            (higher_eq_priority0 := higher_eq_priority); try (by done) ) ||
       apply uniprocessor_response_time_bound_fp with
             (task_cost := task_cost) (task_period := task_period)
             (ts := ts) (job_jitter := job_jitter)
             (higher_eq_priority := higher_eq_priority); try (by done).
       {
+        try ( apply fp_claimed_bounds_gt_zero with (task_cost0 := task_cost)
+          (task_period0 := task_period) (task_deadline0 := task_deadline)
+          (higher_eq_priority0 := higher_eq_priority) (ts0 := ts) (task_jitter0 := task_jitter)
+          (rt_bounds0 := rt_bounds) (tsk0 := tsk); try (by done) ) ||
         apply fp_claimed_bounds_gt_zero with (task_cost := task_cost)
           (task_period := task_period) (task_deadline := task_deadline)
           (higher_eq_priority := higher_eq_priority) (ts := ts) (task_jitter := task_jitter)
@@ -356,6 +364,8 @@ Module ResponseTimeIterationFP.
         apply H_positive_costs.
         by eapply fp_claimed_bounds_from_taskset; eauto 1.
       }
+      try ( by apply fp_claimed_bounds_yields_fixed_point with
+        (task_deadline0 := task_deadline) (rt_bounds0 := rt_bounds) ) ||
       by apply fp_claimed_bounds_yields_fixed_point with
         (task_deadline := task_deadline) (rt_bounds := rt_bounds). 
     Qed.
@@ -381,6 +391,8 @@ Module ResponseTimeIterationFP.
         intros tsk IN.
         move: (RESP rt_bounds TEST tsk IN) => [R INbounds].
         specialize (DL rt_bounds TEST tsk R INbounds).
+        try ( apply task_completes_before_deadline with
+                (task_deadline0 := task_deadline) (R0 := task_jitter tsk + R); try (by done) ) ||
         apply task_completes_before_deadline with
                 (task_deadline := task_deadline) (R := task_jitter tsk + R); try (by done).
         by apply BOUND; rewrite /RTA_claimed_bounds TEST.
@@ -404,4 +416,4 @@ Module ResponseTimeIterationFP.
     
   End ProvingCorrectness.
   
-End ResponseTimeIterationFP.
\ No newline at end of file
+End ResponseTimeIterationFP.
diff --git a/classic/analysis/uni/jitter/fp_rta_theory.v b/classic/analysis/uni/jitter/fp_rta_theory.v
index 35656284076d0d9ed9e3e45ddb35d5ea4b9e88e9..3296e94cee72233b9862670e3775c577f77469dd 100644
--- a/classic/analysis/uni/jitter/fp_rta_theory.v
+++ b/classic/analysis/uni/jitter/fp_rta_theory.v
@@ -119,11 +119,15 @@ Module ResponseTimeAnalysisFP.
         by rewrite -JOBtsk; apply H_job_jitter_le_task_jitter.
       }
       set prio := FP_to_JLFP job_task higher_eq_priority.
+      try ( apply busy_interval_bounds_response_time with (arr_seq0 := arr_seq)
+                                                    (higher_eq_priority0 := prio); try (by done) ) ||
       apply busy_interval_bounds_response_time with (arr_seq := arr_seq)
                                                     (higher_eq_priority := prio); try (by done).
         - by intros x; apply H_priority_is_reflexive.
         - by intros x z y; apply H_priority_is_transitive.
       intros t.
+      try ( apply fp_workload_bound_holds with (task_cost0 := task_cost)
+            (task_period0 := task_period) (task_jitter0 := task_jitter) (ts0 := ts); try (by done) ) ||
       apply fp_workload_bound_holds with (task_cost := task_cost)
             (task_period := task_period) (task_jitter := task_jitter) (ts := ts); try (by done).
       by rewrite JOBtsk.
@@ -131,4 +135,4 @@ Module ResponseTimeAnalysisFP.
 
   End ResponseTimeBound.
 
-End ResponseTimeAnalysisFP.
\ No newline at end of file
+End ResponseTimeAnalysisFP.
diff --git a/classic/analysis/uni/susp/dynamic/jitter/jitter_schedule_service.v b/classic/analysis/uni/susp/dynamic/jitter/jitter_schedule_service.v
index 25b938f3ea54f3ccf7014bfa70e5dc6a427a6917..b145a9948ec3a34e3e267c64170b74a69e586860 100644
--- a/classic/analysis/uni/susp/dynamic/jitter/jitter_schedule_service.v
+++ b/classic/analysis/uni/susp/dynamic/jitter/jitter_schedule_service.v
@@ -254,6 +254,7 @@ Module JitterScheduleService.
             rewrite big_mkcond [X in _ <= X]big_mkcond.
             apply leq_sum_sub_uniq; first by apply actual_arrivals_uniq.
             intros j0 IN0.
+            try ( by apply actual_arrivals_between_sub with (t3 := 0) (t4 := t) ) ||
             by apply actual_arrivals_between_sub with (t1 := 0) (t2 := t).
           }
           apply leq_sum_seq; rewrite /act /actual_arrivals; intros j0 IN0 HP0.
@@ -313,6 +314,8 @@ Module JitterScheduleService.
           rewrite HP0 SCHED0 /=.
           have ARRin0: arrives_in arr_seq j0 by apply FROMarr in SCHED0.
           have ARR0: job_arrival j0 <= t' by apply MUSTARRs.
+          try ( apply arrived_between_implies_in_arrivals with (job_arrival0 := job_arrival);
+            try (by done) ) ||
           apply arrived_between_implies_in_arrivals with (job_arrival := job_arrival);
             try (by done).
           by apply: (leq_ltn_trans _ LT').
@@ -996,6 +999,8 @@ Module JitterScheduleService.
               have ARRin2: arrives_in arr_seq j2.
               {
                 rewrite /sched_j in SCHED2.
+                try ( by apply reduction_prop.sched_jitter_jobs_come_from_arrival_sequence with
+                                                    (sched_susp0 := sched_susp) in SCHED2 ) ||
                 by apply reduction_prop.sched_jitter_jobs_come_from_arrival_sequence with
                                                     (sched_susp := sched_susp) in SCHED2.
               }
@@ -1193,6 +1198,8 @@ Module JitterScheduleService.
           rewrite (big_rem j_hp) /other_higher_eq_priority_job /=; last first.
           {
             have IN: arrives_in arr_seq j_hp by apply FROM in SCHEDhp. 
+            try ( apply arrived_between_implies_in_arrivals with (job_arrival0 := job_arrival);
+              try (by done) ) ||
             apply arrived_between_implies_in_arrivals with (job_arrival := job_arrival);
               try (by done).
             by apply: (leq_trans _ LTi); apply ARRIVE.
@@ -1238,6 +1245,7 @@ Module JitterScheduleService.
         apply leq_ltn_trans with (n := service_during sched_jitter j arr_j (arr_j + R_j)).
         { rewrite /service /service_during.
           rewrite (ignore_service_before_arrival job_arrival) ?leq_addr //.
+          try ( apply jobs_with_jitter_must_arrive_to_execute with (job_jitter0 := job_jitter) ) ||
           apply jobs_with_jitter_must_arrive_to_execute with (job_jitter := job_jitter).
             by apply reduction_prop.sched_jitter_jobs_execute_after_jitter.
         }
diff --git a/classic/analysis/uni/susp/dynamic/jitter/rta_by_reduction.v b/classic/analysis/uni/susp/dynamic/jitter/rta_by_reduction.v
index 18b2321e2ca7afb8b7c3aab641cb488e78976987..65fc824fa14f78073006b6da04551d88bf06ff75 100644
--- a/classic/analysis/uni/susp/dynamic/jitter/rta_by_reduction.v
+++ b/classic/analysis/uni/susp/dynamic/jitter/rta_by_reduction.v
@@ -180,6 +180,10 @@ Module RTAByReduction.
              H_valid_response_time_bound_of_hp_tasks into RESPhp,
              H_valid_response_time_bound_in_sched_jitter into RESPj.
       rewrite -H_job_of_tsk /job_response_time_in_sched_susp_bounded_by.
+      try ( apply reduction_serv.jitter_reduction_job_j_completes_no_later with (job_task0 := job_task)
+        (ts0 := ts) (arr_seq0 := arr_seq) (higher_eq_priority0 := higher_eq_priority)
+        (task_period0 := task_period) (task_deadline0 := task_deadline) (job_deadline0 := job_deadline)
+        (job_suspension_duration0 := job_suspension_duration) (R_hp := actual_response_time) ) ||
       apply reduction_serv.jitter_reduction_job_j_completes_no_later with (job_task := job_task)
         (ts := ts) (arr_seq := arr_seq) (higher_eq_priority := higher_eq_priority)
         (task_period := task_period) (task_deadline := task_deadline) (job_deadline := job_deadline)
@@ -199,4 +203,4 @@ Module RTAByReduction.
         
   End ComparingResponseTimeBounds.
 
-End RTAByReduction.
\ No newline at end of file
+End RTAByReduction.
diff --git a/classic/analysis/uni/susp/dynamic/jitter/taskset_membership.v b/classic/analysis/uni/susp/dynamic/jitter/taskset_membership.v
index a6d8f3cea4b783b7b47e5ca7043d719532bf29d4..353f00aa08a6a51bcaa35a8df7048744751832de 100644
--- a/classic/analysis/uni/susp/dynamic/jitter/taskset_membership.v
+++ b/classic/analysis/uni/susp/dynamic/jitter/taskset_membership.v
@@ -313,6 +313,10 @@ Module TaskSetMembership.
           split_conj VALIDSCHED.
           apply leq_trans with (n := R (job_task any_j) - higher_cost_wcet any_j);
             last by apply leq_sub2l; rewrite /higher_cost_wcet eq_refl.
+          try ( apply sust_prop.sched_susp_highercost_incurs_more_interference with
+            (job_arrival0 := job_arrival) (arr_seq0 := arr_seq) (sched_susp0 := sched_susp)
+            (higher_eq_priority0:=job_higher_eq_priority)
+            (job_suspension_duration0 := job_suspension_duration); try (by done) ) ||
           apply sust_prop.sched_susp_highercost_incurs_more_interference with
             (job_arrival := job_arrival) (arr_seq := arr_seq) (sched_susp := sched_susp)
             (higher_eq_priority:=job_higher_eq_priority)
@@ -347,4 +351,4 @@ Module TaskSetMembership.
 
   End ProvingMembership.
 
-End TaskSetMembership.
\ No newline at end of file
+End TaskSetMembership.
diff --git a/classic/analysis/uni/susp/dynamic/jitter/taskset_rta.v b/classic/analysis/uni/susp/dynamic/jitter/taskset_rta.v
index 1c22803393980641484299b9acb44eb732993ff5..3dcf1a9a8498d5c9e2e2d4a042122a96c3b1a6de 100644
--- a/classic/analysis/uni/susp/dynamic/jitter/taskset_rta.v
+++ b/classic/analysis/uni/susp/dynamic/jitter/taskset_rta.v
@@ -205,6 +205,11 @@ Module TaskSetRTA.
           reduction.inflated_job_cost job_cost job_suspension_duration. 
       set job_jitter := reduction.job_jitter job_arrival job_task
                         higher_eq_priority job_cost j actual_response_time.
+      try ( apply valid_response_time_bound_in_sched_susp with
+        (task_period0 := task_period) (task_deadline0 := task_deadline)
+        (job_deadline0 := job_deadline) (job_task0 := job_task) (ts0 := ts)
+        (arr_seq0 := arr_seq) (higher_eq_priority0 := higher_eq_priority)
+        (job_suspension_duration0:=job_suspension_duration); try (by done) ) ||
       apply valid_response_time_bound_in_sched_susp with
         (task_period := task_period) (task_deadline := task_deadline)
         (job_deadline := job_deadline) (job_task := job_task) (ts := ts)
@@ -230,4 +235,4 @@ Module TaskSetRTA.
     
   End PerTaskAnalysis.
 
-End TaskSetRTA.
\ No newline at end of file
+End TaskSetRTA.
diff --git a/classic/analysis/uni/susp/dynamic/oblivious/fp_rta.v b/classic/analysis/uni/susp/dynamic/oblivious/fp_rta.v
index b5dc915f54bb9dd4f89e70bbe1ac4a9d1a28f62b..4102429d90cda7d22a73318fb964948a2414ddff 100644
--- a/classic/analysis/uni/susp/dynamic/oblivious/fp_rta.v
+++ b/classic/analysis/uni/susp/dynamic/oblivious/fp_rta.v
@@ -132,16 +132,24 @@ Module SuspensionObliviousFP.
         rename H_claimed_schedulable_by_suspension_oblivious_RTA into SCHED,
                H_jobs_from_taskset into FROMTS, H_inflated_cost_le_deadline_and_period into LEdl.
         intros tsk INts j ARRj JOBtsk.
+        try ( apply suspension_oblivious_preserves_schedulability with
+              (higher_eq_priority0 := (FP_to_JLDP job_task higher_eq_priority))
+              (arr_seq0 := arr_seq) (next_suspension0 := next_suspension); try (by done) ) ||
         apply suspension_oblivious_preserves_schedulability with
               (higher_eq_priority := (FP_to_JLDP job_task higher_eq_priority))
               (arr_seq := arr_seq) (next_suspension := next_suspension); try (by done).
         - by intros t y x z; apply H_priority_is_transitive.
         - by intros j1 j2 t ARR1 ARR2; apply/orP; apply H_priority_is_total; apply FROMTS.
+        try ( apply jobs_schedulable_by_fp_rta with (task_cost0 := inflated_cost) (ts0 := ts)
+            (task_period0 := task_period) (task_deadline0 := task_deadline) (job_task0 := job_task)
+            (higher_eq_priority0 := higher_eq_priority); try (by done) ) ||
         apply jobs_schedulable_by_fp_rta with (task_cost := inflated_cost) (ts := ts)
             (task_period := task_period) (task_deadline := task_deadline) (job_task := job_task)
             (higher_eq_priority := higher_eq_priority); try (by done).
         - by apply suspension_oblivious_task_parameters_remain_valid.
-        - by apply suspension_oblivious_job_parameters_remain_valid with (ts := ts)
+        - try ( by apply suspension_oblivious_job_parameters_remain_valid with (ts0 := ts)
+                                                       (task_period0 := task_period) ) ||
+          by apply suspension_oblivious_job_parameters_remain_valid with (ts := ts)
                                                        (task_period := task_period).
         - by apply sched_newjobs_come_from_arrival_sequence.
         - by apply sched_new_jobs_must_arrive_to_execute. 
@@ -158,4 +166,4 @@ Module SuspensionObliviousFP.
 
   End ReductionToBasicAnalysis.
 
-End SuspensionObliviousFP.
\ No newline at end of file
+End SuspensionObliviousFP.
diff --git a/classic/analysis/uni/susp/dynamic/oblivious/reduction.v b/classic/analysis/uni/susp/dynamic/oblivious/reduction.v
index 2d60c451c68d16cbbda4d2795e607200abe8098e..c628567ccb3971e8020035d33a2b3f3c6bb6d0b1 100644
--- a/classic/analysis/uni/susp/dynamic/oblivious/reduction.v
+++ b/classic/analysis/uni/susp/dynamic/oblivious/reduction.v
@@ -494,7 +494,8 @@ Module ReductionToBasicSchedule.
                   first apply cumulative_service_le_job_cost,
                   sched_new_completed_jobs_dont_execute.
               }
-              rewrite leq_add //; first by apply completion_monotonic with (t := t).
+              rewrite leq_add //; first by ( try ( apply completion_monotonic with (t0 := t) ) ||
+              apply completion_monotonic with (t := t)).
               apply completion_monotonic with (t' := t.+1) in COMP; try done.
               rewrite /job_cumulative_suspension.
                 by rewrite -> cumulative_suspension_eq_total_suspension with
@@ -593,8 +594,10 @@ Module ReductionToBasicSchedule.
                 Proof.
                   rename H_j_not_scheduled_in_susp into NOTSCHEDs, H_j_scheduled_in_new into SCHEDn.
                   move: H_j_hp_is_scheduled (H_j_hp_is_scheduled) => SCHEDhp PENDhp.
+                  ( try ( apply scheduled_implies_pending with (job_arrival0 := job_arrival)
+                                   (job_cost := original_job_cost) in PENDhp) ||
                   apply scheduled_implies_pending with (job_arrival := job_arrival)
-                                   (job_cost := original_job_cost) in PENDhp; try (by done).
+                                   (job_cost := original_job_cost) in PENDhp); try (by done).
                   move: PENDhp => /andP [ARRhp _].
                   apply contraT; intro NOTCOMPhp.
                   have PENDhp: pending job_arrival inflated_job_cost sched_new j_hp t
@@ -739,4 +742,4 @@ Module ReductionToBasicSchedule.
 
   End Reduction.
 
-End ReductionToBasicSchedule.
\ No newline at end of file
+End ReductionToBasicSchedule.
diff --git a/classic/analysis/uni/susp/sustainability/allcosts/main_claim.v b/classic/analysis/uni/susp/sustainability/allcosts/main_claim.v
index 4c4808ba90f7598405bc79be27e9c8c85307df29..676199b7f390c434e1c5cb277a8c772741c365bb 100644
--- a/classic/analysis/uni/susp/sustainability/allcosts/main_claim.v
+++ b/classic/analysis/uni/susp/sustainability/allcosts/main_claim.v
@@ -122,6 +122,9 @@ Module SustainabilityAllCostsProperty.
         good_arr_seq higher_eq_priority good_sched good_suspension bad_cost good_j R.
       set bad_params := [:: param JOB_ARRIVAL job_arrival; param JOB_COST bad_cost;
                             param JOB_SUSPENSION reduced_suspension_duration].  
+      try ( apply reduction_prop.sched_new_response_time_of_job_j with (arr_seq := good_arr_seq)
+        (higher_eq_priority0 := higher_eq_priority) (inflated_job_cost := bad_cost);
+        try done ) ||
       apply reduction_prop.sched_new_response_time_of_job_j with (arr_seq := good_arr_seq)
         (higher_eq_priority := higher_eq_priority) (inflated_job_cost := bad_cost);
         try done.
@@ -162,4 +165,4 @@ Module SustainabilityAllCostsProperty.
 
     End SustainabilityProperty.
   
-End SustainabilityAllCostsProperty.
\ No newline at end of file
+End SustainabilityAllCostsProperty.
diff --git a/classic/analysis/uni/susp/sustainability/allcosts/reduction_properties.v b/classic/analysis/uni/susp/sustainability/allcosts/reduction_properties.v
index d4f6215409f9910b6a61874d861c99004cca3566..5f9290dc016626a797918debcfcc0bfd62d3b210 100644
--- a/classic/analysis/uni/susp/sustainability/allcosts/reduction_properties.v
+++ b/classic/analysis/uni/susp/sustainability/allcosts/reduction_properties.v
@@ -568,11 +568,13 @@ Module SustainabilityAllCostsProperties.
           by apply NOSERV; rewrite ?SUSPn ?LTr ?SUSPt ?GE ?LT.
         }
         apply/andP; split; first by apply: (ltn_trans _ LTr).
+        try ( apply suspended_in_suspension_interval with (t0 := t); try done ) ||
         apply suspended_in_suspension_interval with (t := t); try done.
         {
           apply/negP; intro COMPmid.
           apply suspended_implies_not_completed in SUSPt.
           suff BUG: completed_by job_cost sched_susp j0 t by rewrite BUG in SUSPt.
+            try ( by apply completion_monotonic with (t0 := k); [ apply ltnW |] ) ||
             by apply completion_monotonic with (t := k); [ apply ltnW |].
         }
         apply/andP; split;
diff --git a/classic/analysis/uni/susp/sustainability/singlecost/reduction_properties.v b/classic/analysis/uni/susp/sustainability/singlecost/reduction_properties.v
index 0aab584fc54c313d961c0dbd75a7747a3021a777..4bd116bdd8931da4468f3c1c276f2861a64ce5bf 100644
--- a/classic/analysis/uni/susp/sustainability/singlecost/reduction_properties.v
+++ b/classic/analysis/uni/susp/sustainability/singlecost/reduction_properties.v
@@ -413,7 +413,8 @@ Module SustainabilitySingleCostProperties.
             case (boolP (any_j == j)) => [/eqP EQ | NEQ]; subst.
             { unfold completed_jobs_dont_execute in *. 
               have BUG: service sched_susp j t >= job_cost j.
-              { apply completion_monotonic with (t := k); try (by done); apply ltnW. }
+              { try ( apply completion_monotonic with (t0 := k); try (by done); apply ltnW ) ||
+                apply completion_monotonic with (t := k); try (by done); apply ltnW. }
                 by exfalso; move: BUG; rewrite leqNgt; move => /negP BUG; apply: BUG.
             }
             rewrite COSTother //.
@@ -589,6 +590,7 @@ Module SustainabilitySingleCostProperties.
         intros k any_j LT; apply IHtmp; first by done.
         apply/negP; intro COMPk.
         suff COMPt: completed_in_sched_susp j t by rewrite COMPt in NOTCOMP.
+          try ( by apply completion_monotonic with (t0 := k);[apply ltnW|] ) ||
           by apply completion_monotonic with (t := k);[apply ltnW|].
       Qed.
       
diff --git a/classic/implementation/apa/bertogna_edf_example.v b/classic/implementation/apa/bertogna_edf_example.v
index eb4a3df69feeb4d31bbbf9bf9d10b99aa626a601..b4c29d2f80a6e5f328f7832a7e53481f320ead96 100644
--- a/classic/implementation/apa/bertogna_edf_example.v
+++ b/classic/implementation/apa/bertogna_edf_example.v
@@ -151,6 +151,9 @@ Module ResponseTimeAnalysisEDF.
       have VALID := periodic_arrivals_valid_job_parameters ts ts_has_valid_parameters.
       have VALIDTS := ts_has_valid_parameters.
       unfold valid_sporadic_job, valid_realtime_job in *; des.
+      try ( apply taskset_schedulable_by_edf_rta with (task_cost := task_cost) (task_period := task_period)
+        (task_deadline := task_deadline) (alpha := task_affinity) (alpha' := task_affinity)
+        (ts0 := ts); try (by done) ) ||
       apply taskset_schedulable_by_edf_rta with (task_cost := task_cost) (task_period := task_period)
         (task_deadline := task_deadline) (alpha := task_affinity) (alpha' := task_affinity)
         (ts := ts); try (by done).
@@ -183,4 +186,4 @@ Module ResponseTimeAnalysisEDF.
 
   End ExampleRTA.
 
-End ResponseTimeAnalysisEDF.
\ No newline at end of file
+End ResponseTimeAnalysisEDF.
diff --git a/classic/implementation/apa/bertogna_fp_example.v b/classic/implementation/apa/bertogna_fp_example.v
index 65ba91363bcaa4eca7c932ed445d4acbd6faf05a..fe65e131bb730515c67a6bf34943a1e5cdc015d1 100644
--- a/classic/implementation/apa/bertogna_fp_example.v
+++ b/classic/implementation/apa/bertogna_fp_example.v
@@ -233,6 +233,10 @@ Module ResponseTimeAnalysisFP.
       have VALID := periodic_arrivals_valid_job_parameters ts ts_has_valid_parameters.
       have TSVALID := ts_has_valid_parameters.
       unfold valid_sporadic_job, valid_realtime_job in *; des.
+      try ( apply taskset_schedulable_by_fp_rta with (task_cost := task_cost)
+       (task_period := task_period) (task_deadline := task_deadline)
+       (ts0 := ts) (higher_priority0 := RM task_period)
+       (alpha := task_affinity) (alpha' := task_affinity); try (by done) ) ||
       apply taskset_schedulable_by_fp_rta with (task_cost := task_cost)
        (task_period := task_period) (task_deadline := task_deadline)
        (ts := ts) (higher_priority := RM task_period)
@@ -269,4 +273,4 @@ Module ResponseTimeAnalysisFP.
 
   End ExampleRTA.
 
-End ResponseTimeAnalysisFP.
\ No newline at end of file
+End ResponseTimeAnalysisFP.
diff --git a/classic/implementation/apa/schedule.v b/classic/implementation/apa/schedule.v
index 9a53a6420378916eac613643645e0e97ebf9ed21..4c864dd311cb4aafb2969ccaf9973576385b6e0e 100644
--- a/classic/implementation/apa/schedule.v
+++ b/classic/implementation/apa/schedule.v
@@ -444,6 +444,7 @@ Module ConcreteScheduler.
         {
           rewrite mem_sort mem_filter PENDING andTb.
           move: PENDING => /andP [ARR IN]; rewrite /has_arrived in ARR.
+          try ( by apply arrived_between_implies_in_arrivals with (job_arrival0 := job_arrival) ) ||
           by apply arrived_between_implies_in_arrivals with (job_arrival := job_arrival).
         }
         have INhp: j_hp \in l by apply scheduler_job_in_mapping in SCHED.
@@ -628,6 +629,7 @@ Module ConcreteScheduler.
       {
         rewrite mem_sort mem_filter PENDING andTb.
         move: PENDING => /andP [ARR _].
+        try ( by apply arrived_between_implies_in_arrivals with (job_arrival0 := job_arrival) ) ||
         by apply arrived_between_implies_in_arrivals with (job_arrival := job_arrival).
       }
       have WORK := scheduler_mapping_is_work_conserving j cpu t l IN SORT UNIQ.
@@ -662,4 +664,4 @@ Module ConcreteScheduler.
 
   End Proofs.
     
-End ConcreteScheduler.
\ No newline at end of file
+End ConcreteScheduler.
diff --git a/classic/implementation/global/basic/bertogna_edf_example.v b/classic/implementation/global/basic/bertogna_edf_example.v
index 42f5fce837b32aecf6f6fa7bc589e7e0c65f4721..ff0179db376e8509666c9d24175c9295b6d13b71 100644
--- a/classic/implementation/global/basic/bertogna_edf_example.v
+++ b/classic/implementation/global/basic/bertogna_edf_example.v
@@ -106,6 +106,8 @@ Module ResponseTimeAnalysisEDF.
       have VALID := periodic_arrivals_valid_job_parameters ts ts_has_valid_parameters.
       have TSVALID := ts_has_valid_parameters.
       unfold valid_sporadic_job, valid_realtime_job in *; des.
+      try ( apply taskset_schedulable_by_edf_rta with (task_cost := task_cost) (task_period := task_period)
+            (task_deadline := task_deadline) (ts0 := ts); try (by done) ) ||
       apply taskset_schedulable_by_edf_rta with (task_cost := task_cost) (task_period := task_period)
             (task_deadline := task_deadline) (ts := ts); try (by done).
       - by apply ts_has_constrained_deadlines.
@@ -129,4 +131,4 @@ Module ResponseTimeAnalysisEDF.
 
   End ExampleRTA.
 
-End ResponseTimeAnalysisEDF.
\ No newline at end of file
+End ResponseTimeAnalysisEDF.
diff --git a/classic/implementation/global/basic/bertogna_fp_example.v b/classic/implementation/global/basic/bertogna_fp_example.v
index dab8caeefc2ed4f5aa3b26c91b53c93fdd79a96f..81562051b42fda9d22e79689cfa421217690602c 100644
--- a/classic/implementation/global/basic/bertogna_fp_example.v
+++ b/classic/implementation/global/basic/bertogna_fp_example.v
@@ -144,6 +144,9 @@ Module ResponseTimeAnalysisFP.
       have VALID := periodic_arrivals_valid_job_parameters ts ts_has_valid_parameters.
       have TSVALID := ts_has_valid_parameters.
       unfold valid_sporadic_job, valid_realtime_job in *; des.
+      try ( apply taskset_schedulable_by_fp_rta with (task_cost := task_cost)
+       (task_period := task_period) (task_deadline := task_deadline)
+       (ts0 := ts) (higher_priority0 := RM task_period); try (by done) ) ||
       apply taskset_schedulable_by_fp_rta with (task_cost := task_cost)
        (task_period := task_period) (task_deadline := task_deadline)
        (ts := ts) (higher_priority := RM task_period); try (by done).
@@ -171,4 +174,4 @@ Module ResponseTimeAnalysisFP.
 
   End ExampleRTA.
 
-End ResponseTimeAnalysisFP.
\ No newline at end of file
+End ResponseTimeAnalysisFP.
diff --git a/classic/implementation/global/basic/schedule.v b/classic/implementation/global/basic/schedule.v
index 8f9aa1442a4114af19f3d854d0dcecdbe1fd0c38..9bf0d619699838ea38bc89c101c5da9bd3262c34 100644
--- a/classic/implementation/global/basic/schedule.v
+++ b/classic/implementation/global/basic/schedule.v
@@ -138,6 +138,7 @@ Module ConcreteScheduler.
         {
           rewrite mem_sort mem_filter PENDING andTb.
           move: PENDING => /andP [ARRIVED _].
+          try ( by apply arrived_between_implies_in_arrivals with (job_arrival0 := job_arrival) ) ||
           by apply arrived_between_implies_in_arrivals with (job_arrival := job_arrival).
         }
         apply nth_or_none_mem_exists in IN; des.
@@ -180,6 +181,7 @@ Module ConcreteScheduler.
       intros j t cpu1 cpu2 SCHED1 SCHED2.
       rewrite 2!scheduler_nth_or_none_mapping in SCHED1 SCHED2.
       set l := sorted_pending_jobs _ _ _ _ _ _ _ in SCHED1 SCHED2.
+      try ( apply ord_inj, nth_or_none_uniq with (l0 := l) (x := j); try (by done) ) ||
       apply ord_inj, nth_or_none_uniq with (l := l) (x := j); try (by done).
       by rewrite sort_uniq filter_uniq //; eapply arrivals_uniq; eauto 1.
     Qed.
@@ -211,6 +213,7 @@ Module ConcreteScheduler.
         move: SCHED SCHED' => /eqP SCHED /eqP SCHED'.
         rewrite 2!scheduler_nth_or_none_mapping in SCHED SCHED'.
         set l := sorted_pending_jobs _ _ _ _ _ _ _ in SCHED SCHED'.
+        try ( apply nth_or_none_uniq with (l0 := l) (x := j); try (by done) ) ||
         apply nth_or_none_uniq with (l := l) (x := j); try (by done).
         by rewrite sort_uniq filter_uniq //; eapply arrivals_uniq; eauto 1.
       }
diff --git a/classic/implementation/global/jitter/bertogna_edf_example.v b/classic/implementation/global/jitter/bertogna_edf_example.v
index 49c748d91f421c01f306a0292fe7730d753bdbf0..b2e25bd31c152dd063ce48c24bd0a458b55f53f1 100644
--- a/classic/implementation/global/jitter/bertogna_edf_example.v
+++ b/classic/implementation/global/jitter/bertogna_edf_example.v
@@ -110,6 +110,9 @@ Module ResponseTimeAnalysisEDF.
       have VALIDTS := ts_has_valid_parameters.
       unfold valid_sporadic_job_with_jitter,
              valid_sporadic_job, valid_realtime_job in *; des.
+      try ( apply taskset_schedulable_by_edf_rta with (task_cost := task_cost) (task_period := task_period)
+               (task_deadline := task_deadline) (ts0 := ts) (task_jitter := task_jitter)
+               (job_jitter := job_jitter); try (by done) ) ||
       apply taskset_schedulable_by_edf_rta with (task_cost := task_cost) (task_period := task_period)
                (task_deadline := task_deadline) (ts := ts) (task_jitter := task_jitter)
                (job_jitter := job_jitter); try (by done).
@@ -134,4 +137,4 @@ Module ResponseTimeAnalysisEDF.
 
   End ExampleRTA.
 
-End ResponseTimeAnalysisEDF.
\ No newline at end of file
+End ResponseTimeAnalysisEDF.
diff --git a/classic/implementation/global/jitter/bertogna_fp_example.v b/classic/implementation/global/jitter/bertogna_fp_example.v
index 00a3ed257ab9727deb8fbfb0a4c5898f91a9d9b3..7f907041fb359891c5f150b088c0d1352befb427 100644
--- a/classic/implementation/global/jitter/bertogna_fp_example.v
+++ b/classic/implementation/global/jitter/bertogna_fp_example.v
@@ -147,6 +147,10 @@ Module ResponseTimeAnalysisFP.
       have VALID := periodic_arrivals_valid_job_parameters ts ts_has_valid_parameters.
       have TSVALID := ts_has_valid_parameters.
       unfold valid_sporadic_job_with_jitter, valid_sporadic_job, valid_realtime_job in *; des.
+      try ( apply taskset_schedulable_by_fp_rta with (task_cost := task_cost)
+        (task_period := task_period) (task_deadline := task_deadline)
+        (task_jitter := task_jitter) (job_jitter := job_jitter)
+        (ts0 := ts) (higher_priority0 := RM task_period); try (by done) ) ||
       apply taskset_schedulable_by_fp_rta with (task_cost := task_cost)
         (task_period := task_period) (task_deadline := task_deadline)
         (task_jitter := task_jitter) (job_jitter := job_jitter)
@@ -175,4 +179,4 @@ Module ResponseTimeAnalysisFP.
 
   End ExampleRTA.
 
-End ResponseTimeAnalysisFP.
\ No newline at end of file
+End ResponseTimeAnalysisFP.
diff --git a/classic/implementation/global/jitter/schedule.v b/classic/implementation/global/jitter/schedule.v
index 885cb48b303d6a9cffb4c5c694459eeaca5783d3..bfb5c1ba58027d6f8fea86c65bea9f7c25716649 100644
--- a/classic/implementation/global/jitter/schedule.v
+++ b/classic/implementation/global/jitter/schedule.v
@@ -141,6 +141,7 @@ Module ConcreteScheduler.
         {
           rewrite mem_sort mem_filter PENDING andTb.
           move: PENDING => /andP [ARRIVED _].
+          try ( by apply arrived_between_implies_in_actual_arrivals with (job_arrival0 := job_arrival) ) ||
           by apply arrived_between_implies_in_actual_arrivals with (job_arrival := job_arrival).
         }
         apply nth_or_none_mem_exists in IN; des.
@@ -185,6 +186,7 @@ Module ConcreteScheduler.
       intros j t cpu1 cpu2 SCHED1 SCHED2.
       rewrite 2!scheduler_nth_or_none_mapping in SCHED1 SCHED2.
       set l := sorted_pending_jobs _ _ _ _ _ _ _ _ in SCHED1 SCHED2.
+      try ( apply ord_inj, nth_or_none_uniq with (l0 := l) (x := j); try (by done) ) ||
       apply ord_inj, nth_or_none_uniq with (l := l) (x := j); try (by done).
       by rewrite sort_uniq filter_uniq // /actual_arrivals_up_to; apply actual_arrivals_uniq.
     Qed.
@@ -216,6 +218,7 @@ Module ConcreteScheduler.
         move: SCHED SCHED' => /eqP SCHED /eqP SCHED'.
         rewrite 2!scheduler_nth_or_none_mapping in SCHED SCHED'.
         set l := sorted_pending_jobs _ _ _ _ _ _ _ _ in SCHED SCHED'.
+        try ( apply nth_or_none_uniq with (l0 := l) (x := j); try (by done) ) ||
         apply nth_or_none_uniq with (l := l) (x := j); try (by done).
         by rewrite sort_uniq filter_uniq //; apply actual_arrivals_uniq.
       }
diff --git a/classic/implementation/global/parallel/bertogna_edf_example.v b/classic/implementation/global/parallel/bertogna_edf_example.v
index 4252b579a5dd88fbefc9b480a6fd61599ab301ff..80f9fb7f164e98a78d7d65d61910b7bf53b61454 100644
--- a/classic/implementation/global/parallel/bertogna_edf_example.v
+++ b/classic/implementation/global/parallel/bertogna_edf_example.v
@@ -113,6 +113,8 @@ Module ResponseTimeAnalysisEDF.
       have VALID := periodic_arrivals_valid_job_parameters ts ts_has_valid_parameters.
       have TSVALID := ts_has_valid_parameters.
       unfold valid_sporadic_job, valid_realtime_job in *; des.
+      try ( apply taskset_schedulable_by_edf_rta with (task_cost := task_cost)
+        (task_period := task_period) (task_deadline := task_deadline) (ts0 := ts); try (by done) ) ||
       apply taskset_schedulable_by_edf_rta with (task_cost := task_cost)
         (task_period := task_period) (task_deadline := task_deadline) (ts := ts); try (by done).
       - by apply ts_has_constrained_deadlines.
@@ -133,4 +135,4 @@ Module ResponseTimeAnalysisEDF.
 
   End ExampleRTA.
 
-End ResponseTimeAnalysisEDF.
\ No newline at end of file
+End ResponseTimeAnalysisEDF.
diff --git a/classic/implementation/global/parallel/bertogna_fp_example.v b/classic/implementation/global/parallel/bertogna_fp_example.v
index f1c7175bc0f88fc57128bfa4eaa3a6739a8fd55c..39b37c91256b0b469ed690693a387101f6ae1c91 100644
--- a/classic/implementation/global/parallel/bertogna_fp_example.v
+++ b/classic/implementation/global/parallel/bertogna_fp_example.v
@@ -166,6 +166,9 @@ Module ResponseTimeAnalysisFP.
       have VALID := periodic_arrivals_valid_job_parameters ts ts_has_valid_parameters.
       have TSVALID := ts_has_valid_parameters.
       unfold valid_sporadic_job, valid_realtime_job in *; des.
+      try ( apply taskset_schedulable_by_fp_rta with (task_cost := task_cost)
+       (task_period := task_period) (task_deadline := task_deadline)
+       (ts0 := ts) (higher_priority0 := RM task_period); try (by done) ) ||
       apply taskset_schedulable_by_fp_rta with (task_cost := task_cost)
        (task_period := task_period) (task_deadline := task_deadline)
        (ts := ts) (higher_priority := RM task_period); try (by done).
@@ -190,4 +193,4 @@ Module ResponseTimeAnalysisFP.
 
   End ExampleRTA.
 
-End ResponseTimeAnalysisFP.
\ No newline at end of file
+End ResponseTimeAnalysisFP.
diff --git a/classic/implementation/uni/basic/fp_rta_example.v b/classic/implementation/uni/basic/fp_rta_example.v
index 363b126bca6af5776c167f0dd3dc2f77fa13b185..f7c662d21052a7f3f264e4fb6681a579d82adfbe 100644
--- a/classic/implementation/uni/basic/fp_rta_example.v
+++ b/classic/implementation/uni/basic/fp_rta_example.v
@@ -136,6 +136,9 @@ Module ResponseTimeAnalysisFP.
       have VALID := periodic_arrivals_valid_job_parameters ts ts_has_valid_parameters.
       have TSVALID := ts_has_valid_parameters.
       unfold valid_sporadic_job, valid_realtime_job in *; des.
+      try ( apply taskset_schedulable_by_fp_rta with (task_cost := task_cost)
+       (task_period := task_period) (task_deadline := task_deadline)
+       (ts0 := ts) (higher_eq_priority0 := RM task_period); try (by done) ) ||
       apply taskset_schedulable_by_fp_rta with (task_cost := task_cost)
        (task_period := task_period) (task_deadline := task_deadline)
        (ts := ts) (higher_eq_priority := RM task_period); try (by done).
@@ -157,4 +160,4 @@ Module ResponseTimeAnalysisFP.
 
   End ExampleRTA.
 
-End ResponseTimeAnalysisFP.
\ No newline at end of file
+End ResponseTimeAnalysisFP.
diff --git a/classic/implementation/uni/basic/schedule.v b/classic/implementation/uni/basic/schedule.v
index 3f3f448d5a340b942cc955d295805b5f0ddf3d39..28e99a4d58f509f3f7166e51dd725e251677535a 100644
--- a/classic/implementation/uni/basic/schedule.v
+++ b/classic/implementation/uni/basic/schedule.v
@@ -62,7 +62,8 @@ Module ConcreteScheduler.
       suff SAME: pending_jobs sched1 t = pending_jobs sched2 t by rewrite SAME.
       apply eq_in_filter.
       intros j ARR.
-      apply in_arrivals_implies_arrived_before with (job_arrival := job_arrival) in ARR;
+      ( try ( apply in_arrivals_implies_arrived_before with (job_arrival0 := job_arrival) in ARR ) ||
+      apply in_arrivals_implies_arrived_before with (job_arrival := job_arrival) in ARR);
         last by done.
       rewrite /arrived_before ltnS in ARR.
       rewrite /pending /has_arrived ARR 2!andTb; f_equal.
@@ -188,4 +189,4 @@ Module ConcreteScheduler.
 
   End Proofs.
     
-End ConcreteScheduler.
\ No newline at end of file
+End ConcreteScheduler.
diff --git a/classic/implementation/uni/basic/schedule_tdma.v b/classic/implementation/uni/basic/schedule_tdma.v
index 9f85d159ce2e3896503c514ae7d733cbe1de0884..6f82352bfb344179294ed7643e3e23187ae70006 100644
--- a/classic/implementation/uni/basic/schedule_tdma.v
+++ b/classic/implementation/uni/basic/schedule_tdma.v
@@ -66,6 +66,8 @@ Module ConcreteSchedulerTDMA.
         Lemma pending_jobs_uniq:
           uniq pending_jobs.
         Proof.
+        try ( apply filter_uniq
+        , arrivals_uniq with (job_arrival0:=job_arrival);auto ) ||
         apply filter_uniq
         , arrivals_uniq with (job_arrival:=job_arrival);auto.
         Qed.
@@ -132,6 +134,7 @@ Module ConcreteSchedulerTDMA.
         intros* ARRJ PEN.
         rewrite mem_filter. apply /andP. split.
         apply PEN. rewrite /jobs_arrived_up_to.
+        try ( apply arrived_between_implies_in_arrivals with (job_arrival0:=job_arrival) ) ||
         apply arrived_between_implies_in_arrivals with (job_arrival:=job_arrival).
         apply H_arrival_times_are_consistent. auto.
         rewrite /arrived_between. simpl. 
@@ -169,6 +172,8 @@ Module ConcreteSchedulerTDMA.
         rewrite /job_to_schedule. f_equal.
         apply eq_in_filter.
         intros j ARR.
+        try ( apply in_arrivals_implies_arrived_before 
+        with (job_arrival0 := job_arrival) in ARR ) ||
         apply in_arrivals_implies_arrived_before 
         with (job_arrival := job_arrival) in ARR.
         rewrite /arrived_before ltnS in ARR.
@@ -226,4 +231,4 @@ Module ConcreteSchedulerTDMA.
 
   End ImplementationTDMA.
 
-End ConcreteSchedulerTDMA.
\ No newline at end of file
+End ConcreteSchedulerTDMA.
diff --git a/classic/implementation/uni/basic/tdma_rta_example.v b/classic/implementation/uni/basic/tdma_rta_example.v
index 433541a299aced501fe700f0ad9a156b61c3e730..403c393bf0508cfb478f208b60eeaae71fecf9e8 100644
--- a/classic/implementation/uni/basic/tdma_rta_example.v
+++ b/classic/implementation/uni/basic/tdma_rta_example.v
@@ -126,6 +126,7 @@ Module ResponseTimeAnalysisExemple.
         have SAMETSK: job_task j = job_task y.
         have EQ:Task_in_time_slot ts slot_order (job_task y) time_slot t =
                   Task_in_time_slot ts slot_order (job_task j) time_slot t by rewrite INSLOT. 
+        try ( apply task_in_time_slot_uniq with (ts0:= ts) (t0:=t) (slot_order:=slot_order) (task_time_slot:=time_slot);auto ) ||
         apply task_in_time_slot_uniq with (ts:= ts) (t:=t) (slot_order:=slot_order) (task_time_slot:=time_slot);auto.
         intros;by apply slot_order_total.
         by apply slot_order_antisymmetric.
@@ -136,9 +137,11 @@ Module ResponseTimeAnalysisExemple.
         by apply valid_time_slots ,periodic_arrivals_all_jobs_from_taskset.
         split;auto.
         * split;case (y==j)eqn:YJ;move/eqP in YJ;try by rewrite FIND YJ in NSJ;move/eqP in NSJ;auto.
-          apply pending_job_in_penging_list with (arr_seq:=arr_seq) in PEN;auto
+          ( try ( apply pending_job_in_penging_list with (arr_seq0:=arr_seq) in PEN ) ||
+          apply pending_job_in_penging_list with (arr_seq:=arr_seq) in PEN);auto
           ;last apply job_arrival_times_are_consistent.
-          apply findP_FIFO with (y:=j) in FIND;auto. fold sched in FIND.
+          ( try ( apply findP_FIFO with (y0:=j) in FIND ) ||
+          apply findP_FIFO with (y:=j) in FIND);auto. fold sched in FIND.
           apply (respects_FIFO ) in FIND;auto.
           apply periodic_arrivals_are_sporadic with (ts:=ts) in FIND;auto.
           have PERIODY:task_period (job_task y)>0 by
@@ -196,6 +199,10 @@ Module ResponseTimeAnalysisExemple.
     Proof.
     intros tsk tskIN.
     have VALID_JOB := periodic_arrivals_valid_job_parameters ts ts_has_valid_parameters.
+    try ( apply taskset_schedulable_by_tdma with (task_deadline:=task_deadline)(task_period:=task_period) 
+    (tsk0:=tsk)(ts0:=ts)(task_cost:=task_cost)
+    (task_time_slot:=time_slot) (slot_order:= slot_order)
+    (arr_seq0:=arr_seq) ) ||
     apply taskset_schedulable_by_tdma with (task_deadline:=task_deadline)(task_period:=task_period) 
     (tsk:=tsk)(ts:=ts)(task_cost:=task_cost)
     (task_time_slot:=time_slot) (slot_order:= slot_order)
@@ -218,7 +225,3 @@ Module ResponseTimeAnalysisExemple.
   End ExampleTDMA.
 
 End ResponseTimeAnalysisExemple.
-
-
-
-
diff --git a/classic/implementation/uni/jitter/fp_rta_example.v b/classic/implementation/uni/jitter/fp_rta_example.v
index 6b6e1e6dbe66a10d3511b8d8dd8e49cef7d0e3ab..9ff1556ab460ca1d2f5400c7c71ef657d4adb158 100644
--- a/classic/implementation/uni/jitter/fp_rta_example.v
+++ b/classic/implementation/uni/jitter/fp_rta_example.v
@@ -153,6 +153,10 @@ Module ResponseTimeAnalysisFP.
       rename H_jitter_is_bounded into JIT.
       intros tsk IN.
       unfold valid_sporadic_job, valid_realtime_job in *; des.
+      try ( apply taskset_schedulable_by_fp_rta with (task_cost := task_cost)
+                (task_period := task_period) (task_deadline := task_deadline) (ts0 := ts)
+                (higher_eq_priority0 := RM task_period) (job_jitter0 := job_jitter)
+                (task_jitter := task_jitter); try (by done) ) ||
       apply taskset_schedulable_by_fp_rta with (task_cost := task_cost)
                 (task_period := task_period) (task_deadline := task_deadline) (ts := ts)
                 (higher_eq_priority := RM task_period) (job_jitter := job_jitter)
@@ -179,4 +183,4 @@ Module ResponseTimeAnalysisFP.
 
   End ExampleRTA.
 
-End ResponseTimeAnalysisFP.
\ No newline at end of file
+End ResponseTimeAnalysisFP.
diff --git a/classic/implementation/uni/susp/dynamic/oblivious/fp_rta_example.v b/classic/implementation/uni/susp/dynamic/oblivious/fp_rta_example.v
index 594c18eb3968de6fd115a005346146f963cb8d06..fb35791f9b07cef859c181786ac2b6bbf08a1152 100644
--- a/classic/implementation/uni/susp/dynamic/oblivious/fp_rta_example.v
+++ b/classic/implementation/uni/susp/dynamic/oblivious/fp_rta_example.v
@@ -156,6 +156,10 @@ Module ResponseTimeAnalysisFP.
       have VALID := periodic_arrivals_valid_job_parameters ts ts_has_valid_parameters.
       have TSVALID := ts_has_valid_parameters.
       unfold valid_sporadic_job, valid_realtime_job in *; des.
+      try ( apply suspension_oblivious_fp_rta_implies_schedulability with (task_cost := task_cost)
+                (task_period := task_period) (task_deadline := task_deadline) (ts0 := ts)
+                (higher_eq_priority0 := RM task_period) (next_suspension0 := next_suspension)
+                (task_suspension_bound := task_suspension_bound); try (by done) ) ||
       apply suspension_oblivious_fp_rta_implies_schedulability with (task_cost := task_cost)
                 (task_period := task_period) (task_deadline := task_deadline) (ts := ts)
                 (higher_eq_priority := RM task_period) (next_suspension := next_suspension)
@@ -181,4 +185,4 @@ Module ResponseTimeAnalysisFP.
 
   End ExampleRTA.
 
-End ResponseTimeAnalysisFP.
\ No newline at end of file
+End ResponseTimeAnalysisFP.
diff --git a/classic/implementation/uni/susp/schedule.v b/classic/implementation/uni/susp/schedule.v
index 8484195e9e20e3c574af2fd7951bdc3bc569eab0..4d191d8087341b55214a9e59bcff1d7db3be4d01 100644
--- a/classic/implementation/uni/susp/schedule.v
+++ b/classic/implementation/uni/susp/schedule.v
@@ -68,7 +68,8 @@ Module ConcreteScheduler.
       suff SAME: pending_jobs sched1 t = pending_jobs sched2 t by rewrite SAME.
       apply eq_in_filter.
       rewrite /jobs_arrived_up_to; intros j IN.
-      apply in_arrivals_implies_arrived_before with (job_arrival := job_arrival) in IN;
+      ( try ( apply in_arrivals_implies_arrived_before with (job_arrival0 := job_arrival) in IN ) ||
+      apply in_arrivals_implies_arrived_before with (job_arrival := job_arrival) in IN);
         last by done.
       rewrite /arrived_before ltnS in IN.
       rewrite /pending /has_arrived IN 2!andTb.
@@ -248,4 +249,4 @@ Module ConcreteScheduler.
     
   End Proofs.
     
-End ConcreteScheduler.
\ No newline at end of file
+End ConcreteScheduler.
diff --git a/classic/model/arrival/basic/arrival_bounds.v b/classic/model/arrival/basic/arrival_bounds.v
index 094b5acc2e7dfc5674e5e6457bf30b5563a7a005..33e8e7da83f026bcd4bb56f72b4266c4b0b3abf4 100644
--- a/classic/model/arrival/basic/arrival_bounds.v
+++ b/classic/model/arrival/basic/arrival_bounds.v
@@ -73,7 +73,8 @@ Module ArrivalBounds.
           destruct arriving_jobs as [| j l] eqn:EQ; first by done.
           have IN: j \in arriving_jobs by rewrite EQ in_cons eq_refl orTb.
           rewrite mem_filter in IN; move: IN => /andP [_ ARR].
-          apply in_arrivals_implies_arrived_between with (job_arrival := job_arrival) in ARR;
+          ( try ( apply in_arrivals_implies_arrived_between with (job_arrival0 := job_arrival) in ARR ) ||
+          apply in_arrivals_implies_arrived_between with (job_arrival := job_arrival) in ARR);
             last by done.
           move: ARR => /andP [GE LT].
           by apply: (leq_ltn_trans GE).
@@ -223,4 +224,4 @@ Module ArrivalBounds.
     
   End Lemmas.
   
-End ArrivalBounds.
\ No newline at end of file
+End ArrivalBounds.
diff --git a/classic/model/arrival/jitter/arrival_sequence.v b/classic/model/arrival/jitter/arrival_sequence.v
index 0bbb20ebb5262436205e2884870413b1960102b3..fcfcd0bbfaae83f97936d5e39422bd0973572d9b 100644
--- a/classic/model/arrival/jitter/arrival_sequence.v
+++ b/classic/model/arrival/jitter/arrival_sequence.v
@@ -84,6 +84,8 @@ Module ArrivalSequenceWithJitter.
             case (ltnP (actual_job_arrival j) t) => [BEFORE | AFTER]; last by right; rewrite LT2.
             left; rewrite GE1 /=.
             have INarr: arrives_in arr_seq j by apply in_arrivals_implies_arrived in IN.
+            try ( apply arrived_between_implies_in_arrivals with (job_arrival0 := job_arrival);
+              try (by done) ) ||
             apply arrived_between_implies_in_arrivals with (job_arrival := job_arrival);
               try (by done).
             by apply: (leq_ltn_trans _ BEFORE); apply leq_addr.
@@ -95,6 +97,8 @@ Module ArrivalSequenceWithJitter.
               rewrite mem_filter GE0 /=.
               apply/andP; split; first by apply: (leq_trans _ LE).
               have INarr: arrives_in arr_seq j by apply in_arrivals_implies_arrived in IN0.
+              try ( apply arrived_between_implies_in_arrivals with (job_arrival0 := job_arrival);
+                try (by done) ) ||
               apply arrived_between_implies_in_arrivals with (job_arrival := job_arrival);
                 try (by done).
               rewrite /arrived_between /=.
@@ -105,6 +109,8 @@ Module ArrivalSequenceWithJitter.
               rewrite mem_filter LT0 /= andbT.
               apply/andP; split; first by apply: (leq_trans GE).
               have INarr: arrives_in arr_seq j by apply in_arrivals_implies_arrived in IN0.
+              try ( apply arrived_between_implies_in_arrivals with (job_arrival0 := job_arrival);
+                try (by done) ) ||
               apply arrived_between_implies_in_arrivals with (job_arrival := job_arrival);
                 try (by done).
               by apply: (leq_ltn_trans _ LT0); apply leq_addr.
@@ -220,4 +226,4 @@ Module ArrivalSequenceWithJitter.
     
   End ArrivingJobs.
 
-End ArrivalSequenceWithJitter.
\ No newline at end of file
+End ArrivalSequenceWithJitter.
diff --git a/classic/model/schedule/apa/constrained_deadlines.v b/classic/model/schedule/apa/constrained_deadlines.v
index 542e448f63630078f579a5e2d2e162acb93ffe44..e201d732a98f4ddee3a37828f45b5670ecaee131 100644
--- a/classic/model/schedule/apa/constrained_deadlines.v
+++ b/classic/model/schedule/apa/constrained_deadlines.v
@@ -117,6 +117,7 @@ Module ConstrainedDeadlines.
           }
           exploit (PREV j1 (job_task j1)); try (by done).
           intros COMP1; apply NOTCOMP1.
+          try ( by apply completion_monotonic with (t0 := job_arrival j1 + task_period (job_task j1)) ) ||
           by apply completion_monotonic with (t := job_arrival j1 + task_period (job_task j1)). 
         }
         {
@@ -128,6 +129,7 @@ Module ConstrainedDeadlines.
           }
           exploit (PREV j2 (job_task j2)); try (by done).
           intros COMP2; apply NOTCOMP2.
+          try ( by apply completion_monotonic with (t0 := job_arrival j2 + task_period (job_task j2)) ) ||
           by apply completion_monotonic with (t := job_arrival j2 + task_period (job_task j2)).
         }
       Qed.
@@ -228,6 +230,7 @@ Module ConstrainedDeadlines.
             by apply leq_trans with (n := job_arrival j2).
           exploit (PREV j1 (job_task j1) ARR1); [by done | by apply INTERF | intros COMP1].
           apply NOTCOMP1.
+          try ( by apply completion_monotonic with (t0 := job_arrival j1 + task_period (job_task j1)) ) ||
           by apply completion_monotonic with (t := job_arrival j1 + task_period (job_task j1)). 
         }
         {
@@ -238,6 +241,7 @@ Module ConstrainedDeadlines.
           exploit (PREV j2 (job_task j2) ARR2);
             [by done | by rewrite -SAMEtsk | intro COMP2 ].
           apply NOTCOMP2.
+          try ( by apply completion_monotonic with (t0 := job_arrival j2 + task_period (job_task j2)) ) ||
           by apply completion_monotonic with (t := job_arrival j2 + task_period (job_task j2)).
         }
       Qed.
@@ -266,7 +270,8 @@ Module ConstrainedDeadlines.
           assert (LEt: job_arrival j' + task_period tsk <= t).
             by apply leq_trans with (n := job_arrival j); first by rewrite -SAMEtsk.
           apply NOTCOMP'.
-          apply completion_monotonic with (t := job_arrival j' + task_period tsk); [by done |].
+          (try ( apply completion_monotonic with (t0 := job_arrival j' + task_period tsk) ) ||
+          apply completion_monotonic with (t := job_arrival j' + task_period tsk)); [by done |].
           apply PREVtsk; try (by done).
           apply leq_trans with (n := job_arrival j' + task_period tsk); last by rewrite -SAMEtsk.
           rewrite -addn1; apply leq_add; first by done.
@@ -285,4 +290,4 @@ Module ConstrainedDeadlines.
     
   End Lemmas.
 
-End ConstrainedDeadlines.
\ No newline at end of file
+End ConstrainedDeadlines.
diff --git a/classic/model/schedule/global/basic/constrained_deadlines.v b/classic/model/schedule/global/basic/constrained_deadlines.v
index c52c2609e9201389668ccab902c8cc293a1ec305..6879906301527a6ed7820c4a75a1ba6b72df435f 100644
--- a/classic/model/schedule/global/basic/constrained_deadlines.v
+++ b/classic/model/schedule/global/basic/constrained_deadlines.v
@@ -112,7 +112,8 @@ Module ConstrainedDeadlines.
           exploit (PREV j1 (job_task j1) ARR1);
             [by done | by apply leq_trans with (n := job_arrival j2) | intros COMP1].
           apply NOTCOMP1.
-          apply completion_monotonic with (t := job_arrival j1 + task_period (job_task j1));
+          ( try ( apply completion_monotonic with (t0 := job_arrival j1 + task_period (job_task j1)) ) ||
+          apply completion_monotonic with (t := job_arrival j1 + task_period (job_task j1)));
             try (by done).
           by apply leq_trans with (n := job_arrival j2). 
         }
@@ -122,7 +123,8 @@ Module ConstrainedDeadlines.
           exploit (PREV j2 (job_task j2) ARR2);
             [by done | by apply leq_trans with (n := job_arrival j1) | intros COMP2].
           apply NOTCOMP2.
-          apply completion_monotonic with (t := job_arrival j2 + task_period (job_task j2));
+          ( try ( apply completion_monotonic with (t0 := job_arrival j2 + task_period (job_task j2)) ) ||
+          apply completion_monotonic with (t := job_arrival j2 + task_period (job_task j2)));
             try (by done).
           by apply leq_trans with (n := job_arrival j1).
         }
@@ -292,7 +294,8 @@ Module ConstrainedDeadlines.
           specialize (SPO j1 j2 DIFF ARR1 ARR2 SAMEtsk BEFORE1).
           exploit (PREV j1 (job_task j1) ARR1); [by done | by apply INTERF | intros COMP1].
           apply NOTCOMP1.
-          apply completion_monotonic with (t := job_arrival j1 + task_period (job_task j1));
+          ( try ( apply completion_monotonic with (t0 := job_arrival j1 + task_period (job_task j1)) ) ||
+          apply completion_monotonic with (t := job_arrival j1 + task_period (job_task j1)));
             try (by done).
           by apply leq_trans with (n := job_arrival j2). 
         }
@@ -302,7 +305,8 @@ Module ConstrainedDeadlines.
           exploit (PREV j2 (job_task j2) ARR2);
             [by done | by rewrite -SAMEtsk | intro COMP2 ].
           apply NOTCOMP2.
-          apply completion_monotonic with (t := job_arrival j2 + task_period (job_task j2));
+          ( try ( apply completion_monotonic with (t0 := job_arrival j2 + task_period (job_task j2)) ) ||
+          apply completion_monotonic with (t := job_arrival j2 + task_period (job_task j2)));
             try (by done).
           by apply leq_trans with (n := job_arrival j1).
         }
@@ -330,7 +334,8 @@ Module ConstrainedDeadlines.
         {
           exploit (SPO j' j DIFF ARR' H_j_arrives); [by rewrite JOBtsk | by done | intro SPO'].
           apply NOTCOMP'.
-          apply completion_monotonic with (t := job_arrival j' + task_period tsk); try (by done);
+          ( try ( apply completion_monotonic with (t0 := job_arrival j' + task_period tsk) ) ||
+          apply completion_monotonic with (t := job_arrival j' + task_period tsk)); try (by done);
             first by apply leq_trans with (n := job_arrival j); [by rewrite -SAMEtsk | by done].
           {
             apply PREVtsk; try (by done).
@@ -427,8 +432,10 @@ Module ConstrainedDeadlines.
               apply/eqP; red; intro SAMEtsk.
               generalize SCHED'; intro PENDING'.
               have ARRin': arrives_in arr_seq j' by apply (FROMarr j' t).
+              ( try ( apply scheduled_implies_pending with (job_arrival0 := job_arrival)
+                (job_cost0 := job_cost) in PENDING' ) ||
               apply scheduled_implies_pending with (job_arrival := job_arrival)
-                (job_cost := job_cost) in PENDING'; try (by done).
+                (job_cost := job_cost) in PENDING'); try (by done).
               specialize (UNIQ' j' ARRin' PENDING' SAMEtsk); subst j'.
               by move: BACK => /andP [_ NOTSCHED]; rewrite SCHED' in NOTSCHED.
             }
@@ -440,4 +447,4 @@ Module ConstrainedDeadlines.
     
   End Lemmas.
 
-End ConstrainedDeadlines.
\ No newline at end of file
+End ConstrainedDeadlines.
diff --git a/classic/model/schedule/global/jitter/constrained_deadlines.v b/classic/model/schedule/global/jitter/constrained_deadlines.v
index 187b0332535f69742839182ef6c7bcc2999027b1..42f7772e40968fe257256c16850021cd63d8725f 100644
--- a/classic/model/schedule/global/jitter/constrained_deadlines.v
+++ b/classic/model/schedule/global/jitter/constrained_deadlines.v
@@ -124,6 +124,7 @@ Module ConstrainedDeadlines.
             }
             exploit (PREV j1 (job_task j1)); try (by done).
             intros COMP1; apply NOTCOMP1.
+            try ( by apply completion_monotonic with (t0 := job_arrival j1 + task_period (job_task j1)) ) ||
             by apply completion_monotonic with (t := job_arrival j1 + task_period (job_task j1)). 
           }
           {
@@ -136,6 +137,7 @@ Module ConstrainedDeadlines.
             }
             exploit (PREV j2 (job_task j2)); try (by done).
             intros COMP2; apply NOTCOMP2.
+            try ( by apply completion_monotonic with (t0 := job_arrival j2 + task_period (job_task j2)) ) ||
             by apply completion_monotonic with (t := job_arrival j2 + task_period (job_task j2)).
           }
         Qed.
@@ -310,6 +312,7 @@ Module ConstrainedDeadlines.
           }
           exploit (PREV j1 (job_task j1) ARRin1); [by done | by apply INTERF | intros COMP1].
           apply NOTCOMP1.
+          try ( by apply completion_monotonic with (t0 := job_arrival j1 + task_period (job_task j1)) ) ||
           by apply completion_monotonic with (t := job_arrival j1 + task_period (job_task j1)). 
         }
         {
@@ -325,6 +328,7 @@ Module ConstrainedDeadlines.
           exploit (PREV j2 (job_task j2) ARRin2);
             [by done | by rewrite -SAMEtsk | intro COMP2 ].
           apply NOTCOMP2.
+          try ( by apply completion_monotonic with (t0 := job_arrival j2 + task_period (job_task j2)) ) ||
           by apply completion_monotonic with (t := job_arrival j2 + task_period (job_task j2)).
         }
       Qed.
@@ -356,6 +360,7 @@ Module ConstrainedDeadlines.
             by apply leq_trans with (n := job_arrival j + job_jitter j); first by apply leq_addr.
           }
           apply NOTCOMP'.
+          try ( apply completion_monotonic with (t0 := job_arrival j' + task_period tsk); try (by done) ) ||
           apply completion_monotonic with (t := job_arrival j' + task_period tsk); try (by done).
           apply PREVtsk; try (by done).
           apply leq_trans with (n := job_arrival j' + task_period tsk); last by rewrite -SAMEtsk.
@@ -454,6 +459,8 @@ Module ConstrainedDeadlines.
               apply/eqP; red; intro SAMEtsk.
               generalize SCHED'; intro PENDING'.
               have ARRin': arrives_in arr_seq j' by apply (FROMarr j' t).
+              try ( apply scheduled_implies_pending with (job_arrival0 := job_arrival)
+                (job_cost0 := job_cost) (job_jitter0 := job_jitter) in PENDING'; try (by done) ) ||
               apply scheduled_implies_pending with (job_arrival := job_arrival)
                 (job_cost := job_cost) (job_jitter := job_jitter) in PENDING'; try (by done).
               specialize (UNIQ' j' ARRin' PENDING' SAMEtsk); subst j'.
@@ -467,4 +474,4 @@ Module ConstrainedDeadlines.
     
   End Lemmas.
 
-End ConstrainedDeadlines.
\ No newline at end of file
+End ConstrainedDeadlines.
diff --git a/classic/model/schedule/uni/jitter/busy_interval.v b/classic/model/schedule/uni/jitter/busy_interval.v
index 47a6b0ab98e84b83a4ef69da2128967b51ba36de..913a8964f913628e95f934f631bd9c4150e0f94e 100644
--- a/classic/model/schedule/uni/jitter/busy_interval.v
+++ b/classic/model/schedule/uni/jitter/busy_interval.v
@@ -127,6 +127,7 @@ Module BusyInterval.
             move: PEND => /andP [_ /negP NOTCOMP].
             move: INT => /andP [LE _].
             exfalso; apply NOTCOMP.
+            try ( apply completion_monotonic with (t0 := t1); try (by done) ) ||
             apply completion_monotonic with (t := t1); try (by done).
             by apply QUIET; [by done | by apply REFL |].
           Qed.
@@ -284,6 +285,7 @@ Module BusyInterval.
                 }
                 apply/andP; split; first by done.
                 apply/negP; intro COMP; apply NOTCOMP'.
+                try ( by apply completion_monotonic with (t0 := t) ) ||
                 by apply completion_monotonic with (t := t).
               }
               feed (PRIO j_hp' j_hp t IN BACK);  first by done.
@@ -292,6 +294,8 @@ Module BusyInterval.
             repeat split; [| by done | by done].
             {
               move: (SCHED) => PENDING.
+              try ( apply scheduled_implies_pending with (job_arrival0 := job_arrival)
+                      (job_cost0 := job_cost) (job_jitter0 := job_jitter) in PENDING; try (by done) ) ||
               apply scheduled_implies_pending with (job_arrival := job_arrival)
                       (job_cost := job_cost) (job_jitter := job_jitter) in PENDING; try (by done).
               apply/andP; split;
@@ -299,6 +303,7 @@ Module BusyInterval.
               apply contraT; rewrite -ltnNge; intro LT; exfalso.
               feed (QUIET j_hp); first by eapply FROM, SCHED. 
               specialize (QUIET HP LT).
+              try ( have COMP: job_completed_by j_hp t by apply completion_monotonic with (t0 := t1) ) ||
               have COMP: job_completed_by j_hp t by apply completion_monotonic with (t := t1).
               apply completed_implies_not_scheduled in COMP; last by done.
               by move: COMP => /negP COMP; apply COMP.
@@ -491,6 +496,7 @@ Module BusyInterval.
                   intros j' NEQ; destruct (higher_eq_priority j' j); last by done.
                   apply/eqP; rewrite eqb0; apply/negP; move => SCHED'.
                   move: NEQ => /eqP NEQ; apply NEQ.
+                  try ( by apply only_one_job_scheduled with (sched0 := sched) (t0 := t) ) ||
                   by apply only_one_job_scheduled with (sched := sched) (t := t).
                 }
                 {
@@ -539,7 +545,8 @@ Module BusyInterval.
                 unfold service_during.
                 rewrite (ignore_service_before_jitter job_arrival job_jitter) //;
                   last by apply/andP; split; last by apply ltnW.
-                rewrite <- ignore_service_before_jitter with (t1:=0); rewrite //; [|by apply ltnW].
+                ( try ( rewrite <- ignore_service_before_jitter with (t2:=0)) ||
+                rewrite <- ignore_service_before_jitter with (t1:=0)); rewrite //; [|by apply ltnW].
                   by rewrite ltnNge; apply/negP.
               Qed.
 
diff --git a/classic/model/schedule/uni/limited/abstract_RTA/abstract_seq_rta.v b/classic/model/schedule/uni/limited/abstract_RTA/abstract_seq_rta.v
index b3bcc0a1a18b892df759bbc8f5fd2b2f4f8ac5ca..59f720fd69b820e319acbc852aa8e6b6dec6acf4 100644
--- a/classic/model/schedule/uni/limited/abstract_RTA/abstract_seq_rta.v
+++ b/classic/model/schedule/uni/limited/abstract_RTA/abstract_seq_rta.v
@@ -612,6 +612,9 @@ Module AbstractSeqRTA.
         response_time_bounded_by tsk R. 
       Proof.
         intros j ARR TSK.
+        try ( eapply uniprocessor_response_time_bound with
+            (interference_bound_function := fun tsk A R => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A R)
+            (interfering_workload0 := interfering_workload); eauto 2 ) ||
         eapply uniprocessor_response_time_bound with
             (interference_bound_function := fun tsk A R => task_rbf (A + ε) - task_cost tsk + task_interference_bound_function tsk A R)
             (interfering_workload := interfering_workload); eauto 2.
@@ -636,4 +639,3 @@ Module AbstractSeqRTA.
   End Sequential_Abstract_RTA. 
   
 End AbstractSeqRTA.
- 
diff --git a/classic/model/schedule/uni/limited/abstract_RTA/sufficient_condition_for_lock_in_service.v b/classic/model/schedule/uni/limited/abstract_RTA/sufficient_condition_for_lock_in_service.v
index ea257da89c944b4996cd7fde5ce7ceda723a7dd3..0c985ecd4c5abede7fa53d3e432a9abaca0400a0 100644
--- a/classic/model/schedule/uni/limited/abstract_RTA/sufficient_condition_for_lock_in_service.v
+++ b/classic/model/schedule/uni/limited/abstract_RTA/sufficient_condition_for_lock_in_service.v
@@ -211,6 +211,7 @@ Module AbstractRTALockInService.
           rewrite subnKC //.
           apply/negP; intros COMPL.
           move: CONTR => /negP Temp; apply: Temp.
+          try ( apply completion_monotonic with (t0 := t'); try done ) ||
           apply completion_monotonic with (t := t'); try done.
         }
         have SERV: job_last + 1 <= \sum_(t <= t' < t + (job_last + 1)) service_at sched j t'.
@@ -239,4 +240,3 @@ Module AbstractRTALockInService.
   End LockInService.
 
 End AbstractRTALockInService.
-
diff --git a/classic/model/schedule/uni/limited/busy_interval.v b/classic/model/schedule/uni/limited/busy_interval.v
index 3dc5b47bab38ba492adbb6d3c52a7f386d1f303e..18817801ccdd6b300f9267ad8802a1e0ddb794fe 100644
--- a/classic/model/schedule/uni/limited/busy_interval.v
+++ b/classic/model/schedule/uni/limited/busy_interval.v
@@ -236,7 +236,8 @@ Module BusyIntervalJLFP.
           {
             move: COMP => /hasP [j_hp ARR /andP [NOTCOMP HP]].
             move: (ARR) => INarr.
-            apply in_arrivals_implies_arrived_between with (job_arrival := job_arrival) in ARR;
+            ( try ( apply in_arrivals_implies_arrived_between with (job_arrival0 := job_arrival) in ARR ) ||
+            apply in_arrivals_implies_arrived_between with (job_arrival := job_arrival) in ARR);
               last by done.
             apply in_arrivals_implies_arrived in INarr.
             by exists j_hp; repeat split; last by apply/negP.
@@ -327,6 +328,7 @@ Module BusyIntervalJLFP.
               { move: H => [ARR [PEN HP]].
                 rewrite mem_filter.
                 apply/andP; split; first (apply/andP; split); try done.
+                try ( apply arrived_between_implies_in_arrivals with (job_arrival0 := job_arrival); try done ) ||
                 apply arrived_between_implies_in_arrivals with (job_arrival := job_arrival); try done.
                 apply/andP; split; first by done.
                 rewrite ltnS.
@@ -740,7 +742,7 @@ Module BusyIntervalJLFP.
                 }
                 unfold service_during.
                 rewrite (ignore_service_before_arrival job_arrival); rewrite //; [| by apply ltnW].
-                rewrite <- ignore_service_before_arrival with (t1:=0); rewrite //; [|by apply ltnW].
+                ( try ( rewrite <- ignore_service_before_arrival with (t2:=0)) || rewrite <- ignore_service_before_arrival with (t1:=0)); rewrite //; [|by apply ltnW].
                   by rewrite ltnNge; apply/negP.
               Qed.               
               
@@ -1215,4 +1217,3 @@ Module BusyIntervalJLFP.
   End Definitions. 
     
 End BusyIntervalJLFP.
-     
diff --git a/classic/model/schedule/uni/limited/edf/nonpr_reg/concrete_models/response_time_bound.v b/classic/model/schedule/uni/limited/edf/nonpr_reg/concrete_models/response_time_bound.v
index e0367babc249b747d692b2b370d4906184a98e22..e8904850ce1830d68f945229fe29f9b484b2364f 100644
--- a/classic/model/schedule/uni/limited/edf/nonpr_reg/concrete_models/response_time_bound.v
+++ b/classic/model/schedule/uni/limited/edf/nonpr_reg/concrete_models/response_time_bound.v
@@ -236,6 +236,12 @@ Module RTAforConcreteModels.
           }
             by rewrite /is_response_time_bound_of_job /completed_by ZEROj.
         }
+        try ( eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments with
+            (job_max_nps := fun j => job_cost j)
+            (task_max_nps := fun tsk => task_cost tsk)
+            (job_lock_in_service := fun j => ε)
+            (task_lock_in_service := fun tsk => ε)
+            (L0 := L); eauto 2 ) ||
         eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments with
             (job_max_nps := fun j => job_cost j)
             (task_max_nps := fun tsk => task_cost tsk)
@@ -358,6 +364,11 @@ Module RTAforConcreteModels.
               by rewrite -(leq_add2r 1) !addn1 prednK //.
           }
         }
+        try ( eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments
+          with (task_lock_in_service := fun tsk => (task_cost tsk - (task_last_nps tsk - ε))) 
+               (job_lock_in_service := fun job => (job_cost job - (job_last_nps job - ε)))
+               (L0 := L)(job_cost0 := job_cost) (task_max_nps0 := task_max_nps)
+        ; eauto 2 ) ||
         eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments
           with (task_lock_in_service := fun tsk => (task_cost tsk - (task_last_nps tsk - ε))) 
                (job_lock_in_service := fun job => (job_cost job - (job_last_nps job - ε)))
@@ -417,7 +428,9 @@ Module RTAforConcreteModels.
               apply/andP; split; first by done.
               rewrite prednK; first by done.
               rewrite -(leq_add2r 1) !addn1 prednK.
+              try ( eapply number_of_preemption_points_at_least_two with (job_cost0 := job_cost); eauto 2 ) ||
               eapply number_of_preemption_points_at_least_two with (job_cost := job_cost); eauto 2.
+              try ( eapply list_of_preemption_point_is_not_empty with (job_cost0 := job_cost); eauto 2 ) ||
               eapply list_of_preemption_point_is_not_empty with (job_cost := job_cost); eauto 2. 
             }
               by done.            
@@ -462,6 +475,7 @@ Module RTAforConcreteModels.
               rewrite leq_add2r.
               apply domination_of_distances_implies_domination_of_seq; try done; eauto 2. 
               rewrite BEG // BEGj //.
+              try ( eapply number_of_preemption_points_at_least_two with (job_cost0 := job_cost); eauto 2 ) ||
               eapply number_of_preemption_points_at_least_two with (job_cost := job_cost); eauto 2.
               rewrite -TSK; apply HYP1; try done.
               intros.              rewrite -TSK; eauto 2.
@@ -545,11 +559,16 @@ Module RTAforConcreteModels.
       Proof.
         move: (H_task_model_with_floating_nonpreemptive_regions) => [LIMJ JMLETM].
         move: (LIMJ) => [ZERO [LSMj [BEG [END HH]]]].
+        ( try ( eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments
+          with (task_lock_in_service := fun tsk => task_cost tsk) 
+               (job_lock_in_service := fun job => (job_cost job - (job_last_nps job - ε)))
+               (L0 := L) (job_max_nps0 := job_max_nps)
+               (job_cost0 := job_cost ) ) ||
         eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments
           with (task_lock_in_service := fun tsk => task_cost tsk) 
                (job_lock_in_service := fun job => (job_cost job - (job_last_nps job - ε)))
                (L := L) (job_max_nps := job_max_nps)
-               (job_cost := job_cost )
+               (job_cost := job_cost ) )
         ; eauto 2.
         { by apply model_with_fixed_preemption_points_is_correct. }
         { by eapply model_with_fixed_preemption_points_is_model_with_bounded_nonpreemptive_regions; eauto 2. }
@@ -598,7 +617,9 @@ Module RTAforConcreteModels.
               apply/andP; split; first by done.
               rewrite prednK; first by done.
               rewrite -(leq_add2r 1) !addn1 prednK.
+              try ( eapply number_of_preemption_points_at_least_two with (job_cost0 := job_cost); eauto 2 ) ||
               eapply number_of_preemption_points_at_least_two with (job_cost := job_cost); eauto 2. 
+              try ( eapply list_of_preemption_point_is_not_empty with (job_cost0 := job_cost); eauto 2 ) ||
               eapply list_of_preemption_point_is_not_empty with (job_cost := job_cost); eauto 2. 
             }
               by done.
@@ -630,4 +651,4 @@ Module RTAforConcreteModels.
     
   End Analysis. 
   
-End RTAforConcreteModels.
\ No newline at end of file
+End RTAforConcreteModels.
diff --git a/classic/model/schedule/uni/limited/edf/nonpr_reg/response_time_bound.v b/classic/model/schedule/uni/limited/edf/nonpr_reg/response_time_bound.v
index a89b53eee865d6735f8b1709a2c3998870e0eaac..4cb4c88081c823295c361d3cbcc435d51d954686 100644
--- a/classic/model/schedule/uni/limited/edf/nonpr_reg/response_time_bound.v
+++ b/classic/model/schedule/uni/limited/edf/nonpr_reg/response_time_bound.v
@@ -275,7 +275,8 @@ Module RTAforEDFwithBoundedNonpreemptiveSegmentsWithArrivalCurves.
           move: SCHEDHP => [j_hp [ARRB [HP SCHEDHP]]].
           apply/eqP; rewrite eqb0 Bool.negb_involutive.
           have EQ: s = j_hp.
-          { by apply only_one_job_scheduled with (sched := sched) (t := t); [apply/eqP | ]. }
+          { by ( try ( apply only_one_job_scheduled with (sched0 := sched) (t0 := t) ) ||
+                apply only_one_job_scheduled with (sched := sched) (t := t) ); [apply/eqP | ]. }
             by rewrite EQ.
           rewrite ltn_subRL in NEQ.
           apply leq_trans with (t1 + blocking_bound); last by apply ltnW. 
diff --git a/classic/model/schedule/uni/limited/edf/response_time_bound.v b/classic/model/schedule/uni/limited/edf/response_time_bound.v
index 4f12c262251a3531e7d3617221ed771478e98a6f..ec3ae03b9a8f9a1af0ccc27cf7f3d1297f0f4bb4 100644
--- a/classic/model/schedule/uni/limited/edf/response_time_bound.v
+++ b/classic/model/schedule/uni/limited/edf/response_time_bound.v
@@ -636,6 +636,9 @@ Module AbstractRTAforEDFwithArrivalCurves.
       intros js ARRs TSKs.
       move: (posnP (job_cost js)) => [ZERO|POS].
       { by rewrite /is_response_time_bound_of_job /completed_by ZERO. }    
+      try ( eapply AbstractSeqRTA.uniprocessor_response_time_bound_seq with
+          (interference0 := interference) (interfering_workload0 := interfering_workload)
+          (task_interference_bound_function := fun tsk A R => IBF A R) (L0 := L); eauto 3 ) ||
       eapply AbstractSeqRTA.uniprocessor_response_time_bound_seq with
           (interference := interference) (interfering_workload := interfering_workload)
           (task_interference_bound_function := fun tsk A R => IBF A R) (L := L); eauto 3.
@@ -648,4 +651,4 @@ Module AbstractRTAforEDFwithArrivalCurves.
      
   End AbstractResponseTimeAnalysisForEDF. 
    
-End AbstractRTAforEDFwithArrivalCurves. 
\ No newline at end of file
+End AbstractRTAforEDFwithArrivalCurves.
diff --git a/classic/model/schedule/uni/limited/fixed_priority/nonpr_reg/concrete_models/response_time_bound.v b/classic/model/schedule/uni/limited/fixed_priority/nonpr_reg/concrete_models/response_time_bound.v
index 75bc2a0e46ac2dc5293a8e73469dc5154330f85b..52d1fd6d794e553d3810895db68eb51b72cbf347 100644
--- a/classic/model/schedule/uni/limited/fixed_priority/nonpr_reg/concrete_models/response_time_bound.v
+++ b/classic/model/schedule/uni/limited/fixed_priority/nonpr_reg/concrete_models/response_time_bound.v
@@ -212,6 +212,12 @@ Module RTAforConcreteModels.
           }
             by rewrite /is_response_time_bound_of_job /completed_by ZEROj.
         }
+        try ( eapply uniprocessor_response_time_bound_fp_with_bounded_nonpreemptive_segments with
+            (job_max_nps := fun j => job_cost j)
+            (task_max_nps := fun tsk => task_cost tsk)
+            (job_lock_in_service := fun j => ε)
+            (task_lock_in_service := fun tsk => ε)
+            (L0 := L); eauto 2 ) ||
         eapply uniprocessor_response_time_bound_fp_with_bounded_nonpreemptive_segments with
             (job_max_nps := fun j => job_cost j)
             (task_max_nps := fun tsk => task_cost tsk)
@@ -333,11 +339,16 @@ Module RTAforConcreteModels.
               by rewrite -(leq_add2r 1) !addn1 prednK //.
           }
         }
+        ( try ( eapply uniprocessor_response_time_bound_fp_with_bounded_nonpreemptive_segments
+          with (task_lock_in_service := fun tsk => (task_cost tsk - (task_last_nps tsk - ε))) 
+               (job_lock_in_service := fun job => (job_cost job - (job_last_nps job - ε)))
+               (L0 := L) (job_max_nps0 := job_max_nps)
+               (job_cost0 := job_cost ) ) ||
         eapply uniprocessor_response_time_bound_fp_with_bounded_nonpreemptive_segments
           with (task_lock_in_service := fun tsk => (task_cost tsk - (task_last_nps tsk - ε))) 
                (job_lock_in_service := fun job => (job_cost job - (job_last_nps job - ε)))
                (L := L) (job_max_nps := job_max_nps)
-               (job_cost := job_cost )
+               (job_cost := job_cost ))
         ; eauto 2.
         { by apply model_with_fixed_preemption_points_is_correct. }
         {
@@ -393,7 +404,9 @@ Module RTAforConcreteModels.
               apply/andP; split; first by done.
               rewrite prednK; first by done.
               rewrite -(leq_add2r 1) !addn1 prednK.
+              try ( eapply number_of_preemption_points_at_least_two with (job_cost0 := job_cost); eauto 2 ) ||
               eapply number_of_preemption_points_at_least_two with (job_cost := job_cost); eauto 2.
+              try ( eapply list_of_preemption_point_is_not_empty with (job_cost0 := job_cost); eauto 2 ) ||
               eapply list_of_preemption_point_is_not_empty with (job_cost := job_cost); eauto 2. 
             }
               by done.
@@ -439,6 +452,7 @@ Module RTAforConcreteModels.
               rewrite leq_add2r.
               apply domination_of_distances_implies_domination_of_seq; try done; eauto 2. 
               rewrite BEG // BEGj //.
+              try ( eapply number_of_preemption_points_at_least_two with (job_cost0 := job_cost); eauto 2 ) ||
               eapply number_of_preemption_points_at_least_two with (job_cost := job_cost); eauto 2.
               rewrite -TSK; apply HYP1; try done.
               intros.              rewrite -TSK; eauto 2.
@@ -521,6 +535,11 @@ Module RTAforConcreteModels.
       Proof.
         move: (H_task_model_with_floating_nonpreemptive_regions) => [LIMJ JMLETM].
         move: (LIMJ) => [ZERO [LSMj [BEG [END HH]]]].
+        try ( eapply uniprocessor_response_time_bound_fp_with_bounded_nonpreemptive_segments
+          with (task_lock_in_service := fun tsk => task_cost tsk) 
+               (job_lock_in_service := fun job => (job_cost job - (job_last_nps job - ε)))
+               (L0 := L) (job_max_nps0 := job_max_nps)
+               (job_cost0 := job_cost ) ) ||
         eapply uniprocessor_response_time_bound_fp_with_bounded_nonpreemptive_segments
           with (task_lock_in_service := fun tsk => task_cost tsk) 
                (job_lock_in_service := fun job => (job_cost job - (job_last_nps job - ε)))
@@ -573,7 +592,9 @@ Module RTAforConcreteModels.
               apply/andP; split; first by done.
               rewrite prednK; first by done.
               rewrite -(leq_add2r 1) !addn1 prednK.
+              try ( eapply number_of_preemption_points_at_least_two with (job_cost0 := job_cost); eauto 2 ) ||
               eapply number_of_preemption_points_at_least_two with (job_cost := job_cost); eauto 2. 
+              try ( eapply list_of_preemption_point_is_not_empty with (job_cost0 := job_cost); eauto 2 ) ||
               eapply list_of_preemption_point_is_not_empty with (job_cost := job_cost); eauto 2. 
             }
               by done.
@@ -606,4 +627,4 @@ Module RTAforConcreteModels.
 
   End Analysis.
   
-End RTAforConcreteModels.
\ No newline at end of file
+End RTAforConcreteModels.
diff --git a/classic/model/schedule/uni/limited/fixed_priority/nonpr_reg/response_time_bound.v b/classic/model/schedule/uni/limited/fixed_priority/nonpr_reg/response_time_bound.v
index 1aedd6fd7c7144a16c91ebb8ff2ba170bc5f8ec2..8e32ca77c23bf5de8dce6e95ee76e13496d9346b 100644
--- a/classic/model/schedule/uni/limited/fixed_priority/nonpr_reg/response_time_bound.v
+++ b/classic/model/schedule/uni/limited/fixed_priority/nonpr_reg/response_time_bound.v
@@ -229,7 +229,8 @@ Module RTAforFPwithBoundedNonpreemptiveSegmentsWithArrivalCurves.
           move: SCHEDHP => [j_hp [ARRB [HP SCHEDHP]]].
           apply/eqP; rewrite eqb0 Bool.negb_involutive.
           have EQ: s = j_hp.
-          { by apply only_one_job_scheduled with (sched := sched) (t := t); [apply/eqP | ]. }
+          { by ( try ( apply only_one_job_scheduled with (sched0 := sched) (t0 := t) ) ||
+                apply only_one_job_scheduled with (sched := sched) (t := t)); [apply/eqP | ]. }
             by rewrite EQ.
           rewrite ltn_subRL in NEQ.
           apply leq_trans with (t1 + blocking_bound); last by apply ltnW. 
diff --git a/classic/model/schedule/uni/limited/fixed_priority/response_time_bound.v b/classic/model/schedule/uni/limited/fixed_priority/response_time_bound.v
index 48b84c1cd01e4e3f0e3da1f142fe975241668af0..d7648ee4a27c32883bce28e1870db2baa83d96f1 100644
--- a/classic/model/schedule/uni/limited/fixed_priority/response_time_bound.v
+++ b/classic/model/schedule/uni/limited/fixed_priority/response_time_bound.v
@@ -421,6 +421,9 @@ Module AbstractRTAforFPwithArrivalCurves.
       { by rewrite /is_response_time_bound_of_job /completed_by ZERO. }
       move: H_proper_job_lock_in_service => [T1 [T2 T3]].
       move: H_proper_task_lock_in_service => [T4 T5]. 
+      try ( eapply AbstractSeqRTA.uniprocessor_response_time_bound_seq with
+          (interference0 := interference) (interfering_workload0 := interfering_workload)
+          (task_interference_bound_function := fun _ A R => IBF R) (L0 := L) (ts0 := ts); eauto 3 ) ||
       eapply AbstractSeqRTA.uniprocessor_response_time_bound_seq with
           (interference := interference) (interfering_workload := interfering_workload)
           (task_interference_bound_function := fun _ A R => IBF R) (L := L) (ts := ts); eauto 3.
@@ -433,4 +436,4 @@ Module AbstractRTAforFPwithArrivalCurves.
     
   End AbstractResponseTimeAnalysisForFP.  
          
-End AbstractRTAforFPwithArrivalCurves.
\ No newline at end of file
+End AbstractRTAforFPwithArrivalCurves.
diff --git a/classic/model/schedule/uni/limited/jlfp_instantiation.v b/classic/model/schedule/uni/limited/jlfp_instantiation.v
index b2637679a4eb73e9eeccedc1151b4d8b5a8be037..58aee51244acef55759e133f186df3ad1499d567 100644
--- a/classic/model/schedule/uni/limited/jlfp_instantiation.v
+++ b/classic/model/schedule/uni/limited/jlfp_instantiation.v
@@ -283,6 +283,7 @@ Module JLFPInstantiation.
           apply/hasP; exists j.
           { rewrite /arrivals_of_task_before /arrivals_of_task_between.
             rewrite /arrivals_of_task_between mem_filter; apply/andP; split; first by rewrite /is_job_of_task. 
+              try ( by unfold jobs_arrived_before in ARR; apply jobs_arrived_between_sub with (t2 := 0) (t3 := upp) ) ||
               by unfold jobs_arrived_before in ARR; apply jobs_arrived_between_sub with (t1 := 0) (t2 := upp). 
           }
           { case HP: (higher_eq_priority s j).
@@ -430,6 +431,7 @@ Module JLFPInstantiation.
                 rewrite eqn_leq; apply/andP; split; last by apply service_of_jobs_le_1 with job_arrival.
                 rewrite (big_rem jo) //=.
                 rewrite PRIO  /service_at /scheduled_at SCHED eq_refl add1n; by done.
+                try ( apply arrived_between_implies_in_arrivals with (job_arrival0 := job_arrival); try done ) ||
                 apply arrived_between_implies_in_arrivals with (job_arrival := job_arrival); try done.
                 unfold jobs_come_from_arrival_sequence in *.
                 apply H_jobs_come_from_arrival_sequence with (t1 + k). by rewrite /scheduled_at SCHED.
@@ -556,6 +558,7 @@ Module JLFPInstantiation.
                                                        rewrite PRIO /job_from_another_task_with_higher_eq_priority
                                                                /is_interference_from_another_task_with_higher_eq_priority /service_at
                                                                /scheduled_at SCHED eq_refl add1n PRIO; by done.
+                                                       try ( apply arrived_between_implies_in_arrivals with (job_arrival0 := job_arrival); try done ) ||
                                                        apply arrived_between_implies_in_arrivals with (job_arrival := job_arrival); try done.
                                                        unfold jobs_come_from_arrival_sequence in *.
                                                        apply H_jobs_come_from_arrival_sequence with (t1 + k). by rewrite /scheduled_at SCHED.
@@ -657,6 +660,7 @@ Module JLFPInstantiation.
               apply in_arrivals_implies_arrived in H0; by done.
               move: H1 => /andP [H3 H4].
               unfold FP_to_JLFP.  by done.
+              try ( apply in_arrivals_implies_arrived_between with (job_arrival0 := job_arrival) in H0; try done ) ||
               apply in_arrivals_implies_arrived_between with (job_arrival := job_arrival) in H0; try done.
             }
             {
@@ -694,6 +698,7 @@ Module JLFPInstantiation.
                   intros jo IN; apply/negP; intros EQ; move: EQ => /eqP EQ.
                   subst jo.
                   unfold arrivals_between in *.
+                  try ( apply in_arrivals_implies_arrived_between with (job_arrival0:= job_arrival) in IN; try done ) ||
                   apply in_arrivals_implies_arrived_between with (job_arrival:= job_arrival) in IN; try done.
                     by move: IN => /andP [_ IN]; move: H1; rewrite leqNgt; move => /negP LT; apply: LT.
                 }
@@ -705,6 +710,7 @@ Module JLFPInstantiation.
               {
                 have JIN: j \in arrivals_between 0 t.
                 { eapply completed_implies_scheduled_before in H1; eauto 2.
+                  try ( apply arrived_between_implies_in_arrivals with (job_arrival0:= job_arrival); try done ) ||
                   apply arrived_between_implies_in_arrivals with (job_arrival:= job_arrival); try done.
                   move: H1 => [t' [H3 _]].
                   apply/andP; split; first by done.
diff --git a/classic/model/schedule/uni/limited/platform/priority_inversion_is_bounded.v b/classic/model/schedule/uni/limited/platform/priority_inversion_is_bounded.v
index b43be52f14efe390be041cd75254f04c2ce6ae3c..b346c8fcf7d2c0ceef7e26682efa4f60a11ec7f4 100644
--- a/classic/model/schedule/uni/limited/platform/priority_inversion_is_bounded.v
+++ b/classic/model/schedule/uni/limited/platform/priority_inversion_is_bounded.v
@@ -159,6 +159,7 @@ Module PriorityInversionIsBounded.
             { apply/andP; split.
               - apply/andP; split. unfold arrived_before, has_arrived in *. by rewrite ltnW. 
                 apply/negP; intro COMP; apply NOTCOMP'.
+                  try ( by apply completion_monotonic with (t0 := t) ) ||
                   by apply completion_monotonic with (t := t).
               - apply/negP; intro SCHED'.
                 apply only_one_job_scheduled with (j1 := j_hp) in SCHED'; last by done.
@@ -185,6 +186,7 @@ Module PriorityInversionIsBounded.
                   }
                   apply/andP; split. unfold arrived_before, has_arrived in *. by done. 
                   apply/negP; intro COMP; apply NOTCOMP'.
+                    try ( by apply completion_monotonic with (t0 := t) ) ||
                     by apply completion_monotonic with (t := t).
                 }
                 feed (PRIO j_hp' j_hp t PREEMPTP IN BACK); first by done.
@@ -193,11 +195,13 @@ Module PriorityInversionIsBounded.
         }
         repeat split; [| by done | by done].
         move: (SCHED) => PENDING.
-        eapply scheduled_implies_pending with (job_cost := job_cost) in PENDING; [| by eauto | by done].
+        ( try ( eapply scheduled_implies_pending with (job_cost0 := job_cost) in PENDING ) ||
+        eapply scheduled_implies_pending with (job_cost := job_cost) in PENDING ); [| by eauto | by done].
         apply/andP; split; last by apply leq_ltn_trans with (n := t); first by move: PENDING => /andP [ARR _]. 
         apply contraT; rewrite -ltnNge; intro LT; exfalso.
         feed (QUIET j_hp); first by eapply CONS, SCHED.
         specialize (QUIET HP LT).
+        try ( have COMP: job_completed_by j_hp t by apply completion_monotonic with (t0 := t1) ) ||
         have COMP: job_completed_by j_hp t by apply completion_monotonic with (t := t1).
         apply completed_implies_not_scheduled in COMP; last by done.
           by move: COMP => /negP COMP; apply COMP.
@@ -248,7 +252,8 @@ Module PriorityInversionIsBounded.
             rewrite !subnKC; last rewrite ltnW; by done.
               by rewrite ltnn in MIN. }
           have PP: preemption_time mpt.+1.
-          { apply first_moment_is_pt with (arr_seq := arr_seq) (j := s); eauto 2. }
+          { (try ( apply first_moment_is_pt with (arr_seq0 := arr_seq) (j0 := s) ) ||
+            apply first_moment_is_pt with (arr_seq := arr_seq) (j := s) ); eauto 2. }
           exists mpt.+1; repeat split; try done.
           - apply/andP; split; last by done.
               by apply H_jobs_must_arrive_to_execute in SCHEDsmpt.
@@ -315,7 +320,8 @@ Module PriorityInversionIsBounded.
         repeat split; [| by done | by done].
         move: (H_busy_interval_prefix) => [SL [QUIET [NOTQUIET EXj]]]. 
         move: (SCHED) => PENDING.
-        eapply scheduled_implies_pending with (job_cost := job_cost) in PENDING;
+        ( try ( eapply scheduled_implies_pending with (job_cost0 := job_cost) in PENDING ) ||
+        eapply scheduled_implies_pending with (job_cost := job_cost) in PENDING );
           [| by eauto | by done].
         apply/andP; split; 
           last by apply leq_ltn_trans with (n := t); first by move: PENDING => /andP [ARR _].
@@ -323,7 +329,8 @@ Module PriorityInversionIsBounded.
         feed (QUIET j_hp); first by eapply CONS, SCHED.
         specialize (QUIET HP LT).
         have COMP: job_completed_by j_hp t.
-        { by apply completion_monotonic with (t := t1); [ apply leq_trans with tp | ]. }
+        { by ( try ( apply completion_monotonic with (t0 := t1) ) ||
+              apply completion_monotonic with (t := t1)); [ apply leq_trans with tp | ]. }
         apply completed_implies_not_scheduled in COMP; last by done.
           by move: COMP => /negP COMP; apply COMP.
       Qed.
@@ -476,6 +483,7 @@ Module PriorityInversionIsBounded.
             destruct t1.
             { eapply zero_is_pt; [eauto 2 | apply H_jobs_come_from_arrival_sequence]. }
             eapply hp_job_not_scheduled_before_quiet_time in QT1; eauto 2.
+            try ( eapply first_moment_is_pt with (j0 := s); eauto 2 ) ||
             eapply first_moment_is_pt with (j := s); eauto 2.
           } 
           { move: (SCHED) => ARRs; apply H_jobs_come_from_arrival_sequence in ARRs.
@@ -585,4 +593,4 @@ Module PriorityInversionIsBounded.
 
   End PriorityInversionIsBounded. 
   
-End PriorityInversionIsBounded.
\ No newline at end of file
+End PriorityInversionIsBounded.
diff --git a/classic/model/schedule/uni/nonpreemptive/schedule.v b/classic/model/schedule/uni/nonpreemptive/schedule.v
index dbd44c9865a1570c20c36fde6df647d48fb86ccb..3273fbe3f98d86cec52f8932ce978e27c9ff6c35 100644
--- a/classic/model/schedule/uni/nonpreemptive/schedule.v
+++ b/classic/model/schedule/uni/nonpreemptive/schedule.v
@@ -113,7 +113,8 @@ Module NonpreemptiveSchedule.
           apply job_doesnt_complete_before_remaining_cost in NOTCOMP; last by done.
           apply contraT; rewrite negbK; intros COMP.
           exfalso; move: NOTCOMP => /negP NOTCOMP; apply: NOTCOMP.
-          apply completion_monotonic with (t := i); try ( by done).
+          ( try ( apply completion_monotonic with (t0 := i) ) ||
+          apply completion_monotonic with (t := i)); try ( by done).
             by apply leq_subRL_impl; first rewrite addn1.
         Qed.
         
@@ -241,7 +242,8 @@ Module NonpreemptiveSchedule.
 
                 have COMPL: completed_by job_cost sched j (t + job_remaining_cost j t - 1).
                 {
-                  apply completion_monotonic with (t := t' + job_remaining_cost j t');
+                  ( try ( apply completion_monotonic with (t0 := t' + job_remaining_cost j t') ) ||
+                  apply completion_monotonic with (t := t' + job_remaining_cost j t'));
                   [| by apply job_completes_after_remaining_cost].
                   unfold remaining_cost.
                   have LLF: t' < t - service sched j t.
diff --git a/classic/model/schedule/uni/susp/suspension_intervals.v b/classic/model/schedule/uni/susp/suspension_intervals.v
index 155b7b04e74d45a34ec9c05c6cd4a1ec6f447db8..2acf86b8c1d6af1aecbed0650795e09556520069 100644
--- a/classic/model/schedule/uni/susp/suspension_intervals.v
+++ b/classic/model/schedule/uni/susp/suspension_intervals.v
@@ -445,6 +445,7 @@ Module SuspensionIntervals.
                   apply contraT; rewrite -leqNgt; intro LE.
                   apply suspended_implies_not_completed in SUSPi.
                   exfalso; move: SUSPi => /negP COMPi; apply COMPi.
+                  try ( apply completion_monotonic with (t0 := t); try (by done) ) ||
                   apply completion_monotonic with (t := t); try (by done).
                   by apply/eqP.
                 }
@@ -502,6 +503,7 @@ Module SuspensionIntervals.
           {
             apply contraT; rewrite negbK; intro COMP.
             suff COMP': completed_by job_cost sched j t.+1 by rewrite COMP' in NOTCOMP'.
+            try ( by apply completion_monotonic with (t0 := t) ) ||
             by apply completion_monotonic with (t := t).
           }
           apply/andP; split; last by apply: (leq_ltn_trans _ LT).
diff --git a/classic/util/minmax.v b/classic/util/minmax.v
index 8c7c2d4196ce816afb51c2d94cdb6e9adb956ce9..6261fe835ab475ce638cd180349fdf15ed3bbd11 100644
--- a/classic/util/minmax.v
+++ b/classic/util/minmax.v
@@ -321,6 +321,7 @@ Section MinMaxSeq.
             F x <= F y.
         Proof.
           intros l x y SOME IN.
+          try ( apply seq_argmin_computes_min with (l0 := l); try (by done) ) ||
           apply seq_argmin_computes_min with (l := l); try (by done).
           - by intros x1 x2 x3; apply leq_trans.
           - by intros x1 x2 IN1 IN2; apply leq_total.
@@ -333,6 +334,7 @@ Section MinMaxSeq.
             F x >= F y.
         Proof.
           intros l x y SOME IN.
+          try ( apply seq_argmax_computes_max with (l0 := l); try (by done) ) ||
           apply seq_argmax_computes_max with (l := l); try (by done).
           - by intros x1 x2 x3; apply leq_trans.
           - by intros x1 x2 IN1 IN2; apply leq_total.
@@ -392,6 +394,7 @@ Section MinMaxSeq.
             x <= y.
         Proof.
           intros l x y SOME IN.
+          try ( apply seq_min_computes_min with (l0 := l); try (by done) ) ||
           apply seq_min_computes_min with (l := l); try (by done).
           - by intros x1 x2 x3; apply leq_trans.
           - by intros x1 x2 IN1 IN2; apply leq_total.
@@ -404,6 +407,7 @@ Section MinMaxSeq.
             x >= y.
         Proof.
           intros l x y SOME IN.
+          try ( apply seq_max_computes_max with (l0 := l); try (by done) ) ||
           apply seq_max_computes_max with (l := l); try (by done).
           - by intros x1 x2 x3; apply leq_trans.
           - by intros x1 x2 IN1 IN2; apply leq_total.
@@ -452,6 +456,7 @@ Section MinMaxSeq.
         min_nat_cond P a b != None.
     Proof.
       intros P a b x LE HOLDS.
+      try ( apply seq_argmin_exists with (x0 := x) ) ||
       apply seq_argmin_exists with (x := x).
       by rewrite mem_filter mem_values_between HOLDS LE.
     Qed.
@@ -484,6 +489,7 @@ Section MinMaxSeq.
         max_nat_cond P a b != None.
     Proof.
       intros P a b x LE HOLDS.
+      try ( apply seq_argmax_exists with (x0 := x) ) ||
       apply seq_argmax_exists with (x := x).
       by rewrite mem_filter mem_values_between HOLDS LE.
     Qed.
@@ -538,6 +544,7 @@ Section Kmin.
         move => l x _ IN /=.
         destruct (seq_argmin rel F l) as [|] eqn:MIN; first by done.
         suff NOTNONE: seq_argmin rel F l != None by rewrite MIN in NOTNONE.
+        try ( by apply seq_argmin_exists with (x0 := x) ) ||
         by apply seq_argmin_exists with (x := x).
       Qed.
     
diff --git a/results/edf/optimality.v b/results/edf/optimality.v
index 9fe6fbb49ebc2dfb632579967abe2a4634cfb56f..4450724d00251ed78bf508f6b022d276d7a1e68c 100644
--- a/results/edf/optimality.v
+++ b/results/edf/optimality.v
@@ -161,8 +161,8 @@ Section WeakOptimality.
     - by apply edf_transform_completed_jobs_dont_execute.
     - by apply edf_transform_deadlines_met.
     - by apply edf_transform_ensures_edf.
-    - by move=> [t SCHED_j]; apply edf_transform_job_scheduled' with (t := t).
-    - by move=> [t SCHED_j]; apply edf_transform_job_scheduled with (t := t).
+    - by move=> [t SCHED_j]; try ( apply edf_transform_job_scheduled' with (t0 := t) ) || apply edf_transform_job_scheduled' with (t := t).
+    - by move=> [t SCHED_j]; try ( apply edf_transform_job_scheduled with (t0 := t) ) || apply edf_transform_job_scheduled with (t := t).
   Qed.
 
 End WeakOptimality.
diff --git a/results/edf/rta/bounded_pi.v b/results/edf/rta/bounded_pi.v
index c96c4386014dd9a2febe4b5b90a1b3b265aae83a..793083c42afcbf8f3d72b90bfe793fdaf31e8e30 100644
--- a/results/edf/rta/bounded_pi.v
+++ b/results/edf/rta/bounded_pi.v
@@ -678,9 +678,12 @@ Section AbstractRTAforEDFwithArrivalCurves.
     move: H_sched_valid => [CARR MBR].
     move: (posnP (@job_cost _ Cost js)) => [ZERO|POS].
     { by rewrite /job_response_time_bound /completed_by ZERO. }    
+    ( try ( eapply uniprocessor_response_time_bound_seq with
+        (interference0 := interference) (interfering_workload0 := interfering_workload)
+        (task_interference_bound_function := fun tsk A R => IBF_other A R) (L0 := L) ) ||
     eapply uniprocessor_response_time_bound_seq with
         (interference := interference) (interfering_workload := interfering_workload)
-        (task_interference_bound_function := fun tsk A R => IBF_other A R) (L := L); eauto 2 with basic_facts.
+        (task_interference_bound_function := fun tsk A R => IBF_other A R) (L := L)); eauto 2 with basic_facts.
     - by apply instantiated_i_and_w_are_coherent_with_schedule.
     - by apply instantiated_interference_and_workload_consistent_with_sequential_tasks.
     - by apply instantiated_busy_intervals_are_bounded.
diff --git a/results/edf/rta/floating_nonpreemptive.v b/results/edf/rta/floating_nonpreemptive.v
index 1e90c04adb01531693b5d272e0c495b8ac2d3991..5b752d5c8a64838ed5d8b82c51fbe8228622d7b1 100644
--- a/results/edf/rta/floating_nonpreemptive.v
+++ b/results/edf/rta/floating_nonpreemptive.v
@@ -141,6 +141,7 @@ Section RTAforModelWithFloatingNonpreemptiveRegionsWithArrivalCurves.
   Proof.
     move: (H_valid_task_model_with_floating_nonpreemptive_regions) => [LIMJ JMLETM].
     move: (LIMJ) => [BEG [END _]].
+    try ( eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments with (L0 := L) ) ||
     eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments with (L := L).
     all: eauto 2 with basic_facts.
     rewrite subnn.
diff --git a/results/edf/rta/fully_nonpreemptive.v b/results/edf/rta/fully_nonpreemptive.v
index 98a3e67349a3cce8ade94229124cbf960241de95..a828bdffa324fd6feea834da4c66602d58cb207c 100644
--- a/results/edf/rta/fully_nonpreemptive.v
+++ b/results/edf/rta/fully_nonpreemptive.v
@@ -139,6 +139,7 @@ Section RTAforFullyNonPreemptiveEDFModelwithArrivalCurves.
       }
         by rewrite /job_response_time_bound /completed_by ZEROj.
     }
+    try ( eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments with (L0 := L) ) ||
     eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments with (L := L).
     all: eauto 3 with basic_facts.
   Qed.
diff --git a/results/edf/rta/fully_preemptive.v b/results/edf/rta/fully_preemptive.v
index 123eac0e3a58c88dde30cf054be0dee9263e5d3c..9be9531432810283262d483e1b96b393b523874d 100644
--- a/results/edf/rta/fully_preemptive.v
+++ b/results/edf/rta/fully_preemptive.v
@@ -127,6 +127,7 @@ Section RTAforFullyPreemptiveEDFModelwithArrivalCurves.
     have BLOCK: blocking_bound  ts tsk = 0.
     { by rewrite /blocking_bound /parameters.task_max_nonpreemptive_segment
                  /fully_preemptive.fully_preemptive_model subnn big1_eq. } 
+    try ( eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments with (L0 := L) ) ||
     eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments with (L := L) .
     all: eauto 2 with basic_facts.
     - move => A /andP [LT NEQ].
@@ -139,4 +140,3 @@ Section RTAforFullyPreemptiveEDFModelwithArrivalCurves.
   Qed.
     
 End RTAforFullyPreemptiveEDFModelwithArrivalCurves.
-
diff --git a/results/edf/rta/limited_preemptive.v b/results/edf/rta/limited_preemptive.v
index 95ad8fc559b0dfe76399d2ccc743ecd2f5fdb975..061fab7368c193fe24b7a7c7e67b718523ad658a 100644
--- a/results/edf/rta/limited_preemptive.v
+++ b/results/edf/rta/limited_preemptive.v
@@ -148,6 +148,7 @@ Section RTAforFixedPreemptionPointsModelwithArrivalCurves.
       move: TSK => /eqP TSK; move: POSt; rewrite /valid_job_cost TSK ZERO leqn0; move => /eqP Z.
       by rewrite /job_response_time_bound /completed_by Z.
     }
+    try ( eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments with (L0 := L) ) ||
     eapply uniprocessor_response_time_bound_edf_with_bounded_nonpreemptive_segments with (L := L).
     all: eauto 2 with basic_facts.
     rewrite subKn; first by done.
diff --git a/results/fifo/rta.v b/results/fifo/rta.v
index 998e00383a27e06e3c064b12fe129ef771a99589..f59b44bb98c7b57893fc47d955200ab94e2ee718 100644
--- a/results/fifo/rta.v
+++ b/results/fifo/rta.v
@@ -291,7 +291,8 @@ Section AbstractRTAforFIFOwithArrivalCurves.
       { rewrite /workload_of_jobs /IBF (big_rem tsk) //= (addnC (rbf tsk (job_arrival j - t1 + ε))).
         rewrite -addnBA; last first.
         { apply leq_trans with (task_rbf ε).
-          apply (task_rbf_1_ge_task_cost arr_seq) with (j := j) => //=; first by auto.
+          ( try ( apply (task_rbf_1_ge_task_cost arr_seq) with (j0 := j) => //= ) ||
+          apply (task_rbf_1_ge_task_cost arr_seq) with (j := j) => //=); first by auto.
           by apply task_rbf_monotone; [apply H_valid_arrival_curve | ssrlia]. }
         { eapply leq_trans; last first.
           by erewrite leq_add2l; eapply task_rbf_excl_tsk_bounds_task_workload_excl_j; eauto 1.
@@ -406,9 +407,12 @@ Section AbstractRTAforFIFOwithArrivalCurves.
     intros js ARRs TSKs.
     move: (posnP (@job_cost _ Cost js)) => [ZERO|POS].
     { by rewrite /job_response_time_bound /completed_by ZERO. }    
+    ( try ( eapply uniprocessor_response_time_bound with
+      (interference0 := interference) (interfering_workload0 := interfering_workload)
+      (interference_bound_function := fun tsk A R => IBF tsk A R) (L0 := L) ) ||
     eapply uniprocessor_response_time_bound with
       (interference := interference) (interfering_workload := interfering_workload)
-      (interference_bound_function := fun tsk A R => IBF tsk A R) (L := L); eauto 2 with basic_facts.
+      (interference_bound_function := fun tsk A R => IBF tsk A R) (L := L)); eauto 2 with basic_facts.
     - by apply instantiated_i_and_w_are_coherent_with_schedule.
     - by apply instantiated_busy_intervals_are_bounded.
     - by apply instantiated_interference_is_bounded.
@@ -419,6 +423,3 @@ Section AbstractRTAforFIFOwithArrivalCurves.
   Qed.
   
 End AbstractRTAforFIFOwithArrivalCurves. 
-
-
-
diff --git a/results/fixed_priority/rta/fully_nonpreemptive.v b/results/fixed_priority/rta/fully_nonpreemptive.v
index 04652878a042dc802655afb10f77a1d4f9cb179f..925ad4882d48201d14416e369aef05c32387e8c2 100644
--- a/results/fixed_priority/rta/fully_nonpreemptive.v
+++ b/results/fixed_priority/rta/fully_nonpreemptive.v
@@ -150,6 +150,8 @@ Section RTAforFullyNonPreemptiveFPModelwithArrivalCurves.
       }
       by rewrite /job_response_time_bound /completed_by ZEROj.
     }
+    try ( eapply uniprocessor_response_time_bound_fp_with_bounded_nonpreemptive_segments with
+        (L0 := L) ) ||
     eapply uniprocessor_response_time_bound_fp_with_bounded_nonpreemptive_segments with
         (L := L).
     all: eauto 3 with basic_facts.
diff --git a/results/fixed_priority/rta/limited_preemptive.v b/results/fixed_priority/rta/limited_preemptive.v
index 98b2a7c969440e16a4ce883f3dc6761ca8a51965..1dadfd26cc56c782cc2375c1d3575ea0789eeb7d 100644
--- a/results/fixed_priority/rta/limited_preemptive.v
+++ b/results/fixed_priority/rta/limited_preemptive.v
@@ -154,6 +154,8 @@ Section RTAforFixedPreemptionPointsModelwithArrivalCurves.
       move: TSK => /eqP TSK; move: POSt; rewrite /valid_job_cost TSK ZERO leqn0; move => /eqP Z.      
       by rewrite /job_response_time_bound /completed_by Z.
     }
+    try ( eapply uniprocessor_response_time_bound_fp_with_bounded_nonpreemptive_segments
+      with (L0 := L) ) ||
     eapply uniprocessor_response_time_bound_fp_with_bounded_nonpreemptive_segments
       with (L := L).
     all: eauto 2 with basic_facts.
diff --git a/scripts/known-long-proofs.json b/scripts/known-long-proofs.json
index c479bade585cbe5f027536dcffa72fd127aa9305..a5e0cc60aae214f74c4e17c8b2f669ba42da80be 100644
--- a/scripts/known-long-proofs.json
+++ b/scripts/known-long-proofs.json
@@ -12,26 +12,26 @@
             "bertogna_cirinei_response_time_bound_edf": 49,
             "bertogna_edf_all_cpus_in_affinity_busy": 52,
             "bertogna_edf_all_cpus_in_subaffinity_busy": 51,
-            "bertogna_edf_alpha'_is_full": 106,
-            "bertogna_edf_interference_by_different_tasks": 43,
-            "bertogna_edf_interference_in_non_full_processors": 133,
+            "bertogna_edf_alpha'_is_full": 116,
+            "bertogna_edf_interference_by_different_tasks": 46,
+            "bertogna_edf_interference_in_non_full_processors": 138,
             "bertogna_edf_sum_exceeds_total_interference": 43
         },
         "./classic/analysis/apa/bertogna_fp_comp.v": {
-            "fp_analysis_yields_response_time_bounds": 107
+            "fp_analysis_yields_response_time_bounds": 113
         },
         "./classic/analysis/apa/bertogna_fp_theory.v": {
             "bertogna_cirinei_response_time_bound_fp": 47,
             "bertogna_fp_all_cpus_in_affinity_busy": 54,
             "bertogna_fp_all_cpus_in_subaffinity_busy": 53,
-            "bertogna_fp_alpha'_is_full": 143,
-            "bertogna_fp_interference_by_different_tasks": 42,
-            "bertogna_fp_interference_in_non_full_processors": 149,
+            "bertogna_fp_alpha'_is_full": 154,
+            "bertogna_fp_interference_by_different_tasks": 45,
+            "bertogna_fp_interference_in_non_full_processors": 153,
             "bertogna_fp_sum_exceeds_total_interference": 42,
-            "bertogna_fp_workload_bounds_interference": 44
+            "bertogna_fp_workload_bounds_interference": 46
         },
         "./classic/analysis/apa/interference_bound_edf.v": {
-            "interference_bound_edf_holds_for_single_job_that_completes_on_time": 86,
+            "interference_bound_edf_holds_for_single_job_that_completes_on_time": 90,
             "interference_bound_edf_many_periods_in_between": 40
         },
         "./classic/analysis/apa/workload_bound.v": {
@@ -47,20 +47,21 @@
         },
         "./classic/analysis/global/basic/bertogna_edf_theory.v": {
             "bertogna_cirinei_response_time_bound_edf": 50,
-            "bertogna_edf_interference_by_different_tasks": 43,
-            "bertogna_edf_interference_in_non_full_processors": 129
+            "bertogna_edf_interference_by_different_tasks": 46,
+            "bertogna_edf_interference_in_non_full_processors": 133
         },
         "./classic/analysis/global/basic/bertogna_fp_comp.v": {
-            "fp_analysis_yields_response_time_bounds": 105
+            "fp_analysis_yields_response_time_bounds": 110
         },
         "./classic/analysis/global/basic/bertogna_fp_theory.v": {
             "bertogna_cirinei_response_time_bound_fp": 48,
-            "bertogna_fp_interference_by_different_tasks": 42,
-            "bertogna_fp_interference_in_non_full_processors": 164,
-            "bertogna_fp_workload_bounds_interference": 45
+            "bertogna_fp_all_cpus_are_busy": 44,
+            "bertogna_fp_interference_by_different_tasks": 45,
+            "bertogna_fp_interference_in_non_full_processors": 173,
+            "bertogna_fp_workload_bounds_interference": 47
         },
         "./classic/analysis/global/basic/interference_bound_edf.v": {
-            "interference_bound_edf_holds_for_single_job_that_completes_on_time": 92,
+            "interference_bound_edf_holds_for_single_job_that_completes_on_time": 100,
             "interference_bound_edf_many_periods_in_between": 40
         },
         "./classic/analysis/global/basic/workload_bound.v": {
@@ -76,30 +77,31 @@
         },
         "./classic/analysis/global/jitter/bertogna_edf_theory.v": {
             "bertogna_cirinei_response_time_bound_edf": 60,
-            "bertogna_edf_interference_by_different_tasks": 63,
-            "bertogna_edf_interference_in_non_full_processors": 125
+            "bertogna_edf_interference_by_different_tasks": 66,
+            "bertogna_edf_interference_in_non_full_processors": 130
         },
         "./classic/analysis/global/jitter/bertogna_fp_comp.v": {
-            "fp_analysis_yields_response_time_bounds": 120
+            "fp_analysis_yields_response_time_bounds": 125
         },
         "./classic/analysis/global/jitter/bertogna_fp_theory.v": {
             "bertogna_cirinei_response_time_bound_fp": 49,
-            "bertogna_fp_all_cpus_are_busy": 40,
-            "bertogna_fp_interference_by_different_tasks": 54,
-            "bertogna_fp_interference_in_non_full_processors": 173,
-            "bertogna_fp_workload_bounds_interference": 46
+            "bertogna_fp_all_cpus_are_busy": 46,
+            "bertogna_fp_interference_by_different_tasks": 57,
+            "bertogna_fp_interference_in_non_full_processors": 183,
+            "bertogna_fp_workload_bounds_interference": 49
         },
         "./classic/analysis/global/jitter/interference_bound_edf.v": {
-            "interference_bound_edf_holds_for_single_job_that_completes_on_time": 123,
-            "interference_bound_edf_holds_for_single_job_with_small_slack": 55,
-            "interference_bound_edf_j_fst_completed_on_time": 46,
+            "interference_bound_edf_holds_for_single_job_that_completes_on_time": 132,
+            "interference_bound_edf_holds_for_single_job_with_small_slack": 57,
+            "interference_bound_edf_j_fst_completed_on_time": 48,
             "interference_bound_edf_many_periods_in_between": 49
         },
         "./classic/analysis/global/jitter/workload_bound.v": {
             "W_monotonic": 51,
             "workload_bound_many_periods_in_between": 41,
             "workload_bound_n_k_covers_middle_jobs": 40,
-            "workload_bound_service_of_first_and_last_jobs": 50,
+            "workload_bound_n_k_equals_num_mid_jobs_plus_1": 42,
+            "workload_bound_service_of_first_and_last_jobs": 51,
             "workload_bounded_by_W": 48
         },
         "./classic/analysis/global/parallel/bertogna_edf_comp.v": {
@@ -110,24 +112,30 @@
         },
         "./classic/analysis/global/parallel/bertogna_edf_theory.v": {
             "bertogna_cirinei_response_time_bound_edf": 49,
-            "bertogna_edf_interference_on_all_cpus": 75
+            "bertogna_edf_interference_on_all_cpus": 78
         },
         "./classic/analysis/global/parallel/bertogna_fp_comp.v": {
-            "fp_analysis_yields_response_time_bounds": 98
+            "fp_analysis_yields_response_time_bounds": 103
         },
         "./classic/analysis/global/parallel/bertogna_fp_theory.v": {
             "bertogna_cirinei_response_time_bound_fp": 41,
-            "bertogna_fp_all_cpus_are_busy": 78
+            "bertogna_fp_all_cpus_are_busy": 81
         },
         "./classic/analysis/global/parallel/interference_bound_edf.v": {
             "interference_bound_edf_many_periods_in_between": 40,
-            "interference_bound_edf_n_k_covers_all_jobs": 45
+            "interference_bound_edf_n_k_covers_all_jobs": 47
         },
         "./classic/analysis/uni/arrival_curves/workload_bound.v": {
             "total_workload_le_total_rbf": 45,
             "total_workload_le_total_rbf'": 41,
             "total_workload_le_total_rbf''": 41
         },
+        "./classic/analysis/uni/basic/fp_rta_comp.v": {
+            "fp_analysis_yields_response_time_bounds": 42
+        },
+        "./classic/analysis/uni/basic/fp_rta_theory.v": {
+            "uniprocessor_response_time_bound_fp": 46
+        },
         "./classic/analysis/uni/basic/tdma_wcrt_analysis.v": {
             "formula_not_sched_St": 45,
             "formula_sched_St": 100,
@@ -138,18 +146,18 @@
             "sched_jitter_respects_policy": 77
         },
         "./classic/analysis/uni/susp/dynamic/jitter/jitter_schedule_service.v": {
-            "jitter_reduction_inductive_step_case2": 96,
+            "jitter_reduction_inductive_step_case2": 98,
             "jitter_reduction_less_job_service_before_interval_case5": 44,
             "jitter_reduction_service_jitter": 51
         },
         "./classic/analysis/uni/susp/dynamic/jitter/taskset_rta.v": {
-            "valid_response_time_bound_of_tsk_i": 52
+            "valid_response_time_bound_of_tsk_i": 57
         },
         "./classic/analysis/uni/susp/dynamic/oblivious/reduction.v": {
             "sched_new_completed_jobs_dont_execute": 42
         },
         "./classic/analysis/uni/susp/sustainability/allcosts/main_claim.v": {
-            "policy_is_weakly_sustainable": 63
+            "policy_is_weakly_sustainable": 66
         },
         "./classic/analysis/uni/susp/sustainability/allcosts/reduction_properties.v": {
             "executes_before_suspension_in_sched_new": 42,
@@ -169,7 +177,7 @@
         "./classic/implementation/apa/schedule.v": {
             "scheduler_has_no_duplicate_jobs": 55,
             "scheduler_mapping_is_work_conserving": 46,
-            "scheduler_priority": 113
+            "scheduler_priority": 114
         },
         "./classic/implementation/global/basic/bertogna_fp_example.v": {
             "schedulability_test_succeeds": 40
@@ -187,7 +195,7 @@
             "respects_FIFO": 45
         },
         "./classic/implementation/uni/basic/tdma_rta_example.v": {
-            "respects_TDMA_policy": 43
+            "respects_TDMA_policy": 46
         },
         "./classic/implementation/uni/jitter/fp_rta_example.v": {
             "RTA_yields_these_bounds": 52
@@ -196,18 +204,21 @@
             "RTA_yields_these_bounds": 51
         },
         "./classic/implementation/uni/susp/schedule.v": {
-            "scheduler_depends_only_on_prefix": 52
+            "scheduler_depends_only_on_prefix": 53
+        },
+        "./classic/model/arrival/jitter/arrival_sequence.v": {
+            "actual_arrivals_between_mem_cat": 42
         },
         "./classic/model/schedule/global/basic/constrained_deadlines.v": {
             "platform_cpus_busy_with_interfering_tasks": 65,
-            "platform_fp_cpus_busy_with_interfering_tasks": 82
+            "platform_fp_cpus_busy_with_interfering_tasks": 84
         },
         "./classic/model/schedule/global/basic/platform.v": {
             "work_conserving_eq_work_conserving_count": 67
         },
         "./classic/model/schedule/global/jitter/constrained_deadlines.v": {
             "platform_cpus_busy_with_interfering_tasks": 65,
-            "platform_fp_cpus_busy_with_interfering_tasks": 85
+            "platform_fp_cpus_busy_with_interfering_tasks": 87
         },
         "./classic/model/schedule/global/jitter/platform.v": {
             "work_conserving_eq_work_conserving_count": 68
@@ -215,7 +226,7 @@
         "./classic/model/schedule/uni/jitter/busy_interval.v": {
             "busy_interval_is_bounded": 59,
             "exists_busy_interval_prefix": 68,
-            "not_quiet_implies_exists_scheduled_hp_job": 46
+            "not_quiet_implies_exists_scheduled_hp_job": 50
         },
         "./classic/model/schedule/uni/limited/abstract_RTA/abstract_rta.v": {
             "in": 115
@@ -225,59 +236,49 @@
             "task_rbf_excl_tsk_bounds_task_workload_excl_j": 69
         },
         "./classic/model/schedule/uni/limited/busy_interval.v": {
-            "busy_interval_has_uninterrupted_service": 84,
-            "busy_interval_is_bounded": 81,
-            "exists_busy_interval_prefix": 75,
-            "no_idle_time_within_non_quiet_time_interval": 76,
-            "pending_hp_job_exists": 73
+            "busy_interval_is_bounded": 75,
+            "exists_busy_interval_prefix": 62,
+            "pending_hp_job_exists": 74
         },
         "./classic/model/schedule/uni/limited/edf/nonpr_reg/concrete_models/response_time_bound.v": {
-            "uniprocessor_response_time_bound_edf_with_fixed_preemption_points": 168,
-            "uniprocessor_response_time_bound_edf_with_floating_nonpreemptive_regions": 81
+            "uniprocessor_response_time_bound_edf_with_fixed_preemption_points": 174,
+            "uniprocessor_response_time_bound_edf_with_floating_nonpreemptive_regions": 88
         },
         "./classic/model/schedule/uni/limited/edf/nonpr_reg/response_time_bound.v": {
-            "priority_inversion_is_bounded": 56,
-            "priority_inversion_is_bounded_by_blocking": 58
+            "priority_inversion_is_bounded": 57,
+            "priority_inversion_is_bounded_by_blocking": 56
         },
         "./classic/model/schedule/uni/limited/edf/response_time_bound.v": {
             "A_is_in_concrete_search_space": 85,
             "instantiated_task_interference_is_bounded": 163
         },
         "./classic/model/schedule/uni/limited/fixed_priority/nonpr_reg/concrete_models/response_time_bound.v": {
-            "uniprocessor_response_time_bound_fp_with_fixed_preemption_points": 168,
-            "uniprocessor_response_time_bound_fp_with_floating_nonpreemptive_regions": 81
+            "uniprocessor_response_time_bound_fp_with_fixed_preemption_points": 176,
+            "uniprocessor_response_time_bound_fp_with_floating_nonpreemptive_regions": 88
         },
         "./classic/model/schedule/uni/limited/fixed_priority/nonpr_reg/response_time_bound.v": {
-            "priority_inversion_is_bounded": 52
+            "priority_inversion_is_bounded": 53
         },
         "./classic/model/schedule/uni/limited/fixed_priority/response_time_bound.v": {
             "instantiated_task_interference_is_bounded": 47
         },
         "./classic/model/schedule/uni/limited/jlfp_instantiation.v": {
-            "cumulative_task_interference_split": 62,
-            "instantiated_cumulative_interference_of_hep_jobs_equal_total_interference_of_hep_jobs": 114,
-            "instantiated_cumulative_interference_of_hep_tasks_equal_total_interference_of_hep_tasks": 127,
-            "instantiated_quiet_time_equivalent_edf_quiet_time": 102
+            "cumulative_task_interference_split": 63,
+            "instantiated_cumulative_interference_of_hep_jobs_equal_total_interference_of_hep_jobs": 115,
+            "instantiated_cumulative_interference_of_hep_tasks_equal_total_interference_of_hep_tasks": 128,
+            "instantiated_quiet_time_equivalent_edf_quiet_time": 105
         },
         "./classic/model/schedule/uni/limited/platform/limited.v": {
             "model_with_fixed_preemption_points_is_model_with_bounded_nonpreemptive_regions": 83
         },
         "./classic/model/schedule/uni/limited/platform/priority_inversion_is_bounded.v": {
-            "=>": 119,
-            "not_quiet_implies_exists_scheduled_hp_job_after_preemption_point": 55,
-            "not_quiet_implies_exists_scheduled_hp_job_at_preemption_point": 90,
-            "scheduling_of_any_segment_starts_with_preemption_time": 44
-        },
-        "./classic/model/schedule/uni/limited/platform/util.v": {
-            "belonging_to_segment_of_seq_is_total": 46,
-            "distance_between_neighboring_elements_le_max_distance_in_seq": 43,
-            "domination_of_distances_implies_domination_of_seq": 58,
-            "max_distance_in_nontrivial_seq_is_positive": 127,
-            "max_distance_in_seq_le_last_element_of_seq": 47,
-            "max_of_dominating_seq": 47
+            "=>": 120,
+            "not_quiet_implies_exists_scheduled_hp_job_after_preemption_point": 57,
+            "not_quiet_implies_exists_scheduled_hp_job_at_preemption_point": 94,
+            "scheduling_of_any_segment_starts_with_preemption_time": 45
         },
         "./classic/model/schedule/uni/nonpreemptive/schedule.v": {
-            "j_is_not_scheduled_at_t_minus_service_minus_one": 54,
+            "j_is_not_scheduled_at_t_minus_service_minus_one": 55,
             "j_is_scheduled_at_t_minus_service": 74
         },
         "./classic/model/schedule/uni/service.v": {
@@ -292,7 +293,7 @@
             "same_service_implies_same_last_execution": 49
         },
         "./classic/model/schedule/uni/susp/suspension_intervals.v": {
-            "cumulative_suspension_eq_total_suspension": 86,
+            "cumulative_suspension_eq_total_suspension": 87,
             "cumulative_suspension_le_total_suspension": 57
         },
         "./classic/model/schedule/uni/sustainability.v": {