Step * 1 1 of Lemma alpha-rename-equivalent


1. [opr] Type
2. ∀t:term(opr). ∀bnds:varname() List. ∀f:{v:varname()| (v ∈ bnds all-vars(t))}  ⟶ varname().
     (map(f;bnds) ∈ varname() List)
3. varname()
4. [%3] : ¬(v nullvar() ∈ varname())
5. varterm(v) ∈ term(opr)
6. bnds varname() List
7. {v@0:varname()| (v@0 ∈ bnds all-vars(varterm(v)))}  ⟶ varname()
8. [%] ((∀x:{v@0:varname()| (v@0 ∈ bnds all-vars(varterm(v)))} 
             ((f x ∈ free-vars-aux(bnds;varterm(v)))  ((f x) x ∈ varname())))
∧ (∀x:{v@0:varname()| (v@0 ∈ bnds all-vars(varterm(v)))} 
     (((f x) nullvar() ∈ varname())  (x nullvar() ∈ varname()))))
∧ Inj({v@0:varname()| (v@0 ∈ bnds all-vars(varterm(v)))} ;varname();f)
9. map(f;bnds) ∈ varname() List
10. all-vars(varterm(v)) [v]
⊢ alpha-aux(opr;map(f;bnds);bnds;alpha-rename-aux(f;bnds;varterm(v));varterm(v))
BY
((Unfold `varterm` THEN Unfold `alpha-rename-aux` THEN Reduce 0)
   THEN AutoSplit
   THEN Unfold `alpha-aux` 0
   THEN Reduce 0
   THEN Unhide
   THEN Auto) }

1
1. opr Type
2. ∀t:term(opr). ∀bnds:varname() List. ∀f:{v:varname()| (v ∈ bnds all-vars(t))}  ⟶ varname().
     (map(f;bnds) ∈ varname() List)
3. varname()
4. ¬(v nullvar() ∈ varname())
5. varterm(v) ∈ term(opr)
6. bnds varname() List
7. {v@0:varname()| (v@0 ∈ bnds all-vars(varterm(v)))}  ⟶ varname()
8. ∀x:{v@0:varname()| (v@0 ∈ bnds all-vars(varterm(v)))} 
     ((f x ∈ free-vars-aux(bnds;varterm(v)))  ((f x) x ∈ varname()))
9. ∀x:{v@0:varname()| (v@0 ∈ bnds all-vars(varterm(v)))} 
     (((f x) nullvar() ∈ varname())  (x nullvar() ∈ varname()))
10. Inj({v@0:varname()| (v@0 ∈ bnds all-vars(varterm(v)))} ;varname();f)
11. map(f;bnds) ∈ varname() List
12. all-vars(varterm(v)) [v]
13. (v ∈ bnds)
⊢ ↑same-binding(map(f;bnds);bnds;f v;v)

2
1. opr Type
2. ∀t:term(opr). ∀bnds:varname() List. ∀f:{v:varname()| (v ∈ bnds all-vars(t))}  ⟶ varname().
     (map(f;bnds) ∈ varname() List)
3. varname()
4. ¬(v nullvar() ∈ varname())
5. varterm(v) ∈ term(opr)
6. bnds varname() List
7. ¬(v ∈ bnds)
8. {v@0:varname()| (v@0 ∈ bnds all-vars(varterm(v)))}  ⟶ varname()
9. ∀x:{v@0:varname()| (v@0 ∈ bnds all-vars(varterm(v)))} 
     ((f x ∈ free-vars-aux(bnds;varterm(v)))  ((f x) x ∈ varname()))
10. ∀x:{v@0:varname()| (v@0 ∈ bnds all-vars(varterm(v)))} 
      (((f x) nullvar() ∈ varname())  (x nullvar() ∈ varname()))
11. Inj({v@0:varname()| (v@0 ∈ bnds all-vars(varterm(v)))} ;varname();f)
12. map(f;bnds) ∈ varname() List
13. all-vars(varterm(v)) [v]
⊢ ↑same-binding(map(f;bnds);bnds;v;v)


Latex:


Latex:

1.  [opr]  :  Type
2.  \mforall{}t:term(opr).  \mforall{}bnds:varname()  List.  \mforall{}f:\{v:varname()|  (v  \mmember{}  bnds  @  all-vars(t))\}    {}\mrightarrow{}  varname().
          (map(f;bnds)  \mmember{}  varname()  List)
3.  v  :  varname()
4.  [\%3]  :  \mneg{}(v  =  nullvar())
5.  varterm(v)  \mmember{}  term(opr)
6.  bnds  :  varname()  List
7.  f  :  \{v@0:varname()|  (v@0  \mmember{}  bnds  @  all-vars(varterm(v)))\}    {}\mrightarrow{}  varname()
8.  [\%]  :  ((\mforall{}x:\{v@0:varname()|  (v@0  \mmember{}  bnds  @  all-vars(varterm(v)))\} 
                          ((f  x  \mmember{}  free-vars-aux(bnds;varterm(v)))  {}\mRightarrow{}  ((f  x)  =  x)))
\mwedge{}  (\mforall{}x:\{v@0:varname()|  (v@0  \mmember{}  bnds  @  all-vars(varterm(v)))\} 
          (((f  x)  =  nullvar())  {}\mRightarrow{}  (x  =  nullvar()))))
\mwedge{}  Inj(\{v@0:varname()|  (v@0  \mmember{}  bnds  @  all-vars(varterm(v)))\}  ;varname();f)
9.  map(f;bnds)  \mmember{}  varname()  List
10.  all-vars(varterm(v))  \msim{}  [v]
\mvdash{}  alpha-aux(opr;map(f;bnds);bnds;alpha-rename-aux(f;bnds;varterm(v));varterm(v))


By


Latex:
((Unfold  `varterm`  0  THEN  Unfold  `alpha-rename-aux`  0  THEN  Reduce  0)
  THEN  AutoSplit
  THEN  Unfold  `alpha-aux`  0
  THEN  Reduce  0
  THEN  Unhide
  THEN  Auto)




Home Index