Step
*
1
1
1
1
1
2
1
of Lemma
sequence-class-program_wf
1. Info : Type
2. A : Type
3. B : Type
4. valueall-type(A)
5. es : EO+(Info)@i'
6. e : E@i
7. xpr : hdataflow(Info;A)@i
8. ypr : hdataflow(Info;B)@i
9. zpr : hdataflow(Info;A)@i
10. x : E@i
11. (x <loc e)@i
12. v : E List@i
13. before(e) = v ∈ (E List)@i
14. before(e) = (before(x) @ v) ∈ (E List)
15. v ∈ E List
16. v1 : hdataflow(Info;A)@i
17. xpr*(map(λx.info(x);before(x))) = v1 ∈ hdataflow(Info;A)@i
18. v2 : hdataflow(Info;B)@i
19. ypr*(map(λx.info(x);before(x))) = v2 ∈ hdataflow(Info;B)@i
20. ↑(bag-null(snd(v1(info(x)))) ∧b (¬bbag-null(snd(v2(info(x))))))
21. v = [x;e) ∈ (E List)
⊢ (snd(zpr*(map(λx@0.info(x@0);v))(info(e))))
= (snd(mk-hdf(S,a.case S
   of inl(XY) =>
   let X,Y = XY 
   in let X',bx = X(a) 
      in let Y',by = Y(a) 
         in if bag-null(bx) ∧b (¬bbag-null(by)) then let Z',bz = zpr(a) in <inr Z' , bz> else <inl <X', Y'>, bx> fi 
   | inr(Z) =>
   let Z',b = Z(a) 
   in <inr Z' , b>S.case S of inl(XY) => ff | inr(Z) => hdf-halted(Z);inl <v1, v2>)*(map(λx.info(x);v))(info(e))))
∈ bag(A)
BY
{ (Assert mk-hdf(S,a.case S
           of inl(XY) =>
           let X,Y = XY 
           in let X',bx = X(a) 
              in let Y',by = Y(a) 
                 in if bag-null(bx) ∧b (¬bbag-null(by)) then let Z',bz = zpr(a) in <inr Z' , bz> else <inl <X', Y'>, bx>\000C fi 
           | inr(Z) =>
           let Z',b = Z(a) 
           in <inr Z' , b>S.case S of inl(XY) => ff | inr(Z) => hdf-halted(Z);inl <v1, v2>) ∈ hdataflow(Info;A) BY
         (Using [`S',⌜hdataflow(Info;A) × hdataflow(Info;B) + hdataflow(Info;A)⌝] MemCD⋅ THEN Auto)) }
1
1. Info : Type
2. A : Type
3. B : Type
4. valueall-type(A)
5. es : EO+(Info)@i'
6. e : E@i
7. xpr : hdataflow(Info;A)@i
8. ypr : hdataflow(Info;B)@i
9. zpr : hdataflow(Info;A)@i
10. x : E@i
11. (x <loc e)@i
12. v : E List@i
13. before(e) = v ∈ (E List)@i
14. before(e) = (before(x) @ v) ∈ (E List)
15. v ∈ E List
16. v1 : hdataflow(Info;A)@i
17. xpr*(map(λx.info(x);before(x))) = v1 ∈ hdataflow(Info;A)@i
18. v2 : hdataflow(Info;B)@i
19. ypr*(map(λx.info(x);before(x))) = v2 ∈ hdataflow(Info;B)@i
20. ↑(bag-null(snd(v1(info(x)))) ∧b (¬bbag-null(snd(v2(info(x))))))
21. v = [x;e) ∈ (E List)
22. mk-hdf(S,a.case S
     of inl(XY) =>
     let X,Y = XY 
     in let X',bx = X(a) 
        in let Y',by = Y(a) 
           in if bag-null(bx) ∧b (¬bbag-null(by)) then let Z',bz = zpr(a) in <inr Z' , bz> else <inl <X', Y'>, bx> fi 
     | inr(Z) =>
     let Z',b = Z(a) 
     in <inr Z' , b>S.case S of inl(XY) => ff | inr(Z) => hdf-halted(Z);inl <v1, v2>) ∈ hdataflow(Info;A)
⊢ (snd(zpr*(map(λx@0.info(x@0);v))(info(e))))
= (snd(mk-hdf(S,a.case S
   of inl(XY) =>
   let X,Y = XY 
   in let X',bx = X(a) 
      in let Y',by = Y(a) 
         in if bag-null(bx) ∧b (¬bbag-null(by)) then let Z',bz = zpr(a) in <inr Z' , bz> else <inl <X', Y'>, bx> fi 
   | inr(Z) =>
   let Z',b = Z(a) 
   in <inr Z' , b>S.case S of inl(XY) => ff | inr(Z) => hdf-halted(Z);inl <v1, v2>)*(map(λx.info(x);v))(info(e))))
∈ bag(A)
Latex:
Latex:
1.  Info  :  Type
2.  A  :  Type
3.  B  :  Type
4.  valueall-type(A)
5.  es  :  EO+(Info)@i'
6.  e  :  E@i
7.  xpr  :  hdataflow(Info;A)@i
8.  ypr  :  hdataflow(Info;B)@i
9.  zpr  :  hdataflow(Info;A)@i
10.  x  :  E@i
11.  (x  <loc  e)@i
12.  v  :  E  List@i
13.  before(e)  =  v@i
14.  before(e)  =  (before(x)  @  v)
15.  v  \mmember{}  E  List
16.  v1  :  hdataflow(Info;A)@i
17.  xpr*(map(\mlambda{}x.info(x);before(x)))  =  v1@i
18.  v2  :  hdataflow(Info;B)@i
19.  ypr*(map(\mlambda{}x.info(x);before(x)))  =  v2@i
20.  \muparrow{}(bag-null(snd(v1(info(x))))  \mwedge{}\msubb{}  (\mneg{}\msubb{}bag-null(snd(v2(info(x))))))
21.  v  =  [x;e)
\mvdash{}  (snd(zpr*(map(\mlambda{}x@0.info(x@0);v))(info(e))))
=  (snd(mk-hdf(S,a.case  S
      of  inl(XY)  =>
      let  X,Y  =  XY 
      in  let  X',bx  =  X(a) 
            in  let  Y',by  =  Y(a) 
                  in  if  bag-null(bx)  \mwedge{}\msubb{}  (\mneg{}\msubb{}bag-null(by))
                        then  let  Z',bz  =  zpr(a) 
                                  in  <inr  Z'  ,  bz>
                        else  <inl  <X',  Y'>,  bx>
                        fi 
      |  inr(Z)  =>
      let  Z',b  =  Z(a) 
      in  <inr  Z'  ,  b>S.case  S  of  inl(XY)  =>  ff  |  inr(Z)  =>  hdf-halted(Z);inl  <v1,  v2>)*(map(\mlambda{}x.info(x)\000C;v))(info(e))))
By
Latex:
(Assert  mk-hdf(S,a.case  S
                  of  inl(XY)  =>
                  let  X,Y  =  XY 
                  in  let  X',bx  =  X(a) 
                        in  let  Y',by  =  Y(a) 
                              in  if  bag-null(bx)  \mwedge{}\msubb{}  (\mneg{}\msubb{}bag-null(by))
                                    then  let  Z',bz  =  zpr(a) 
                                              in  <inr  Z'  ,  bz>
                                    else  <inl  <X',  Y'>,  bx>
                                    fi 
                  |  inr(Z)  =>
                  let  Z',b  =  Z(a) 
                  in  <inr  Z'  ,  b>S.case  S  of  inl(XY)  =>  ff  |  inr(Z)  =>  hdf-halted(Z);inl  <v1,  v2>)  \mmember{}  hdatafl\000Cow(Info;A)  BY
              (Using  [`S',\mkleeneopen{}hdataflow(Info;A)  \mtimes{}  hdataflow(Info;B)  +  hdataflow(Info;A)\mkleeneclose{}]  MemCD\mcdot{}  THEN  Auto))
Home
Index