Fairness

Fairness for liveness verification

Frédéric Herbreteau, Bordeaux INP/LaBRI (frederic.herbreteau@bordeaux-inp.fr)

Unfair violation of liveness properties

Liveness properties are often violated although we expect them to hold

Example: Each waiting process will eventually enter the critical section (absence of starvation)

bg right:40% fit

Many fairness conditions

bg right:40% fit

  • Unconditional fairness every process gets its turn infinitely often
  • Strong fairness every process enabled infinitely often gets its turn infinitely often
  • Weak fairness every process enabled almost always, gets its turn infinitely often

Exercise: Which condition(s) above eliminate the bad run in the previous slide?

Remark: unconditional $\implies$ strong $\implies$ weak

Example (1/3)

bg right:40% fit

Exercise: Is ‘‘infinitely often b’’ true for executions that are:

  • unfair (no extra fairness condition)
  • weakly fair w.r.t. $\alpha$ and $\beta$?
  • strongly fair w.r.t. $\alpha$ and $\beta$?
  • unconditionally fair w.r.t to $\alpha$ and $\beta$?

Example (2/3)

bg right:40% fit

Exercise: Express all three fairness conditions in TL:

  • unconditionally fair w.r.t to $\alpha$ and $\beta$
  • weakly fair w.r.t. $\alpha$ and $\beta$
  • strongly fair w.r.t. $\alpha$ and $\beta$

assuming we have atomic propositions:

  • “$en_a$” when action $a$ is enabled,
  • and “$a$” when action $a$ occurs.

Example (3/3)

bg right:40% fit

Exercise: Express “infinitely often b” under all three fairness conditions in TL

  • unconditionally fair w.r.t to $\alpha$ and $\beta$
  • weakly fair w.r.t. $\alpha$ and $\beta$
  • strongly fair w.r.t. $\alpha$ and $\beta$

assuming we have atomic propositions:

  • “$en_a$” when action $a$ is enabled,
  • and “$a$” when action $a$ occurs.