Library prosa.behavior.schedule
From mathcomp Require Export ssreflect ssrnat ssrbool eqtype fintype bigop.
Require Export prosa.behavior.arrival_sequence.
Require Export prosa.behavior.arrival_sequence.
Generic Processor State
A ProcessorState instance provides a finite set of cores on which
        jobs can be scheduled. In the case of uniprocessors, this is irrelevant
        and may be ignored (by convention, the unit type is used as a
        placeholder in uniprocessor schedules, but this is not
        important). (Hint to the Coq novice: finType just means some type
        with finitely many values, i.e., it is possible to enumerate all cores
        of a multi-processor.)  
For a given processor state and core, the scheduled_on predicate
        checks whether a given job is running on the given core. 
For a given processor state, the scheduled_in predicate checks
        whether a given job is running on any core in that state. 
For a given processor state, the service_in function determines how
       much service a given job receives in that state (across all cores). 
For a given processor state, a job does not receive service if it is
        not scheduled in that state 
Schedule Representation
The following line instructs Coq to not let proofs use knowledge of how
    scheduled_on, scheduled_in, and service_in are defined. Instead,
    proofs must rely on basic lemmas about processor state classes.