From 1b8501dc7349387b4aceb66a8840ce0236daaf0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Brandenburg?= <bbb@mpi-sws.org> Date: Thu, 30 Mar 2023 13:11:16 +0200 Subject: [PATCH] move misplaced code out of `prosa.analysis.facts.busy_window` - The busy_window.v file still depends on the ideal uniprocessor assumption, so move it to the ideal submodule. - The priority_inversion.v file has nothing to do with busy windows, so move it to the prosa.analysis.facts.priority module. - Move a trivial quiet-time lemma from carry_in.v to quiet_time.v. Much cleanup of the ideal submodule remains to be done... See also: https://gitlab.mpi-sws.org/RT-PROOFS/rt-proofs/-/issues/112 --- analysis/facts/busy_interval/carry_in.v | 17 ++++------------- .../busy_interval/{ => ideal}/busy_interval.v | 0 analysis/facts/busy_interval/ideal/carry_in.v | 1 + .../busy_interval/ideal/hep_job_scheduled.v | 2 +- .../busy_interval/ideal/priority_inversion.v | 2 +- analysis/facts/busy_interval/quiet_time.v | 18 +++++++++++++----- analysis/facts/priority/edf.v | 2 +- .../inversion.v} | 0 results/fixed_priority/rta/bounded_pi.v | 2 +- 9 files changed, 22 insertions(+), 22 deletions(-) rename analysis/facts/busy_interval/{ => ideal}/busy_interval.v (100%) rename analysis/facts/{busy_interval/priority_inversion.v => priority/inversion.v} (100%) diff --git a/analysis/facts/busy_interval/carry_in.v b/analysis/facts/busy_interval/carry_in.v index 7e24459df..c4ff57326 100644 --- a/analysis/facts/busy_interval/carry_in.v +++ b/analysis/facts/busy_interval/carry_in.v @@ -1,8 +1,8 @@ Require Export prosa.analysis.facts.model.workload. -Require Export prosa.analysis.definitions.carry_in. -Require Export prosa.analysis.facts.busy_interval.busy_interval. Require Export prosa.analysis.facts.model.ideal.service_of_jobs. - +Require Export prosa.analysis.facts.busy_interval.quiet_time. +Require Export prosa.analysis.definitions.work_bearing_readiness. +Require Export prosa.model.schedule.work_conserving. (** * Existence of No Carry-In Instant *) @@ -60,14 +60,6 @@ Section ExistsNoCarryIn. (** ... and assume that the schedule is work-conserving. *) Hypothesis H_work_conserving : work_conserving arr_seq sched. - (** The fact that there is no carry-in at time instant [t] trivially - implies that [t] is a quiet time. *) - Lemma no_carry_in_implies_quiet_time : - forall j t, - no_carry_in t -> - quiet_time j t. - Proof. by move=> j t + j_hp ARR HP BEF; apply. Qed. - (** Conversely, the presence of a pending job implies that the processor isn't idle due to work-conservation. *) Lemma pending_job_implies_not_idle : @@ -230,8 +222,7 @@ Section ExistsNoCarryIn. - eapply in_arrivals_implies_arrived_between in A; eauto 2. } apply/eqP; rewrite eqn_leq; apply/andP; split; - last by apply service_of_jobs_le_workload; - auto using ideal_proc_model_provides_unit_service. + last by apply service_of_jobs_le_workload. rewrite /total_workload (workload_of_jobs_cat arr_seq t); last first. apply/andP; split; [by done | by rewrite leq_addr]. rewrite (service_of_jobs_cat_scheduling_interval _ _ _ _ _ _ _ t); try done; first last. diff --git a/analysis/facts/busy_interval/busy_interval.v b/analysis/facts/busy_interval/ideal/busy_interval.v similarity index 100% rename from analysis/facts/busy_interval/busy_interval.v rename to analysis/facts/busy_interval/ideal/busy_interval.v diff --git a/analysis/facts/busy_interval/ideal/carry_in.v b/analysis/facts/busy_interval/ideal/carry_in.v index a88fb6f27..1bc826f8d 100644 --- a/analysis/facts/busy_interval/ideal/carry_in.v +++ b/analysis/facts/busy_interval/ideal/carry_in.v @@ -1,4 +1,5 @@ Require Export prosa.analysis.facts.busy_interval.carry_in. +Require Export prosa.analysis.facts.busy_interval.ideal.busy_interval. (** The following lemma conceptually belongs in [prosa.analysis.facts.busy_interval.carry_in], but still has dependencies diff --git a/analysis/facts/busy_interval/ideal/hep_job_scheduled.v b/analysis/facts/busy_interval/ideal/hep_job_scheduled.v index 932556146..1d55f9e95 100644 --- a/analysis/facts/busy_interval/ideal/hep_job_scheduled.v +++ b/analysis/facts/busy_interval/ideal/hep_job_scheduled.v @@ -1,5 +1,5 @@ Require Export prosa.model.schedule.priority_driven. -Require Export prosa.analysis.facts.busy_interval.busy_interval. +Require Export prosa.analysis.facts.busy_interval.ideal.busy_interval. (** Throughout this file, we assume ideal uni-processor schedules. *) Require Import prosa.model.processor.ideal. diff --git a/analysis/facts/busy_interval/ideal/priority_inversion.v b/analysis/facts/busy_interval/ideal/priority_inversion.v index 6409a84ba..f08013b1a 100644 --- a/analysis/facts/busy_interval/ideal/priority_inversion.v +++ b/analysis/facts/busy_interval/ideal/priority_inversion.v @@ -1,4 +1,4 @@ -Require Export prosa.analysis.facts.busy_interval.priority_inversion. +Require Export prosa.analysis.facts.priority.inversion. (** Throughout this file, we assume ideal uni-processor schedules. *) Require Import prosa.model.processor.ideal. diff --git a/analysis/facts/busy_interval/quiet_time.v b/analysis/facts/busy_interval/quiet_time.v index f2b6f5655..400dc7733 100644 --- a/analysis/facts/busy_interval/quiet_time.v +++ b/analysis/facts/busy_interval/quiet_time.v @@ -1,5 +1,6 @@ Require Export prosa.analysis.definitions.busy_interval. - +Require Export prosa.analysis.definitions.carry_in. + (** In this module we collect some basic facts about quiet times. *) Section Facts. @@ -16,9 +17,16 @@ Section Facts. Variable arr_seq : arrival_sequence Job. (** We prove that 0 is always a quiet time. *) - Lemma zero_is_quiet_time (j : Job) : quiet_time arr_seq sched j 0. - Proof. - by intros jhp ARR HP AB; move: AB; rewrite /arrived_before ltn0. - Qed. + Lemma zero_is_quiet_time (j : Job) : + quiet_time arr_seq sched j 0. + Proof. by move=> jhp ARR HP; rewrite /arrived_before ltn0. Qed. + + (** The fact that there is no carry-in at time instant [t] trivially + implies that [t] is a quiet time. *) + Lemma no_carry_in_implies_quiet_time : + forall j t, + no_carry_in arr_seq sched t -> + quiet_time arr_seq sched j t. + Proof. by move=> j t + j_hp ARR HP BEF; apply. Qed. End Facts. diff --git a/analysis/facts/priority/edf.v b/analysis/facts/priority/edf.v index 2c1b624c5..29ba56726 100644 --- a/analysis/facts/priority/edf.v +++ b/analysis/facts/priority/edf.v @@ -35,7 +35,7 @@ Global Hint Resolve EDF_respects_sequential_tasks : basic_rt_facts. Require Export prosa.model.task.sequentiality. -Require Export prosa.analysis.facts.busy_interval.priority_inversion. +Require Export prosa.analysis.facts.priority.inversion. Require Export prosa.analysis.facts.priority.sequential. (** In this section, we prove that the EDF priority policy implies that tasks diff --git a/analysis/facts/busy_interval/priority_inversion.v b/analysis/facts/priority/inversion.v similarity index 100% rename from analysis/facts/busy_interval/priority_inversion.v rename to analysis/facts/priority/inversion.v diff --git a/results/fixed_priority/rta/bounded_pi.v b/results/fixed_priority/rta/bounded_pi.v index 37e456c40..436090ab3 100644 --- a/results/fixed_priority/rta/bounded_pi.v +++ b/results/fixed_priority/rta/bounded_pi.v @@ -1,6 +1,6 @@ Require Export prosa.model.schedule.priority_driven. Require Export prosa.analysis.abstract.ideal.iw_instantiation. -Require Export prosa.analysis.facts.busy_interval.busy_interval. +Require Export prosa.analysis.facts.busy_interval.ideal.busy_interval. (** * Abstract RTA for FP-schedulers with Bounded Priority Inversion *) (** In this module we instantiate the Abstract Response-Time analysis -- GitLab