Step * 1 of Lemma hdf-memory-base4-3


1. hdr1 Name
2. hdr2 Name
3. hdr3 Name
4. hdr4 Name
5. ¬(hdr3 hdr4 ∈ Name)
6. ¬(hdr2 hdr4 ∈ Name)
7. ¬(hdr2 hdr3 ∈ Name)
8. ¬(hdr1 hdr4 ∈ Name)
9. ¬(hdr1 hdr3 ∈ Name)
10. ¬(hdr1 hdr2 ∈ Name)
11. F4 Base
12. f4 Base
13. F3 Base
14. f3 Base
15. F2 Base
16. f2 Base
17. F1 Base
18. f1 Base
19. : ℤ
20. 0 < j
21. ∀s:Base
      mk-hdf,s. (inl a.let v ←─ if name_eq(fst(a);hdr1) then s.f1[F1[a];s]] else [] fi 
                           in let v1 ←─ if name_eq(fst(a);hdr2) then s.f2[F2[a];s]] else [] fi 
                              in let v2 ←─ if name_eq(fst(a);hdr3) then s.f3[F3[a];s]] else [] fi 
                                 in let v3 ←─ if name_eq(fst(a);hdr4) then s.f4[F4[a];s]] else [] fi 
                                    in let v4 ←─ v2 v3
                                       in let v5 ←─ v1 v4
                                          in let v6 ←─ v5
                                             in let v7 ←─ ∪f∈v6.map(f;s)
                                                in let v8 ←─ if bag-null(v7) then else v7 fi 
                                                   in <mk-hdf v8, s>))^j 
       ⊥ 
       [s] ≤ fix((λmk-hdf,s. (inl a.let v ←─ if name_eq(fst(a);hdr1) then f1[F1[a];s]
                                      if name_eq(fst(a);hdr2) then f2[F2[a];s]
                                      if name_eq(fst(a);hdr3) then f3[F3[a];s]
                                      if name_eq(fst(a);hdr4) then f4[F4[a];s]
                                      else s
                                      fi 
                                      in <mk-hdf v, [s]>)))) 
             s)
22. Base@i
23. Base
⊢ let v ←─ if name_eq(fst(a);hdr1) then s.f1[F1[a];s]] else [] fi 
  in let v1 ←─ if name_eq(fst(a);hdr2) then s.f2[F2[a];s]] else [] fi 
     in let v2 ←─ if name_eq(fst(a);hdr3) then s.f3[F3[a];s]] else [] fi 
        in let v3 ←─ if name_eq(fst(a);hdr4) then s.f4[F4[a];s]] else [] fi 
           in let v4 ←─ v2 v3
              in let v5 ←─ v1 v4
                 in let v6 ←─ v5
                    in let v7 ←─ ∪f∈v6.[f s]
                       in let v8 ←─ if bag-null(v7) then [s] else v7 fi 
                          in <λmk-hdf,s. (inl a.let v ←─ if name_eq(fst(a);hdr1) then s.f1[F1[a];s]] else [] fi 
                                                  in let v1 ←─ if name_eq(fst(a);hdr2) then s.f2[F2[a];s]] else [] fi 
                                                     in let v2 ←─ if name_eq(fst(a);hdr3)
                                                        then s.f3[F3[a];s]]
                                                        else []
                                                        fi 
                                                        in let v3 ←─ if name_eq(fst(a);hdr4)
                                                           then s.f4[F4[a];s]]
                                                           else []
                                                           fi 
                                                           in let v4 ←─ v2 v3
                                                              in let v5 ←─ v1 v4
                                                                 in let v6 ←─ v5
                                                                    in let v7 ←─ ∪f∈v6.map(f;s)
                                                                       in let v8 ←─ if bag-null(v7) then else v7 fi 
                                                                          in <mk-hdf v8, s>))^j 
                              ⊥ 
                              v8
                             [s]
                             > ≤ let v ←─ if name_eq(fst(a);hdr1) then f1[F1[a];s]
                              if name_eq(fst(a);hdr2) then f2[F2[a];s]
                              if name_eq(fst(a);hdr3) then f3[F3[a];s]
                              if name_eq(fst(a);hdr4) then f4[F4[a];s]
                              else s
                              fi 
                              in <fix((λmk-hdf,s. (inl a.let v ←─ if name_eq(fst(a);hdr1) then f1[F1[a];s]
                                                           if name_eq(fst(a);hdr2) then f2[F2[a];s]
                                                           if name_eq(fst(a);hdr3) then f3[F3[a];s]
                                                           if name_eq(fst(a);hdr4) then f4[F4[a];s]
                                                           else s
                                                           fi 
                                                           in <mk-hdf v, [s]>)))) 
                                  v
                                 [s]
                                 >
