Step
*
of Lemma
callbyvalueall_seq-shift-init
∀[L,F,K:Top]. ∀[m,n,p,q:ℕ].
  (callbyvalueall_seq(L;λf.mk_applies(f;K;p + q);F;n;m) 
  ~ callbyvalueall_seq(λi.mk_applies(L i;K;p);λf.mk_applies(f;λi.(K (p + i));q);λg.(F (λf.(g mk_applies(f;K;p))));n;m))
BY
{ ((UnivCD THENA Auto)
   THEN (Decide n ≤ m THENA Auto)
   THEN Try (Complete ((RecUnfold `callbyvalueall_seq` 0
                        THEN AutoSplit
                        THEN RepeatFor 2 ((MemCD THEN Try (Complete (Auto))))
                        THEN RWO "mk_applies_split" 0
                        THEN Auto)))
   THEN (Assert ⌜∃k:ℕ. (m = (n + k) ∈ ℤ)⌝⋅ THENA (InstConcl [⌜m - n⌝]⋅ THEN Auto'))
   THEN D (-1)
   THEN HypSubst' (-1) 0
   THEN ThinVar `m'
   THEN RepeatFor 4 (MoveToConcl (-2))
   THEN NatInd (-1)
   THEN (UnivCD THENA Auto)
   THEN RecUnfold `callbyvalueall_seq` 0
   THEN AutoSplit
   THEN RWO "mk_applies_split<" 0
   THEN Try (Complete (Auto))
   THEN MemCD
   THEN Try (Complete (Auto))) }
1
1. L : Top
2. F : Top
3. k : ℤ
4. 0 < k
5. ∀K:Top. ∀n,p,q:ℕ.
     (callbyvalueall_seq(L;λf.mk_applies(f;K;p + q);F;n;n + (k - 1)) 
     ~ callbyvalueall_seq(λi.mk_applies(L i;K;p);λf.mk_applies(f;λi.(K (p + i));q);λg.(F (λf.(g mk_applies(f;K;p))));n;n
                         + (k - 1)))
6. K : Top
7. n : ℕ
8. ¬((n + k) ≤ n)
9. p : ℕ
10. q : ℕ
11. v : Base
⊢ callbyvalueall_seq(L;λf.(mk_applies(f;K;p + q) v);F;n + 1;n + k) 
~ callbyvalueall_seq(λi.mk_applies(L i;K;p);λf.(mk_applies(f;λi.(K (p + i));q) v);λg.(F (λf.(g mk_applies(f;K;p))));n
                    + 1;n + k)
Latex:
Latex:
\mforall{}[L,F,K:Top].  \mforall{}[m,n,p,q:\mBbbN{}].
    (callbyvalueall\_seq(L;\mlambda{}f.mk\_applies(f;K;p  +  q);F;n;m) 
    \msim{}  callbyvalueall\_seq(\mlambda{}i.mk\_applies(L  i;K;p);\mlambda{}f.mk\_applies(f;\mlambda{}i.(K  (p  +  i));q)
                                            ;\mlambda{}g.(F  (\mlambda{}f.(g  mk\_applies(f;K;p))));n;m))
By
Latex:
((UnivCD  THENA  Auto)
  THEN  (Decide  n  \mleq{}  m  THENA  Auto)
  THEN  Try  (Complete  ((RecUnfold  `callbyvalueall\_seq`  0
                                            THEN  AutoSplit
                                            THEN  RepeatFor  2  ((MemCD  THEN  Try  (Complete  (Auto))))
                                            THEN  RWO  "mk\_applies\_split"  0
                                            THEN  Auto)))
  THEN  (Assert  \mkleeneopen{}\mexists{}k:\mBbbN{}.  (m  =  (n  +  k))\mkleeneclose{}\mcdot{}  THENA  (InstConcl  [\mkleeneopen{}m  -  n\mkleeneclose{}]\mcdot{}  THEN  Auto'))
  THEN  D  (-1)
  THEN  HypSubst'  (-1)  0
  THEN  ThinVar  `m'
  THEN  RepeatFor  4  (MoveToConcl  (-2))
  THEN  NatInd  (-1)
  THEN  (UnivCD  THENA  Auto)
  THEN  RecUnfold  `callbyvalueall\_seq`  0
  THEN  AutoSplit
  THEN  RWO  "mk\_applies\_split<"  0
  THEN  Try  (Complete  (Auto))
  THEN  MemCD
  THEN  Try  (Complete  (Auto)))
Home
Index