Step * 1 1 1 2 of Lemma bag-member-map3-deq


1. Type
2. Type
3. U
4. bs bag(T)
5. {v:T| v ↓∈ bs}  ⟶ U
6. Inj({v:T| v ↓∈ bs} ;U;f)
7. : ∀x,y:U.  Dec(x y ∈ U)
8. ∃v:T. (v ↓∈ bs ∧ (x (f v) ∈ U))
9. single-valued-bag([v∈bs|dec2bool(g (f v))];T)
10. 0 < #([v∈bs|dec2bool(g (f v))])
11. [x@0∈bs|dec2bool(g (f x@0))] ∈ bag({x@0:{b:T| b ↓∈ bs} | ↑dec2bool(g (f x@0))} )
12. x ↓∈ bag-map(f;bs)
13. ∃v:T. (v ↓∈ bs ∧ (x (f v) ∈ U))
14. sv-bag-only([v∈bs|dec2bool(g (f v))]) ↓∈ bs
⊢ (f sv-bag-only([v∈bs|dec2bool(g (f v))])) ∈ U
BY
(SquashExRepD
   THEN (Assert ⌜sv-bag-only([v∈bs|dec2bool(g (f v))]) v ∈ T⌝⋅ THENM Auto)
   THEN InstLemma `sv-bag-only-filter` [⌜T⌝;⌜bs⌝;⌜λ2v.dec2bool(g (f v))⌝;⌜v⌝]⋅
   THEN Auto
   THEN (Try ((RWO "dec2bool_decidable" THEN Auto))
         THEN Try ((RWO "dec2bool_decidable" (-1) THEN Auto THEN All (Unfold `inject`) THEN BackThruSomeHyp THEN Auto))
         )⋅)⋅ }


Latex:


Latex:

1.  T  :  Type
2.  U  :  Type
3.  x  :  U
4.  bs  :  bag(T)
5.  f  :  \{v:T|  v  \mdownarrow{}\mmember{}  bs\}    {}\mrightarrow{}  U
6.  Inj(\{v:T|  v  \mdownarrow{}\mmember{}  bs\}  ;U;f)
7.  g  :  \mforall{}x,y:U.    Dec(x  =  y)
8.  \mexists{}v:T.  (v  \mdownarrow{}\mmember{}  bs  \mwedge{}  (x  =  (f  v)))
9.  single-valued-bag([v\mmember{}bs|dec2bool(g  x  (f  v))];T)
10.  0  <  \#([v\mmember{}bs|dec2bool(g  x  (f  v))])
11.  [x@0\mmember{}bs|dec2bool(g  x  (f  x@0))]  \mmember{}  bag(\{x@0:\{b:T|  b  \mdownarrow{}\mmember{}  bs\}  |  \muparrow{}dec2bool(g  x  (f  x@0))\}  )
12.  x  \mdownarrow{}\mmember{}  bag-map(f;bs)
13.  \mexists{}v:T.  (v  \mdownarrow{}\mmember{}  bs  \mwedge{}  (x  =  (f  v)))
14.  sv-bag-only([v\mmember{}bs|dec2bool(g  x  (f  v))])  \mdownarrow{}\mmember{}  bs
\mvdash{}  x  =  (f  sv-bag-only([v\mmember{}bs|dec2bool(g  x  (f  v))]))


By


Latex:
(SquashExRepD
  THEN  (Assert  \mkleeneopen{}sv-bag-only([v\mmember{}bs|dec2bool(g  x  (f  v))])  =  v\mkleeneclose{}\mcdot{}  THENM  Auto)
  THEN  InstLemma  `sv-bag-only-filter`  [\mkleeneopen{}T\mkleeneclose{};\mkleeneopen{}bs\mkleeneclose{};\mkleeneopen{}\mlambda{}\msubtwo{}v.dec2bool(g  x  (f  v))\mkleeneclose{};\mkleeneopen{}v\mkleeneclose{}]\mcdot{}
  THEN  Auto
  THEN  (Try  ((RWO  "dec2bool\_decidable"  0  THEN  Auto))
              THEN  Try  ((RWO  "dec2bool\_decidable"  (-1)
                                    THEN  Auto
                                    THEN  All  (Unfold  `inject`)
                                    THEN  BackThruSomeHyp
                                    THEN  Auto))
              )\mcdot{})\mcdot{}




Home Index