Step
*
1
1
1
1
1
1
of Lemma
sequence-class-program_wf
.....assertion..... 
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. ↑(bag-null(snd(xpr*(map(λx.info(x);before(x)))(info(x))))
∧b (¬bbag-null(snd(ypr*(map(λx.info(x);before(x)))(info(x))))))
13. ∀e'':E
      ((e'' <loc x)
      
⇒ (¬↑(bag-null(snd(xpr*(map(λx.info(x);before(e'')))(info(e''))))
         ∧b (¬bbag-null(snd(ypr*(map(λx.info(x);before(e'')))(info(e''))))))))
14. v : E List@i
15. before(e) = v ∈ (E List)@i
16. before(e) = (before(x) @ v) ∈ (E List)
17. v ∈ E List
⊢ 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 <xpr, ypr>)*(map(λx.info(x);before(x)))
= 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 <xpr*(map(λx.info(x);before(x)))
                                                                           , ypr*(map(λx.info(x);before(x)))
                                                                           >)
∈ hdataflow(Info;A)
BY
{ (ThinVar `v'
   THEN GenConclAtAddr [2;2;2]
   THEN (Assert ⌈∀u:E List. ∀y:E.
                   (u @ [y] ≤ v
                   
⇒ (¬↑(bag-null(snd(xpr*(map(λx.info(x);u))(info(y))))
                      ∧b (¬bbag-null(snd(ypr*(map(λx.info(x);u))(info(y))))))))⌉⋅
         THENA (Auto
                THEN (InstHyp [⌈y⌉] (-6)⋅
                      THENA (Auto
                             THEN (Using [`x',⌈y⌉] (FLemma `iseg_member` [-1])⋅
                                   THENA (Auto THEN GenListD 0 THEN OrRight THEN Auto THEN GenListD 0)
                                   )
                             THEN (RevHypSubst' (-5) (-1) THENA Auto)
                             THEN GenListD (-1)
                             THEN Auto)
                      )
                THEN Assert ⌈u = before(y) ∈ (E List)⌉⋅
                THEN Auto
                THEN (RevHypSubst' (-5) (-2) THENA Auto)
                THEN FLemma `iseg-es-before-is-before` [-2]
                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. ↑(bag-null(snd(xpr*(map(λx.info(x);before(x)))(info(x))))
∧b (¬bbag-null(snd(ypr*(map(λx.info(x);before(x)))(info(x))))))
13. ∀e'':E
      ((e'' <loc x)
      
⇒ (¬↑(bag-null(snd(xpr*(map(λx.info(x);before(e'')))(info(e''))))
         ∧b (¬bbag-null(snd(ypr*(map(λx.info(x);before(e'')))(info(e''))))))))
14. v : E List@i
15. before(x) = v ∈ (E List)@i
16. ∀u:E List. ∀y:E.
      (u @ [y] ≤ v
      
⇒ (¬↑(bag-null(snd(xpr*(map(λx.info(x);u))(info(y)))) ∧b (¬bbag-null(snd(ypr*(map(λx.info(x);u))(info(y))))))))
⊢ 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 <xpr, ypr>)*(map(λx.info(x);v))
= 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 <xpr*(map(λx.info(x);v))
                                                                           , ypr*(map(λx.info(x);v))
                                                                           >)
∈ hdataflow(Info;A)
Latex:
Latex:
.....assertion..... 
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  \mleq{}loc  e  @i
12.  \muparrow{}(bag-null(snd(xpr*(map(\mlambda{}x.info(x);before(x)))(info(x))))
\mwedge{}\msubb{}  (\mneg{}\msubb{}bag-null(snd(ypr*(map(\mlambda{}x.info(x);before(x)))(info(x))))))
13.  \mforall{}e'':E
            ((e''  <loc  x)
            {}\mRightarrow{}  (\mneg{}\muparrow{}(bag-null(snd(xpr*(map(\mlambda{}x.info(x);before(e'')))(info(e''))))
                  \mwedge{}\msubb{}  (\mneg{}\msubb{}bag-null(snd(ypr*(map(\mlambda{}x.info(x);before(e'')))(info(e''))))))))
14.  v  :  E  List@i
15.  before(e)  =  v@i
16.  before(e)  =  (before(x)  @  v)
17.  v  \mmember{}  E  List
\mvdash{}  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  <xpr,  ypr>)*(map(\mlambda{}x.info(x)\000C;before(x)))
=  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  <xpr*(map(\mlambda{}x.info(x);before(x))),  ypr*(map(\mlambda{}x.info(x);before(x)))>)
By
Latex:
(ThinVar  `v'
  THEN  GenConclAtAddr  [2;2;2]
  THEN  (Assert  \mkleeneopen{}\mforall{}u:E  List.  \mforall{}y:E.
                                  (u  @  [y]  \mleq{}  v
                                  {}\mRightarrow{}  (\mneg{}\muparrow{}(bag-null(snd(xpr*(map(\mlambda{}x.info(x);u))(info(y))))
                                        \mwedge{}\msubb{}  (\mneg{}\msubb{}bag-null(snd(ypr*(map(\mlambda{}x.info(x);u))(info(y))))))))\mkleeneclose{}\mcdot{}
              THENA  (Auto
                            THEN  (InstHyp  [\mkleeneopen{}y\mkleeneclose{}]  (-6)\mcdot{}
                                        THENA  (Auto
                                                      THEN  (Using  [`x',\mkleeneopen{}y\mkleeneclose{}]  (FLemma  `iseg\_member`  [-1])\mcdot{}
                                                                  THENA  (Auto  THEN  GenListD  0  THEN  OrRight  THEN  Auto  THEN  GenListD  0)
                                                                  )
                                                      THEN  (RevHypSubst'  (-5)  (-1)  THENA  Auto)
                                                      THEN  GenListD  (-1)
                                                      THEN  Auto)
                                        )
                            THEN  Assert  \mkleeneopen{}u  =  before(y)\mkleeneclose{}\mcdot{}
                            THEN  Auto
                            THEN  (RevHypSubst'  (-5)  (-2)  THENA  Auto)
                            THEN  FLemma  `iseg-es-before-is-before`  [-2]
                            THEN  Auto)
              ))
Home
Index