Step
*
1
of Lemma
bag-drop-append
1. T : Type
2. eq : EqDecider(T)
3. x : T
4. ∀bs:bag(T). ((bs = ({x} + bag-drop(eq;bs;x)) ∈ bag(T)) ∨ ((¬x ↓∈ bs) ∧ (bs = bag-drop(eq;bs;x) ∈ bag(T))))
5. bs : bag(T)
6. cs : bag(T)
7. (bs + cs) = ({x} + bag-drop(eq;bs + cs;x)) ∈ bag(T)
⊢ bag-drop(eq;bs + cs;x) = if ((#x in bs) =z 0) then bs + bag-drop(eq;cs;x) else bag-drop(eq;bs;x) + cs fi  ∈ bag(T)
BY
{ ((Assert ⌜({x} + bag-drop(eq;bs + cs;x))
            = ({x} + if ((#x in bs) =z 0) then bs + bag-drop(eq;cs;x) else bag-drop(eq;bs;x) + cs fi )
            ∈ bag(T)⌝⋅
   THENM (FLemma `bag-append-cancel` [-1] THEN Auto)
   )
   THEN NthHypEqTrans (-1)
   ) }
1
.....assertion..... 
1. T : Type
2. eq : EqDecider(T)
3. x : T
4. ∀bs:bag(T). ((bs = ({x} + bag-drop(eq;bs;x)) ∈ bag(T)) ∨ ((¬x ↓∈ bs) ∧ (bs = bag-drop(eq;bs;x) ∈ bag(T))))
5. bs : bag(T)
6. cs : bag(T)
7. (bs + cs) = ({x} + bag-drop(eq;bs + cs;x)) ∈ bag(T)
⊢ (bs + cs) = ({x} + if ((#x in bs) =z 0) then bs + bag-drop(eq;cs;x) else bag-drop(eq;bs;x) + cs fi ) ∈ bag(T)
Latex:
Latex:
1.  T  :  Type
2.  eq  :  EqDecider(T)
3.  x  :  T
4.  \mforall{}bs:bag(T).  ((bs  =  (\{x\}  +  bag-drop(eq;bs;x)))  \mvee{}  ((\mneg{}x  \mdownarrow{}\mmember{}  bs)  \mwedge{}  (bs  =  bag-drop(eq;bs;x))))
5.  bs  :  bag(T)
6.  cs  :  bag(T)
7.  (bs  +  cs)  =  (\{x\}  +  bag-drop(eq;bs  +  cs;x))
\mvdash{}  bag-drop(eq;bs  +  cs;x)
=  if  ((\#x  in  bs)  =\msubz{}  0)  then  bs  +  bag-drop(eq;cs;x)  else  bag-drop(eq;bs;x)  +  cs  fi 
By
Latex:
((Assert  \mkleeneopen{}(\{x\}  +  bag-drop(eq;bs  +  cs;x))
                    =  (\{x\}
                        +  if  ((\#x  in  bs)  =\msubz{}  0)  then  bs  +  bag-drop(eq;cs;x)  else  bag-drop(eq;bs;x)  +  cs  fi  )\mkleeneclose{}\mcdot{}
  THENM  (FLemma  `bag-append-cancel`  [-1]  THEN  Auto)
  )
  THEN  NthHypEqTrans  (-1)
  )
Home
Index