Step
*
of Lemma
bag-from-member-function-exists
∀[T,A:Type].
  ∀bs:bag(T). ∀P:T ⟶ A ⟶ ℙ.
    ((∀x,y:A.  Dec(x = y ∈ A))
    
⇒ (∀x,y:T.  Dec(x = y ∈ T))
    
⇒ (∀i:T. (i ↓∈ bs 
⇒ (∃a:A. P[i;a])))
    
⇒ (∃b:bag(T × A). ((∀i:T. (i ↓∈ bs 
⇒ i ↓∈ bag-map(λx.(fst(x));b))) ∧ (∀x:T × A. (x ↓∈ b 
⇒ P[fst(x);snd(x)])))))
BY
{ (Auto
   THEN RenameVar `g' (-1)
   THEN InstConcl [⌜bag-map(λi.<i, fst((g i Ax))>bs)⌝]⋅
   THEN Try (Complete (Auto))
   THEN ...) }
1
1. [T] : Type
2. [A] : Type
3. bs : bag(T)
4. P : T ⟶ A ⟶ ℙ
5. ∀x,y:A.  Dec(x = y ∈ A)
6. ∀x,y:T.  Dec(x = y ∈ T)
7. g : ∀i:T. (i ↓∈ bs 
⇒ (∃a:A. P[i;a]))
⊢ (∀i:T. (i ↓∈ bs 
⇒ i ↓∈ bag-map(λx.(fst(x));bag-map(λi.<i, fst((g i Ax))>bs))))
∧ (∀x:T × A. (x ↓∈ bag-map(λi.<i, fst((g i Ax))>bs) 
⇒ P[fst(x);snd(x)]))
Latex:
Latex:
\mforall{}[T,A:Type].
    \mforall{}bs:bag(T).  \mforall{}P:T  {}\mrightarrow{}  A  {}\mrightarrow{}  \mBbbP{}.
        ((\mforall{}x,y:A.    Dec(x  =  y))
        {}\mRightarrow{}  (\mforall{}x,y:T.    Dec(x  =  y))
        {}\mRightarrow{}  (\mforall{}i:T.  (i  \mdownarrow{}\mmember{}  bs  {}\mRightarrow{}  (\mexists{}a:A.  P[i;a])))
        {}\mRightarrow{}  (\mexists{}b:bag(T  \mtimes{}  A)
                  ((\mforall{}i:T.  (i  \mdownarrow{}\mmember{}  bs  {}\mRightarrow{}  i  \mdownarrow{}\mmember{}  bag-map(\mlambda{}x.(fst(x));b)))
                  \mwedge{}  (\mforall{}x:T  \mtimes{}  A.  (x  \mdownarrow{}\mmember{}  b  {}\mRightarrow{}  P[fst(x);snd(x)])))))
By
Latex:
(Auto
  THEN  RenameVar  `g'  (-1)
  THEN  InstConcl  [\mkleeneopen{}bag-map(\mlambda{}i.<i,  fst((g  i  Ax))>bs)\mkleeneclose{}]\mcdot{}
  THEN  Try  (Complete  (Auto))
  THEN  Try  (Complete  ((BLemma  `bag-map-member-wf`
                                            THEN  Auto
                                            THEN  DVarSets
                                            THEN  BLemma  `bag-member-evidence`
                                            THEN  Auto))))
Home
Index