diff --git a/analysis/facts/model/ideal_uni_exceed.v b/analysis/facts/model/ideal_uni_exceed.v
new file mode 100644
index 0000000000000000000000000000000000000000..d8fd41ec4a01e40f40a13cd3a3678a6710d21f32
--- /dev/null
+++ b/analysis/facts/model/ideal_uni_exceed.v
@@ -0,0 +1,116 @@
+Require Import prosa.model.processor.ideal_uni_exceed.
+Require Export prosa.model.processor.platform_properties.
+
+(** In the following section, we prove some general properties about the
+    ideal uniprocessor with exceedance processor state. *)
+Section ExceedanceProcStateProperties.
+
+  (** In this section, we consider any type of jobs. *)
+  Context `{Job : JobType}.
+
+  (** First we prove that the processor state provides unit supply. *)
+  Lemma eps_is_unit_supply : unit_supply_proc_model (exceedance_proc_state Job).
+  Proof.
+    rewrite /unit_supply_proc_model.
+    move => s.
+    destruct s => //=.
+    all : by rewrite /supply_in //=;rewrite sum_unit1.
+  Qed.
+
+  (** The usually opaque predicates are made transparent for this section
+      to enable us to prove some processor properties. *)
+  Local Transparent scheduled_in scheduled_on service_on.
+
+  (** A job [j] is said to be [scheduled_at] some time [t] if and only if the
+      processor state at that time is [NominalExecution j] or
+      [ExceedanceExecution j]. *)
+   Lemma scheduled_at_procstate (sched : schedule (exceedance_proc_state Job)) j t:
+    scheduled_at sched j t <->
+      sched t = NominalExecution j \/ sched t = ExceedanceExecution j.
+  Proof.
+    split.
+    - move => /existsP [c SCHEDON].
+      destruct (sched t); try done.
+      + by left; move : SCHEDON => /eqP <-.
+      + by right; move : SCHEDON => /eqP <-.
+    - rewrite /scheduled_at.
+      by move => [-> | -> ]; rewrite /scheduled_in /scheduled_on //=; apply /existsP.
+  Qed.
+
+
+  (** Next we prove that the processor model under consideration is a uniprocessor
+      model i.e., only one job can be scheduled at any time instant. *)
+  Lemma eps_is_uniproc : uniprocessor_model (exceedance_proc_state Job).
+  Proof.
+    move => j1 j2 sched t /existsP [? SCHED1] /existsP [? SCHED2].
+    destruct (sched t) eqn: EQ; try done.
+    - by move : SCHED1 => /eqP <-; move : SCHED2 => /eqP <-.
+    - by move : SCHED1 => /eqP <-; move : SCHED2 => /eqP <-.
+  Qed.
+
+  (** Next, we prove that the processor model under consideration is fully
+      consuming i.e., all the supply offered is consumed by the scheduled job. *)
+  Lemma eps_is_fully_consuming :
+    fully_consuming_proc_model (exceedance_proc_state Job).
+  Proof.
+    rewrite /fully_consuming_proc_model.
+    move => j sched t SCHED1.
+    rewrite /scheduled_at /scheduled_in in SCHED1.
+    apply scheduled_at_procstate in SCHED1.
+    move : SCHED1 => [SCHED1 | SCHED1].
+    - by rewrite /service_at /service_in /exceedance_service_on /supply_at /supply_in
+      !/exceedance_service_on //= SCHED1 sum_unit1 // sum_unit1 //
+      /exceedance_service_on /exceedance_supply_on eq_refl.
+    - by rewrite /service_at /service_in /exceedance_service_on /supply_at /supply_in
+        !/exceedance_service_on //= SCHED1 sum_unit1 // sum_unit1 //
+        /exceedance_service_on /exceedance_supply_on eq_refl.
+  Qed.
+
+  (** Finally we prove that the processor model under consideration is unit
+      service i.e., it provides at most one unit of service at any time instant. *)
+  Lemma eps_is_unit_service : unit_service_proc_model (exceedance_proc_state Job).
+  Proof.
+    move => j pstate.
+    rewrite /service_in /service_on //= sum_unit1 /exceedance_service_on.
+    destruct pstate =>//=.
+    by apply leq_b1.
+  Qed.
+
+End ExceedanceProcStateProperties.
+
+(** Next, we prove some general properties specific to the
+    ideal uniprocessor with exceedance processor state. *)
+Section ExceedanceProcStateProperties1.
+
+  (** In this section we consider any type of jobs. *)
+  Context `{Job : JobType}.
+
+  (** First let us define the notion of exceedance execution. A processor state
+      is said to be an exceedance execution state if is equal to
+      [ExceedanceExecution j] for some [j]. *)
+  Definition is_exceedance_exec (pstate : (exceedance_proc_state Job)) :=
+    match pstate with
+    |ExceedanceExecution _ => true
+    |_ => false
+    end.
+
+  (** Next, let us consider any schedule of the [exceedance_proc_state]. *)
+  Variable sched : schedule (exceedance_proc_state Job).
+
+  (** We prove that the schedule being in blackout at any time [t] is equivalent
+      to the processor state at [t] being an exceedance execution state. *)
+  Lemma blackout_implies_exceedance_execution t :
+    is_blackout sched t = is_exceedance_exec (sched t).
+  Proof.
+    rewrite /is_blackout /has_supply /supply_at /supply_in
+    /is_exceedance_exec //= sum_unit1 /exceedance_supply_on.
+    destruct (sched t) eqn : PSTATE; try done.
+  Qed.
+
+End ExceedanceProcStateProperties1.
+
+Global Hint Resolve
+  eps_is_uniproc
+  eps_is_unit_supply
+  eps_is_fully_consuming
+  : basic_rt_facts.
diff --git a/model/processor/ideal_uni_exceed.v b/model/processor/ideal_uni_exceed.v
new file mode 100644
index 0000000000000000000000000000000000000000..03e30212d2cd1e8ee465c5aabfa83b0a8ce9873a
--- /dev/null
+++ b/model/processor/ideal_uni_exceed.v
@@ -0,0 +1,110 @@
+From HB Require Import structures.
+Require Export prosa.behavior.all.
+
+(** In the following, we define a processor state model for an ideal-uniprocessor
+    system with jobs possibly exhibiting exceedance. *)
+Section State.
+
+  (** For a give type of jobs ...*)
+  Context `{Job : JobType}.
+
+  (** ... the exceedance processor state is defined as follows.
+      Here, the [NominalExecution] processor state refers to the state of the
+      processor when it is executing some job [j]. [ExceedanceExecution] also
+      refers to the state of the processor when a job is executing in addition
+      to its nominal execution time. Finally, [Idle] refers to the state of the
+      processor when no job is executing. *)
+  Inductive exceedance_processor_state :=
+  | NominalExecution (j : Job)
+  | ExceedanceExecution (j : Job)
+  | Idle.
+
+  (** To efficiently use the processor state in our mechanization, we need to
+      define an [eqType] for the processor state. First, we define an inequality
+      on the processor state as follows. *)
+  Definition exceedance_processor_state_eqdef (p1 p2 : exceedance_processor_state) : bool :=
+    match p1, p2 with
+    | NominalExecution j1, NominalExecution j2 => j1 == j2
+    | ExceedanceExecution j1, ExceedanceExecution j2 => j1 == j2
+    | Idle, Idle => true
+    | _, _ => false
+    end.
+
+  (** Next, we prove that the defined notion of equality is in fact an equality. *)
+  Lemma eqn_exceedance_processor_state : Equality.axiom exceedance_processor_state_eqdef.
+  Proof.
+    unfold Equality.axiom.
+    move => s1 s2.
+    destruct (exceedance_processor_state_eqdef s1 s2) eqn: EQ.
+    - apply ReflectT.
+      by destruct s1; destruct s2 => //=;  move : EQ => /eqP -> .
+    - apply /ReflectF => EQ1.
+      move : EQ => /negP. apply.
+      by destruct s1; destruct s2 => //=; inversion EQ1; subst.
+  Qed.
+
+  (** Finally, we register the processor state as an [eqType]. *)
+  HB.instance Definition _ := hasDecEq.Build exceedance_processor_state eqn_exceedance_processor_state.
+
+  (** Next, we need to define the notions of service and supply for the
+      processor state under consideration. *)
+  Section ExceedanceService.
+
+    (** Consider any job [j]. *)
+    Variable j : Job.
+
+    (** [j] is considered to be "scheduled" if the processor state is either
+        [NominalExecution j] or [ExceedanceExecution j] *)
+    Definition exceedance_scheduled_on (proc_state : exceedance_processor_state) (_ : unit)
+      : bool :=
+      match proc_state with
+      | NominalExecution j'
+      | ExceedanceExecution j' => j' == j
+      | _ => false
+      end.
+
+    (** Next, we need to define in which states the processor is offering supply.
+        This is required to specify in which states a processor can offer
+        productive work to a job. Note that when analysing a schedule of the
+        [exceedance_processor_state], we want to model all instances of
+        [ExceedanceExecution] as blackouts w.r.t. to nominal service and, therefore, the supply in this
+        processor state is defined to be [0]. *)
+    Definition exceedance_supply_on (proc_state :  exceedance_processor_state)
+      (_ : unit) : work :=
+      match proc_state with
+      | NominalExecution _ => 1
+      | ExceedanceExecution _ => 0
+      | Idle => 1
+      end.
+
+    (** Finally we need to define in which states a job actually receives
+        nominal service. In our case, a job [j] receives nominal service only when the system
+        is in the [NominalExecution j] state. *)
+    Definition exceedance_service_on (proc_state : exceedance_processor_state) (_ : unit) : work :=
+      match proc_state with
+      | NominalExecution j' => j' == j
+      | ExceedanceExecution _ => 0
+      | Idle => 0
+      end.
+
+  End ExceedanceService.
+
+    (** Finally we can declare our processor state as an instance of the
+        [ProcessorState] typeclass. *)
+    Global Program Instance exceedance_proc_state : ProcessorState Job :=
+      {|
+        State := exceedance_processor_state;
+        scheduled_on := exceedance_scheduled_on;
+        supply_on := exceedance_supply_on;
+        service_on := exceedance_service_on
+      |}.
+    Next Obligation.
+      by move => j [] // s [] /=; case: eqP; lia.
+    Qed.
+    Next Obligation.
+      by move => j [] // s [] /=; case: eqP; lia.
+    Qed.
+
+End State.
+
+Global Arguments exceedance_proc_state : clear implicits.
diff --git a/scripts/wordlist.pws b/scripts/wordlist.pws
index 0d92bc2debce04c66e20d4f77184ce31b38779c2..59d771dfeb53e44f36f8e1440a7e9b2754d10416 100644
--- a/scripts/wordlist.pws
+++ b/scripts/wordlist.pws
@@ -131,3 +131,4 @@ RHS
 LHS
 subsequence
 Baruah
+exceedance