Step * of Lemma hdf-memory-base4-2

[C1,C2,C3,C4,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) ∧b C1[a] then [F1[a]] else [] fi )
              || x,s. f2[x;s]) hdf-base(a.if name_eq(fst(a);hdr2) ∧b C2[a] then [F2[a]] else [] fi )
                 || x,s. f3[x;s]) hdf-base(a.if name_eq(fst(a);hdr3) ∧b C3[a] then [F3[a]] else [] fi )
                    || x,s. f4[x;s]) hdf-base(a.if name_eq(fst(a);hdr4) ∧b C4[a] then [F4[a]] else [] fi );[s]) 
     fix((λmk-hdf,s. (inl a.cbva_seq(λn.if name_eq(fst(a);hdr1) ∧b C1[a] then f1[F1[a];s]
                                            if name_eq(fst(a);hdr2) ∧b C2[a] then f2[F2[a];s]
                                            if name_eq(fst(a);hdr3) ∧b C3[a] then f3[F3[a];s]
                                            if name_eq(fst(a);hdr4) ∧b C4[a] 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. C4 Base
14. F3 Base
15. f3 Base
16. C3 Base
17. F2 Base
18. f2 Base
19. C2 Base
20. F1 Base
21. f1 Base
22. C1 Base
23. : ℤ
24. 0 < j
25. ∀s:Base
      mk-hdf,s. (inl a.let v ⟵ if name_eq(fst(a);hdr1) ∧b C1[a] then s.f1[F1[a];s]] else [] fi 
                           in let v1 ⟵ if name_eq(fst(a);hdr2) ∧b C2[a] then s.f2[F2[a];s]] else [] fi 
                              in let v2 ⟵ if name_eq(fst(a);hdr3) ∧b C3[a] then s.f3[F3[a];s]] else [] fi 
                                 in let v3 ⟵ if name_eq(fst(a);hdr4) ∧b C4[a] 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) ∧b C1[a] then f1[F1[a];s]
                                      if name_eq(fst(a);hdr2) ∧b C2[a] then f2[F2[a];s]
                                      if name_eq(fst(a);hdr3) ∧b C3[a] then f3[F3[a];s]
                                      if name_eq(fst(a);hdr4) ∧b C4[a] then f4[F4[a];s]
                                      else s
                                      fi 
                                      in <mk-hdf v, [s]>)))) 
             s)
26. Base@i
27. Base
⊢ let v ⟵ if name_eq(fst(a);hdr1) ∧b C1[a] then s.f1[F1[a];s]] else [] fi 
  in let v1 ⟵ if name_eq(fst(a);hdr2) ∧b C2[a] then s.f2[F2[a];s]] else [] fi 
     in let v2 ⟵ if name_eq(fst(a);hdr3) ∧b C3[a] then s.f3[F3[a];s]] else [] fi 
        in let v3 ⟵ if name_eq(fst(a);hdr4) ∧b C4[a] 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) ∧b C1[a]
                                                  then s.f1[F1[a];s]]
                                                  else []
                                                  fi 
                                                  in let v1 ⟵ if name_eq(fst(a);hdr2) ∧b C2[a]
                                                     then s.f2[F2[a];s]]
                                                     else []
                                                     fi 
                                                     in let v2 ⟵ if name_eq(fst(a);hdr3) ∧b C3[a]
                                                        then s.f3[F3[a];s]]
                                                        else []
                                                        fi 
                                                        in let v3 ⟵ if name_eq(fst(a);hdr4) ∧b C4[a]
                                                           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) ∧b C1[a] then f1[F1[a];s]
                              if name_eq(fst(a);hdr2) ∧b C2[a] then f2[F2[a];s]
                              if name_eq(fst(a);hdr3) ∧b C3[a] then f3[F3[a];s]
                              if name_eq(fst(a);hdr4) ∧b C4[a] then f4[F4[a];s]
                              else s
                              fi 
                              in <fix((λmk-hdf,s. (inl a.let v ⟵ if name_eq(fst(a);hdr1) ∧b C1[a] then f1[F1[a];s]
                                                           if name_eq(fst(a);hdr2) ∧b C2[a] then f2[F2[a];s]
                                                           if name_eq(fst(a);hdr3) ∧b C3[a] then f3[F3[a];s]
                                                           if name_eq(fst(a);hdr4) ∧b C4[a] 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. C4 Base
14. F3 Base
15. f3 Base
16. C3 Base
17. F2 Base
18. f2 Base
19. C2 Base
20. F1 Base
21. f1 Base
22. C1 Base
23. : ℤ
24. 0 < j
25. ∀s:Base
      mk-hdf,s. (inl a.let v ⟵ if name_eq(fst(a);hdr1) ∧b C1[a] then f1[F1[a];s]
                           if name_eq(fst(a);hdr2) ∧b C2[a] then f2[F2[a];s]
                           if name_eq(fst(a);hdr3) ∧b C3[a] then f3[F3[a];s]
                           if name_eq(fst(a);hdr4) ∧b C4[a] 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) ∧b C1[a] then s.f1[F1[a];s]] else [] fi 
                                    in let v1 ⟵ if name_eq(fst(a);hdr2) ∧b C2[a] then s.f2[F2[a];s]] else [] fi 
                                       in let v2 ⟵ if name_eq(fst(a);hdr3) ∧b C3[a] then s.f3[F3[a];s]] else [] fi 
                                          in let v3 ⟵ if name_eq(fst(a);hdr4) ∧b C4[a]
                                             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])
