Step * 1 of Lemma iterate-hdf-buffer2-simple


1. Type
2. Type
3. valueall-type(B)
4. A
5. List
6. ∀X:hdataflow(A;B ─→ B). ∀bs:bag(B). ∀a:A.
     ((snd(mk-hdf(Xbs,a.let X,bs Xbs 
                        in let X',fs X(a) 
                           in let bs' ←─ ∪f∈fs.bag-map(f;bs)
                              in <<X', if bag-null(bs') then bs else bs' fi >bs'>;s.let X,bs 
                                                                                   in hdf-halted(X);<X, bs>)*(v)(a)))
     (snd(mk-hdf(Xbs,a.let X,bs Xbs 
                         in let X',fs X(a) 
                            in let bs' ←─ ∪f∈fs.bag-map(f;bs)
                               in <<X', if bag-null(bs') then bs else bs' fi >bs'>;s.ff;<X, bs>)*(v)(a)))
     ∈ bag(B))
7. bs bag(B)@i
8. A@i
9. Unit@i
⊢ {}
(snd(mk-hdf(Xbs,a.let X,bs Xbs 
                    in let X',fs X(a) 
                       in let bs' ←─ ∪f∈fs.bag-map(f;bs)
                          in <<X', if bag-null(bs') then bs else bs' fi >bs'>;s.ff;<hdf-halt(), bs>)*(v)(a)))
∈ bag(B)
BY
(All Thin
   THEN RepeatFor (MoveToConcl (-1))
   THEN ListInd (-1)
   THEN Auto
   THEN Reduce 0
   THEN RecUnfold `mk-hdf` 0
   THEN RepUR ``hdf-ap hdf-halt hdf-run`` 0
   THEN Auto
   THEN Fold `hdf-ap` 0
   THEN Fold `hdf-halt` 0
   THEN BackThruSomeHyp)⋅ }


Latex:



1.  A  :  Type
2.  B  :  Type
3.  valueall-type(B)
4.  u  :  A
5.  v  :  A  List
6.  \mforall{}X:hdataflow(A;B  {}\mrightarrow{}  B).  \mforall{}bs:bag(B).  \mforall{}a:A.
          ((snd(mk-hdf(Xbs,a.let  X,bs  =  Xbs 
                                                in  let  X',fs  =  X(a) 
                                                      in  let  bs'  \mleftarrow{}{}  \mcup{}f\mmember{}fs.bag-map(f;bs)
                                                            in  <<X',  if  bag-null(bs')  then  bs  else  bs'  fi  >
                                                                  ,  bs'
                                                                  >s.let  X,bs  =  s 
                                                                    in  hdf-halted(X);<X,  bs>)*(v)(a)))
          =  (snd(mk-hdf(Xbs,a.let  X,bs  =  Xbs 
                                                  in  let  X',fs  =  X(a) 
                                                        in  let  bs'  \mleftarrow{}{}  \mcup{}f\mmember{}fs.bag-map(f;bs)
                                                              in  <<X',  if  bag-null(bs')  then  bs  else  bs'  fi  >,  bs'>s.ff;<X,  bs>)*(\000Cv)(a))))
7.  bs  :  bag(B)@i
8.  a  :  A@i
9.  y  :  Unit@i
\mvdash{}  \{\}
=  (snd(mk-hdf(Xbs,a.let  X,bs  =  Xbs 
                                        in  let  X',fs  =  X(a) 
                                              in  let  bs'  \mleftarrow{}{}  \mcup{}f\mmember{}fs.bag-map(f;bs)
                                                    in  <<X',  if  bag-null(bs')  then  bs  else  bs'  fi  >,  bs'>s.ff;<hdf-halt(),  bs\000C>)*(v)(a)))


By

(All  Thin
  THEN  RepeatFor  2  (MoveToConcl  (-1))
  THEN  ListInd  (-1)
  THEN  Auto
  THEN  Reduce  0
  THEN  RecUnfold  `mk-hdf`  0
  THEN  RepUR  ``hdf-ap  hdf-halt  hdf-run``  0
  THEN  Auto
  THEN  Fold  `hdf-ap`  0
  THEN  Fold  `hdf-halt`  0
  THEN  BackThruSomeHyp)\mcdot{}




Home Index