Step * 2 of Lemma bag-filter-equal


1. Type
2. p1 T ⟶ 𝔹
3. p2 T ⟶ 𝔹
4. bag(T)
5. ∀x:T. (x ↓∈  (↑p1[x] ⇐⇒ ↑p2[x]))
⊢ [x∈b|p1[x]] [x∈b|p2[x]] ∈ bag(T)
BY
((BagToList (-2) THENA (Auto THEN DoSubsume THEN Auto))
   THEN RepUR ``bag-filter`` 0
   THEN (InstLemma `filter-sq` [⌜T⌝;⌜b⌝;⌜λx.p1[x]⌝;⌜λx.p2[x]⌝]⋅
         THENA (Auto
                THEN All (RepUR ``so_apply``)
                THEN (-2)
                THEN (Unhide THENA Auto)
                THEN (InstHyp [⌜x⌝(-4)⋅ THENA (Auto THEN BLemma `list-member-bag-member` THEN Auto))
                THEN BHyp (-1) 
                THEN Auto)
         )
   THEN HypSubst' (-1) 0
   THEN Auto) }


Latex:


Latex:

1.  T  :  Type
2.  p1  :  T  {}\mrightarrow{}  \mBbbB{}
3.  p2  :  T  {}\mrightarrow{}  \mBbbB{}
4.  b  :  bag(T)
5.  \mforall{}x:T.  (x  \mdownarrow{}\mmember{}  b  {}\mRightarrow{}  (\muparrow{}p1[x]  \mLeftarrow{}{}\mRightarrow{}  \muparrow{}p2[x]))
\mvdash{}  [x\mmember{}b|p1[x]]  =  [x\mmember{}b|p2[x]]


By


Latex:
((BagToList  (-2)  THENA  (Auto  THEN  DoSubsume  THEN  Auto))
  THEN  RepUR  ``bag-filter``  0
  THEN  (InstLemma  `filter-sq`  [\mkleeneopen{}T\mkleeneclose{};\mkleeneopen{}b\mkleeneclose{};\mkleeneopen{}\mlambda{}x.p1[x]\mkleeneclose{};\mkleeneopen{}\mlambda{}x.p2[x]\mkleeneclose{}]\mcdot{}
              THENA  (Auto
                            THEN  All  (RepUR  ``so\_apply``)
                            THEN  D  (-2)
                            THEN  (Unhide  THENA  Auto)
                            THEN  (InstHyp  [\mkleeneopen{}x\mkleeneclose{}]  (-4)\mcdot{}  THENA  (Auto  THEN  BLemma  `list-member-bag-member`  THEN  Auto))
                            THEN  BHyp  (-1) 
                            THEN  Auto)
              )
  THEN  HypSubst'  (-1)  0
  THEN  Auto)




Home Index