--> I. Base case open BASE-QLOCK -- check red inv1(init,i,j) . close --> II. Induction case --> 1. want(s,k) open ISTEP-QLOCK -- fresh constants op k : -> Pid . -- assumptions -- eq c-want(s,k) = true . eq pc(s,k) = rm . -- successor state eq s' = want(s,k) . -- check red istep1 . close open ISTEP-QLOCK -- fresh constants op k : -> Pid . -- assumptions eq c-want(s,k) = false . -- successor state eq s' = want(s,k) . -- check red istep1 . close --> 2. try(s,k) open ISTEP-QLOCK -- fresh constants op k : -> Pid . op q : -> Queue . -- assumptions -- eq c-try(s,k) = true . eq pc(s,k) = wt . eq queue(s) = q , k . -- successor state eq s' = try(s,k) . -- check red istep1 . close open ISTEP-QLOCK -- fresh constants op k : -> Pid . -- assumptions eq c-try(s,k) = false . -- successor state eq s' = try(s,k) . -- check red istep1 . close --> 3. exit(s.k) open ISTEP-QLOCK -- fresh constants op k : -> Pid . -- assumptions -- eq c-exit(s,k) = true . eq pc(s,k) = cs . -- successor state eq s' = exit(s,k) . -- check red istep1 . close open ISTEP-QLOCK -- fresh constants op k : -> Pid . -- assumptions eq c-exit(s,k) = false . -- successor state eq s' = exit(s,k) . -- check red istep1 . close --> QED