- Apr 14, 2022
-
-
- Apr 13, 2022
-
-
Rename the type-class parameter to `job_preemptive_points` to avoid a name clash with the the definition of the same name. Keep `JobPreemptionPoints` to match `TaskPreemptionPoints`. This does not result in a name clash.
-
- Apr 07, 2022
-
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
Björn Brandenburg authored
NB: This requires bumping up the "depth" parameter of `rt_auto` and `rt_eauto`. As a benefit, it becomes possible to automatically use RBFs in the context of periodic tasks, sporadic tasks, and tasks with arrival curves. Full example: ``` Require Import prosa.model.task.arrival.periodic. Require Import prosa.model.task.arrival.periodic_as_sporadic. Require Import prosa.model.task.arrival.sporadic_as_curve. Require Import prosa.model.task.arrival.curve_as_rbf. Section AutoArrivalModelConversion. Context {Job : JobType} `{JobArrival Job}. Context {Task : TaskType} `{PeriodicModel Task} `{JobTask Job Task}. Variable ts : TaskSet Task. Variable arr_seq : arrival_sequence Job. Hypothesis H_consistent_arrivals: consistent_arrival_times arr_seq. Hypothesis H_uniq_arr_seq: arrival_sequence_uniq arr_seq. Hypothesis H_valid_periods : valid_periods ts. Hypothesis H_respects : taskset_respects_periodic_task_model arr_seq ts. Context `{JobCost Job} `{TaskCost Task}. Hypothesis H_valid_costs : jobs_have_valid_job_costs. (** Interpret as an RBF. *) Goal valid_taskset_request_bound_function ts (task_max_rbf max_arrivals). Proof. by rt_auto. Qed. Goal taskset_respects_max_request_bound arr_seq ts. Proof. rt_eauto. Qed. End AutoArrivalModelConversion. ```
-
Björn Brandenburg authored
This commit makes it possible to transparently interpret periodic tasks as sporadic tasks, and sporadic tasks as tasks with an arrival curve, such that all proof obligations can satisfied by `rt_auto` and `rt_eauto`. Full example: ``` Require Import prosa.model.task.arrival.periodic. Require Import prosa.model.task.arrival.periodic_as_sporadic. Require Import prosa.model.task.arrival.sporadic_as_curve. Section AutoArrivalModelConversion. Context {Job : JobType} `{JobArrival Job}. Context {Task : TaskType} `{PeriodicModel Task} `{JobTask Job Task}. Variable ts : TaskSet Task. Variable arr_seq : arrival_sequence Job. Hypothesis H_consistent_arrivals: consistent_arrival_times arr_seq. Hypothesis H_uniq_arr_seq: arrival_sequence_uniq arr_seq. Hypothesis H_valid_periods : valid_periods ts. Hypothesis H_respects : taskset_respects_periodic_task_model arr_seq ts. (** 1. Interpret as sporadic: *) Goal valid_taskset_inter_arrival_times ts. Proof. by rt_auto. Qed. Goal taskset_respects_sporadic_task_model ts arr_seq. Proof. by rt_auto. Qed. (** 2. Interpret as an arrival curve. *) Goal valid_taskset_arrival_curve ts max_arrivals. Proof. by rt_auto. Qed. Goal taskset_respects_max_arrivals arr_seq ts. Proof. by rt_eauto. Qed. End AutoArrivalModelConversion. ```
-
Björn Brandenburg authored
- move all to `prosa.model.task.arrival` - unify names to `${FOO}_as_${BAR}.v`
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
Björn Brandenburg authored
Arguments about sporadic tasks do not reason about offsets as future arrival times are unknown.
-
Björn Brandenburg authored
-
- Slightly change `valid_nonpreemptive_readiness` so that `sched` is a parameter. This way, the proposition can be assumed to hold only for a certain schedule (making weaker assumptions). - Modify `prev_job_nonpreemptive, to unconditionally get `jobs_must_be_ready_to_execute`. - Revise lemmas accordingly.
-
- Mar 25, 2022
-
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
Björn Brandenburg authored
-
-
-
-
-
-
-
-
-
-
-
-
- Mar 24, 2022
-
-
-
-
From a spec readability PoV, it's unfortunate that the policy that is being respected doesn't show up in the code. The subject of definitions should show up as an explicit argument, even if it is implicit everywhere else. This is however difficult to realize for the current `respects_policy_at_preemption_time` predicate due to difficulties with coercion technicalities (see further details below). Therefore, instead of `respects_policy_at_preemption_time`, we now have: * `respects_JLDP_policy_at_preemption_point` * `respects_JLFP_policy_at_preemption_point` * `respects_FP_policy_at_preemption_point` Further details: !188 (comment 78569) Closes: #82
-
- Mar 18, 2022
-
-
This ensures all hypotheses in behavior have corresponding trivial lemmas in `analysis.facts.all` that enable to exploit them, which makes them easier to discover with `Search`. This also makes the code more robust to potential changes in the precise way these hypotheses are stated.
-
- Mar 17, 2022
-
-
This commit renames scope [basic_facts] into [basic_rt_facts] to highlight the that lemmas collected in the scope are real-time (rt) theory lemmas. These new tactics are just shorthand for [(e)auto with basic_rt_facts].
-