Step
*
1
of Lemma
simple-cbva-seq-list-case1
1. F : Top
2. L1 : Top
3. L2 : Top
4. a : Top
5. m1 : ℕ+
6. m2 : ℕ
⊢ callbyvalueall-seq(λn.if (n) < (m1)
                           then L1 a n
                           else mk_lambdas(λout.if n - m1=m2
                                                then mk_lambdas(λo1.(out + o1);m2 - 1)
                                                else (L2 a (n - m1));m1 - 1);λx.x;mk_lambdas(F;((m1 + m2) + 1) - 1);0
                     (m1 + m2) + 1) 
~ callbyvalueall-seq(λn.if (n) < (m1)
                           then L1 a n
                           else if (n) < (m1 + m2)
                                   then mk_lambdas(L2 a (n - m1);m1)
                                   else mk_lambdas(λout1.mk_lambdas(λout2.(out1 + out2);m2 - 1);m1 - 1);λx.x
                     mk_lambdas(F;((m1 + m2) + 1) - 1);0;(m1 + m2) + 1)
BY
{ TACTIC:(TACTIC:(Subst ⌜((m1 + m2) + 1) - 1 ~ m1 + m2⌝ 0⋅ THENA Auto)
          THEN (RWO "callbyvalueall_seq-seq" 0 THENA Auto')
          THEN (Subst ⌜λx.x ~ λf.mk_applies(f;λx.x;0)⌝ 0⋅ THENA (RepUR ``mk_applies`` 0 THEN Auto))
          THEN (RWO "callbyvalueall_seq-decomp-last" 0 THENA Auto')
          THEN Reduce 0
          THEN (Subst ⌜((m1 + m2) + 1) - 1 ~ m1 + m2⌝ 0⋅ THENA Auto)
          THEN (Subst ⌜(m1 + m2) - m1 ~ m2⌝ 0⋅ THENA Auto)
          THEN (RW (SubC (AddrC [3] (SweepUpC (LemmaC `less_as_ite`)))) 0 THENA Auto)⋅
          THEN Repeat (AutoSplit)
          THEN Try (Complete (Auto'))
          THEN ((GenConclAtAddrType ⌜Top⌝ [1;3]⋅ THENA Auto) THEN Thin (-1) THEN RenameVar `X' (-1)⋅)⋅) }
1
1. F : Top
2. L1 : Top
3. L2 : Top
4. a : Top
5. m1 : ℕ+
6. m2 : ℕ
7. ¬m1 + m2 < m1 + m2
8. ¬m1 + m2 < m1
9. X : Top
⊢ callbyvalueall_seq(λn.if (n) < (m1)
                           then L1 a n
                           else mk_lambdas(λout.if n - m1=m2
                                                then mk_lambdas(λo1.(out + o1);m2 - 1)
                                                else (L2 a (n - m1));m1 - 1);λf.mk_applies(f;λx.x;0);X;0;m1 + m2) 
~ callbyvalueall_seq(λn.if (n) < (m1)
                           then L1 a n
                           else if (n) < (m1 + m2)
                                   then mk_lambdas(L2 a (n - m1);m1)
                                   else mk_lambdas(λout1.mk_lambdas(λout2.(out1 + out2);m2 - 1);m1 - 1)
                    λf.mk_applies(f;λx.x;0);X;0;m1 + m2)
Latex:
Latex:
1.  F  :  Top
2.  L1  :  Top
3.  L2  :  Top
4.  a  :  Top
5.  m1  :  \mBbbN{}\msupplus{}
6.  m2  :  \mBbbN{}
\mvdash{}  callbyvalueall-seq(\mlambda{}n.if  (n)  <  (m1)
                                                      then  L1  a  n
                                                      else  mk\_lambdas(\mlambda{}out.if  n  -  m1=m2
                                                                                                then  mk\_lambdas(\mlambda{}o1.(out  +  o1);m2  -  1)
                                                                                                else  (L2  a  (n  -  m1));m1  -  1);\mlambda{}x.x;mk\_lambdas(F;((m1
                                          +  m2)
                                          +  1)  -  1);0;(m1  +  m2)  +  1) 
\msim{}  callbyvalueall-seq(\mlambda{}n.if  (n)  <  (m1)
                                                      then  L1  a  n
                                                      else  if  (n)  <  (m1  +  m2)
                                                                      then  mk\_lambdas(L2  a  (n  -  m1);m1)
                                                                      else  mk\_lambdas(\mlambda{}out1.mk\_lambdas(\mlambda{}out2.(out1  +  out2);m2  -  1);m1 
                                                                                -  1);\mlambda{}x.x;mk\_lambdas(F;((m1  +  m2)  +  1)  -  1);0;(m1  +  m2)  +  1)
By
Latex:
TACTIC:(TACTIC:(Subst  \mkleeneopen{}((m1  +  m2)  +  1)  -  1  \msim{}  m1  +  m2\mkleeneclose{}  0\mcdot{}  THENA  Auto)
                THEN  (RWO  "callbyvalueall\_seq-seq"  0  THENA  Auto')
                THEN  (Subst  \mkleeneopen{}\mlambda{}x.x  \msim{}  \mlambda{}f.mk\_applies(f;\mlambda{}x.x;0)\mkleeneclose{}  0\mcdot{}  THENA  (RepUR  ``mk\_applies``  0  THEN  Auto))
                THEN  (RWO  "callbyvalueall\_seq-decomp-last"  0  THENA  Auto')
                THEN  Reduce  0
                THEN  (Subst  \mkleeneopen{}((m1  +  m2)  +  1)  -  1  \msim{}  m1  +  m2\mkleeneclose{}  0\mcdot{}  THENA  Auto)
                THEN  (Subst  \mkleeneopen{}(m1  +  m2)  -  m1  \msim{}  m2\mkleeneclose{}  0\mcdot{}  THENA  Auto)
                THEN  (RW  (SubC  (AddrC  [3]  (SweepUpC  (LemmaC  `less\_as\_ite`))))  0  THENA  Auto)\mcdot{}
                THEN  Repeat  (AutoSplit)
                THEN  Try  (Complete  (Auto'))
                THEN  ((GenConclAtAddrType  \mkleeneopen{}Top\mkleeneclose{}  [1;3]\mcdot{}  THENA  Auto)  THEN  Thin  (-1)  THEN  RenameVar  `X'  (-1)\mcdot{})
                \mcdot{})
Home
Index