Step * of Lemma alpha-rename-binders-disjoint

No Annotations
[opr:Type]
  ∀L:varname() List. ∀t:term(opr). ∀f:{v:varname()| (v ∈ all-vars(t))}  ⟶ varname().
    ((∀x:{v:varname()| (v ∈ all-vars(t))} 
        ((((f x) nullvar() ∈ varname())  (x nullvar() ∈ varname())) ∧ (f x ∈ L))))
     binders-disjoint(opr;L;alpha-rename(f;t)))
BY
((RepeatFor (Intro)
    THEN (Enough to prove ∀t:term(opr). ∀bnds:varname() List. ∀f:{v:varname()| (v ∈ bnds all-vars(t))}  ⟶ varname().
                            ((∀x:{v:varname()| (v ∈ bnds all-vars(t))} 
                                ((((f x) nullvar() ∈ varname())  (x nullvar() ∈ varname())) ∧ (f x ∈ L))))
                             binders-disjoint(opr;L;alpha-rename-aux(f;bnds;t)))
           Because (ParallelLast
                    THEN (D -1 With ⌜[]⌝  THENA Auto)
                    THEN RepeatFor ((ParallelLast THENA ParallelLast))
                    THEN Fold `alpha-rename` (-1)
                    THEN Trivial))
    )
   THEN (BLemma `term-induction` THENW Auto)
   THEN ((Intro
          THEN (Assert varterm(v) ∈ term(opr) BY
                      Auto)
          THEN DVar `v'
          THEN Auto
          THEN RepUR ``alpha-rename-aux`` 0
          THEN AutoSplit
          THEN RepUR ``binders-disjoint`` 0
          THEN Auto)
   ORELSE (Auto THEN Unfold `alpha-rename-aux` THEN Reduce 0)
   )) }

1
1. [opr] Type
2. varname() List
3. bts bound-term(opr) List
4. ∀bt:bound-term(opr)
     ((bt ∈ bts)
      (∀bnds:varname() List. ∀f:{v:varname()| (v ∈ bnds all-vars(snd(bt)))}  ⟶ varname().
           ((∀x:{v:varname()| (v ∈ bnds all-vars(snd(bt)))} 
               ((((f x) nullvar() ∈ varname())  (x nullvar() ∈ varname())) ∧ (f x ∈ L))))
            binders-disjoint(opr;L;alpha-rename-aux(f;bnds;snd(bt))))))
5. opr
6. bnds varname() List
7. f@0 {v:varname()| (v ∈ bnds all-vars(mkterm(f;bts)))}  ⟶ varname()
8. ∀x:{v:varname()| (v ∈ bnds all-vars(mkterm(f;bts)))} 
     ((((f@0 x) nullvar() ∈ varname())  (x nullvar() ∈ varname())) ∧ (f@0 x ∈ L)))
⊢ binders-disjoint(opr;L;eval bts' eager-map(λbt.let vs,a bt 
                                                   in <map(f@0;vs), alpha-rename-aux(f@0;rev(vs) bnds;a)>;bts) in
                         mkterm(f;bts'))


Latex:


Latex:
No  Annotations
\mforall{}[opr:Type]
    \mforall{}L:varname()  List.  \mforall{}t:term(opr).  \mforall{}f:\{v:varname()|  (v  \mmember{}  all-vars(t))\}    {}\mrightarrow{}  varname().
        ((\mforall{}x:\{v:varname()|  (v  \mmember{}  all-vars(t))\} 
                ((((f  x)  =  nullvar())  {}\mRightarrow{}  (x  =  nullvar()))  \mwedge{}  (\mneg{}(f  x  \mmember{}  L))))
        {}\mRightarrow{}  binders-disjoint(opr;L;alpha-rename(f;t)))


By


Latex:
((RepeatFor  2  (Intro)
    THEN  (Enough  to  prove  \mforall{}t:term(opr).  \mforall{}bnds:varname()  List.  \mforall{}f:\{v:varname()| 
                                                                                                                                (v  \mmember{}  bnds  @  all-vars(t))\} 
                                                                                                                              {}\mrightarrow{}  varname().
                                                    ((\mforall{}x:\{v:varname()|  (v  \mmember{}  bnds  @  all-vars(t))\} 
                                                            ((((f  x)  =  nullvar())  {}\mRightarrow{}  (x  =  nullvar()))  \mwedge{}  (\mneg{}(f  x  \mmember{}  L))))
                                                    {}\mRightarrow{}  binders-disjoint(opr;L;alpha-rename-aux(f;bnds;t)))
                  Because  (ParallelLast
                                    THEN  (D  -1  With  \mkleeneopen{}[]\mkleeneclose{}    THENA  Auto)
                                    THEN  RepeatFor  2  ((ParallelLast  THENA  ParallelLast))
                                    THEN  Fold  `alpha-rename`  (-1)
                                    THEN  Trivial))
    )
  THEN  (BLemma  `term-induction`  THENW  Auto)
  THEN  ((Intro
                THEN  (Assert  varterm(v)  \mmember{}  term(opr)  BY
                                        Auto)
                THEN  DVar  `v'
                THEN  Auto
                THEN  RepUR  ``alpha-rename-aux``  0
                THEN  AutoSplit
                THEN  RepUR  ``binders-disjoint``  0
                THEN  Auto)
  ORELSE  (Auto  THEN  Unfold  `alpha-rename-aux`  0  THEN  Reduce  0)
  ))




Home Index