Built with Alectryon, running Coq+SerAPI v8.20.0+0.20.0. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
[Loading ML file ssrmatching_plugin.cmxs (using legacy method) ... done]
[Loading ML file ssreflect_plugin.cmxs (using legacy method) ... done]
[Loading ML file ring_plugin.cmxs (using legacy method) ... done]
Serlib plugin: coq-elpi.elpi is not available: serlib support is missing.
Incremental checking for commands in this plugin will be impacted.
[Loading ML file coq-elpi.elpi ... done]
[Loading ML file zify_plugin.cmxs (using legacy method) ... done]
[Loading ML file micromega_core_plugin.cmxs (using legacy method) ... done]
[Loading ML file micromega_plugin.cmxs (using legacy method) ... done]
[Loading ML file btauto_plugin.cmxs (using legacy method) ... done]
Notation"_ + _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ - _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ <= _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ < _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ >= _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ > _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
Notation"_ <= _ <= _" was already used in scope
nat_scope. [notation-overridden,parsing,default]
Notation"_ < _ <= _" was already used in scope
nat_scope. [notation-overridden,parsing,default]
Notation"_ <= _ < _" was already used in scope
nat_scope. [notation-overridden,parsing,default]
Notation"_ < _ < _" was already used in scope
nat_scope. [notation-overridden,parsing,default]
Notation"_ * _" was already used in scope nat_scope.
[notation-overridden,parsing,default]
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.(** * Arrival Model Conversion This file demonstrates the automatic conversion of arrival models. In particular, we show how a set of periodic tasks can be interpreted also as (1) sporadic tasks with minimum inter-arrival times, (2) sporadic tasks with arrival curves, and (3) request-bound functions. *)SectionAutoArrivalModelConversion.(** Consider periodic tasks ... *)Context {Task : TaskType} `{PeriodicModel Task}.(** ... and their corresponding jobs. *)Context {Job : JobType} `{JobArrival Job} `{JobTask Job Task}.(** Given a set of such periodic tasks ... *)Variablets : TaskSet Task.(** ... and a valid arrival sequence, ...*)Variablearr_seq : arrival_sequence Job.HypothesisH_valid_arrival_sequence : valid_arrival_sequence arr_seq.(** ... if the tasks are valid periodic tasks, ...*)HypothesisH_respects : taskset_respects_periodic_task_model arr_seq ts.HypothesisH_valid_periods : valid_periods ts.(** ... then we can automatically interpret them also as satisfying other arrival models, as we demonstrate in the following. *)(** ** Periodic Tasks as Sporadic Tasks *)(** The tasks satisfy the sporadic validity constraint... *)
by [].Qed.(** ** Periodic Tasks as RBFs *)(** Assuming that each task has a WCET... *)Context `{TaskCost Task}.(** ... and that jobs are compliant with the WCET, ... *)Context `{JobCost Job}.HypothesisH_valid_costs : jobs_have_valid_job_costs.(** ... the tasks satisfy the RBF validity constraint... *)
by [].Qed.(** Thanks to type-class resolution, all conversions from more restrictive to less restrictive task model happen transparently and the and necessary proofs are found automatically. Of course, it is possible to start from sporadic tasks or tasks with arrival curves, too. *)EndAutoArrivalModelConversion.