Step
*
1
of Lemma
bag-member-parts
1. T : Type
2. valueall-type(T)
3. eq : EqDecider(T)
4. n : ℕ
5. ∀n:ℕn. ∀bs:bag(T).
     ((#(bs) ≤ n)
     
⇒ (∀L:bag(T) List+. uiff(L ↓∈ bag-parts(eq;bs);(bag-union(L) = bs ∈ bag(T)) ∧ (∀x∈L.¬(x = {} ∈ bag(T))))))
⊢ ∀bs:bag(T)
    ((#(bs) ≤ n)
    
⇒ (∀L:bag(T) List+. uiff(L ↓∈ bag-parts(eq;bs);(bag-union(L) = bs ∈ bag(T)) ∧ (∀x∈L.¬(x = {} ∈ bag(T))))))
BY
{ (RepeatFor 3 ((D 0 THENA Auto)) THEN RecUnfold `bag-parts` 0 THEN (CallByValueReduce 0 THENA Auto)) }
1
1. T : Type
2. valueall-type(T)
3. eq : EqDecider(T)
4. n : ℕ
5. ∀n:ℕn. ∀bs:bag(T).
     ((#(bs) ≤ n)
     
⇒ (∀L:bag(T) List+. uiff(L ↓∈ bag-parts(eq;bs);(bag-union(L) = bs ∈ bag(T)) ∧ (∀x∈L.¬(x = {} ∈ bag(T))))))
6. bs : bag(T)
7. #(bs) ≤ n
8. L : bag(T) List+
⊢ uiff(L ↓∈ ⋃p∈bag-partitions(eq;bs).if bag-null(fst(p)) then {}
            if bag-null(snd(p)) then {[fst(p)]}
            else let parts ⟵ bag-parts(eq;snd(p))
                 in bag-map(λL.[fst(p) / L];parts)
            fi (bag-union(L) = bs ∈ bag(T)) ∧ (∀x∈L.¬(x = {} ∈ bag(T))))
Latex:
Latex:
1.  T  :  Type
2.  valueall-type(T)
3.  eq  :  EqDecider(T)
4.  n  :  \mBbbN{}
5.  \mforall{}n:\mBbbN{}n.  \mforall{}bs:bag(T).
          ((\#(bs)  \mleq{}  n)
          {}\mRightarrow{}  (\mforall{}L:bag(T)  List\msupplus{}.  uiff(L  \mdownarrow{}\mmember{}  bag-parts(eq;bs);(bag-union(L)  =  bs)  \mwedge{}  (\mforall{}x\mmember{}L.\mneg{}(x  =  \{\})))))
\mvdash{}  \mforall{}bs:bag(T)
        ((\#(bs)  \mleq{}  n)
        {}\mRightarrow{}  (\mforall{}L:bag(T)  List\msupplus{}.  uiff(L  \mdownarrow{}\mmember{}  bag-parts(eq;bs);(bag-union(L)  =  bs)  \mwedge{}  (\mforall{}x\mmember{}L.\mneg{}(x  =  \{\})))))
By
Latex:
(RepeatFor  3  ((D  0  THENA  Auto))  THEN  RecUnfold  `bag-parts`  0  THEN  (CallByValueReduce  0  THENA  Auto))
Home
Index