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