Here is a annotated finite state machine
Here is the CTL formulae
(a) There can never be two philosopher eating at the same time.
EF(P1e & P2e) | EF(P1e & P3e) | EF(P2e & P3e) expect TRUE
(b) It is possible to for only one philosopher to be thinking
EF(P1t & ~P2t & ~P3t) | EF(P2t & ~P1t & ~P3t) | EF(P3t & ~P2t & ~P1t) expect FALSE
(c) It is impossible that any philosopher is starved... i.e., fails to get two forks to eat.
AG(P1t & P2t & P3t) expect TRUE
(d) There is no chance that once a philosopher gets the forks it eats forever and never gives up the forks.
AG(P1t & ~P2t & ~P3t) | AG (P2t & ~P1t & ~P3t) | AG (P3t & ~P2t & ~P1t) expect FALSE
(e) It is impossible for all philosophers to always think and never eat.
AG(~P1e & ~P2e & ~P3e) expect FALSE
© 2014–2015 Dinghuang Ji