Step
*
of Lemma
callbyvalueall_seq-spread
∀[F,G,H,L,K:Top]. ∀[m,n:ℕ].
  (let x,y = callbyvalueall_seq(L;λf.mk_applies(f;K;n);λg.<F[g], G[g]>n;m) 
   in H[x;y] ~ callbyvalueall_seq(L;λf.mk_applies(f;K;n);λg.H[F[g];G[g]];n;m))
BY
{ (Auto
   THEN (Decide n ≤ m THENA Auto)
   THEN Try (Complete ((RecUnfold `callbyvalueall_seq` 0 THEN AutoSplit)))
   THEN (Assert ⌜∃i:ℕ. (m = (n + i) ∈ ℤ)⌝⋅ THENA (InstConcl [⌜m - n⌝]⋅ THEN Auto'))
   THEN D (-1)
   THEN HypSubst' (-1) 0
   THEN ThinVar `m'
   THEN RepeatFor 2 (MoveToConcl (-2))
   THEN NatInd (-1)
   THEN Auto
   THEN RecUnfold `callbyvalueall_seq` 0
   THEN AutoSplit
   THEN RW LiftAllC 0
   THEN MemCD
   THEN Try (Complete (Auto))
   THEN (InstHyp [⌜λi.if (i =z n) then v else K i fi ⌝;⌜n + 1⌝] (-5)⋅ THENA Auto)
   THEN (Subst ⌜(n + 1) + (i - 1) ~ n + i⌝ (-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:
\mforall{}[F,G,H,L,K:Top].  \mforall{}[m,n:\mBbbN{}].
    (let  x,y  =  callbyvalueall\_seq(L;\mlambda{}f.mk\_applies(f;K;n);\mlambda{}g.<F[g],  G[g]>n;m) 
      in  H[x;y]  \msim{}  callbyvalueall\_seq(L;\mlambda{}f.mk\_applies(f;K;n);\mlambda{}g.H[F[g];G[g]];n;m))
By
Latex:
(Auto
  THEN  (Decide  n  \mleq{}  m  THENA  Auto)
  THEN  Try  (Complete  ((RecUnfold  `callbyvalueall\_seq`  0  THEN  AutoSplit)))
  THEN  (Assert  \mkleeneopen{}\mexists{}i:\mBbbN{}.  (m  =  (n  +  i))\mkleeneclose{}\mcdot{}  THENA  (InstConcl  [\mkleeneopen{}m  -  n\mkleeneclose{}]\mcdot{}  THEN  Auto'))
  THEN  D  (-1)
  THEN  HypSubst'  (-1)  0
  THEN  ThinVar  `m'
  THEN  RepeatFor  2  (MoveToConcl  (-2))
  THEN  NatInd  (-1)
  THEN  Auto
  THEN  RecUnfold  `callbyvalueall\_seq`  0
  THEN  AutoSplit
  THEN  RW  LiftAllC  0
  THEN  MemCD
  THEN  Try  (Complete  (Auto))
  THEN  (InstHyp  [\mkleeneopen{}\mlambda{}i.if  (i  =\msubz{}  n)  then  v  else  K  i  fi  \mkleeneclose{};\mkleeneopen{}n  +  1\mkleeneclose{}]  (-5)\mcdot{}  THENA  Auto)
  THEN  (Subst  \mkleeneopen{}(n  +  1)  +  (i  -  1)  \msim{}  n  +  i\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