Step * 2 1 of Lemma replace-vars_wf

.....wf..... 
1. opr Type
2. : ℕ
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. (varname() × term(opr)) List
⊢ eager-map(λbt.let vs,b bt 
                in <vs, replace-vars(s;b)>;y2) ∈ bound-term(opr) List
BY
((Assert y2 ∈ {bt:varname() List × term(opr)| (bt ∈ y2)}  List BY
          Auto)
   THEN (Enough to prove λbt.let vs,b bt 
                             in <vs, replace-vars(s;b)> ∈ {bt:varname() List × term(opr)| (bt ∈ y2)}  ⟶ bound-term(opr)
          Because Auto)
   THEN (MemCD THENL [(D -1 THEN -2 THEN Reduce THEN Unfold `bound-term` THEN MemCD THEN Try (Trivial)); Auto])) }

1
.....subterm..... T:t
2:n
1. opr Type
2. : ℕ
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. (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)


Latex:


Latex:
.....wf..... 
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
\mvdash{}  eager-map(\mlambda{}bt.let  vs,b  =  bt 
                                in  <vs,  replace-vars(s;b)>y2)  \mmember{}  bound-term(opr)  List


By


Latex:
((Assert  y2  \mmember{}  \{bt:varname()  List  \mtimes{}  term(opr)|  (bt  \mmember{}  y2)\}    List  BY
                Auto)
  THEN  (Enough  to  prove  \mlambda{}bt.let  vs,b  =  bt 
                                                      in  <vs,  replace-vars(s;b)>  \mmember{}  \{bt:varname()  List  \mtimes{}  term(opr)|  (bt  \mmember{}  y2)\}    \000C{}\mrightarrow{}  bound-term(opr)
                Because  Auto)
  THEN  (MemCD
              THENL  [(D  -1
                              THEN  D  -2
                              THEN  Reduce  0
                              THEN  Unfold  `bound-term`  0
                              THEN  MemCD
                              THEN  Try  (Trivial))
                          ;  Auto]
  ))




Home Index