Step * of Lemma hdf-memory-base4-3

[F1,F2,F3,F4,f1,f2,f3,f4,s:Top]. ∀[hdr1,hdr2,hdr3,hdr4:Name].
  (hdf-memory((λx,s. f1[x;s]) hdf-base(a.if name_eq(fst(a);hdr1) then [F1[a]] else [] fi )
              || x,s. f2[x;s]) hdf-base(a.if name_eq(fst(a);hdr2) then [F2[a]] else [] fi )
                 || x,s. f3[x;s]) hdf-base(a.if name_eq(fst(a);hdr3) then [F3[a]] else [] fi || x,s. f4[x;s])
                     hdf-base(a.if name_eq(fst(a);hdr4) then [F4[a]] else [] fi );[s]) 
     fix((λmk-hdf,s. (inl a.cbva_seq(λn.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 ; λg.<mk-hdf (g x.x)), [s]>1))))) 
       s) supposing 
     ((¬(hdr1 hdr2 ∈ Name)) and 
     (hdr1 hdr3 ∈ Name)) and 
     (hdr1 hdr4 ∈ Name)) and 
     (hdr2 hdr3 ∈ Name)) and 
     (hdr2 hdr4 ∈ Name)) and 
     (hdr3 hdr4 ∈ Name)))
BY
((UnivCD THENA Auto)
   THEN (RWO "hdf-base-transformation1" THENA Auto)
   THEN (RWO "hdf-compose1-transformation2" THENA Auto)
   THEN Repeat ((RWO "hdf-parallel-transformation2-1" THENA Auto))
   THEN Reduce 0
   THEN (RWO "hdf-memory-transformation2" THENA Auto)
   THEN RepUR ``cbva_seq mk_lambdas_fun select_fun_ap select_fun_last mk_lambdas bag-map`` 0
   THEN Repeat ((RecUnfold `callbyvalueall_seq` THEN Reduce 0))
   THEN Repeat ((RecUnfold `mk_lambdas-fun` THEN Reduce 0))
   THEN Repeat (((RWO "primrec-unroll" THENA Auto) THEN Reduce 0))
   THEN (RWO "map-ifthenelse" THENA Auto)
   THEN HdfStateTransStart `s') }

1
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]
                                 >

2
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 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]>))^j 
       ⊥ 
       s ≤ fix((λ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>)))) 
           [s])
22. Base@i
23. Base
⊢ 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,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]>))^j 
      ⊥ 
      v
     [s]
     > ≤ 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 <fix((λ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 s
                                                                                   else v7
                                                                                   fi 
                                                                                   in <mk-hdf v8, s>)))) 
                                  v8
                                 [s]
                                 >


Latex:


\mforall{}[F1,F2,F3,F4,f1,f2,f3,f4,s:Top].  \mforall{}[hdr1,hdr2,hdr3,hdr4:Name].
    (hdf-memory((\mlambda{}x,s.  f1[x;s])  o  hdf-base(a.if  name\_eq(fst(a);hdr1)  then  [F1[a]]  else  []  fi  )
                            ||  (\mlambda{}x,s.  f2[x;s])  o  hdf-base(a.if  name\_eq(fst(a);hdr2)  then  [F2[a]]  else  []  fi  )
                                  ||  (\mlambda{}x,s.  f3[x;s])  o  hdf-base(a.if  name\_eq(fst(a);hdr3)  then  [F3[a]]  else  []  fi  )
                                        ||  (\mlambda{}x,s.  f4[x;s])  o  hdf-base(a.if  name\_eq(fst(a);hdr4)
                                        then  [F4[a]]
                                        else  []
                                        fi  );[s])  \msim{}  fix((\mlambda{}mk-hdf,s.  (inl  (\mlambda{}a.cbva\_seq(\mlambda{}n.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  ;  \mlambda{}g.<mk-hdf  (g  (\mlambda{}x.x))
                                                                                                                                                          ,  [s]
                                                                                                                                                          >  1))))) 
                                                                s)  supposing 
          ((\mneg{}(hdr1  =  hdr2))  and 
          (\mneg{}(hdr1  =  hdr3))  and 
          (\mneg{}(hdr1  =  hdr4))  and 
          (\mneg{}(hdr2  =  hdr3))  and 
          (\mneg{}(hdr2  =  hdr4))  and 
          (\mneg{}(hdr3  =  hdr4)))


By

((UnivCD  THENA  Auto)
  THEN  (RWO  "hdf-base-transformation1"  0  THENA  Auto)
  THEN  (RWO  "hdf-compose1-transformation2"  0  THENA  Auto)
  THEN  Repeat  ((RWO  "hdf-parallel-transformation2-1"  0  THENA  Auto))
  THEN  Reduce  0
  THEN  (RWO  "hdf-memory-transformation2"  0  THENA  Auto)
  THEN  RepUR  ``cbva\_seq  mk\_lambdas\_fun  select\_fun\_ap  select\_fun\_last  mk\_lambdas  bag-map``  0
  THEN  Repeat  ((RecUnfold  `callbyvalueall\_seq`  0  THEN  Reduce  0))
  THEN  Repeat  ((RecUnfold  `mk\_lambdas-fun`  0  THEN  Reduce  0))
  THEN  Repeat  (((RWO  "primrec-unroll"  0  THENA  Auto)  THEN  Reduce  0))
  THEN  (RWO  "map-ifthenelse"  0  THENA  Auto)
  THEN  HdfStateTransStart  `s')




Home Index