Step * 2 2 1 of Lemma add-poly-prepend-sq1

.....truecase..... 
1. : ℤ × (ℤ List)
2. (ℤ × (ℤ List)) List
3. ∀[q,l:(ℤ × (ℤ List)) List].  (add-ipoly-prepend(v;q;l) rev(l) add-ipoly(v;q))
4. u1 : ℤ × (ℤ List)
5. v1 (ℤ × (ℤ List)) List
6. ∀[l:(ℤ × (ℤ List)) List]. (add-ipoly-prepend([u v];v1;l) rev(l) add-ipoly([u v];v1))
7. (ℤ × (ℤ List)) List
8. ∀u,u':ℤ × (ℤ List).  (imonomial-le(u;u') ∈ 𝔹)
9. ∀p,q:(ℤ × (ℤ List)) List.  (add-ipoly(p;q) ∈ (ℤ × (ℤ List)) List)
10. ↑imonomial-le(u;u1)
11. ↑imonomial-le(u1;u)
⊢ let cp,vs 
  in eval cp (fst(u1)) in
     eval l' if c=0  then l  else [<c, vs> l] in
       add-ipoly-prepend(v;v1;l') rev(l) let x ⟵ add-ipoly(v;v1)
                                             in let cp,vs 
                                                in eval cp (fst(u1)) in
                                                   if c=0  then x  else [<c, vs> x]
BY
(DVar `u'
   THEN DVar `u1'
   THEN Reduce 0
   THEN (Assert add-ipoly(v;v1) ∈ (ℤ × (ℤ List)) List BY
               Auto)
   THEN RepeatFor ((CallByValueReduce THENA Auto))) }

1
1. u2 : ℤ
2. u3 : ℤ List
3. (ℤ × (ℤ List)) List
4. ∀[q,l:(ℤ × (ℤ List)) List].  (add-ipoly-prepend(v;q;l) rev(l) add-ipoly(v;q))
5. u4 : ℤ
6. u5 : ℤ List
7. v1 (ℤ × (ℤ List)) List
8. ∀[l:(ℤ × (ℤ List)) List]. (add-ipoly-prepend([<u2, u3> v];v1;l) rev(l) add-ipoly([<u2, u3> v];v1))
9. (ℤ × (ℤ List)) List
10. ∀u,u':ℤ × (ℤ List).  (imonomial-le(u;u') ∈ 𝔹)
11. ∀p,q:(ℤ × (ℤ List)) List.  (add-ipoly(p;q) ∈ (ℤ × (ℤ List)) List)
12. ↑imonomial-le(<u2, u3>;<u4, u5>)
13. ↑imonomial-le(<u4, u5>;<u2, u3>)
14. add-ipoly(v;v1) ∈ (ℤ × (ℤ List)) List
⊢ add-ipoly-prepend(v;v1;if u2 u4=0  then l  else [<u2 u4, u3> l]) rev(l) if u2 u4=0
                                                                                       then add-ipoly(v;v1)
                                                                                       else [<u2 u4, u3> 
                                                                                             add-ipoly(v;v1)]


Latex:


Latex:
.....truecase..... 
1.  u  :  \mBbbZ{}  \mtimes{}  (\mBbbZ{}  List)
2.  v  :  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List
3.  \mforall{}[q,l:(\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List].    (add-ipoly-prepend(v;q;l)  \msim{}  rev(l)  +  add-ipoly(v;q))
4.  u1  :  \mBbbZ{}  \mtimes{}  (\mBbbZ{}  List)
5.  v1  :  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List
6.  \mforall{}[l:(\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List].  (add-ipoly-prepend([u  /  v];v1;l)  \msim{}  rev(l)  +  add-ipoly([u  /  v];v1))
7.  l  :  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List
8.  \mforall{}u,u':\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List).    (imonomial-le(u;u')  \mmember{}  \mBbbB{})
9.  \mforall{}p,q:(\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List.    (add-ipoly(p;q)  \mmember{}  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List)
10.  \muparrow{}imonomial-le(u;u1)
11.  \muparrow{}imonomial-le(u1;u)
\mvdash{}  let  cp,vs  =  u 
    in  eval  c  =  cp  +  (fst(u1))  in
          eval  l'  =  if  c=0    then  l    else  [<c,  vs>  /  l]  in
              add-ipoly-prepend(v;v1;l')  \msim{}  rev(l)  +  let  x  \mleftarrow{}{}  add-ipoly(v;v1)
                                                                                          in  let  cp,vs  =  u 
                                                                                                in  eval  c  =  cp  +  (fst(u1))  in
                                                                                                      if  c=0    then  x    else  [<c,  vs>  /  x]


By


Latex:
(DVar  `u'
  THEN  DVar  `u1'
  THEN  Reduce  0
  THEN  (Assert  add-ipoly(v;v1)  \mmember{}  (\mBbbZ{}  \mtimes{}  (\mBbbZ{}  List))  List  BY
                          Auto)
  THEN  RepeatFor  2  ((CallByValueReduce  0  THENA  Auto)))




Home Index