Step
*
1
3
of Lemma
bag-partitions-assoc
1. T : Type
2. valueall-type(T)
3. eq : EqDecider(T)
4. bs : bag(T)
5. proddeq(bag-deq(eq);bag-deq(eq)) ∈ EqDecider(bag(T) × bag(T))
6. proddeq(bag-deq(eq);proddeq(bag-deq(eq);bag-deq(eq))) ∈ EqDecider(bag(T) × bag(T) × bag(T))
7. x : bag(T) × bag(T) × bag(T)
8. x ↓∈ ⋃x∈bag-partitions(eq;bs).bag-map(λy.<fst(x), y>bag-partitions(eq;snd(x)))
⊢ x ↓∈ bag-map(λ2p.<fst(snd(p)), snd(snd(p)), fst(p)>⋃x∈bag-partitions(eq;bs).bag-map(λy.<snd(x), y>bag-partitions(eq;\000Cfst(x))))
BY
{ (RepeatFor 2 ((BagMemberD (-1) THEN SqExRepD))
   THEN (D (-5) THEN BagMemberD (-4))
   THEN D (-3)
   THEN BagMemberD (-2)
   THEN All Reduce
   THEN skip{(Using [`T',⌜bag(T) × bag(T) × bag(T)⌝] (BLemma `bag-member-map`)⋅
              THEN Auto
              THEN D 0
              THEN With ⌜<v2, x2, v1>⌝ (D 0)⋅
              THEN Auto
              THEN (BLemma `bag-member-combine` THEN Auto)
              THEN D 0
              THEN (RWO "bag-member-map" 0 THEN Reduce 0)
              THEN Auto
              THEN (With ⌜<x2 + v1, v2>⌝ (D 0)⋅ THEN Reduce 0)
              THEN Auto
              THEN Try ((D 0 THEN With ⌜<x2, v1>⌝ (D 0)⋅ THEN Auto))
              THEN BagMemberD 0
              THEN Auto
              THEN RWO "bag-append-assoc" 0
              THEN Auto)}) }
1
1. T : Type
2. valueall-type(T)
3. eq : EqDecider(T)
4. bs : bag(T)
5. proddeq(bag-deq(eq);bag-deq(eq)) ∈ EqDecider(bag(T) × bag(T))
6. proddeq(bag-deq(eq);proddeq(bag-deq(eq);bag-deq(eq))) ∈ EqDecider(bag(T) × bag(T) × bag(T))
7. x : bag(T) × bag(T) × bag(T)
8. x2 : bag(T)
9. x3 : bag(T)
10. (x2 + x3) = bs ∈ bag(T)
11. v1 : bag(T)
12. v2 : bag(T)
13. (v1 + v2) = x3 ∈ bag(T)
14. x = <x2, v1, v2> ∈ (bag(T) × bag(T) × bag(T))
⊢ x ↓∈ bag-map(λ2p.<fst(snd(p)), snd(snd(p)), fst(p)>⋃x∈bag-partitions(eq;bs).bag-map(λy.<snd(x), y>bag-partitions(eq;\000Cfst(x))))
Latex:
Latex:
1.  T  :  Type
2.  valueall-type(T)
3.  eq  :  EqDecider(T)
4.  bs  :  bag(T)
5.  proddeq(bag-deq(eq);bag-deq(eq))  \mmember{}  EqDecider(bag(T)  \mtimes{}  bag(T))
6.  proddeq(bag-deq(eq);proddeq(bag-deq(eq);bag-deq(eq)))  \mmember{}  EqDecider(bag(T)  \mtimes{}  bag(T)  \mtimes{}  bag(T))
7.  x  :  bag(T)  \mtimes{}  bag(T)  \mtimes{}  bag(T)
8.  x  \mdownarrow{}\mmember{}  \mcup{}x\mmember{}bag-partitions(eq;bs).bag-map(\mlambda{}y.<fst(x),  y>bag-partitions(eq;snd(x)))
\mvdash{}  x  \mdownarrow{}\mmember{}  bag-map(\mlambda{}\msubtwo{}p.<fst(snd(p)),  snd(snd(p)),  fst(p)>
              \mcup{}x\mmember{}bag-partitions(eq;bs).bag-map(\mlambda{}y.<snd(x),  y>bag-partitions(eq;fst(x))))
By
Latex:
(RepeatFor  2  ((BagMemberD  (-1)  THEN  SqExRepD))
  THEN  (D  (-5)  THEN  BagMemberD  (-4))
  THEN  D  (-3)
  THEN  BagMemberD  (-2)
  THEN  All  Reduce
  THEN  skip\{(Using  [`T',\mkleeneopen{}bag(T)  \mtimes{}  bag(T)  \mtimes{}  bag(T)\mkleeneclose{}]  (BLemma  `bag-member-map`)\mcdot{}
                        THEN  Auto
                        THEN  D  0
                        THEN  With  \mkleeneopen{}<v2,  x2,  v1>\mkleeneclose{}  (D  0)\mcdot{}
                        THEN  Auto
                        THEN  (BLemma  `bag-member-combine`  THEN  Auto)
                        THEN  D  0
                        THEN  (RWO  "bag-member-map"  0  THEN  Reduce  0)
                        THEN  Auto
                        THEN  (With  \mkleeneopen{}<x2  +  v1,  v2>\mkleeneclose{}  (D  0)\mcdot{}  THEN  Reduce  0)
                        THEN  Auto
                        THEN  Try  ((D  0  THEN  With  \mkleeneopen{}<x2,  v1>\mkleeneclose{}  (D  0)\mcdot{}  THEN  Auto))
                        THEN  BagMemberD  0
                        THEN  Auto
                        THEN  RWO  "bag-append-assoc"  0
                        THEN  Auto)\})
Home
Index