Step
*
1
1
2
2
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))
⊢ bag-no-repeats(bag(T) List+;⋃p∈bag-partitions(eq;u.v).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 )
BY
{ (Using [`T1',⌜{p:bag(T) × bag(T)| p ↓∈ bag-partitions(eq;u.v)} ⌝;`eq1',
   ⌜product-deq(bag(T);bag(T);bag-deq(eq);bag-deq(eq))⌝; `eq2', ⌜list-deq(bag-deq(eq))⌝
   ] (BLemma `bag-combine-no-repeats`)⋅
   THEN Auto
   THEN Try ((CallByValueReduce 0 THEN Complete (Auto)))) }
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. #(u.v) ≤ n
9. bag-no-repeats(bag(T) List+;bag-parts(eq;v))
10. p : {p:bag(T) × bag(T)| p ↓∈ bag-partitions(eq;u.v)} 
11. y : {p:bag(T) × bag(T)| p ↓∈ bag-partitions(eq;u.v)} 
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 ∈ {p:bag(T) × bag(T)| p ↓∈ bag-partitions(eq;u.v)} 
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. #(u.v) ≤ n
9. bag-no-repeats(bag(T) List+;bag-parts(eq;v))
10. ∀p,y:{p:bag(T) × bag(T)| p ↓∈ bag-partitions(eq;u.v)} . ∀z:bag(T) List+.
      (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 
      
⇒ 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 ∈ {p:bag(T) × bag(T)| p ↓∈ bag-partitions(eq;u.v)} ))
11. p : {p:bag(T) × bag(T)| p ↓∈ bag-partitions(eq;u.v)} 
⊢ bag-no-repeats(bag(T) List+;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 )
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. #(u.v) ≤ n
9. bag-no-repeats(bag(T) List+;bag-parts(eq;v))
⊢ bag-no-repeats({p:bag(T) × bag(T)| p ↓∈ bag-partitions(eq;u.v)} bag-partitions(eq;u.v))
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))
\mvdash{}  bag-no-repeats(bag(T)  List\msupplus{};\mcup{}p\mmember{}bag-partitions(eq;u.v).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  )
By
Latex:
(Using  [`T1',\mkleeneopen{}\{p:bag(T)  \mtimes{}  bag(T)|  p  \mdownarrow{}\mmember{}  bag-partitions(eq;u.v)\}  \mkleeneclose{};`eq1',
  \mkleeneopen{}product-deq(bag(T);bag(T);bag-deq(eq);bag-deq(eq))\mkleeneclose{};  `eq2',  \mkleeneopen{}list-deq(bag-deq(eq))\mkleeneclose{}
  ]  (BLemma  `bag-combine-no-repeats`)\mcdot{}
  THEN  Auto
  THEN  Try  ((CallByValueReduce  0  THEN  Complete  (Auto))))
Home
Index