Step
*
1
of Lemma
bag-combine-map
1. A : Type
2. B : Type
3. C : Type
4. g : B ⟶ bag(C)
5. f : A ⟶ B
6. u : A
7. v : A List
8. ⋃x∈bag-map(f;v).g[x] = ⋃x∈v.g[f x] ∈ bag(C)
⊢ ⋃x∈bag-map(f;[u / v]).g[x] = ⋃x∈[u / v].g[f x] ∈ bag(C)
BY
{ (Unfold `bag-map` 0
   THEN Reduce 0
   THEN Fold `bag-map` 0
   THEN Subst ⌜[u / v] ~ {u} + v⌝ 0⋅
   THEN Try (Complete ((RepUR ``single-bag bag-append`` 0 THEN Auto)))
   THEN Subst ⌜[f u / bag-map(f;v)] ~ {f u} + bag-map(f;v)⌝ 0⋅
   THEN Try (Complete ((RepUR ``single-bag bag-append`` 0 THEN Auto)))) }
1
1. A : Type
2. B : Type
3. C : Type
4. g : B ⟶ bag(C)
5. f : A ⟶ B
6. u : A
7. v : A List
8. ⋃x∈bag-map(f;v).g[x] = ⋃x∈v.g[f x] ∈ bag(C)
⊢ ⋃x∈{f u} + bag-map(f;v).g[x] = ⋃x∈{u} + v.g[f x] ∈ bag(C)
Latex:
Latex:
1.  A  :  Type
2.  B  :  Type
3.  C  :  Type
4.  g  :  B  {}\mrightarrow{}  bag(C)
5.  f  :  A  {}\mrightarrow{}  B
6.  u  :  A
7.  v  :  A  List
8.  \mcup{}x\mmember{}bag-map(f;v).g[x]  =  \mcup{}x\mmember{}v.g[f  x]
\mvdash{}  \mcup{}x\mmember{}bag-map(f;[u  /  v]).g[x]  =  \mcup{}x\mmember{}[u  /  v].g[f  x]
By
Latex:
(Unfold  `bag-map`  0
  THEN  Reduce  0
  THEN  Fold  `bag-map`  0
  THEN  Subst  \mkleeneopen{}[u  /  v]  \msim{}  \{u\}  +  v\mkleeneclose{}  0\mcdot{}
  THEN  Try  (Complete  ((RepUR  ``single-bag  bag-append``  0  THEN  Auto)))
  THEN  Subst  \mkleeneopen{}[f  u  /  bag-map(f;v)]  \msim{}  \{f  u\}  +  bag-map(f;v)\mkleeneclose{}  0\mcdot{}
  THEN  Try  (Complete  ((RepUR  ``single-bag  bag-append``  0  THEN  Auto))))
Home
Index