Step
*
1
2
1
1
1
2
1
1
of Lemma
bind-class-program_wf
1. Info : Type
2. A : Type
3. B : Type
4. valueall-type(B)
5. es : EO+(Info)@i'
6. e : E@i
7. X : hdataflow(Info;A)@i
8. Y : A ⟶ hdataflow(Info;B)@i
9. ∀e:E
     (simple-hdf-bind(X;λx.(Y x))*(map(λx.info(x);before(e)))
     = mk-hdf(p,a.simple-bind-nxt(λx.(Y x); p; a);p.let X,ys = p 
                                                    in ff;<X*(map(λx.info(x);before(e)))
                                                          , ⋃e'∈before(e).
                                                            bag-map(λa.Y a*(map(λx.info(x);filter(λa.e' ≤loc a;
                                                                                                  before(e))));
                                                            snd(X*(map(λx.info(x);before(e')))(info(e'))))
                                                          >)
     ∈ hdataflow(Info;B))
10. ↓Info
11. L : {e':E| (e' <loc e)}  List@i
12. before(e) = L ∈ ({e':E| (e' <loc e)}  List)@i
13. v1 : hdataflow(Info;A)@i
14. v2 : bag(A)@i
15. X*(map(λx.info(x);L))(info(e)) = <v1, v2> ∈ (hdataflow(Info;A) × bag(A))@i
⊢ ⋃e'∈L + {e}.⋃a∈snd(X*(map(λx.info(x);before(e')))(info(e'))).snd(Y 
                                                                   a*(map(λx.info(x);filter(λa.e' ≤loc a;L)))(info(e)))
= ⋃yb∈bag-map(λP.P(info(e));⋃e'∈L.bag-map(λa.Y a*(map(λx.info(x);filter(λa.e' ≤loc a;L)));
                                  snd(X*(map(λx.info(x);before(e')))(info(e'))))
      + bag-map(λx.(Y x);v2)).snd(yb)
∈ bag(B)
BY
{ ((RWO "bag-combine-map" 0 THENA (Auto THEN MaAuto)) THEN Reduce 0) }
1
1. Info : Type
2. A : Type
3. B : Type
4. valueall-type(B)
5. es : EO+(Info)@i'
6. e : E@i
7. X : hdataflow(Info;A)@i
8. Y : A ⟶ hdataflow(Info;B)@i
9. ∀e:E
     (simple-hdf-bind(X;λx.(Y x))*(map(λx.info(x);before(e)))
     = mk-hdf(p,a.simple-bind-nxt(λx.(Y x); p; a);p.let X,ys = p 
                                                    in ff;<X*(map(λx.info(x);before(e)))
                                                          , ⋃e'∈before(e).
                                                            bag-map(λa.Y a*(map(λx.info(x);filter(λa.e' ≤loc a;
                                                                                                  before(e))));
                                                            snd(X*(map(λx.info(x);before(e')))(info(e'))))
                                                          >)
     ∈ hdataflow(Info;B))
10. ↓Info
11. L : {e':E| (e' <loc e)}  List@i
12. before(e) = L ∈ ({e':E| (e' <loc e)}  List)@i
13. v1 : hdataflow(Info;A)@i
14. v2 : bag(A)@i
15. X*(map(λx.info(x);L))(info(e)) = <v1, v2> ∈ (hdataflow(Info;A) × bag(A))@i
⊢ ⋃e'∈L + {e}.⋃a∈snd(X*(map(λx.info(x);before(e')))(info(e'))).snd(Y 
                                                                   a*(map(λx.info(x);filter(λa.e' ≤loc a;L)))(info(e)))
= ⋃yb∈⋃e'∈L.bag-map(λa.Y a*(map(λx.info(x);filter(λa.e' ≤loc a;L)));snd(X*(map(λx.info(x);before(e')))(info(e'))))
  + bag-map(λx.(Y x);v2).snd(yb(info(e)))
∈ bag(B)
Latex:
Latex:
1.  Info  :  Type
2.  A  :  Type
3.  B  :  Type
4.  valueall-type(B)
5.  es  :  EO+(Info)@i'
6.  e  :  E@i
7.  X  :  hdataflow(Info;A)@i
8.  Y  :  A  {}\mrightarrow{}  hdataflow(Info;B)@i
9.  \mforall{}e:E
          (simple-hdf-bind(X;\mlambda{}x.(Y  x))*(map(\mlambda{}x.info(x);before(e)))
          =  mk-hdf(p,a.simple-bind-nxt(\mlambda{}x.(Y  x);  p;  a);p.let  X,ys  =  p 
                                                                                                        in  ff;<X*(map(\mlambda{}x.info(x);before(e)))
                                                                                                                    ,  \mcup{}e'\mmember{}before(e).
                                                                                                                        bag-map(\mlambda{}a.Y  a*(map(\mlambda{}x.info(x);
                                                                                                                                                                filter(\mlambda{}a.e'  \mleq{}loc  a;
                                                                                                                                                                              before(e))));
                                                                                                                        snd(X*(map(\mlambda{}x.info(x);
                                                                                                                                              before(e')))(info(e'))))
                                                                                                                    >))
10.  \mdownarrow{}Info
11.  L  :  \{e':E|  (e'  <loc  e)\}    List@i
12.  before(e)  =  L@i
13.  v1  :  hdataflow(Info;A)@i
14.  v2  :  bag(A)@i
15.  X*(map(\mlambda{}x.info(x);L))(info(e))  =  <v1,  v2>@i
\mvdash{}  \mcup{}e'\mmember{}L  +  \{e\}.\mcup{}a\mmember{}snd(X*(map(\mlambda{}x.info(x);before(e')))(info(e'))).snd(Y 
                                                                                                                                      a*(map(\mlambda{}x.info(x);
                                                                                                                                                    filter(\mlambda{}a.e'  \mleq{}loc  a;
                                                                                                                                                                  L)))(info(e)))
=  \mcup{}yb\mmember{}bag-map(\mlambda{}P.P(info(e));\mcup{}e'\mmember{}L.bag-map(\mlambda{}a.Y  a*(map(\mlambda{}x.info(x);filter(\mlambda{}a.e'  \mleq{}loc  a;L)));
                                                                    snd(X*(map(\mlambda{}x.info(x);before(e')))(info(e'))))
            +  bag-map(\mlambda{}x.(Y  x);v2)).snd(yb)
By
Latex:
((RWO  "bag-combine-map"  0  THENA  (Auto  THEN  MaAuto))  THEN  Reduce  0)
Home
Index