26. Base@i
27. Base
⊢ let v ⟵ if name_eq(fst(a);hdr1) ∧b C1[a] then f1[F1[a];s]
  if name_eq(fst(a);hdr2) ∧b C2[a] then f2[F2[a];s]
  if name_eq(fst(a);hdr3) ∧b C3[a] then f3[F3[a];s]
  if name_eq(fst(a);hdr4) ∧b C4[a] then f4[F4[a];s]
  else s
  fi 
  in <λmk-hdf,s. (inl a.let v ⟵ if name_eq(fst(a);hdr1) ∧b C1[a] then f1[F1[a];s]
                          if name_eq(fst(a);hdr2) ∧b C2[a] then f2[F2[a];s]
                          if name_eq(fst(a);hdr3) ∧b C3[a] then f3[F3[a];s]
                          if name_eq(fst(a);hdr4) ∧b C4[a] then f4[F4[a];s]
                          else s
                          fi 
                          in <mk-hdf v, [s]>))^j 
      ⊥ 
      v
     [s]
     > ≤ let v ⟵ if name_eq(fst(a);hdr1) ∧b C1[a] then s.f1[F1[a];s]] else [] fi 
      in let v1 ⟵ if name_eq(fst(a);hdr2) ∧b C2[a] then s.f2[F2[a];s]] else [] fi 
         in let v2 ⟵ if name_eq(fst(a);hdr3) ∧b C3[a] then s.f3[F3[a];s]] else [] fi 
            in let v3 ⟵ if name_eq(fst(a);hdr4) ∧b C4[a] 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) ∧b C1[a]
                                                           then s.f1[F1[a];s]]
                                                           else []
                                                           fi 
                                                           in let v1 ⟵ if name_eq(fst(a);hdr2) ∧b C2[a]
                                                              then s.f2[F2[a];s]]
                                                              else []
                                                              fi 
                                                              in let v2 ⟵ if name_eq(fst(a);hdr3) ∧b C3[a]
                                                                 then s.f3[F3[a];s]]
                                                                 else []
                                                                 fi 
                                                                 in let v3 ⟵ if name_eq(fst(a);hdr4) ∧b C4[a]
                                                                    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:


Latex:
\mforall{}[C1,C2,C3,C4,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)  \mwedge{}\msubb{}  C1[a]  then  [F1[a]]  else  []  fi  \000C)
                            ||  (\mlambda{}x,s.  f2[x;s])  o  hdf-base(a.if  name\_eq(fst(a);hdr2)  \mwedge{}\msubb{}  C2[a]  then  [F2[a]]  else  []  \000Cfi  )
                                  ||  (\mlambda{}x,s.  f3[x;s])  o  hdf-base(a.if  name\_eq(fst(a);hdr3)  \mwedge{}\msubb{}  C3[a]
                                        then  [F3[a]]
                                        else  []
                                        fi  )  ||  (\mlambda{}x,s.  f4[x;s])  o  hdf-base(a.if  name\_eq(fst(a);hdr4)  \mwedge{}\msubb{}  C4[a]
                                        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)
                                                                                                                                                \mwedge{}\msubb{}  C1[a]
                                                                                                                                              then  f1[F1[a];s]
                                                                                                                                          if  name\_eq(fst(a);hdr2)
                                                                                                                                                \mwedge{}\msubb{}  C2[a]
                                                                                                                                              then  f2[F2[a];s]
                                                                                                                                          if  name\_eq(fst(a);hdr3)
                                                                                                                                                \mwedge{}\msubb{}  C3[a]
                                                                                                                                              then  f3[F3[a];s]
                                                                                                                                          if  name\_eq(fst(a);hdr4)
                                                                                                                                                \mwedge{}\msubb{}  C4[a]
                                                                                                                                              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


Latex:
((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