BY
RepeatFor (HdfStateTransCase⋅}


Latex:



1.  hdr1  :  Name
2.  hdr2  :  Name
3.  hdr3  :  Name
4.  hdr4  :  Name
5.  \mneg{}(hdr3  =  hdr4)
6.  \mneg{}(hdr2  =  hdr4)
7.  \mneg{}(hdr2  =  hdr3)
8.  \mneg{}(hdr1  =  hdr4)
9.  \mneg{}(hdr1  =  hdr3)
10.  \mneg{}(hdr1  =  hdr2)
11.  F4  :  Base
12.  f4  :  Base
13.  F3  :  Base
14.  f3  :  Base
15.  F2  :  Base
16.  f2  :  Base
17.  F1  :  Base
18.  f1  :  Base
19.  j  :  \mBbbZ{}
20.  0  <  j
21.  \mforall{}s:Base
            (\mlambda{}mk-hdf,s.  (inl  (\mlambda{}a.let  v  \mleftarrow{}{}  if  name\_eq(fst(a);hdr1)  then  [\mlambda{}s.f1[F1[a];s]]  else  []  fi 
                                                      in  let  v1  \mleftarrow{}{}  if  name\_eq(fst(a);hdr2)  then  [\mlambda{}s.f2[F2[a];s]]  else  []  fi 
                                                            in  let  v2  \mleftarrow{}{}  if  name\_eq(fst(a);hdr3)  then  [\mlambda{}s.f3[F3[a];s]]  else  []  fi 
                                                                  in  let  v3  \mleftarrow{}{}  if  name\_eq(fst(a);hdr4)
                                                                        then  [\mlambda{}s.f4[F4[a];s]]
                                                                        else  []
                                                                        fi 
                                                                        in  let  v4  \mleftarrow{}{}  v2  +  v3
                                                                              in  let  v5  \mleftarrow{}{}  v1  +  v4
                                                                                    in  let  v6  \mleftarrow{}{}  v  +  v5
                                                                                          in  let  v7  \mleftarrow{}{}  \mcup{}f\mmember{}v6.map(f;s)
                                                                                                in  let  v8  \mleftarrow{}{}  if  bag-null(v7)  then  s  else  v7  fi 
                                                                                                      in  <mk-hdf  v8,  s>))\^{}j  -  1 
              \mbot{} 
              [s]  \mleq{}  fix((\mlambda{}mk-hdf,s.  (inl  (\mlambda{}a.let  v  \mleftarrow{}{}  if  name\_eq(fst(a);hdr1)  then  f1[F1[a];s]
                                                                            if  name\_eq(fst(a);hdr2)  then  f2[F2[a];s]
                                                                            if  name\_eq(fst(a);hdr3)  then  f3[F3[a];s]
                                                                            if  name\_eq(fst(a);hdr4)  then  f4[F4[a];s]
                                                                            else  s
                                                                            fi 
                                                                            in  <mk-hdf  v,  [s]>)))) 
                          s)
