diff --git a/implementation/basic/schedule.v b/implementation/basic/schedule.v
index 8435ae225fd7c11d447bdcbac8dde1944dd041bb..0a546122efc26c66e8bf56c1b450637ae492cc7e 100644
--- a/implementation/basic/schedule.v
+++ b/implementation/basic/schedule.v
@@ -145,7 +145,7 @@ Module ConcreteScheduler.
           apply eq_big_nat; move => t0 /andP [_ LT].
           unfold service_at; apply eq_bigl; red; intros cpu'.
           fold (schedule_prefix job_cost num_cpus arr_seq higher_eq_priority).
-          by rewrite 2?scheduler_same_prefix ?leqnn //.
+          by rewrite /scheduled_on 2?scheduler_same_prefix ?leqnn //.
         }
       Qed.
       
@@ -203,9 +203,10 @@ Module ConcreteScheduler.
           unfold pending; f_equal; f_equal.
           unfold completed; f_equal.
           unfold service; apply eq_big_nat; move => i /andP [_ LTi].
-          unfold service_at; apply eq_bigl; red; intro cpu; f_equal.
+          unfold service_at; apply eq_bigl; red; intro cpu.
+          unfold scheduled_on; f_equal.
           fold (schedule_prefix job_cost num_cpus arr_seq higher_eq_priority).
-          by rewrite scheduler_same_prefix //.
+          by rewrite scheduler_same_prefix.
         }
       Qed.
 
@@ -293,6 +294,7 @@ Module ConcreteScheduler.
           rewrite big_nat_cond [\sum_(_ <= _ < _ | true)_]big_nat_cond.
           apply eq_bigr; move => i /andP [/andP [_ LT] _].
           apply eq_bigl; red; ins.
+          unfold scheduled_on; f_equal.
           fold (schedule_prefix job_cost num_cpus arr_seq higher_eq_priority).
           by rewrite scheduler_same_prefix.
         }
diff --git a/implementation/jitter/schedule.v b/implementation/jitter/schedule.v
index 21d18bb3a81e951da845cf7c5edc7b2a5d4c9d76..72a593d1b4cc096e988a364064a1e199069c5d2a 100644
--- a/implementation/jitter/schedule.v
+++ b/implementation/jitter/schedule.v
@@ -146,6 +146,7 @@ Module ConcreteScheduler.
           unfold completed, service; f_equal.
           apply eq_big_nat; move => t0 /andP [_ LT].
           unfold service_at; apply eq_bigl; red; intros cpu'.
+          unfold scheduled_on; f_equal.
           fold (schedule_prefix job_cost job_jitter num_cpus arr_seq higher_eq_priority).
           by rewrite 2?scheduler_same_prefix ?leqnn //.
         }
@@ -207,7 +208,8 @@ Module ConcreteScheduler.
           unfold pending; f_equal; f_equal.
           unfold completed; f_equal.
           unfold service; apply eq_big_nat; move => i /andP [_ LTi].
-          unfold service_at; apply eq_bigl; red; intro cpu; f_equal.
+          unfold service_at; apply eq_bigl; red; intro cpu.
+          unfold scheduled_on; f_equal.
           fold (schedule_prefix job_cost job_jitter num_cpus arr_seq higher_eq_priority).
           by rewrite scheduler_same_prefix //.
         }
@@ -295,6 +297,7 @@ Module ConcreteScheduler.
           rewrite big_nat_cond [\sum_(_ <= _ < _ | true)_]big_nat_cond.
           apply eq_bigr; move => i /andP [/andP [_ LT] _].
           apply eq_bigl; red; ins.
+          unfold scheduled_on; f_equal.
           fold (schedule_prefix job_cost job_jitter num_cpus arr_seq higher_eq_priority).
           by rewrite scheduler_same_prefix.
         }
diff --git a/model/basic/interference.v b/model/basic/interference.v
index df50ade5e10b5e54184073af2d8695f94bd7f015..f9d92cb7d25e205d2867430da5f95bf4a0474839 100644
--- a/model/basic/interference.v
+++ b/model/basic/interference.v
@@ -192,6 +192,7 @@ Module Interference.
           rename SCHED into EQtsk0, Heq into SCHED; move: EQtsk0 => /eqP EQtsk0.
           assert (SCHEDULED: scheduled sched j0 t).
           {
+            unfold scheduled, scheduled_on.
             apply/existsP; exists x; apply/andP; split; [by done | by rewrite SCHED eq_refl].
           }
           rewrite big_mkcond (bigD1_seq j0) /=; last by rewrite undup_uniq.
@@ -224,7 +225,7 @@ Module Interference.
             apply negbTE; rewrite negb_exists; apply/forallP.
             intros x; rewrite negb_and.
             specialize (BACK x); rewrite negb_and in BACK; ins.
