Library prosa.model.processor.ideal
The Ideal Uniprocessor Model
Consider any type of jobs. 
We connect the notion of an ideal processor state with
      the generic interface for the processor-state abstraction in Prosa by
      declaring a so-called instance of the ProcessorState typeclass. 
We define the ideal "processor state" as an option Job,
          which means that it is either Some j (where j is a
          Job) or None (which we use to indicate an idle
          instant). 
As this is a uniprocessor model, cores are implicitly defined
          as the unit type containing a single element as a placeholder.  We say that a given job j is scheduled in a
          given state s iff s is Some j. 
Any state of an ideal processor provides exactly one unit of
          supply. 
      service_on j s (_ : unit) := if s == Some j then 1 else 0;
|}.
Next Obligation.
by move⇒ j s ?; rewrite /nat_of_bool; case: ifP ⇒ // ? /negP[].
Qed.
Next Obligation.
by move⇒ j s ?; rewrite /nat_of_bool; case: ifP ⇒ // ? /negP[].
Qed.
End State.
|}.
Next Obligation.
by move⇒ j s ?; rewrite /nat_of_bool; case: ifP ⇒ // ? /negP[].
Qed.
Next Obligation.
by move⇒ j s ?; rewrite /nat_of_bool; case: ifP ⇒ // ? /negP[].
Qed.
End State.
Consider any type of jobs... 
... and any ideal uniprocessor schedule of such jobs. 
We say that the processor is idle at time t iff there is no job being scheduled.