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 Export prosa.model.processor.supply.(** To reason about classes of schedule types / processor models, we define the following properties that group processor models into classes of similar models. *)SectionProcessorModels.(** Consider any job type and any processor state. Note: we make the processor state an explicit variable (rather than implicit context) because it is the primary subject of the following definitions. *)Context {Job : JobType}.VariablePState : ProcessorState Job.(** We say that a processor model provides unit service if no job ever receives more than one unit of service at any time. *)Definitionunit_service_proc_model :=
forall (j : Job) (s : PState), service_in j s <= 1.(** We say that a processor model offers ideal progress if a scheduled job always receives non-zero service. *)Definitionideal_progress_proc_model :=
forall (j : Job) (s : PState),
scheduled_in j s -> service_in j s > 0.(** In a uniprocessor model, the scheduled job is always unique. *)Definitionuniprocessor_model :=
forall (j1j2 : Job) (s : schedule PState) (t : instant),
scheduled_at s j1 t ->
scheduled_at s j2 t ->
j1 = j2.(** We say that a processor model is a unit-supply model if no state ever produces more than one unit of supply at any time. *)Definitionunit_supply_proc_model :=
forall (s : PState), supply_in s <= 1.(** Note that [unit_supply_proc_model] implies [unit_service_proc_model] because of the requirement [service_on_le_supply_on]. But not vice versa --- a unit-service processor model is not necessarily a unit-supply processor model. *)
byapply service_on_le_supply_on.Qed.(** We say that a processor model is a fully consuming processor model if a job scheduled at time [t] receives the entire supply produced at that time as service. *)Definitionfully_consuming_proc_model :=
forall (j : Job) (s : schedule PState) (t : instant),
scheduled_at s j t -> service_at s j t = supply_at s t.EndProcessorModels.(** We add the reduction from [unit_supply_proc_model] to [unit_service_proc_model] into the "Hint Database" basic_rt_facts, so Coq will be able to apply it automatically where needed. *)GlobalHint Resolve
unit_supply_is_unit_service
: basic_rt_facts.