Step
*
2
1
of Lemma
callbyvalueall_seq-combine
1. F : Top
2. L1 : Top
3. L2 : Top
4. m2 : ℕ
5. k : ℤ
6. 0 < k
7. 0 < k
8. K : Top
9. n : ℤ
10. ¬((n + k) ≤ n)
11. 0 ≤ n
12. ¬(k = 1 ∈ ℤ)
13. ∀K:Top. ∀n:ℤ.
      ((0 ≤ n)
      
⇒ (callbyvalueall_seq(L1;λf.mk_applies(f;K;n);λg.(g 
                                                         mk_lambdas(λout.callbyvalueall_seq(L2[out];λx.x;λg.(g F[m2]);0
                                                                                           m2);(n + (k - 1)) - 1));n;n
                            + (k - 1)) ~ callbyvalueall_seq(λi.if i <z n + (k - 1)
                                                               then L1 i
                                                               else mk_lambdas(λout.(L2[out] (i - n + (k - 1)));(n
                                                                    + (k - 1)) - 1)
                                                               fi λf.mk_applies(f;K;n);λg.(g 
                                                                                            mk_lambdas(F[m2];n
                                                                                            + (k - 1)));n;(n + (k - 1))
                                                           + m2)))
14. v : Base
⊢ callbyvalueall_seq(L1;λf.(mk_applies(f;K;n) v);λg.(g 
                                                     mk_lambdas(λout.callbyvalueall_seq(L2[out];λx.x;λg.(g F[m2]);0
                                                                                       m2);(n + k) - 1));n + 1;n + k) 
~ callbyvalueall_seq(λi.if i <z n + k then L1 i else mk_lambdas(λout.(L2[out] (i - n + k));(n + k) - 1) fi 
                    λf.(mk_applies(f;K;n) v);λg.(g mk_lambdas(F[m2];n + k));n + 1;(n + k) + m2)
BY
{ ((InstHyp [⌜λi.if (i =z n) then v else K i fi ⌝;⌜n + 1⌝] (-2)⋅ THENA Auto)
   THEN (Subst ⌜(n + 1) + (k - 1) ~ n + k⌝ (-1)⋅ THENA Auto)
   THEN (RWO "mk_applies_unroll" (-1) THENA Auto)
   THEN Reduce (-1)
   THEN SplitOnHypITE (-1)
   THEN Try (Complete (Auto))
   THEN Thin (-1)
   THEN (Subst ⌜(n + 1) - 1 ~ n⌝ (-1)⋅ THENA Auto)
   THEN RWO "mk_applies_fun" (-1)
   THEN Auto) }
Latex:
Latex:
1.  F  :  Top
2.  L1  :  Top
3.  L2  :  Top
4.  m2  :  \mBbbN{}
5.  k  :  \mBbbZ{}
6.  0  <  k
7.  0  <  k
8.  K  :  Top
9.  n  :  \mBbbZ{}
10.  \mneg{}((n  +  k)  \mleq{}  n)
11.  0  \mleq{}  n
12.  \mneg{}(k  =  1)
13.  \mforall{}K:Top.  \mforall{}n:\mBbbZ{}.
            ((0  \mleq{}  n)
            {}\mRightarrow{}  (callbyvalueall\_seq(L1;\mlambda{}f.mk\_applies(f;K;n)
                                                        ;\mlambda{}g.(g 
                                                                  mk\_lambdas(\mlambda{}out.callbyvalueall\_seq(L2[out];\mlambda{}x.x;\mlambda{}g.(g  F[m2]);0
                                                                                                                                      ;m2);(n  +  (k  -  1))  -  1));n;n
                                                        +  (k  -  1)) 
                  \msim{}  callbyvalueall\_seq(\mlambda{}i.if  i  <z  n  +  (k  -  1)
                                                                  then  L1  i
                                                                  else  mk\_lambdas(\mlambda{}out.(L2[out]  (i  -  n  +  (k  -  1)));(n  +  (k  -  1))  -  1)
                                                                  fi  ;\mlambda{}f.mk\_applies(f;K;n);\mlambda{}g.(g  mk\_lambdas(F[m2];n  +  (k  -  1)));n;(n
                                                          +  (k  -  1))
                                                          +  m2)))
14.  v  :  Base
\mvdash{}  callbyvalueall\_seq(L1;\mlambda{}f.(mk\_applies(f;K;n)  v);\mlambda{}g.(g 
                                                                                                          mk\_lambdas(\mlambda{}out.callbyvalueall\_seq(L2[out];\mlambda{}x.x
                                                                                                                                                                              ;\mlambda{}g.(g  F[m2])
                                                                                                                                                                              ;0;m2);(n
                                                                                                          +  k)  -  1));n  +  1;n  +  k) 
\msim{}  callbyvalueall\_seq(\mlambda{}i.if  i  <z  n  +  k
                                                then  L1  i
                                                else  mk\_lambdas(\mlambda{}out.(L2[out]  (i  -  n  +  k));(n  +  k)  -  1)
                                                fi  ;\mlambda{}f.(mk\_applies(f;K;n)  v);\mlambda{}g.(g  mk\_lambdas(F[m2];n  +  k));n  +  1;(n  +  k)
                                        +  m2)
By
Latex:
((InstHyp  [\mkleeneopen{}\mlambda{}i.if  (i  =\msubz{}  n)  then  v  else  K  i  fi  \mkleeneclose{};\mkleeneopen{}n  +  1\mkleeneclose{}]  (-2)\mcdot{}  THENA  Auto)
  THEN  (Subst  \mkleeneopen{}(n  +  1)  +  (k  -  1)  \msim{}  n  +  k\mkleeneclose{}  (-1)\mcdot{}  THENA  Auto)
  THEN  (RWO  "mk\_applies\_unroll"  (-1)  THENA  Auto)
  THEN  Reduce  (-1)
  THEN  SplitOnHypITE  (-1)
  THEN  Try  (Complete  (Auto))
  THEN  Thin  (-1)
  THEN  (Subst  \mkleeneopen{}(n  +  1)  -  1  \msim{}  n\mkleeneclose{}  (-1)\mcdot{}  THENA  Auto)
  THEN  RWO  "mk\_applies\_fun"  (-1)
  THEN  Auto)
Home
Index