Step
*
of Lemma
bag-partitions-assoc
∀[T:Type]
  ∀[eq:EqDecider(T)]. ∀[bs:bag(T)].
    (⋃x∈bag-partitions(eq;bs).bag-map(λy.<fst(x), y>bag-partitions(eq;snd(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;f\000Cst(x))))
    ∈ bag(bag(T) × bag(T) × bag(T))) 
  supposing valueall-type(T)
BY
{ (Auto
   THEN (Assert proddeq(bag-deq(eq);bag-deq(eq)) ∈ EqDecider(bag(T) × bag(T)) BY
               ((Subst' proddeq(bag-deq(eq);bag-deq(eq)) ~ product-deq(bag(T);bag(T);bag-deq(eq);bag-deq(eq)) 0
                 THEN Auto
                 )
                THEN RepUR ``product-deq`` 0
                THEN Auto))
   THEN (Assert proddeq(bag-deq(eq);proddeq(bag-deq(eq);bag-deq(eq))) ∈ EqDecider(bag(T) × bag(T) × bag(T)) BY
               ((Subst' proddeq(bag-deq(eq);proddeq(bag-deq(eq);bag-deq(eq))) ~ product-deq(bag(T);bag(T)
                 × bag(T);bag-deq(eq);proddeq(bag-deq(eq);bag-deq(eq))) 0
                 THEN Auto
                 )
                THEN RepUR ``product-deq`` 0
                THEN Auto))
   THEN skip{(Using [`eq',⌜proddeq(bag-deq(eq);proddeq(bag-deq(eq);bag-deq(eq)))⌝
              ] (BLemma `bag-extensionality-no-repeats`)⋅
              THEN Auto
              THEN Try ((Unhide 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))
⊢ ⋃x∈bag-partitions(eq;bs).bag-map(λy.<fst(x), y>bag-partitions(eq;snd(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;fst(x\000C))))
∈ bag(bag(T) × bag(T) × bag(T))
Latex:
Latex:
\mforall{}[T:Type]
    \mforall{}[eq:EqDecider(T)].  \mforall{}[bs:bag(T)].
        (\mcup{}x\mmember{}bag-partitions(eq;bs).bag-map(\mlambda{}y.<fst(x),  y>bag-partitions(eq;snd(x)))
        =  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))))) 
    supposing  valueall-type(T)
By
Latex:
(Auto
  THEN  (Assert  proddeq(bag-deq(eq);bag-deq(eq))  \mmember{}  EqDecider(bag(T)  \mtimes{}  bag(T))  BY
                          ((Subst'  proddeq(bag-deq(eq);bag-deq(eq)) 
                              \msim{}  product-deq(bag(T);bag(T);bag-deq(eq);bag-deq(eq))  0
                              THEN  Auto
                              )
                            THEN  RepUR  ``product-deq``  0
                            THEN  Auto))
  THEN  (Assert  proddeq(bag-deq(eq);proddeq(bag-deq(eq);bag-deq(eq)))  \mmember{}  EqDecider(bag(T)
                            \mtimes{}  bag(T)
                            \mtimes{}  bag(T))  BY
                          ((Subst'  proddeq(bag-deq(eq);proddeq(bag-deq(eq);bag-deq(eq))) 
                              \msim{}  product-deq(bag(T);bag(T)  \mtimes{}  bag(T);bag-deq(eq);proddeq(bag-deq(eq);bag-deq(eq)))  0
                              THEN  Auto
                              )
                            THEN  RepUR  ``product-deq``  0
                            THEN  Auto))
  THEN  skip\{(Using  [`eq',\mkleeneopen{}proddeq(bag-deq(eq);proddeq(bag-deq(eq);bag-deq(eq)))\mkleeneclose{}
                        ]  (BLemma  `bag-extensionality-no-repeats`)\mcdot{}
                        THEN  Auto
                        THEN  Try  ((Unhide  THEN  Auto)))\}\mcdot{})
Home
Index