Step
*
1
2
of Lemma
bag-union-is-single
1. T : Type
2. x : T
3. u : bag(T)
4. v : bag(T) List
5. (bag-union(v) = {x} ∈ bag(T))
⇒ (↓∃bbs':bag(bag(T)). ((v = {x}.bbs' ∈ bag(bag(T))) ∧ (bag-union(bbs') = {} ∈ bag(T))))
6. bag-union([u / v]) = {x} ∈ bag(T)
⊢ ↓∃bbs':bag(bag(T)). (([u / v] = {x}.bbs' ∈ bag(bag(T))) ∧ (bag-union(bbs') = {} ∈ bag(T)))
BY
{ ((BagToList (-4) THENA Auto)
   THEN RepUR ``bag-union`` (-1)
   THEN (RWO "concat-cons2" (-1) THENA Auto)
   THEN Try (Fold `bag-append` (-1))
   THEN Try (Fold `bag-union` (-1)⋅)
   THEN (RWO "bag-append-is-single-iff" (-1) THENA Auto)
   THEN RepeatFor 3 (D (-1))) }
1
1. T : Type
2. x : T
3. u : T List
4. v : bag(T) List
5. (bag-union(v) = {x} ∈ bag(T))
⇒ (↓∃bbs':bag(bag(T)). ((v = {x}.bbs' ∈ bag(bag(T))) ∧ (bag-union(bbs') = {} ∈ bag(T))))
6. u = {x} ∈ bag(T)
7. bag-union(v) = {} ∈ bag(T)
⊢ ↓∃bbs':bag(bag(T)). (([u / v] = {x}.bbs' ∈ bag(bag(T))) ∧ (bag-union(bbs') = {} ∈ bag(T)))
2
1. T : Type
2. x : T
3. u : T List
4. v : bag(T) List
5. (bag-union(v) = {x} ∈ bag(T))
⇒ (↓∃bbs':bag(bag(T)). ((v = {x}.bbs' ∈ bag(bag(T))) ∧ (bag-union(bbs') = {} ∈ bag(T))))
6. bag-union(v) = {x} ∈ bag(T)
7. u = {} ∈ bag(T)
⊢ ↓∃bbs':bag(bag(T)). (([u / v] = {x}.bbs' ∈ bag(bag(T))) ∧ (bag-union(bbs') = {} ∈ bag(T)))
Latex:
Latex:
1.  T  :  Type
2.  x  :  T
3.  u  :  bag(T)
4.  v  :  bag(T)  List
5.  (bag-union(v)  =  \{x\})  {}\mRightarrow{}  (\mdownarrow{}\mexists{}bbs':bag(bag(T)).  ((v  =  \{x\}.bbs')  \mwedge{}  (bag-union(bbs')  =  \{\})))
6.  bag-union([u  /  v])  =  \{x\}
\mvdash{}  \mdownarrow{}\mexists{}bbs':bag(bag(T)).  (([u  /  v]  =  \{x\}.bbs')  \mwedge{}  (bag-union(bbs')  =  \{\}))
By
Latex:
((BagToList  (-4)  THENA  Auto)
  THEN  RepUR  ``bag-union``  (-1)
  THEN  (RWO  "concat-cons2"  (-1)  THENA  Auto)
  THEN  Try  (Fold  `bag-append`  (-1))
  THEN  Try  (Fold  `bag-union`  (-1)\mcdot{})
  THEN  (RWO  "bag-append-is-single-iff"  (-1)  THENA  Auto)
  THEN  RepeatFor  3  (D  (-1)))
Home
Index