Step
*
2
2
1
1
1
1
of Lemma
lookup_omral_times
1. g : OCMon
2. r : CDRng
3. qs : |omral(g;r)|
4. z : |g|
5. ∀r:CDRng. (r↓+gp ∈ IAbMonoid)
6. r↓+gp ∈ AbDMon
7. r↓xmn ∈ AbDMon
8. ps : |omral(g;r)|
9. ((ps ** qs)[z])
= (msFor{r↓+gp} kp ∈ dom(ps)
     msFor{r↓+gp} vp ∈ dom(qs)
       when (kp * vp) =b z.
         ((ps[kp]) * (qs[vp])))
∈ |r|
10. kp : |g|
11. vp : |r|
12. ↑before(kp;map(λkp.(fst(kp));ps))
13. ¬(vp = 0 ∈ |r|)
14. g ∈ DMon
⊢ (((<kp,vp>* qs) ++ (ps ** qs))[z])
= ((msFor{r↓+gp} y ∈ dom(qs)
      when (kp * y) =b z.
        (if kp =b kp then vp else ps[kp] fi  * (qs[y]))) 
   +r 
   (msFor{r↓+gp} x ∈ dom(ps)
      msFor{r↓+gp} y ∈ dom(qs)
        when (x * y) =b z.
          (if kp =b x then vp else ps[x] fi  * (qs[y]))))
∈ |r|
BY
{ % The ifthenelse reduction should be done 
  more intelligently. % 
((RWN 1 (LemmaC `ite_rw_true`) 0 
THENM RWH (LemmaC `ite_rw_false`) 0 
THENM RWH (LemmaC `lookup_omral_plus`) 0) THENA Auto) ⋅ }
1
.....rewrite subgoal..... 
1. g : OCMon
2. r : CDRng
3. qs : |omral(g;r)|
4. z : |g|
5. ∀r:CDRng. (r↓+gp ∈ IAbMonoid)
6. r↓+gp ∈ AbDMon
7. r↓xmn ∈ AbDMon
8. ps : |omral(g;r)|
9. ((ps ** qs)[z])
= (msFor{r↓+gp} kp ∈ dom(ps)
     msFor{r↓+gp} vp ∈ dom(qs)
       when (kp * vp) =b z.
         ((ps[kp]) * (qs[vp])))
∈ |r|
10. kp : |g|
11. vp : |r|
12. ↑before(kp;map(λkp.(fst(kp));ps))
13. ¬(vp = 0 ∈ |r|)
14. g ∈ DMon
15. x : |(g↓oset)|
16. ↑(x
∈b dom(ps))
17. y : |(g↓oset)|
18. ↑(y
∈b dom(qs))
⊢ ¬↑(kp =b x)
2
1. g : OCMon
2. r : CDRng
3. qs : |omral(g;r)|
4. z : |g|
5. ∀r:CDRng. (r↓+gp ∈ IAbMonoid)
6. r↓+gp ∈ AbDMon
7. r↓xmn ∈ AbDMon
8. ps : |omral(g;r)|
9. ((ps ** qs)[z])
= (msFor{r↓+gp} kp ∈ dom(ps)
     msFor{r↓+gp} vp ∈ dom(qs)
       when (kp * vp) =b z.
         ((ps[kp]) * (qs[vp])))
∈ |r|
10. kp : |g|
11. vp : |r|
12. ↑before(kp;map(λkp.(fst(kp));ps))
13. ¬(vp = 0 ∈ |r|)
14. g ∈ DMon
⊢ (((<kp,vp>* qs)[z]) +r ((ps ** qs)[z]))
= ((msFor{r↓+gp} y ∈ dom(qs)
      when (kp * y) =b z.
        (vp * (qs[y]))) 
   +r 
   (msFor{r↓+gp} x ∈ dom(ps)
      msFor{r↓+gp} y ∈ dom(qs)
        when (x * y) =b z.
          ((ps[x]) * (qs[y]))))
∈ |r|
Latex:
Latex:
1.  g  :  OCMon
2.  r  :  CDRng
3.  qs  :  |omral(g;r)|
4.  z  :  |g|
5.  \mforall{}r:CDRng.  (r\mdownarrow{}+gp  \mmember{}  IAbMonoid)
6.  r\mdownarrow{}+gp  \mmember{}  AbDMon
7.  r\mdownarrow{}xmn  \mmember{}  AbDMon
8.  ps  :  |omral(g;r)|
9.  ((ps  **  qs)[z])
=  (msFor\{r\mdownarrow{}+gp\}  kp  \mmember{}  dom(ps)
          msFor\{r\mdownarrow{}+gp\}  vp  \mmember{}  dom(qs)
              when  (kp  *  vp)  =\msubb{}  z.
                  ((ps[kp])  *  (qs[vp])))
10.  kp  :  |g|
11.  vp  :  |r|
12.  \muparrow{}before(kp;map(\mlambda{}kp.(fst(kp));ps))
13.  \mneg{}(vp  =  0)
14.  g  \mmember{}  DMon
\mvdash{}  (((<kp,vp>*  qs)  ++  (ps  **  qs))[z])
=  ((msFor\{r\mdownarrow{}+gp\}  y  \mmember{}  dom(qs)
            when  (kp  *  y)  =\msubb{}  z.
                (if  kp  =\msubb{}  kp  then  vp  else  ps[kp]  fi    *  (qs[y]))) 
      +r 
      (msFor\{r\mdownarrow{}+gp\}  x  \mmember{}  dom(ps)
            msFor\{r\mdownarrow{}+gp\}  y  \mmember{}  dom(qs)
                when  (x  *  y)  =\msubb{}  z.
                    (if  kp  =\msubb{}  x  then  vp  else  ps[x]  fi    *  (qs[y]))))
By
Latex:
\%  The  ifthenelse  reduction  should  be  done 
    more  intelligently.  \% 
((RWN  1  (LemmaC  `ite\_rw\_true`)  0 
THENM  RWH  (LemmaC  `ite\_rw\_false`)  0 
THENM  RWH  (LemmaC  `lookup\_omral\_plus`)  0)  THENA  Auto)  \mcdot{}
Home
Index