-            unfold schedules_job_of_tsk in BACK.
+            unfold schedules_job_of_tsk in BACK; unfold scheduled_on.
             destruct (sched x t) eqn:SCHED; last by ins.
             apply/negP; unfold not; move => /eqP BUG; inversion BUG; subst.
             by move: Heq => /eqP Heq; rewrite Heq eq_refl in BACK.
@@ -258,6 +259,7 @@ Module Interference.
           rewrite -addn1 addnC; apply leq_add; last by done.
           rewrite EQtsk0 eq_refl BACK andTb.
           apply eq_leq; symmetry; apply/eqP; rewrite eqb1.
+          unfold scheduled, scheduled_on.
           by apply/exists_inP; exists x; [by done | by rewrite SCHED].
         }
         {
diff --git a/model/basic/schedule.v b/model/basic/schedule.v
index ae17d3efc8cb37179e6cc02dc513bed07ada1ca5..7ac13307904927dfea87c3338bea30bad0886066 100644
--- a/model/basic/schedule.v
+++ b/model/basic/schedule.v
@@ -49,7 +49,7 @@ Module Schedule.
     
     (* A job j is scheduled at time t iff there exists a cpu where it is mapped.*)
     Definition scheduled (t: time) :=
-      [exists cpu in 'I_(num_cpus), sched cpu t == Some j].
+      [exists cpu in 'I_(num_cpus), scheduled_on cpu t].
 
     (* A processor cpu is idle at time t if it doesn't contain any jobs. *)
     Definition is_idle (cpu: 'I_(num_cpus)) (t: time) :=
@@ -59,7 +59,7 @@ Module Schedule.
        where it is scheduled on. Note that we use a sum to account for
        parallelism if required. *)
     Definition service_at (t: time) :=
-      \sum_(cpu < num_cpus | sched cpu t == Some j) 1.
+      \sum_(cpu < num_cpus | scheduled_on cpu t) 1.
 
     (* The cumulative service received by job j during [0, t'). *)
     Definition service (t': time) := \sum_(0 <= t < t') service_at t.
@@ -147,7 +147,7 @@ Module Schedule.
         forall t,
           ~~ scheduled sched j t = (service_at sched j t == 0).
       Proof.
-        unfold scheduled, service_at; intros t; apply/idP/idP.
+        unfold scheduled, service_at, scheduled_on; intros t; apply/idP/idP.
         {
           intros NOTSCHED.
           rewrite negb_exists_in in NOTSCHED.
@@ -343,6 +343,7 @@ Module Schedule.
         rewrite -> eq_bigr with (F2 := fun cpu => 0);
           first by rewrite big_const_seq iter_addn mul0n addn0.
         intros i SCHED; move: ARR; rewrite negb_exists_in; move => /forall_inP ARR.
+        unfold scheduled_on in *.
         by exploit (ARR i); [by ins | ins]; destruct (sched i t == Some j).
       Qed.
 
@@ -429,7 +430,7 @@ Module Schedule.
         forall j t,
           j \in jobs_scheduled_at sched t = scheduled sched j t.
       Proof.
-        unfold jobs_scheduled_at, scheduled.
+        unfold jobs_scheduled_at, scheduled, scheduled_on.
         intros j t; apply/idP/idP.
         {
           intros IN.
diff --git a/model/jitter/interference.v b/model/jitter/interference.v
index b428c33467ea419f95cbdf3cc84e6b38c941beed..6c6fedc5df3ee1fc8f586f27d9e591917bd87d61 100644
--- a/model/jitter/interference.v
+++ b/model/jitter/interference.v
@@ -170,6 +170,7 @@ Module Interference.
           rename SCHED into EQtsk0, Heq into SCHED; move: EQtsk0 => /eqP EQtsk0.
           assert (SCHEDULED: scheduled sched j0 t).
           {
+            unfold scheduled, scheduled_on.
             apply/existsP; exists x; apply/andP; split; [by done | by rewrite SCHED eq_refl].
           }
           rewrite big_mkcond (bigD1_seq j0) /=; last by rewrite undup_uniq.
@@ -202,7 +203,7 @@ Module Interference.
             apply negbTE; rewrite negb_exists; apply/forallP.
             intros x; rewrite negb_and.
             specialize (BACK x); rewrite negb_and in BACK; ins.
-            unfold schedules_job_of_tsk in BACK.
+            unfold schedules_job_of_tsk in BACK; unfold scheduled_on.
             destruct (sched x t) eqn:SCHED; last by ins.
             apply/negP; unfold not; move => /eqP BUG; inversion BUG; subst.
             by move: Heq => /eqP Heq; rewrite Heq eq_refl in BACK.
@@ -236,6 +237,7 @@ Module Interference.
           rewrite -addn1 addnC; apply leq_add; last by done.
           rewrite EQtsk0 eq_refl BACK andTb.
           apply eq_leq; symmetry; apply/eqP; rewrite eqb1.
+          unfold scheduled, scheduled_on.
           by apply/exists_inP; exists x; [by done | by rewrite SCHED].
         }
         {