Step * 1 of Lemma sub-bag-map-equal


1. Type
2. Type
3. b2 List
4. T ⟶ U
5. c1 List
6. cs List
7. map(f;b2) ((map(f;b2) map(f;cs)) c1) ∈ bag(U)
⊢ cs [] ∈ bag(T)
BY
((RWO "append_assoc" (-1) THENA Auto)
   THEN (Assert ⌜(map(f;b2) []) (map(f;b2) (map(f;cs) c1)) ∈ bag(U)⌝⋅
         THENA (Try (Fold `empty-bag` 0) THEN RWO "bag-append-empty" THEN Auto THEN Unfold `bag-append` THEN Auto)
         )
   THEN (RWO "bag-append-cancel" (-1) THENA Auto)
   THEN Try (Fold `bag-append` (-1))
   THEN Try (Fold `empty-bag` (-1))
   THEN (InstLemma `bag-append-eq-empty` [⌜U⌝;⌜map(f;cs)⌝;⌜c1⌝]⋅ THENA Auto)
   THEN Auto
   THEN Try (Fold `empty-bag` 0)
   THEN Auto) }

1
1. Type
2. Type
3. b2 List
4. T ⟶ U
5. c1 List
6. cs List
7. map(f;b2) (map(f;b2) map(f;cs) c1) ∈ bag(U)
8. {} (map(f;cs) c1) ∈ bag(U)
9. (map(f;cs) c1) {} ∈ bag(U) supposing (map(f;cs) {} ∈ bag(U)) ∧ (c1 {} ∈ bag(U))
10. map(f;cs) {} ∈ bag(U)
11. c1 {} ∈ bag(U)
⊢ cs {} ∈ bag(T)


Latex:


Latex:

1.  T  :  Type
2.  U  :  Type
3.  b2  :  T  List
4.  f  :  T  {}\mrightarrow{}  U
5.  c1  :  U  List
6.  cs  :  T  List
7.  map(f;b2)  =  ((map(f;b2)  @  map(f;cs))  @  c1)
\mvdash{}  cs  =  []


By


Latex:
((RWO  "append\_assoc"  (-1)  THENA  Auto)
  THEN  (Assert  \mkleeneopen{}(map(f;b2)  +  [])  =  (map(f;b2)  +  (map(f;cs)  @  c1))\mkleeneclose{}\mcdot{}
              THENA  (Try  (Fold  `empty-bag`  0)
                            THEN  RWO  "bag-append-empty"  0
                            THEN  Auto
                            THEN  Unfold  `bag-append`  0
                            THEN  Auto)
              )
  THEN  (RWO  "bag-append-cancel"  (-1)  THENA  Auto)
  THEN  Try  (Fold  `bag-append`  (-1))
  THEN  Try  (Fold  `empty-bag`  (-1))
  THEN  (InstLemma  `bag-append-eq-empty`  [\mkleeneopen{}U\mkleeneclose{};\mkleeneopen{}map(f;cs)\mkleeneclose{};\mkleeneopen{}c1\mkleeneclose{}]\mcdot{}  THENA  Auto)
  THEN  Auto
  THEN  Try  (Fold  `empty-bag`  0)
  THEN  Auto)




Home Index