Step
*
1
1
1
of Lemma
alpha-rename-alist-property2
1. [opr] : Type
2. t : term(opr)
3. x : varname()
4. u : varname()
5. v : varname() List
6. (x ∈ v)
⇒ (∀Z:varname() List × ((varname() × varname()) List)
      ∃x':varname()
       (<x, x'> ∈ snd(accumulate (with value p and list item x):
                       let vs,tab = p 
                       in eval x' = maybe_new_var(x;vs) in
                          <[x' / vs], [<x, x'> / tab]>
                      over list:
                        v
                      with starting value:
                       Z))))
7. x = u ∈ varname()
8. Z1 : varname() List
9. Z2 : (varname() × varname()) List
⊢ (<x, maybe_new_var(u;Z1)> ∈ snd(accumulate (with value p and list item x):
                                   let vs,tab = p 
                                   in eval x' = maybe_new_var(x;vs) in
                                      <[x' / vs], [<x, x'> / tab]>
                                  over list:
                                    v
                                  with starting value:
                                   eval x' = maybe_new_var(u;Z1) in
                                   <[x' / Z1], [<u, x'> / Z2]>)))
BY
{ ((GenConclTerm  ⌜maybe_new_var(u;Z1)⌝⋅ THENA Auto)
   THEN (Assert (<x, v1> ∈ snd(eval x' = v1 in
                               <[x' / Z1], [<u, x'> / Z2]>)) BY
               (CallByValueReduce 0 THEN Auto THEN Reduce 0 THEN Auto))
   THEN MoveToConcl (-1)
   THEN (GenConcl ⌜eval x' = v1 in <[x' / Z1], [<u, x'> / Z2]> = tab ∈ (varname() List × ((varname() × varname()) List))\000C⌝⋅ THENA Auto)
   THEN Thin (-1)
   THEN MoveToConcl (-1)
   THEN All Thin
   THEN ListInd 2
   THEN Reduce 0
   THEN Auto) }
1
1. x : varname()
2. v1 : varname()
3. u : varname()
4. v : varname() List
5. ∀tab:varname() List × ((varname() × varname()) List)
     ((<x, v1> ∈ snd(tab))
     
⇒ (<x, v1> ∈ snd(accumulate (with value p and list item x):
                        let vs,tab = p 
                        in eval x' = maybe_new_var(x;vs) in
                           <[x' / vs], [<x, x'> / tab]>
                       over list:
                         v
                       with starting value:
                        tab))))
6. tab : varname() List × ((varname() × varname()) List)
7. (<x, v1> ∈ snd(tab))
⊢ (<x, v1> ∈ snd(accumulate (with value p and list item x):
                  let vs,tab = p 
                  in eval x' = maybe_new_var(x;vs) in
                     <[x' / vs], [<x, x'> / tab]>
                 over list:
                   v
                 with starting value:
                  let vs,tab = tab 
                  in eval x' = maybe_new_var(u;vs) in
                     <[x' / vs], [<u, x'> / tab]>)))
Latex:
Latex:
1.  [opr]  :  Type
2.  t  :  term(opr)
3.  x  :  varname()
4.  u  :  varname()
5.  v  :  varname()  List
6.  (x  \mmember{}  v)
{}\mRightarrow{}  (\mforall{}Z:varname()  List  \mtimes{}  ((varname()  \mtimes{}  varname())  List)
            \mexists{}x':varname()
              (<x,  x'>  \mmember{}  snd(accumulate  (with  value  p  and  list  item  x):
                                              let  vs,tab  =  p 
                                              in  eval  x'  =  maybe\_new\_var(x;vs)  in
                                                    <[x'  /  vs],  [<x,  x'>  /  tab]>
                                            over  list:
                                                v
                                            with  starting  value:
                                              Z))))
7.  x  =  u
8.  Z1  :  varname()  List
9.  Z2  :  (varname()  \mtimes{}  varname())  List
\mvdash{}  (<x,  maybe\_new\_var(u;Z1)>  \mmember{}  snd(accumulate  (with  value  p  and  list  item  x):
                                                                      let  vs,tab  =  p 
                                                                      in  eval  x'  =  maybe\_new\_var(x;vs)  in
                                                                            <[x'  /  vs],  [<x,  x'>  /  tab]>
                                                                    over  list:
                                                                        v
                                                                    with  starting  value:
                                                                      eval  x'  =  maybe\_new\_var(u;Z1)  in
                                                                      <[x'  /  Z1],  [<u,  x'>  /  Z2]>)))
By
Latex:
((GenConclTerm    \mkleeneopen{}maybe\_new\_var(u;Z1)\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  (Assert  (<x,  v1>  \mmember{}  snd(eval  x'  =  v1  in
                                                          <[x'  /  Z1],  [<u,  x'>  /  Z2]>))  BY
                          (CallByValueReduce  0  THEN  Auto  THEN  Reduce  0  THEN  Auto))
  THEN  MoveToConcl  (-1)
  THEN  (GenConcl  \mkleeneopen{}eval  x'  =  v1  in  <[x'  /  Z1],  [<u,  x'>  /  Z2]>  =  tab\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  Thin  (-1)
  THEN  MoveToConcl  (-1)
  THEN  All  Thin
  THEN  ListInd  2
  THEN  Reduce  0
  THEN  Auto)
Home
Index