Step * 1 of Lemma hdf-compose0-transformation1


1. Top
2. Top
3. : ℕ
4. : ℤ
5. j ≠ 0
6. 0 < j
7. ∀S,G,s:Top.
     mk-hdf,s0. case s0 of inl(y) => inl a.let X',bs in let out ←─ ∪b∈bs.f in <mk-hdf X', out>inr(y) => \000Cinr ⋅ ^j 1 ⊥ 
      (fix((λmk-hdf,s. (inl a.cbva_seq(L a; λg.<mk-hdf (S g), g>m))))) s) 
      ≤ fix((λmk-hdf,s. (inl a.cbva_seq(λn.if n=m  then mk_lambdas_fun(λg.∪b∈g.f b;m)  else (L n);
                                          λg.<mk-hdf (S partial_ap(g;m 1;m)), select_fun_last(g;m)>1))))) 
        s)
8. Top@i
9. Top@i
10. Top@i
⊢ inl a.let X',bs cbva_seq(L a; λg.<fix((λmk-hdf,s. (inl a.cbva_seq(L a; λg.<mk-hdf (S g), g>m))))\000C) 
                                          (S g)
                                         g
                                         >m) 
          in let out ←─ ∪b∈bs.f b
             in <λmk-hdf,s0. case s0 of inl(y) => inl a.let X',bs in let out ←─ ∪b∈bs.f in <mk-hdf X', out>|\000C inr(y) => inr ⋅ ^j 1 ⊥ X', out>
  ≤ fix((λmk-hdf,s. (inl a.cbva_seq(λn.if n=m  then mk_lambdas_fun(λg.∪b∈g.f b;m)  else (L n);
                                      λg.<mk-hdf (S partial_ap(g;m 1;m)), select_fun_last(g;m)>1))))) 
    s
BY
(RW (AddrC [2] (UnrollLoopsOnceExceptC SqequalProcTransLst)) 0
   THEN Reduce 0
   THEN RepeatFor (SqLeCD)
   THEN (RWO "cbva_seq-spread" THENA Auto)
   THEN (RWO "cbva_seq_extend" THENA Auto)
   THEN RepUR ``ifthenelse eq_int btrue bfalse`` 0
   THEN (RW LiftAllC THENA Auto)
   THEN Fold `select_fun_last` 0
   THEN RepeatFor ((SqLeCD THEN Try (Complete (Auto))))
   THEN BackThruSomeHyp) }


Latex:



1.  f  :  Top
2.  L  :  Top
3.  m  :  \mBbbN{}
4.  j  :  \mBbbZ{}
5.  j  \mneq{}  0
6.  0  <  j
7.  \mforall{}S,G,s:Top.
          (\mlambda{}mk-hdf,s0.  case  s0
                                    of  inl(y)  =>
                                    inl  (\mlambda{}a.let  X',bs  =  y  a 
                                                    in  let  out  \mleftarrow{}{}  \mcup{}b\mmember{}bs.f  b
                                                          in  <mk-hdf  X',  out>)
                                    |  inr(y)  =>
                                    inr  \mcdot{}  \^{}j  -  1 
            \mbot{} 
            (fix((\mlambda{}mk-hdf,s.  (inl  (\mlambda{}a.cbva\_seq(L  s  a;  \mlambda{}g.<mk-hdf  (S  s  a  g),  G  s  a  g>  m)))))  s) 
            \mleq{}  fix((\mlambda{}mk-hdf,s.  (inl  (\mlambda{}a.cbva\_seq(\mlambda{}n.if  n=m
                                                                                                then  mk\_lambdas\_fun(\mlambda{}g.\mcup{}b\mmember{}G  s  a  g.f  b;m)
                                                                                                else  (L  s  a  n);  \mlambda{}g.<mk-hdf 
                                                                                                                                        (S  s  a  partial\_ap(g;m  +  1;m))
                                                                                                                                      ,  select\_fun\_last(g;m)
                                                                                                                                      >  m  +  1))))) 
                s)
8.  S  :  Top@i
9.  G  :  Top@i
10.  s  :  Top@i
\mvdash{}  inl  (\mlambda{}a.let  X',bs  =  cbva\_seq(L  s  a;  \mlambda{}g.<fix((\mlambda{}mk-hdf,s.  (inl  (\mlambda{}a.cbva\_seq(L  s  a;  \mlambda{}g.<mk-hdf 
                                                                                                                                                                              (S  s  a  g)
                                                                                                                                                                            ,  G  s  a  g
                                                                                                                                                                            >  m))))) 
                                                                                    (S  s  a  g)
                                                                                  ,  G  s  a  g
                                                                                  >  m) 
                    in  let  out  \mleftarrow{}{}  \mcup{}b\mmember{}bs.f  b
                          in  <\mlambda{}mk-hdf,s0.  case  s0
                                                          of  inl(y)  =>
                                                          inl  (\mlambda{}a.let  X',bs  =  y  a 
                                                                          in  let  out  \mleftarrow{}{}  \mcup{}b\mmember{}bs.f  b
                                                                                in  <mk-hdf  X',  out>)
                                                          |  inr(y)  =>
                                                          inr  \mcdot{}  \^{}j  -  1 
                                  \mbot{} 
                                  X'
                                ,  out
                                >)  \mleq{}  fix((\mlambda{}mk-hdf,s.  (inl  (\mlambda{}a.cbva\_seq(\mlambda{}n.if  n=m
                                                                                                                    then  mk\_lambdas\_fun(\mlambda{}g.\mcup{}b\mmember{}G  s  a  g.f  b;m)
                                                                                                                    else  (L  s  a  n);  \mlambda{}g.<mk-hdf 
                                                                                                                                                            (S  s  a 
                                                                                                                                                              partial\_ap(g;m
                                                                                                                                                              +  1;m))
                                                                                                                                                          ,  select\_fun\_last(g;m)
                                                                                                                                                          >  m  +  1))))) 
                                    s


By

(RW  (AddrC  [2]  (UnrollLoopsOnceExceptC  SqequalProcTransLst))  0
  THEN  Reduce  0
  THEN  RepeatFor  2  (SqLeCD)
  THEN  (RWO  "cbva\_seq-spread"  0  THENA  Auto)
  THEN  (RWO  "cbva\_seq\_extend"  0  THENA  Auto)
  THEN  RepUR  ``ifthenelse  eq\_int  btrue  bfalse``  0
  THEN  (RW  LiftAllC  0  THENA  Auto)
  THEN  Fold  `select\_fun\_last`  0
  THEN  RepeatFor  3  ((SqLeCD  THEN  Try  (Complete  (Auto))))
  THEN  BackThruSomeHyp)




Home Index