Step * 1 1 1 2 1 1 1 of Lemma bag-bind-com


1. Type
2. Type
3. Type
4. A ⟶ B ⟶ bag(C)
5. ba bag(A)
6. B
7. List
8. bag-union(bag-map(λa.bag-union(bag-map(λb.f[a;b];v));ba))
bag-union(bag-map(λb.bag-union(bag-map(λa.f[a;b];ba));v))
∈ bag(C)
9. v ∈ bag(B)
⊢ bag-bind(ba;λa.(f[a;u] bag-bind(v;λb.f[a;b])))
(bag-bind(ba;λa.f[a;u]) bag-bind(ba;λa.bag-bind(v;λb.f[a;b])))
∈ bag(C)
BY
(Assert ⌜bag-bind(ba;λa.(((λa.f[a;u]) a) ((λa.bag-bind(v;λb.f[a;b])) a)))
           (bag-bind(ba;λa.f[a;u]) bag-bind(ba;λa.bag-bind(v;λb.f[a;b])))
           ∈ bag(C)⌝⋅
   THEN Reduce (-1)
   THEN Auto
   THEN GenConcl ⌜a.bag-bind(v;λb.f[a;b])) F ∈ (A ⟶ bag(C))⌝⋅
   THEN Auto
   THEN GenConcl ⌜a.f[a;u]) G ∈ (A ⟶ bag(C))⌝⋅
   THEN Auto
   THEN All Thin) }


Latex:


Latex:

1.  A  :  Type
2.  B  :  Type
3.  C  :  Type
4.  f  :  A  {}\mrightarrow{}  B  {}\mrightarrow{}  bag(C)
5.  ba  :  bag(A)
6.  u  :  B
7.  v  :  B  List
8.  bag-union(bag-map(\mlambda{}a.bag-union(bag-map(\mlambda{}b.f[a;b];v));ba))
=  bag-union(bag-map(\mlambda{}b.bag-union(bag-map(\mlambda{}a.f[a;b];ba));v))
9.  v  \mmember{}  bag(B)
\mvdash{}  bag-bind(ba;\mlambda{}a.(f[a;u]  +  bag-bind(v;\mlambda{}b.f[a;b])))
=  (bag-bind(ba;\mlambda{}a.f[a;u])  +  bag-bind(ba;\mlambda{}a.bag-bind(v;\mlambda{}b.f[a;b])))


By


Latex:
(Assert  \mkleeneopen{}bag-bind(ba;\mlambda{}a.(((\mlambda{}a.f[a;u])  a)  +  ((\mlambda{}a.bag-bind(v;\mlambda{}b.f[a;b]))  a)))
                  =  (bag-bind(ba;\mlambda{}a.f[a;u])  +  bag-bind(ba;\mlambda{}a.bag-bind(v;\mlambda{}b.f[a;b])))\mkleeneclose{}\mcdot{}
  THEN  Reduce  (-1)
  THEN  Auto
  THEN  GenConcl  \mkleeneopen{}(\mlambda{}a.bag-bind(v;\mlambda{}b.f[a;b]))  =  F\mkleeneclose{}\mcdot{}
  THEN  Auto
  THEN  GenConcl  \mkleeneopen{}(\mlambda{}a.f[a;u])  =  G\mkleeneclose{}\mcdot{}
  THEN  Auto
  THEN  All  Thin)




Home Index