Nuprl Lemma : mu_ex_v4-ilf

(([es:EO']. [e:E].
    {inl    mu_ex_v4_Request() + mu_ex_v4_Token() + mu_ex_v4_UseCS() + mu_ex_v4_LeaveCS()(e)
       Base([request];Unit)(e)})
 ([es:EO']. [e:E].
     a:
       {inr (inl a )   mu_ex_v4_Request() + mu_ex_v4_Token() + mu_ex_v4_UseCS() + mu_ex_v4_LeaveCS()(e)
        a  Base([token];)(e)  (  Base([request];Unit)(e))})
 ([es:EO']. [e:E].
     a:Id
       {inr inr (inl a )    mu_ex_v4_Request() + mu_ex_v4_Token() + mu_ex_v4_UseCS() + mu_ex_v4_LeaveCS()(e)
        (a  Base(``use cs``;Id)(e)  (w:. (w  Base([token];)(e))))  (  Base([request];Unit)(e))})
 ([es:EO']. [e:E].
     {inr inr inr      mu_ex_v4_Request() + mu_ex_v4_Token() + mu_ex_v4_UseCS() + mu_ex_v4_LeaveCS()(e)
      ((  Base(``leave cs``;Unit)(e)  (w:Id. (w  Base(``use cs``;Id)(e))))
          (w:. (w  Base([token];)(e))))
          (  Base([request];Unit)(e))}))
 ([initial_token:Id]. [es:EO']. [e:E].
     v:    
       {v  mu_ex_v4_State(initial_token)(e)
        L:(Unit +  + (Id?)  E) List
             (prior-classrel-list(es;Unit +  + (Id?);mu_ex_v4_Request() + mu_ex_v4_Token() + ... + ...;L;e)
              ((  Base([request];Unit)(e)
                (v
                 = (mu_ex_v4_onRequest() loc(e)  
                    list_accum(b,a.mu_ex_v4_onRequest() + mu_ex_v4_onToken() + mu_ex_v4_onUseCS() + ... 
                                   loc(e) 
                                   a 
                                   b;
                               <ff, IdDeq initial_token loc(e), ff>;
                               map(p.(fst(p));L)))))
                ((  Base([request];Unit)(e))
                  ((a:
                      ((v
                      = (mu_ex_v4_onToken() loc(e) a 
                         list_accum(b,a.mu_ex_v4_onRequest() + mu_ex_v4_onToken() + mu_ex_v4_onUseCS() + ... 
                                        loc(e) 
                                        a 
                                        b;
                                    <ff, IdDeq initial_token loc(e), ff>;
                                    map(p.(fst(p));L))))
                       a  Base([token];)(e)))
                    ((w:. (w  Base([token];)(e)))
                      ((a:Id
                          (a  Base(``use cs``;Id)(e)
                           (v
                            = (mu_ex_v4_onUseCS() loc(e) a 
                               list_accum(b,a.mu_ex_v4_onRequest() + mu_ex_v4_onToken() + mu_ex_v4_onUseCS() + ... 
                                              loc(e) 
                                              a 
                                              b;
                                          <ff, IdDeq initial_token loc(e), ff>;
                                          map(p.(fst(p));L))))))
                        ((  Base(``leave cs``;Unit)(e)  (w:Id. (w  Base(``use cs``;Id)(e))))
                          (v
                           = (mu_ex_v4_onLeaveCS() loc(e)  
                              list_accum(b,a.mu_ex_v4_onRequest() + mu_ex_v4_onToken() + mu_ex_v4_onUseCS() + ... 
                                             loc(e) 
                                             a 
                                             b;
                                         <ff, IdDeq initial_token loc(e), ff>;
                                         map(p.(fst(p));L)))))))))))})
 ([cs,initial_token,proc1,proc2:Id]. [es:EO']. [e:E]. [i:Id]. [m:Message].
     {<i, m mu_ex_v4_main(cs;initial_token;proc1;proc2)(e)
      (((loc(e) = proc1)  (loc(e) = proc2))
          (((<i, m concat-lifting-loc-3(zi,zh,n,z.
                                             let interested,token,toreply = z in 
                                             if interested
                                             then {}
                                             else {mu_ex_v4_send_token() (mu_ex_v4_otherProc(proc1;proc2) loc(e)) 
                                                   (n + 1)}
                                             fi )|Loc, mu_ex_v4_Request(), mu_ex_v4_PrToken(),
                       mu_ex_v4_PrState(initial_token)|(e)
            (a:Id
                (a  Base(``use cs``;Id)(e)
                 (b,b1:
                    ((b2:. <b, b1, b2 Prior(mu_ex_v4_State(initial_token))?mu_ex_v4_initState(initial_token)(e))
                     (((b)  (i = a)  (m = make-Msg([busy];Unit;)))
                       ((b)
                         (((b1)  (i = cs)  (m = make-Msg(``enter cs``;Id;loc(e))))
                           ((b1)
                             (i = (mu_ex_v4_otherProc(proc1;proc2) loc(e)))
                             (m = make-Msg([request];Unit;)))))))))))
            (((b,b1,b2:. <b, b1, b2 Prior(mu_ex_v4_State(initial_token))?mu_ex_v4_initState(initial_token)(e))
              (i = cs)
              (m = make-Msg(``enter cs``;Id;loc(e))))
              (a:. a  Base([token];)(e))))
            <i, m concat-lifting-loc-3(zl,zk,n,z.
                                             let interested,token,toreply = z in 
                                             if toreply
                                             then {mu_ex_v4_send_token() (mu_ex_v4_otherProc(proc1;proc2) loc(e)) 
                                                   (n + 1)}
                                             else {}
                                             fi )|Loc, mu_ex_v4_LeaveCS(), mu_ex_v4_PrToken(),
                       mu_ex_v4_PrState(initial_token)|(e)))
          ((loc(e) = cs)
             (((i = loc(e))  (a:Id. ((m = make-Msg([exec];Id;a))  a  Base(``enter cs``;Id)(e))))
               ((m = make-Msg(``leave cs``;Unit;))  i  Base([exec];Id)(e))))})


Proof not projected

Error : references

((\mforall{}[es:EO'].  \mforall{}[e:E].
        \{inl  \mcdot{}    \mmember{}  mu\_ex\_v4\_Request()  +  mu\_ex\_v4\_Token()  +  mu\_ex\_v4\_UseCS()  +  mu\_ex\_v4\_LeaveCS()(e)
        \mLeftarrow{}{}\mRightarrow{}  \mcdot{}  \mmember{}  Base([request];Unit)(e)\})
\mwedge{}  (\mforall{}[es:EO'].  \mforall{}[e:E].
          \mforall{}a:\mBbbZ{}
              \{inr  (inl  a  )    \mmember{}
                  mu\_ex\_v4\_Request()  +  mu\_ex\_v4\_Token()  +  mu\_ex\_v4\_UseCS()  +  mu\_ex\_v4\_LeaveCS()(e)
              \mLeftarrow{}{}\mRightarrow{}  a  \mmember{}  Base([token];\mBbbZ{})(e)  \mwedge{}  (\mneg{}\mcdot{}  \mmember{}  Base([request];Unit)(e))\})
\mwedge{}  (\mforall{}[es:EO'].  \mforall{}[e:E].
          \mforall{}a:Id
              \{inr  inr  (inl  a  )      \mmember{}
                  mu\_ex\_v4\_Request()  +  mu\_ex\_v4\_Token()  +  mu\_ex\_v4\_UseCS()  +  mu\_ex\_v4\_LeaveCS()(e)
              \mLeftarrow{}{}\mRightarrow{}  (a  \mmember{}  Base(``use  cs``;Id)(e)  \mwedge{}  (\mdownarrow{}\mforall{}w:\mBbbZ{}.  (\mneg{}w  \mmember{}  Base([token];\mBbbZ{})(e))))
                      \mwedge{}  (\mneg{}\mcdot{}  \mmember{}  Base([request];Unit)(e))\})
\mwedge{}  (\mforall{}[es:EO'].  \mforall{}[e:E].
          \{inr  inr  inr  \mcdot{}        \mmember{}
              mu\_ex\_v4\_Request()  +  mu\_ex\_v4\_Token()  +  mu\_ex\_v4\_UseCS()  +  mu\_ex\_v4\_LeaveCS()(e)
          \mLeftarrow{}{}\mRightarrow{}  ((\mcdot{}  \mmember{}  Base(``leave  cs``;Unit)(e)  \mwedge{}  (\mdownarrow{}\mforall{}w:Id.  (\mneg{}w  \mmember{}  Base(``use  cs``;Id)(e))))
                  \mwedge{}  (\mdownarrow{}\mforall{}w:\mBbbZ{}.  (\mneg{}w  \mmember{}  Base([token];\mBbbZ{})(e))))
                  \mwedge{}  (\mneg{}\mcdot{}  \mmember{}  Base([request];Unit)(e))\}))
\mwedge{}  (\mforall{}[initial$_{token}$:Id].  \mforall{}[es:EO'].  \mforall{}[e:E].
          \mforall{}v:\mBbbB{}  \mtimes{}  \mBbbB{}  \mtimes{}  \mBbbB{}
              \{v  \mmember{}  mu\_ex\_v4\_State(initial$_{token}$)(e)
              \mLeftarrow{}{}\mRightarrow{}  \mdownarrow{}\mexists{}L:(Unit  +  \mBbbZ{}  +  (Id?)  \mtimes{}  E)  List
                          (prior-classrel-list(es;Unit  +  \mBbbZ{}  +  (Id?);mu\_ex\_v4\_Request()  +  ...  +  ...  +  ...;L;e)
                          \mwedge{}  ((\mcdot{}  \mmember{}  Base([request];Unit)(e)
                              \mwedge{}  (v
                                  =  (mu\_ex\_v4\_onRequest()  loc(e)  \mcdot{} 
                                        list\_accum(b,a.mu\_ex\_v4\_onRequest()  +  mu\_ex\_v4\_onToken()  +  ...  +  ... 
                                                                      loc(e) 
                                                                      a 
                                                                      b;
                                                              <ff,  IdDeq  initial$_{token}$  loc(e),  ff>
                                                              map(\mlambda{}p.(fst(p));L)))))
                              \mvee{}  ((\mneg{}\mcdot{}  \mmember{}  Base([request];Unit)(e))
                                  \mwedge{}  ((\mexists{}a:\mBbbZ{}
                                            ((v
                                            =  (mu\_ex\_v4\_onToken()  loc(e)  a 
                                                  list\_accum(b,a.mu\_ex\_v4\_onRequest()  +  mu\_ex\_v4\_onToken()  +  ...  +  ... 
                                                                                loc(e) 
                                                                                a 
                                                                                b;
                                                                        <ff,  IdDeq  initial$_{token}$  loc(e),  ff>
                                                                        map(\mlambda{}p.(fst(p));L))))
                                            \mwedge{}  a  \mmember{}  Base([token];\mBbbZ{})(e)))
                                      \mvee{}  ((\mdownarrow{}\mforall{}w:\mBbbZ{}.  (\mneg{}w  \mmember{}  Base([token];\mBbbZ{})(e)))
                                          \mwedge{}  ((\mexists{}a:Id
                                                    (a  \mmember{}  Base(``use  cs``;Id)(e)
                                                    \mwedge{}  (v
                                                        =  (mu\_ex\_v4\_onUseCS()  loc(e)  a 
                                                              list\_accum(b,a.mu\_ex\_v4\_onRequest()  +  mu\_ex\_v4\_onToken()  +  ...  +  ... 
                                                                                            loc(e) 
                                                                                            a 
                                                                                            b;
                                                                                    <ff,  IdDeq  initial$_{token}$  loc(e),  f\000Cf>
                                                                                    map(\mlambda{}p.(fst(p));L))))))
                                              \mvee{}  ((\mcdot{}  \mmember{}  Base(``leave  cs``;Unit)(e)  \mwedge{}  (\mdownarrow{}\mforall{}w:Id.  (\mneg{}w  \mmember{}  Base(``use  cs``;Id)(e))))
                                                  \mwedge{}  (v
                                                      =  (mu\_ex\_v4\_onLeaveCS()  loc(e)  \mcdot{} 
                                                            list\_accum(b,a.mu\_ex\_v4\_onRequest()  +  mu\_ex\_v4\_onToken()  +  ...  +  ... 
                                                                                          loc(e) 
                                                                                          a 
                                                                                          b;
                                                                                  <ff,  IdDeq  initial$_{token}$  loc(e),  ff\000C>
                                                                                  map(\mlambda{}p.(fst(p));L)))))))))))\})
\mwedge{}  (\mforall{}[cs,initial$_{token}$,proc1,proc2:Id].  \mforall{}[es:EO'].  \mforall{}[e:E].  \mforall{}[i:Id].  \mforall{}[m:Messa\000Cge].
          \{<i,  m>  \mmember{}  mu\_ex\_v4\_main(cs;initial$_{token}$;proc1;proc2)(e)
          \mLeftarrow{}{}\mRightarrow{}  (((loc(e)  =  proc1)  \mdownarrow{}\mvee{}  (loc(e)  =  proc2))
                  \mwedge{}  (((<i,  m>  \mmember{}  concat-lifting-loc-3(\mlambda{}zi,zh,n,z.
                                                                                          let  interested,token,toreply  =  z  in 
                                                                                          if  interested
                                                                                          then  \{\}
                                                                                          else  \{mu\_ex\_v4\_send\_token() 
                                                                                                      (mu\_ex\_v4\_otherProc(proc1;proc2)  loc(e)) 
                                                                                                      (n  +  1)\}
                                                                                          fi  )|Loc,  mu\_ex\_v4\_Request(),  mu\_ex\_v4\_PrToken(),
                                              mu\_ex\_v4\_PrState(initial$_{token}$)|(e)
                      \mdownarrow{}\mvee{}  (\mexists{}a:Id
                                (a  \mmember{}  Base(``use  cs``;Id)(e)
                                \mwedge{}  (\mexists{}b,b1:\mBbbB{}
                                        ((\mexists{}b2:\mBbbB{}
                                              <b,  b1,  b2>  \mmember{}
                                                Prior(mu\_ex\_v4\_State(initial$_{token}$))?mu\_ex\_v4\_initSt\000Cate(initial$_{token}$)(e))
                                        \mwedge{}  (((\muparrow{}b)  \mwedge{}  (i  =  a)  \mwedge{}  (m  =  make-Msg([busy];Unit;\mcdot{})))
                                            \mvee{}  ((\mneg{}\muparrow{}b)
                                                \mwedge{}  (((\muparrow{}b1)  \mwedge{}  (i  =  cs)  \mwedge{}  (m  =  make-Msg(``enter  cs``;Id;loc(e))))
                                                    \mvee{}  ((\mneg{}\muparrow{}b1)
                                                        \mwedge{}  (i  =  (mu\_ex\_v4\_otherProc(proc1;proc2)  loc(e)))
                                                        \mwedge{}  (m  =  make-Msg([request];Unit;\mcdot{})))))))))))
                      \mvee{}  (((\mdownarrow{}\mexists{}b,b1,b2:\mBbbB{}
                                    <b,  b1,  b2>  \mmember{}
                                      Prior(mu\_ex\_v4\_State(initial$_{token}$))?mu\_ex\_v4\_initState(i\000Cnitial$_{token}$)(e))
                          \mwedge{}  (i  =  cs)
                          \mwedge{}  (m  =  make-Msg(``enter  cs``;Id;loc(e))))
                          \mwedge{}  (\mdownarrow{}\mexists{}a:\mBbbZ{}.  a  \mmember{}  Base([token];\mBbbZ{})(e))))
                      \mdownarrow{}\mvee{}  <i,  m>  \mmember{}  concat-lifting-loc-3(\mlambda{}zl,zk,n,z.
                                                                                          let  interested,token,toreply  =  z  in 
                                                                                          if  toreply
                                                                                          then  \{mu\_ex\_v4\_send\_token() 
                                                                                                      (mu\_ex\_v4\_otherProc(proc1;proc2)  loc(e)) 
                                                                                                      (n  +  1)\}
                                                                                          else  \{\}
                                                                                          fi  )|Loc,  mu\_ex\_v4\_LeaveCS(),  mu\_ex\_v4\_PrToken(),
                                              mu\_ex\_v4\_PrState(initial$_{token}$)|(e)))
                  \mdownarrow{}\mvee{}  ((loc(e)  =  cs)
                        \mwedge{}  (((i  =  loc(e))
                            \mwedge{}  (\mexists{}a:Id.  ((m  =  make-Msg([exec];Id;a))  \mwedge{}  a  \mmember{}  Base(``enter  cs``;Id)(e))))
                            \mdownarrow{}\mvee{}  ((m  =  make-Msg(``leave  cs``;Unit;\mcdot{}))  \mwedge{}  i  \mmember{}  Base([exec];Id)(e))))\})


Date html generated: 2012_02_20-PM-07_51_07
Last ObjectModification: 2012_02_02-PM-02_55_30

Home Index