Step * 1 1 1 of Lemma alpha-rename-alist-property2


1. [opr] Type
2. term(opr)
3. varname()
4. varname()
5. varname() List
6. (x ∈ v)
 (∀Z:varname() List × ((varname() × varname()) List)
      ∃x':varname()
       (<x, x'> ∈ snd(accumulate (with value and list item x):
                       let vs,tab 
                       in eval x' maybe_new_var(x;vs) in
                          <[x' vs], [<x, x'> tab]>
                      over list:
                        v
                      with starting value:
                       Z))))
7. u ∈ varname()
8. Z1 varname() List
9. Z2 (varname() × varname()) List
⊢ (<x, maybe_new_var(u;Z1)> ∈ snd(accumulate (with value and list item x):
                                   let vs,tab 
                                   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 THEN Auto THEN Reduce 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. varname()
2. v1 varname()
3. varname()
4. varname() List
5. ∀tab:varname() List × ((varname() × varname()) List)
     ((<x, v1> ∈ snd(tab))
      (<x, v1> ∈ snd(accumulate (with value and list item x):
                        let vs,tab 
                        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 and list item x):
                  let vs,tab 
                  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