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