Library prosa.behavior.schedule
(* ----------------------------------[ coqtop ]---------------------------------
Welcome to Coq 8.11.2 (June 2020)
----------------------------------------------------------------------------- *)
From mathcomp Require Export ssreflect ssrnat ssrbool eqtype fintype bigop.
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.