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.util.tactics. (** This file serves to collect basic facts about uniprocessors. *) Section UniquenessOfTheScheduledJob. (** Consider any type of jobs, ... *) Context {Job : JobType}. (** ... any _uniprocessor_ model, ... *) Context {PState : ProcessorState Job}. Hypothesis H_uni : uniprocessor_model PState. (** ... and any schedule. *) Variable sched : schedule PState. (** By definition, if one job is scheduled on a uniprocessor, then no other job is scheduled at the same time. *)
Job: JobType
PState: ProcessorState Job
H_uni: uniprocessor_model PState
sched: schedule PState

forall (j j' : Job) (t : instant), j != j' -> scheduled_at sched j t -> ~~ scheduled_at sched j' t
Job: JobType
PState: ProcessorState Job
H_uni: uniprocessor_model PState
sched: schedule PState

forall (j j' : Job) (t : instant), j != j' -> scheduled_at sched j t -> ~~ scheduled_at sched j' t
Job: JobType
PState: ProcessorState Job
H_uni: uniprocessor_model PState
sched: schedule PState
j, j': Job
t: instant
NEQ: j <> j'
SCHED: scheduled_at sched j t
SCHED': scheduled_at sched j' t

False
by have: j = j' by apply: H_uni. Qed. End UniquenessOfTheScheduledJob.