Step * 2 of Lemma alpha-rename-aux_wf


1. opr Type
2. : ℕ
3. ∀n:ℕn
     ∀[a:term(opr)]
       ((term-size(a) ≤ n)
        (∀[bnds:varname() List]
             ∀f:{v:varname()| (v ∈ bnds all-vars(a))}  ⟶ varname()
               alpha-rename-aux(f;bnds;a) ∈ term(opr) 
               supposing ∀x:{v:varname()| (v ∈ bnds all-vars(a))} 
                           (((f x) nullvar() ∈ varname())  (x nullvar() ∈ varname()))))
4. term(opr) ≡ coterm-fun(opr;term(opr))
5. y1 opr
6. y2 (varname() List × term(opr)) List
7. inr <y1, y2>  ∈ term(opr)
8. term-size(inr <y1, y2> ) ≤ n
9. bnds varname() List
10. {v:varname()| (v ∈ bnds all-vars(inr <y1, y2> ))}  ⟶ varname()
11. ∀x:{v:varname()| (v ∈ bnds all-vars(inr <y1, y2> ))} (((f x) nullvar() ∈ varname())  (x nullvar() ∈ varnam\000Ce()))
⊢ alpha-rename-aux(f;bnds;inr <y1, y2> ) ∈ term(opr)
BY
((Unfold `alpha-rename-aux` THEN Reduce 0)
   THEN (GenConcl ⌜eager-map(λbt.let vs,a bt 
                                 in <map(f;vs), alpha-rename-aux(f;rev(vs) bnds;a)>;y2)
                   L
                   ∈ (bound-term(opr) List)⌝⋅
        THENM Auto
        )
   }

1
.....wf..... 
1. opr Type
2. : ℕ
3. ∀n:ℕn
     ∀[a:term(opr)]
       ((term-size(a) ≤ n)
        (∀[bnds:varname() List]
             ∀f:{v:varname()| (v ∈ bnds all-vars(a))}  ⟶ varname()
               alpha-rename-aux(f;bnds;a) ∈ term(opr) 
               supposing ∀x:{v:varname()| (v ∈ bnds all-vars(a))} 
                           (((f x) nullvar() ∈ varname())  (x nullvar() ∈ varname()))))
4. term(opr) ≡ coterm-fun(opr;term(opr))
5. y1 opr
6. y2 (varname() List × term(opr)) List
7. inr <y1, y2>  ∈ term(opr)
8. term-size(inr <y1, y2> ) ≤ n
9. bnds varname() List
10. {v:varname()| (v ∈ bnds all-vars(inr <y1, y2> ))}  ⟶ varname()
11. ∀x:{v:varname()| (v ∈ bnds all-vars(inr <y1, y2> ))} (((f x) nullvar() ∈ varname())  (x nullvar() ∈ varnam\000Ce()))
⊢ eager-map(λbt.let vs,a bt 
                in <map(f;vs), alpha-rename-aux(f;rev(vs) bnds;a)>;y2) ∈ bound-term(opr) List


Latex:


Latex:

1.  opr  :  Type
2.  n  :  \mBbbN{}
3.  \mforall{}n:\mBbbN{}n
          \mforall{}[a:term(opr)]
              ((term-size(a)  \mleq{}  n)
              {}\mRightarrow{}  (\mforall{}[bnds:varname()  List]
                          \mforall{}f:\{v:varname()|  (v  \mmember{}  bnds  @  all-vars(a))\}    {}\mrightarrow{}  varname()
                              alpha-rename-aux(f;bnds;a)  \mmember{}  term(opr) 
                              supposing  \mforall{}x:\{v:varname()|  (v  \mmember{}  bnds  @  all-vars(a))\} 
                                                      (((f  x)  =  nullvar())  {}\mRightarrow{}  (x  =  nullvar()))))
4.  term(opr)  \mequiv{}  coterm-fun(opr;term(opr))
5.  y1  :  opr
6.  y2  :  (varname()  List  \mtimes{}  term(opr))  List
7.  inr  <y1,  y2>    \mmember{}  term(opr)
8.  term-size(inr  <y1,  y2>  )  \mleq{}  n
9.  bnds  :  varname()  List
10.  f  :  \{v:varname()|  (v  \mmember{}  bnds  @  all-vars(inr  <y1,  y2>  ))\}    {}\mrightarrow{}  varname()
11.  \mforall{}x:\{v:varname()|  (v  \mmember{}  bnds  @  all-vars(inr  <y1,  y2>  ))\}  .  (((f  x)  =  nullvar())  {}\mRightarrow{}  (x  =  nullvar())\000C)
\mvdash{}  alpha-rename-aux(f;bnds;inr  <y1,  y2>  )  \mmember{}  term(opr)


By


Latex:
((Unfold  `alpha-rename-aux`  0  THEN  Reduce  0)
  THEN  (GenConcl  \mkleeneopen{}eager-map(\mlambda{}bt.let  vs,a  =  bt 
                                                              in  <map(f;vs),  alpha-rename-aux(f;rev(vs)  +  bnds;a)>y2)
                                  =  L\mkleeneclose{}\mcdot{}
            THENM  Auto
            )
  )




Home Index