Step
*
3
of Lemma
alpha-avoid-equivalent
1. opr : Type
2. t : term(opr)
3. L : varname() List
4. ¬(nullvar() ∈ L)
5. ∀x:{v:varname()| (v ∈ all-vars(t))} 
     ((alist-map(VarDeq;alpha-rename-alist(t;L)) x ∈ free-vars(t))
     
⇒ ((alist-map(VarDeq;alpha-rename-alist(t;L)) x) = x ∈ varname()))
6. ∀x:{v:varname()| (v ∈ all-vars(t))} 
     (((alist-map(VarDeq;alpha-rename-alist(t;L)) x) = nullvar() ∈ varname()) 
⇒ (x = nullvar() ∈ varname()))
⊢ Inj({v:varname()| (v ∈ all-vars(t))} varname();alist-map(VarDeq;alpha-rename-alist(t;L)))
BY
{ (RepeatFor 2 ((D 0 THENA Auto))
   THEN Unfold `alist-map` 0
   THEN Reduce 0
   THEN (GenConclAtAddr [1;2;1] THEN D -2 THEN Reduce 0)
   THEN GenConclAtAddr [1;3;1]
   THEN D -2
   THEN Reduce 0) }
1
1. opr : Type
2. t : term(opr)
3. L : varname() List
4. ¬(nullvar() ∈ L)
5. ∀x:{v:varname()| (v ∈ all-vars(t))} 
     ((alist-map(VarDeq;alpha-rename-alist(t;L)) x ∈ free-vars(t))
     
⇒ ((alist-map(VarDeq;alpha-rename-alist(t;L)) x) = x ∈ varname()))
6. ∀x:{v:varname()| (v ∈ all-vars(t))} 
     (((alist-map(VarDeq;alpha-rename-alist(t;L)) x) = nullvar() ∈ varname()) 
⇒ (x = nullvar() ∈ varname()))
7. a1 : {v:varname()| (v ∈ all-vars(t))} 
8. a2 : {v:varname()| (v ∈ all-vars(t))} 
9. x : varname()
10. apply-alist(VarDeq;alpha-rename-alist(t;L);a1) = (inl x) ∈ (varname()?)
11. x1 : varname()
12. apply-alist(VarDeq;alpha-rename-alist(t;L);a2) = (inl x1) ∈ (varname()?)
⊢ (x = x1 ∈ varname()) 
⇒ (a1 = a2 ∈ {v:varname()| (v ∈ all-vars(t))} )
2
1. opr : Type
2. t : term(opr)
3. L : varname() List
4. ¬(nullvar() ∈ L)
5. ∀x:{v:varname()| (v ∈ all-vars(t))} 
     ((alist-map(VarDeq;alpha-rename-alist(t;L)) x ∈ free-vars(t))
     
⇒ ((alist-map(VarDeq;alpha-rename-alist(t;L)) x) = x ∈ varname()))
6. ∀x:{v:varname()| (v ∈ all-vars(t))} 
     (((alist-map(VarDeq;alpha-rename-alist(t;L)) x) = nullvar() ∈ varname()) 
⇒ (x = nullvar() ∈ varname()))
7. a1 : {v:varname()| (v ∈ all-vars(t))} 
8. a2 : {v:varname()| (v ∈ all-vars(t))} 
9. x : varname()
10. apply-alist(VarDeq;alpha-rename-alist(t;L);a1) = (inl x) ∈ (varname()?)
11. y : Unit
12. apply-alist(VarDeq;alpha-rename-alist(t;L);a2) = (inr y ) ∈ (varname()?)
⊢ (x = a2 ∈ varname()) 
⇒ (a1 = a2 ∈ {v:varname()| (v ∈ all-vars(t))} )
3
1. opr : Type
2. t : term(opr)
3. L : varname() List
4. ¬(nullvar() ∈ L)
5. ∀x:{v:varname()| (v ∈ all-vars(t))} 
     ((alist-map(VarDeq;alpha-rename-alist(t;L)) x ∈ free-vars(t))
     
⇒ ((alist-map(VarDeq;alpha-rename-alist(t;L)) x) = x ∈ varname()))
6. ∀x:{v:varname()| (v ∈ all-vars(t))} 
     (((alist-map(VarDeq;alpha-rename-alist(t;L)) x) = nullvar() ∈ varname()) 
⇒ (x = nullvar() ∈ varname()))
7. a1 : {v:varname()| (v ∈ all-vars(t))} 
8. a2 : {v:varname()| (v ∈ all-vars(t))} 
9. y : Unit
10. apply-alist(VarDeq;alpha-rename-alist(t;L);a1) = (inr y ) ∈ (varname()?)
11. x : varname()
12. apply-alist(VarDeq;alpha-rename-alist(t;L);a2) = (inl x) ∈ (varname()?)
⊢ (a1 = x ∈ varname()) 
⇒ (a1 = a2 ∈ {v:varname()| (v ∈ all-vars(t))} )
4
1. opr : Type
2. t : term(opr)
3. L : varname() List
4. ¬(nullvar() ∈ L)
5. ∀x:{v:varname()| (v ∈ all-vars(t))} 
     ((alist-map(VarDeq;alpha-rename-alist(t;L)) x ∈ free-vars(t))
     
⇒ ((alist-map(VarDeq;alpha-rename-alist(t;L)) x) = x ∈ varname()))
6. ∀x:{v:varname()| (v ∈ all-vars(t))} 
     (((alist-map(VarDeq;alpha-rename-alist(t;L)) x) = nullvar() ∈ varname()) 
⇒ (x = nullvar() ∈ varname()))
7. a1 : {v:varname()| (v ∈ all-vars(t))} 
8. a2 : {v:varname()| (v ∈ all-vars(t))} 
9. y : Unit
10. apply-alist(VarDeq;alpha-rename-alist(t;L);a1) = (inr y ) ∈ (varname()?)
11. y1 : Unit
12. apply-alist(VarDeq;alpha-rename-alist(t;L);a2) = (inr y1 ) ∈ (varname()?)
⊢ (a1 = a2 ∈ varname()) 
⇒ (a1 = a2 ∈ {v:varname()| (v ∈ all-vars(t))} )
Latex:
Latex:
1.  opr  :  Type
2.  t  :  term(opr)
3.  L  :  varname()  List
4.  \mneg{}(nullvar()  \mmember{}  L)
5.  \mforall{}x:\{v:varname()|  (v  \mmember{}  all-vars(t))\} 
          ((alist-map(VarDeq;alpha-rename-alist(t;L))  x  \mmember{}  free-vars(t))
          {}\mRightarrow{}  ((alist-map(VarDeq;alpha-rename-alist(t;L))  x)  =  x))
6.  \mforall{}x:\{v:varname()|  (v  \mmember{}  all-vars(t))\} 
          (((alist-map(VarDeq;alpha-rename-alist(t;L))  x)  =  nullvar())  {}\mRightarrow{}  (x  =  nullvar()))
\mvdash{}  Inj(\{v:varname()|  (v  \mmember{}  all-vars(t))\}  ;varname();alist-map(VarDeq;alpha-rename-alist(t;L)))
By
Latex:
(RepeatFor  2  ((D  0  THENA  Auto))
  THEN  Unfold  `alist-map`  0
  THEN  Reduce  0
  THEN  (GenConclAtAddr  [1;2;1]  THEN  D  -2  THEN  Reduce  0)
  THEN  GenConclAtAddr  [1;3;1]
  THEN  D  -2
  THEN  Reduce  0)
Home
Index