Step * 2 2 1 2 1 of Lemma add-ipoly_wf1


1. iMonomial()
2. iMonomial() List
3. ∀[q:iMonomial() List]. (add-ipoly(v;q) ∈ iMonomial() List)
4. u1 iMonomial()
5. ¬↑imonomial-le(u;u1)
6. u2 iMonomial()
7. v2 iMonomial() List
8. add-ipoly([u v];v2) ∈ iMonomial() List
9. add-ipoly(v;v2) ∈ iMonomial() List
10. add-ipoly(v;[u2 v2]) ∈ iMonomial() List
⊢ if imonomial-le(u;u2)
  then if imonomial-le(u2;u)
       then let cp,vs 
            in eval cp (fst(u2)) in
               if c=0 then add-ipoly(v;v2) else [<c, vs> add-ipoly(v;v2)]
       else [u add-ipoly(v;[u2 v2])]
       fi 
  else [u2 add-ipoly([u v];v2)]
  fi  ∈ iMonomial() List
BY
(RepeatFor (AutoSplit) THEN Auto THEN GenConclAtAddrType ⌜iMonomial() List⌝ [1]⋅ THEN Auto) }


Latex:


Latex:

1.  u  :  iMonomial()
2.  v  :  iMonomial()  List
3.  \mforall{}[q:iMonomial()  List].  (add-ipoly(v;q)  \mmember{}  iMonomial()  List)
4.  u1  :  iMonomial()
5.  \mneg{}\muparrow{}imonomial-le(u;u1)
6.  u2  :  iMonomial()
7.  v2  :  iMonomial()  List
8.  add-ipoly([u  /  v];v2)  \mmember{}  iMonomial()  List
9.  add-ipoly(v;v2)  \mmember{}  iMonomial()  List
10.  add-ipoly(v;[u2  /  v2])  \mmember{}  iMonomial()  List
\mvdash{}  if  imonomial-le(u;u2)
    then  if  imonomial-le(u2;u)
              then  let  cp,vs  =  u 
                        in  eval  c  =  cp  +  (fst(u2))  in
                              if  c=0  then  add-ipoly(v;v2)  else  [<c,  vs>  /  add-ipoly(v;v2)]
              else  [u  /  add-ipoly(v;[u2  /  v2])]
              fi 
    else  [u2  /  add-ipoly([u  /  v];v2)]
    fi    \mmember{}  iMonomial()  List


By


Latex:
(RepeatFor  2  (AutoSplit)  THEN  Auto  THEN  GenConclAtAddrType  \mkleeneopen{}iMonomial()  List\mkleeneclose{}  [1]\mcdot{}  THEN  Auto)




Home Index