22.  s  :  Base@i
23.  a  :  Base
\mvdash{}  let  v  \mleftarrow{}{}  if  name\_eq(fst(a);hdr1)  then  [\mlambda{}s.f1[F1[a];s]]  else  []  fi 
    in  let  v1  \mleftarrow{}{}  if  name\_eq(fst(a);hdr2)  then  [\mlambda{}s.f2[F2[a];s]]  else  []  fi 
          in  let  v2  \mleftarrow{}{}  if  name\_eq(fst(a);hdr3)  then  [\mlambda{}s.f3[F3[a];s]]  else  []  fi 
                in  let  v3  \mleftarrow{}{}  if  name\_eq(fst(a);hdr4)  then  [\mlambda{}s.f4[F4[a];s]]  else  []  fi 
                      in  let  v4  \mleftarrow{}{}  v2  +  v3
                            in  let  v5  \mleftarrow{}{}  v1  +  v4
                                  in  let  v6  \mleftarrow{}{}  v  +  v5
                                        in  let  v7  \mleftarrow{}{}  \mcup{}f\mmember{}v6.[f  s]
                                              in  let  v8  \mleftarrow{}{}  if  bag-null(v7)  then  [s]  else  v7  fi 
                                                    in  <\mlambda{}mk-hdf,s.  (inl  (\mlambda{}a.let  v  \mleftarrow{}{}  if  name\_eq(fst(a);hdr1)
                                                                                                    then  [\mlambda{}s.f1[F1[a];s]]
                                                                                                    else  []
                                                                                                    fi 
                                                                                                    in  let  v1  \mleftarrow{}{}  if  name\_eq(fst(a);hdr2)
                                                                                                          then  [\mlambda{}s.f2[F2[a];s]]
                                                                                                          else  []
                                                                                                          fi 
                                                                                                          in  let  v2  \mleftarrow{}{}  if  name\_eq(fst(a);hdr3)
                                                                                                                then  [\mlambda{}s.f3[F3[a];s]]
                                                                                                                else  []
                                                                                                                fi 
                                                                                                                in  let  v3  \mleftarrow{}{}  if  name\_eq(fst(a);hdr4)
                                                                                                                      then  [\mlambda{}s.f4[F4[a];s]]
                                                                                                                      else  []
                                                                                                                      fi 
                                                                                                                      in  let  v4  \mleftarrow{}{}  v2  +  v3
                                                                                                                            in  let  v5  \mleftarrow{}{}  v1  +  v4
                                                                                                                                  in  let  v6  \mleftarrow{}{}  v  +  v5
                                                                                                                                        in  let  v7  \mleftarrow{}{}  \mcup{}f\mmember{}v6.map(f;s)
                                                                                                                                              in  let  v8  \mleftarrow{}{}  if  bag-null(v7)
                                                                                                                                                    then  s
                                                                                                                                                    else  v7
                                                                                                                                                    fi 
                                                                                                                                                    in  <mk-hdf  v8,  s>))\^{}j  -  1 
                                                            \mbot{} 
                                                            v8
                                                          ,  [s]
                                                          >  \mleq{}  let  v  \mleftarrow{}{}  if  name\_eq(fst(a);hdr1)  then  f1[F1[a];s]
                                                            if  name\_eq(fst(a);hdr2)  then  f2[F2[a];s]
                                                            if  name\_eq(fst(a);hdr3)  then  f3[F3[a];s]
                                                            if  name\_eq(fst(a);hdr4)  then  f4[F4[a];s]
                                                            else  s
                                                            fi 
                                                            in  <fix((\mlambda{}mk-hdf,s.  (inl  (\mlambda{}a.let  v  \mleftarrow{}{}  if  name\_eq(fst(a);hdr1)
                                                                                                                                            then  f1[F1[a];s]
                                                                                                                      if  name\_eq(fst(a);hdr2)  then  f2[F2[a];s]
                                                                                                                      if  name\_eq(fst(a);hdr3)  then  f3[F3[a];s]
                                                                                                                      if  name\_eq(fst(a);hdr4)  then  f4[F4[a];s]
                                                                                                                      else  s
                                                                                                                      fi 
                                                                                                                      in  <mk-hdf  v,  [s]>)))) 
                                                                    v
                                                                  ,  [s]
                                                                  >


By

RepeatFor  4  (HdfStateTransCase\mcdot{})




Home Index