Documentation

EventStructures.Prime.Rollback

theorem Rollback.rollback_subset_future {L : Type u_1} (es : PES L) {c : Conf es} {e : es.Event} {m : Conf es} (h : isRollback es.toFamily c e m) :
mc \ es.future e
theorem Rollback.rollback_future_isConf {L : Type u_1} (es : PES L) {c : Conf es} {e : es.Event} :
isConf es (c \ es.future e)

Removing the future of e from a configuration keeps it a configuration.

def Rollback.rollbackFuture {L : Type u_1} (es : PES L) (c : Conf es) (e : es.Event) :
Conf es

The canonical rollback configuration: remove all events causally after e.

Equations
Instances For
    @[simp]
    theorem Rollback.rollbackFuture_val {L : Type u_1} (es : PES L) (c : Conf es) (e : es.Event) :
    (rollbackFuture es c e) = c \ es.future e
    @[simp]
    theorem Rollback.rollbackFuture_mem {L : Type u_1} (es : PES L) {c : Conf es} {e x : es.Event} :
    x (rollbackFuture es c e) x c xes.future e
    theorem Rollback.rollback_redoable {L : Type u_1} (es : PES L) {c : Conf es} {e : es.Event} (he : e c) :

    Redoability: e is enabled in rollback(c,e) when e ∈ c.

    theorem Rollback.rollback_causal_safety {L : Type u_1} (es : PES L) {c : Conf es} {e x : es.Event} :
    x (rollbackFuture es c e)xes.future e

    Causal safety: Rollback removes exactly the causal consequences of e.

    theorem Rollback.rollback_future {L : Type u_1} (es : PES L) {c : Conf es} {e : es.Event} :

    The canonical rollback is a rollback for c and e.

    @[simp]
    theorem Rollback.rollback_eq_future {L : Type u_1} (es : PES L) {c : Conf es} {e : es.Event} {m : Conf es} (h : isRollback es.toFamily c e m) :
    m = c \ es.future e

    Any rollback coincides with the canonical rollback.

    theorem Rollback.rollback_unique {L : Type u_1} (es : PES L) {c : Conf es} {e : es.Event} {m₁ m₂ : Conf es} (h₁ : isRollback es.toFamily c e m₁) (h₂ : isRollback es.toFamily c e m₂) :
    m₁ = m₂

    Rollbacks are unique when they exist.

    theorem Rollback.rollback_maximum {L : Type u_1} (es : PES L) {c : Conf es} {e : es.Event} {m : Conf es} (h : isRollback es.toFamily c e m) (m' : Conf es) :
    m' RollbackCandidates es.toFamily c em'm

    The rollback is the maximum element among rollback candidates.

    theorem Rollback.rollback_correctness_finite {L : Type u_1} (es : PES L) {c : Conf es} {e : es.Event} (cF : Finset es.Event) (hcF : ∀ (x : es.Event), x cF x c) :

    Correctness: c is reachable from rollback(c,e) when c is finite.

    theorem Rollback.rollback_minimality {L : Type u_1} (es : PES L) [DecidableEq es.Event] {c : Conf es} {e : es.Event} {c' : Conf es} (_hredo : Configuration.enables es (↑c') e) (hsafe : xc', xes.future e) (p' : Path es.toFamily c' c) :

    Any path from a redo candidate c' to c is at least as long as the number of events of c causally after e.