Step
*
2
1
1
of Lemma
replace-vars_wf
.....subterm..... T:t
2:n
1. opr : Type
2. n : ℕ
3. ∀n:ℕn. ∀[a:term(opr)]. ((term-size(a) ≤ n) 
⇒ (∀[s:(varname() × term(opr)) List]. (replace-vars(s;a) ∈ term(opr))))
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. s : (varname() × term(opr)) List
10. y2 ∈ {bt:varname() List × term(opr)| (bt ∈ y2)}  List
11. b1 : varname() List
12. b2 : term(opr)
13. (<b1, b2> ∈ y2)
⊢ replace-vars(s;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. s : (varname() × term(opr)) List
9. y2 ∈ {bt:varname() List × term(opr)| (bt ∈ y2)}  List
10. b1 : varname() List
11. b2 : term(opr)
12. (<b1, b2> ∈ y2)
13. 1 ≤ (1 + Σ(term-size(snd(bt)) | bt ∈ y2))
14. 1 ≤ n
15. ∀[a:term(opr)]. ((term-size(a) ≤ (n - 1)) 
⇒ (∀[s:(varname() × term(opr)) List]. (replace-vars(s;a) ∈ term(opr))))
⊢ replace-vars(s;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{}[s:(varname()  \mtimes{}  term(opr))  List].  (replace-vars(s;a)  \mmember{}  term(opr))))
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.  s  :  (varname()  \mtimes{}  term(opr))  List
10.  y2  \mmember{}  \{bt:varname()  List  \mtimes{}  term(opr)|  (bt  \mmember{}  y2)\}    List
11.  b1  :  varname()  List
12.  b2  :  term(opr)
13.  (<b1,  b2>  \mmember{}  y2)
\mvdash{}  replace-vars(s;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