diff --git a/analysis/facts/behavior/arrivals.v b/analysis/facts/behavior/arrivals.v
index 27461995c45892f1e41ce6a03643640780bb5a56..31314466936bf70c058bf1d349593ed6fefc68ca 100644
--- a/analysis/facts/behavior/arrivals.v
+++ b/analysis/facts/behavior/arrivals.v
@@ -10,6 +10,18 @@ Section ArrivalPredicates.
   (** Consider any kinds of jobs with arrival times. *)
   Context {Job : JobType} `{JobArrival Job}.
 
+  (** Make hypothesis more easier to discover. *)
+  Lemma consistent_times_valid_arrival :
+    forall arr_seq,
+      valid_arrival_sequence arr_seq -> consistent_arrival_times arr_seq.
+  Proof. by move=> ? []. Qed.
+
+  (** Make hypothesis more easier to discover. *)
+  Lemma uniq_valid_arrival :
+    forall arr_seq,
+      valid_arrival_sequence arr_seq -> arrival_sequence_uniq arr_seq.
+  Proof. by move=> ? []. Qed.
+
   (** A job that arrives in some interval <<[t1, t2)>> certainly arrives before
       time [t2]. *)
   Lemma arrived_between_before:
@@ -79,6 +91,26 @@ Section Arrived.
       backlogged sched j t -> ~~ completed_by sched j t.
   Proof. by move=> ? ? /andP[/any_ready_job_is_pending /andP[]]. Qed.
 
+  (** Make hypothesis more easier to discover. *)
+  Lemma job_scheduled_implies_ready :
+    jobs_must_be_ready_to_execute sched ->
+    forall j t,
+      scheduled_at sched j t -> job_ready sched j t.
+  Proof. exact. Qed.
+
+  (** Make hypothesis more easier to discover. *)
+  Lemma valid_schedule_jobs_come_from_arrival_sequence :
+    forall arr_seq,
+      valid_schedule sched arr_seq ->
+      jobs_come_from_arrival_sequence sched arr_seq.
+  Proof. by move=> ? []. Qed.
+
+  (** Make hypothesis more easier to discover. *)
+  Lemma valid_schedule_jobs_must_be_ready_to_execute :
+    forall arr_seq,
+      valid_schedule sched arr_seq -> jobs_must_be_ready_to_execute sched.
+  Proof. by move=> ? []. Qed.
+
 End Arrived.
 
 (** In this section, we establish useful facts about arrival sequence prefixes. *)
@@ -155,6 +187,12 @@ Section ArrivalSequencePrefix.
     (** Assume that job arrival times are consistent. *)
     Hypothesis H_consistent_arrival_times : consistent_arrival_times arr_seq.
 
+    (** Make hypothesis more easier to discover. *)
+    Lemma job_arrival_arrives_at :
+      forall {j t},
+        arrives_at arr_seq j t -> job_arrival j = t.
+    Proof. exact: H_consistent_arrival_times. Qed.
+
     (** To simplify subsequent proofs, we restate the
         [H_consistent_arrival_times] assumption as a trivial corollary. *)
     Lemma job_arrival_at :
diff --git a/analysis/facts/readiness/sequential.v b/analysis/facts/readiness/sequential.v
index 8614b72c8a9f1965a714fa4d08e0fe06a5bd6c29..3e342d51f710c56177ae4d2b3f5836a29971d2b3 100644
--- a/analysis/facts/readiness/sequential.v
+++ b/analysis/facts/readiness/sequential.v
@@ -65,7 +65,8 @@ Section SequentialTasksReadiness.
     - move: READY => /andP [PEND /allP ALL]; apply: ALL.
       rewrite mem_filter; apply/andP; split; first by done.
       by apply arrived_between_implies_in_arrivals => //.
-    - by apply H_valid_schedule in SCHED; rewrite SCHED in NREADY.
+    - exfalso; apply/(negP NREADY)/job_scheduled_implies_ready => //.
+      exact: (valid_schedule_jobs_must_be_ready_to_execute sched arr_seq).
   Qed.
 
   (* Finally, we show that the sequential readiness model is a
diff --git a/analysis/facts/transform/wc_correctness.v b/analysis/facts/transform/wc_correctness.v
index 97f486e23e7e2a2c082a3c941b01109a3654b493..4d95f7eb58eb6269b2e4a5d09f42c689d1412a02 100644
--- a/analysis/facts/transform/wc_correctness.v
+++ b/analysis/facts/transform/wc_correctness.v
@@ -84,10 +84,9 @@ Section AuxiliaryLemmasWorkConservingTransformation.
       move=> j t.
       rewrite /find_swap_candidate.
       destruct search_arg eqn:RES; last first.
-      { move: (H_jobs_must_be_ready j t).
-        rewrite /scheduled_at scheduled_in_def => READY SCHED_J.
-        apply READY in SCHED_J.
-        by apply (ready_implies_arrived sched). }
+      { rewrite -scheduled_in_def => sched_j.
+        apply: (ready_implies_arrived sched).
+        exact: job_scheduled_implies_ready. }
       { move=> /eqP SCHED_J.
         move: RES => /search_arg_pred.
         rewrite SCHED_J //. }
@@ -100,8 +99,8 @@ Section AuxiliaryLemmasWorkConservingTransformation.
     Proof.
       move=> j t SCHED_AT.
       move: (swap_job_scheduled_cases _ _ _ _ _ SCHED_AT)=> [OTHER |[AT_T1 | AT_T2]].
-      { have READY: job_ready sched j t by apply H_jobs_must_be_ready; rewrite -OTHER //.
-          by apply (ready_implies_arrived sched). }
+      { apply: (ready_implies_arrived sched).
+        by apply: job_scheduled_implies_ready; rewrite // -OTHER. }
       { set t2 := find_swap_candidate arr_seq sched t1 in AT_T1.
         move: AT_T1 => [EQ_T1 SCHED_AT'].
         apply fsc_respects_has_arrived.
@@ -110,18 +109,18 @@ Section AuxiliaryLemmasWorkConservingTransformation.
         rewrite EQ_T1 in SCHED_AT'.
         rewrite SCHED_AT' /scheduled_at.
         by rewrite scheduled_in_def. }
-      { set t2 := find_swap_candidate arr_seq sched t1 in AT_T2.
-        move: AT_T2 => [EQ_T2 SCHED_AT'].
-        have ORDER: t1<=t2 by apply swap_candidate_is_in_future.
-        have READY: job_ready sched j t1 by apply H_jobs_must_be_ready; rewrite -SCHED_AT' //.
-        rewrite /job_ready /basic_ready_instance /pending /completed_by in READY.
-        move: READY => /andP [ARR _].
-        rewrite EQ_T2.
-        rewrite /has_arrived in ARR.
-        apply leq_trans with (n := t1) => //. }
+      set t2 := find_swap_candidate arr_seq sched t1 in AT_T2.
+      move: AT_T2 => [EQ_T2 SCHED_AT'].
+      have ORDER: t1<=t2 by apply swap_candidate_is_in_future.
+      have READY: job_ready sched j t1.
+      { by apply: job_scheduled_implies_ready; rewrite // -SCHED_AT'. }
+      rewrite /job_ready /basic_ready_instance /pending /completed_by in READY.
+      move: READY => /andP [ARR _].
+      rewrite EQ_T2.
+      exact: (leq_trans ARR).
     Qed.
 
-    (** Finally we show that, in the transformed schedule, jobs are scheduled 
+    (** Finally we show that, in the transformed schedule, jobs are scheduled
         only if they are ready. *)
     Lemma fsc_jobs_must_be_ready_to_execute:
       jobs_must_be_ready_to_execute sched'.
diff --git a/results/fifo/rta.v b/results/fifo/rta.v
index ec72b8f43bcb87af9e95baf055022e56da31deea..78b8099a2ecd1295adf36dc1b0526dda4f88db4b 100644
--- a/results/fifo/rta.v
+++ b/results/fifo/rta.v
@@ -163,8 +163,9 @@ Section AbstractRTAforFIFOwithArrivalCurves.
       { rewrite negb_or /is_priority_inversion /is_priority_inversion
                 /is_interference_from_another_hep_job => /andP [HYP1 HYP2].
         ideal_proc_model_sched_case_analysis_eq sched t jo.
-        { exfalso; clear HYP1 HYP2.
-          destruct H_valid_schedule as [A B].
+        { exfalso=> {HYP1 HYP2}.
+          have A : jobs_come_from_arrival_sequence sched arr_seq.
+          { exact: valid_schedule_jobs_come_from_arrival_sequence. }
           eapply instantiated_busy_interval_equivalent_busy_interval in BUSY; try by rt_eauto.
           move: BUSY => [PREF _].
           by eapply not_quiet_implies_not_idle; rt_eauto. }
@@ -194,7 +195,8 @@ Section AbstractRTAforFIFOwithArrivalCurves.
       busy_intervals_are_bounded_by arr_seq sched tsk interference interfering_workload L.
     Proof.
       intros j ARR TSK POS.
-      destruct H_valid_schedule as [COME MUST ].
+      have COME : jobs_come_from_arrival_sequence sched arr_seq.
+      { exact: valid_schedule_jobs_come_from_arrival_sequence. }
       edestruct exists_busy_interval_from_total_workload_bound
         with (Δ := L) as [t1 [t2 [T1 [T2 GGG]]]]; rt_eauto.
       { by intros; rewrite {2}H_fixed_point; apply total_workload_le_total_rbf. }
@@ -202,7 +204,7 @@ Section AbstractRTAforFIFOwithArrivalCurves.
         split; first by done.
         by eapply instantiated_busy_interval_equivalent_busy_interval; rt_eauto. }
     Qed.
-    
+
     (** In this section, we prove that, under FIFO scheduling, the cumulative priority inversion experienced
         by a job [j] in any interval within its busy window is always [0]. We later use this fact to prove the bound on 
         the cumulative interference. *)
@@ -249,7 +251,7 @@ Section AbstractRTAforFIFOwithArrivalCurves.
               - by move : INTER => /eqP INTER; rewrite -scheduled_at_def in INTER.
               - by rewrite -ltnNge; apply leq_ltn_trans with (job_arrival j). } 
             apply instantiated_busy_interval_equivalent_busy_interval in H_busy_interval;
-              rt_eauto;last by done.
+              rt_eauto; last by [].
             move : H_busy_interval => [ [_ [_ [QUIET /andP [ARR _ ]]]] _].
             destruct (leqP t t1) as [LE | LT].
             { have EQ : t = job_arrival j by apply eq_trans with t1; lia.
@@ -260,17 +262,17 @@ Section AbstractRTAforFIFOwithArrivalCurves.
                 by apply leq_trans with (t1 +  Δ) ; [| apply ltnW].
               - by contradict QUIET. }
             by destruct H_valid_schedule as [COME MUST]. } }
-        { destruct H_valid_schedule as [READY MUST].
+        { have MUST : jobs_must_be_ready_to_execute sched.
+          { exact: (valid_schedule_jobs_must_be_ready_to_execute sched arr_seq). }
           have HAS : has_arrived s t by eapply (jobs_must_arrive_to_be_ready  sched).
           rewrite scheduled_at_def in INTER.
           unfold is_priority_inversion.
-          move: INTER => /eqP ->.
-          apply /negP; rewrite Bool.negb_involutive.
-          by apply leq_trans with t; [apply HAS | apply ltnW]. }
-        Unshelve.
-        all: try by done.
+          move: INTER => /eqP ->; apply /negP; rewrite Bool.negb_involutive.
+          by apply leq_trans with t; [apply HAS | apply ltnW].
+          Unshelve.
+          all: by []. }
       Qed.
-      
+
     End PriorityInversion.
 
     (** Using the above lemma, we prove that IBF is indeed an interference bound. *)
@@ -278,7 +280,8 @@ Section AbstractRTAforFIFOwithArrivalCurves.
       job_interference_is_bounded_by arr_seq sched tsk interference interfering_workload  IBF.
     Proof.
       move => t1 t2 Δ j ARRj TSKj BUSY IN_BUSY NCOMPL.
-      move: H_valid_schedule => [READY MUST ].
+      have COME : jobs_come_from_arrival_sequence sched arr_seq.
+      { exact: valid_schedule_jobs_come_from_arrival_sequence. }
       rewrite /cumul_interference cumulative_interference_split.
       have JPOS: job_cost_positive j by rewrite -ltnNge in NCOMPL; unfold job_cost_positive; lia.
       move: (BUSY) => [ [ /andP [LE GT] [QUIETt1 _ ] ] [QUIETt2 EQNs]].
@@ -294,27 +297,27 @@ Section AbstractRTAforFIFOwithArrivalCurves.
           ( 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 | lia]. }
-        { eapply leq_trans; last first.
-          by erewrite leq_add2l; eapply task_rbf_excl_tsk_bounds_task_workload_excl_j; eauto 1.
-          rewrite addnBA.
-          { rewrite leq_sub2r //; eapply leq_trans.
-            - apply sum_over_partitions_le => j' inJOBS.
-              by apply H_all_jobs_from_taskset, (in_arrivals_implies_arrived _ _ _ _ inJOBS). 
-            - rewrite (big_rem tsk) //= addnC leq_add //; last by rewrite subnKC.
-              rewrite big_seq_cond [in X in _ <= X]big_seq_cond big_mkcond [in X in _ <= X]big_mkcond //=. 
-              apply leq_sum => tsk' _; rewrite andbC //=.
-              destruct (tsk' \in rem (T:=Task) tsk ts) eqn:IN; last by done.
-              apply rem_in in IN.
-              eapply leq_trans; last first.
-              + by apply (task_workload_le_task_rbf _ _ _ IN H_valid_job_cost H_is_arrival_curve t1).
-              + by rewrite addnBAC //= subnKC //= addn1; apply leqW. } 
-          { rewrite /task_workload_between /task_workload /workload_of_jobs (big_rem j) //=.
-            - by rewrite TSKj; apply leq_addr.
-            - apply job_in_arrivals_between => //.
-              by apply /andP; split; [| rewrite subnKC; [rewrite addn1 |]].  } } }
+        eapply leq_trans; last first.
+        by erewrite leq_add2l; eapply task_rbf_excl_tsk_bounds_task_workload_excl_j; eauto 1.
+        rewrite addnBA.
+        { rewrite leq_sub2r //; eapply leq_trans.
+          - apply sum_over_partitions_le => j' inJOBS.
+            by apply H_all_jobs_from_taskset, (in_arrivals_implies_arrived _ _ _ _ inJOBS). 
+          - rewrite (big_rem tsk) //= addnC leq_add //; last by rewrite subnKC.
+            rewrite big_seq_cond [in X in _ <= X]big_seq_cond big_mkcond [in X in _ <= X]big_mkcond //=. 
+            apply leq_sum => tsk' _; rewrite andbC //=.
+            destruct (tsk' \in rem (T:=Task) tsk ts) eqn:IN; last by [].
+            apply rem_in in IN.
+            eapply leq_trans; last first.
+            + by apply (task_workload_le_task_rbf _ _ _ IN H_valid_job_cost H_is_arrival_curve t1).
+            + by rewrite addnBAC //= subnKC //= addn1; apply leqW. }
+        rewrite /task_workload_between /task_workload /workload_of_jobs (big_rem j) //=.
+        - by rewrite TSKj; apply leq_addr.
+        - apply job_in_arrivals_between => //.
+          by apply /andP; split; [| rewrite subnKC; [rewrite addn1 |]].  }
       apply: arrivals_uniq => //.
       apply: job_in_arrivals_between => //.
-      by apply /andP; split; [ | rewrite addn1]. 
+      by apply /andP; split; [ | rewrite addn1].
     Qed.
 
     (** Finally, we show that there exists a solution for the response-time equation. *)