Step
*
1
1
2
2
1
1
1
1
of Lemma
bag-parts-no-repeats
1. T : Type
2. valueall-type(T)
3. eq : EqDecider(T)
4. n : ℕ
5. ∀n:ℕn. ∀bs:bag(T).  ((#(bs) ≤ n) 
⇒ bag-no-repeats(bag(T) List+;bag-parts(eq;bs)))
6. u : T
7. v : T List
8. #(u.v) ≤ n
9. bag-no-repeats(bag(T) List+;bag-parts(eq;v))
10. p : bag(T) × bag(T)
11. y : bag(T) × bag(T)
12. z : bag(T) List+
13. z ↓∈ if bag-null(fst(p)) then {}
if bag-null(snd(p)) then {[fst(p)]}
else let parts ⟵ bag-parts(eq;snd(p))
     in bag-map(λL.[fst(p) / L];parts)
fi 
14. z ↓∈ if bag-null(fst(y)) then {}
if bag-null(snd(y)) then {[fst(y)]}
else let parts ⟵ bag-parts(eq;snd(y))
     in bag-map(λL.[fst(y) / L];parts)
fi 
⊢ p = y ∈ (bag(T) × bag(T))
BY
{ ((DVar `p' THEN DVar `y') THEN All Reduce THEN RepeatFor 3 (BagMemberD (-2)⋅) THEN RepeatFor 3 (BagMemberD (-1)⋅)⋅) }
1
1. T : Type
2. valueall-type(T)
3. eq : EqDecider(T)
4. n : ℕ
5. ∀n:ℕn. ∀bs:bag(T).  ((#(bs) ≤ n) 
⇒ bag-no-repeats(bag(T) List+;bag-parts(eq;bs)))
6. u : T
7. v : T List
8. (#(v) + 1) ≤ n
9. bag-no-repeats(bag(T) List+;bag-parts(eq;v))
10. p1 : bag(T)
11. p2 : bag(T)
12. y1 : bag(T)
13. y2 : bag(T)
14. z : bag(T) List+
15. ¬(p1 = {} ∈ bag(T))
16. p2 = {} ∈ bag(T)
17. z = [p1] ∈ bag(T) List+
18. ¬(y1 = {} ∈ bag(T))
19. y2 = {} ∈ bag(T)
20. z = [y1] ∈ bag(T) List+
⊢ <p1, p2> = <y1, y2> ∈ (bag(T) × bag(T))
2
1. T : Type
2. valueall-type(T)
3. eq : EqDecider(T)
4. n : ℕ
5. ∀n:ℕn. ∀bs:bag(T).  ((#(bs) ≤ n) 
⇒ bag-no-repeats(bag(T) List+;bag-parts(eq;bs)))
6. u : T
7. v : T List
8. (#(v) + 1) ≤ n
9. bag-no-repeats(bag(T) List+;bag-parts(eq;v))
10. p1 : bag(T)
11. p2 : bag(T)
12. y1 : bag(T)
13. y2 : bag(T)
14. z : bag(T) List+
15. ¬(p1 = {} ∈ bag(T))
16. p2 = {} ∈ bag(T)
17. z = [p1] ∈ bag(T) List+
18. ¬(y1 = {} ∈ bag(T))
19. ¬(y2 = {} ∈ bag(T))
20. z ↓∈ bag-map(λL.[y1 / L];bag-parts(eq;y2))
⊢ <p1, p2> = <y1, y2> ∈ (bag(T) × bag(T))
3
1. T : Type
2. valueall-type(T)
3. eq : EqDecider(T)
4. n : ℕ
5. ∀n:ℕn. ∀bs:bag(T).  ((#(bs) ≤ n) 
⇒ bag-no-repeats(bag(T) List+;bag-parts(eq;bs)))
6. u : T
7. v : T List
8. (#(v) + 1) ≤ n
9. bag-no-repeats(bag(T) List+;bag-parts(eq;v))
10. p1 : bag(T)
11. p2 : bag(T)
12. y1 : bag(T)
13. y2 : bag(T)
14. z : bag(T) List+
15. ¬(p1 = {} ∈ bag(T))
16. ¬(p2 = {} ∈ bag(T))
17. z ↓∈ bag-map(λL.[p1 / L];bag-parts(eq;p2))
18. ¬(y1 = {} ∈ bag(T))
19. y2 = {} ∈ bag(T)
20. z = [y1] ∈ bag(T) List+
⊢ <p1, p2> = <y1, y2> ∈ (bag(T) × bag(T))
4
1. T : Type
2. valueall-type(T)
3. eq : EqDecider(T)
4. n : ℕ
5. ∀n:ℕn. ∀bs:bag(T).  ((#(bs) ≤ n) 
⇒ bag-no-repeats(bag(T) List+;bag-parts(eq;bs)))
6. u : T
7. v : T List
8. (#(v) + 1) ≤ n
9. bag-no-repeats(bag(T) List+;bag-parts(eq;v))
10. p1 : bag(T)
11. p2 : bag(T)
12. y1 : bag(T)
13. y2 : bag(T)
14. z : bag(T) List+
15. ¬(p1 = {} ∈ bag(T))
16. ¬(p2 = {} ∈ bag(T))
17. z ↓∈ bag-map(λL.[p1 / L];bag-parts(eq;p2))
18. ¬(y1 = {} ∈ bag(T))
19. ¬(y2 = {} ∈ bag(T))
20. z ↓∈ bag-map(λL.[y1 / L];bag-parts(eq;y2))
⊢ <p1, p2> = <y1, y2> ∈ (bag(T) × bag(T))
Latex:
Latex:
1.  T  :  Type
2.  valueall-type(T)
3.  eq  :  EqDecider(T)
4.  n  :  \mBbbN{}
5.  \mforall{}n:\mBbbN{}n.  \mforall{}bs:bag(T).    ((\#(bs)  \mleq{}  n)  {}\mRightarrow{}  bag-no-repeats(bag(T)  List\msupplus{};bag-parts(eq;bs)))
6.  u  :  T
7.  v  :  T  List
8.  \#(u.v)  \mleq{}  n
9.  bag-no-repeats(bag(T)  List\msupplus{};bag-parts(eq;v))
10.  p  :  bag(T)  \mtimes{}  bag(T)
11.  y  :  bag(T)  \mtimes{}  bag(T)
12.  z  :  bag(T)  List\msupplus{}
13.  z  \mdownarrow{}\mmember{}  if  bag-null(fst(p))  then  \{\}
if  bag-null(snd(p))  then  \{[fst(p)]\}
else  let  parts  \mleftarrow{}{}  bag-parts(eq;snd(p))
          in  bag-map(\mlambda{}L.[fst(p)  /  L];parts)
fi 
14.  z  \mdownarrow{}\mmember{}  if  bag-null(fst(y))  then  \{\}
if  bag-null(snd(y))  then  \{[fst(y)]\}
else  let  parts  \mleftarrow{}{}  bag-parts(eq;snd(y))
          in  bag-map(\mlambda{}L.[fst(y)  /  L];parts)
fi 
\mvdash{}  p  =  y
By
Latex:
((DVar  `p'  THEN  DVar  `y')
  THEN  All  Reduce
  THEN  RepeatFor  3  (BagMemberD  (-2)\mcdot{})
  THEN  RepeatFor  3  (BagMemberD  (-1)\mcdot{})\mcdot{})
Home
Index