Software Design and Implementation, Spring 2015


This site will be maintained for Software Design & Implementation taken in spring semester of 2015 under Prof. David Stotts at UNC-Chapel Hill.


A7:Meeting FSM

CTL formulae 1,2,3 as given by you give the same answers which are provided.
Following are the questions we had to ask to the model checker.

  • Is there a situation when someone speaks but nobody listens?
    EF(Pspeak & ~Plisten).
    TRUE
  • Do multiple moderators control the meeting?
    EF(Pmoderate & TdropFloor ).
    FALSE
  • Does being in pool guarantee that person will speak?
    AF(Ppool -> AX(AF(Pspeak))).
    FALSE
  • Do people get stuck in wait?
    AG(Pwait -> AX(AF(~Pwait))).
    FALSE


    A8:Dining philosophers : 3 person case

    1. FSM file

    Questions to be verified:

    1. There can never be two philosopher eating at the same time.
      ~ AG( (PEat1 & PEat2) | (PEat1 & PEat3) | (PEat2 & PEat3)).
      TRUE
    2. It is possible to for only one philosopher to be thinking
      ~EF((PThink1 & ~ PThink2 & ~PThink3) | (~ PThink1 & PThink2 & ~PThink3) |(~PThink1 & ~PThink2 & PThink3)).
      TRUE
    3. It is impossible that any philosopher is starved... i.e., fails to get two forks to eat.
      EF(TGetFood1) & EF(TGetFood2) & EF(TGetFood3).
      TRUE
    4. There is no chance that once a philosopher gets the forks it eats forever and never gives up the forks
      AG( PEats1 -> AX(AF(~PEats1))) & AG( PEats2 -> AX(AF(~PEats2))) & AG( PEats3 -> AX(AF(~PEats3))).
      TRUE
    5. It is impossible for all philosophers to always think and never eat
      ~ AG( ~TGetFood1 |~TGetFood2 | ~ TGetFood3).
      TRUE