Step
*
1
of Lemma
bag-rep-size-restrict
1. T : Type
2. eq : EqDecider(T)
3. x : T
4. u : T
5. v : T List
6. primrec(||filter(λz.(eq x z);v)||;{};λi,r. x.r) = filter(λz.(eq x z);v) ∈ bag(T)
⊢ primrec(||if eq x u then [u / filter(λz.(eq x z);v)] else filter(λz.(eq x z);v) fi ||;{};λi,r. x.r)
= if eq x u then [u / filter(λz.(eq x z);v)] else filter(λz.(eq x z);v) fi 
∈ bag(T)
BY
{ (AutoSplit THEN (RWO "primrec-unroll" 0 THENA Auto) THEN AutoSplit) }
1
1. T : Type
2. eq : EqDecider(T)
3. x : T
4. u : T
5. v : T List
6. primrec(||filter(λz.(eq x z);v)||;{};λi,r. x.r) = filter(λz.(eq x z);v) ∈ bag(T)
7. x = u ∈ T
8. (||filter(λz.(eqof(eq) x z);v)|| + 1) = 0 ∈ ℤ
⊢ {} = [u / filter(λz.(eq x z);v)] ∈ bag(T)
2
1. T : Type
2. eq : EqDecider(T)
3. x : T
4. u : T
5. v : T List
6. ||filter(λz.(eqof(eq) x z);v)|| + 1 ≠ 0
7. primrec(||filter(λz.(eq x z);v)||;{};λi,r. x.r) = filter(λz.(eq x z);v) ∈ bag(T)
8. x = u ∈ T
⊢ x.primrec((||filter(λz.(eq x z);v)|| + 1) - 1;{};λi,r. x.r) = [u / filter(λz.(eq x z);v)] ∈ bag(T)
Latex:
Latex:
1.  T  :  Type
2.  eq  :  EqDecider(T)
3.  x  :  T
4.  u  :  T
5.  v  :  T  List
6.  primrec(||filter(\mlambda{}z.(eq  x  z);v)||;\{\};\mlambda{}i,r.  x.r)  =  filter(\mlambda{}z.(eq  x  z);v)
\mvdash{}  primrec(||if  eq  x  u  then  [u  /  filter(\mlambda{}z.(eq  x  z);v)]  else  filter(\mlambda{}z.(eq  x  z);v)  fi  ||;\{\};\mlambda{}i,r.  x.r\000C)
=  if  eq  x  u  then  [u  /  filter(\mlambda{}z.(eq  x  z);v)]  else  filter(\mlambda{}z.(eq  x  z);v)  fi 
By
Latex:
(AutoSplit  THEN  (RWO  "primrec-unroll"  0  THENA  Auto)  THEN  AutoSplit)
Home
Index