Step
*
2
1
2
of Lemma
alpha-rename-aux_wf
.....subterm..... T:t
2:n
1. opr : Type
2. n : ℕ
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. f : {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()))
12. y2 ∈ {bt:varname() List × term(opr)| (bt ∈ y2)}  List
13. b1 : varname() List
14. b2 : term(opr)
15. (<b1, b2> ∈ y2)
⊢ alpha-rename-aux(f;rev(b1) + bnds;b2) ∈ term(opr)
BY
{ ((Assert 1 ≤ term-size(inr <y1, y2> ) BY
          Auto)
   THEN (Assert 1 ≤ n BY
               Auto)
   THEN Fold `mkterm` (-2)
   THEN Reduce -2
   THEN (D 3 With ⌜n - 1⌝  THENA Auto)) }
1
1. opr : Type
2. n : ℕ
3. term(opr) ≡ coterm-fun(opr;term(opr))
4. y1 : opr
5. y2 : (varname() List × term(opr)) List
6. inr <y1, y2>  ∈ term(opr)
7. term-size(inr <y1, y2> ) ≤ n
8. bnds : varname() List
9. f : {v:varname()| (v ∈ bnds @ all-vars(inr <y1, y2> ))}  ⟶ varname()
10. ∀x:{v:varname()| (v ∈ bnds @ all-vars(inr <y1, y2> ))} . (((f x) = nullvar() ∈ varname()) 
⇒ (x = nullvar() ∈ varnam\000Ce()))
11. y2 ∈ {bt:varname() List × term(opr)| (bt ∈ y2)}  List
12. b1 : varname() List
13. b2 : term(opr)
14. (<b1, b2> ∈ y2)
15. 1 ≤ (1 + Σ(term-size(snd(bt)) | bt ∈ y2))
16. 1 ≤ n
17. ∀[a:term(opr)]
      ((term-size(a) ≤ (n - 1))
      
⇒ (∀[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()))))
⊢ alpha-rename-aux(f;rev(b1) + bnds;b2) ∈ term(opr)
Latex:
Latex:
.....subterm.....  T:t
2:n
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)
12.  y2  \mmember{}  \{bt:varname()  List  \mtimes{}  term(opr)|  (bt  \mmember{}  y2)\}    List
13.  b1  :  varname()  List
14.  b2  :  term(opr)
15.  (<b1,  b2>  \mmember{}  y2)
\mvdash{}  alpha-rename-aux(f;rev(b1)  +  bnds;b2)  \mmember{}  term(opr)
By
Latex:
((Assert  1  \mleq{}  term-size(inr  <y1,  y2>  )  BY
                Auto)
  THEN  (Assert  1  \mleq{}  n  BY
                          Auto)
  THEN  Fold  `mkterm`  (-2)
  THEN  Reduce  -2
  THEN  (D  3  With  \mkleeneopen{}n  -  1\mkleeneclose{}    THENA  Auto))
Home
Index