Step
*
2
2
1
2
of Lemma
add-ipoly_wf1
1. u : iMonomial()
2. v : 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
⊢ if imonomial-le(u;u2)
  then if imonomial-le(u2;u)
       then let x ⟵ add-ipoly(v;v2)
            in let cp,vs = u 
               in eval c = cp + (fst(u2)) in
                  if c=0 then x else [<c, vs> / x]
       else let x ⟵ add-ipoly(v;[u2 / v2])
            in [u / x]
       fi 
  else let x ⟵ add-ipoly([u / v];v2)
       in [u2 / x]
  fi  ∈ iMonomial() List
BY
{ ((Assert add-ipoly(v;v2) ∈ iMonomial() List BY
          Auto)
   THEN (Assert add-ipoly(v;[u2 / v2]) ∈ iMonomial() List BY
               Auto)
   THEN (CallByValueReduce 0 THENA Auto)) }
1
1. u : iMonomial()
2. v : 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 = 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  ∈ iMonomial() List
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
\mvdash{}  if  imonomial-le(u;u2)
    then  if  imonomial-le(u2;u)
              then  let  x  \mleftarrow{}{}  add-ipoly(v;v2)
                        in  let  cp,vs  =  u 
                              in  eval  c  =  cp  +  (fst(u2))  in
                                    if  c=0  then  x  else  [<c,  vs>  /  x]
              else  let  x  \mleftarrow{}{}  add-ipoly(v;[u2  /  v2])
                        in  [u  /  x]
              fi 
    else  let  x  \mleftarrow{}{}  add-ipoly([u  /  v];v2)
              in  [u2  /  x]
    fi    \mmember{}  iMonomial()  List
By
Latex:
((Assert  add-ipoly(v;v2)  \mmember{}  iMonomial()  List  BY
                Auto)
  THEN  (Assert  add-ipoly(v;[u2  /  v2])  \mmember{}  iMonomial()  List  BY
                          Auto)
  THEN  (CallByValueReduce  0  THENA  Auto))
Home
Index