Step
*
1
1
1
2
1
1
of Lemma
bag-bind-com
1. A : Type
2. B : Type
3. C : Type
4. f : A ⟶ B ⟶ bag(C)
5. ba : bag(A)
6. u : B
7. v : B 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-union(bag-map(λa.(f[a;u] + bag-union(bag-map(λb.f[a;b];v)));ba))
= (bag-union(bag-map(λa.f[a;u];ba)) + bag-union(bag-map(λa.bag-union(bag-map(λb.f[a;b];v));ba)))
∈ bag(C)
BY
{ Fold `bag-bind` 0 }
1
1. A : Type
2. B : Type
3. C : Type
4. f : A ⟶ B ⟶ bag(C)
5. ba : bag(A)
6. u : B
7. v : B 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)
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-union(bag-map(\mlambda{}a.(f[a;u]  +  bag-union(bag-map(\mlambda{}b.f[a;b];v)));ba))
=  (bag-union(bag-map(\mlambda{}a.f[a;u];ba))  +  bag-union(bag-map(\mlambda{}a.bag-union(bag-map(\mlambda{}b.f[a;b];v));ba)))
By
Latex:
Fold  `bag-bind`  0
Home
Index