Step
*
1
1
1
2
2
1
1
2
of Lemma
bag-member-parts
.....antecedent..... 
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+
9. a : bag(T)
10. b : bag(T)
11. (a + b) = bs ∈ bag(T)
12. ¬(a = {} ∈ bag(T))
13. ¬(b = {} ∈ bag(T))
14. v : bag(T) List+
15. v ↓∈ bag-parts(eq;b)
16. L = a.v ∈ bag(T) List+
⊢ #(b) ≤ (n - 1)
BY
{ ((Assert #(a + b) = #(bs) ∈ ℤ BY
          Auto)
   THEN (RWO "bag-size-append" (-1) THENA Auto)
   THEN  Decide ⌜#(a) ≤ 0⌝⋅
   THEN Auto'
   THEN FLemma `bag-size-zero` [-1]
   THEN Auto
   THEN D (-8)
   THEN HypSubst' (-1) 0
   THEN Auto)⋅ }
Latex:
Latex:
.....antecedent..... 
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  =  \{\})))))
6.  bs  :  bag(T)
7.  \#(bs)  \mleq{}  n
8.  L  :  bag(T)  List\msupplus{}
9.  a  :  bag(T)
10.  b  :  bag(T)
11.  (a  +  b)  =  bs
12.  \mneg{}(a  =  \{\})
13.  \mneg{}(b  =  \{\})
14.  v  :  bag(T)  List\msupplus{}
15.  v  \mdownarrow{}\mmember{}  bag-parts(eq;b)
16.  L  =  a.v
\mvdash{}  \#(b)  \mleq{}  (n  -  1)
By
Latex:
((Assert  \#(a  +  b)  =  \#(bs)  BY
                Auto)
  THEN  (RWO  "bag-size-append"  (-1)  THENA  Auto)
  THEN    Decide  \mkleeneopen{}\#(a)  \mleq{}  0\mkleeneclose{}\mcdot{}
  THEN  Auto'
  THEN  FLemma  `bag-size-zero`  [-1]
  THEN  Auto
  THEN  D  (-8)
  THEN  HypSubst'  (-1)  0
  THEN  Auto)\mcdot{}
Home
Index