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.analysis.facts.behavior.supply.Require Export prosa.model.task.concept.(** In this section, we prove some useful facts about SBF. *)SectionSupplyBoundFunctionLemmas.(** Consider any type of tasks ... *)Context {Task : TaskType}.(** ... and any type of jobs. *)Context {Job : JobType}.Context `{JobArrival Job}.Context `{JobCost Job}.(** Consider any kind of unit-supply processor state model, ... *)Context `{PState : ProcessorState Job}.HypothesisH_unit_supply_proc_model : unit_supply_proc_model PState.(** ... any valid arrival sequence, ... *)Variablearr_seq : arrival_sequence Job.HypothesisH_valid_arrivals : valid_arrival_sequence arr_seq.(** ... and any schedule. *)Variablesched : schedule PState.(** In the following section, we prove a lemma about switching a predicate inside of [valid_pred_sbf]. *)SectionSBFChangePred.(** Consider an SBF ... *)Context {SBF : SupplyBoundFunction}.(** ... and two predicates [P1] and [P2] such that, for any job [j] and a time interval <<[t1, t2)>>, [P2 j t1 t2] implies [P1 j t1 t2]. *)VariablesP1P2 : Job -> instant -> instant -> Prop.HypothesisH_p2_implies_p1 :
foralljt1t2,
arrives_in arr_seq j ->
P2 j t1 t2 -> P1 j t1 t2.(** Then if [SBF] is a valid SBF w.r.t. predicate [P1], then [SBF] is a valid SBF w.r.t. predicate [P2]. *)
byeapply VAL => //.Qed.EndSBFChangePred.(** Consider an arbitrary predicate on jobs and time intervals. *)VariableP : Job -> instant -> instant -> Prop.(** Consider a supply-bound function [SBF] that is valid w.r.t. the predicate [P]. That is, (1) [SBF 0 = 0] and (2) for any job [j], an interval <<[t1, t2)>> satisfying [P j], and a subinterval <<[t1, t) ⊆ [t1, t2)>>, the supply produced during the time interval <<[t1, t)>> is at least [SBF (t - t1)]. *)Context {SBF : SupplyBoundFunction}.HypothesisH_valid_SBF : valid_pred_sbf arr_seq sched P SBF.(** In this section, we show a simple upper bound on the blackout during an interval of length [Δ]. *)SectionBlackoutBound.(** Consider any job [j]. *)Variablej : Job.HypothesisH_arrives_in : arrives_in arr_seq j.(** Consider an interval <<[t1, t2)>> satisfying [P j]. *)Variablest1t2 : instant.HypothesisH_P_interval : P j t1 t2.(** Consider an arbitrary duration [Δ] such that [t1 + Δ <= t2]. *)VariableΔ : duration.HypothesisH_subinterval : t1 + Δ <= t2.(** We show that the total blackout time during an interval of length [Δ] is bounded by [Δ - SBF Δ]. *)
lia.}Qed.EndBlackoutBound.(** In the following section, we prove a few facts about _unit_ SBF. *)SectionUnitSupplyBoundFunctionLemmas.(** In addition, let us assume that [SBF] is a unit-supply SBF. That is, [SBF] makes steps of at most one. *)HypothesisH_unit_SBF : unit_supply_bound_function SBF.(** We prove that the complement of such an SBF (i.e., [fun Δ => Δ - SBF Δ]) is monotone. *)