Step
*
2
2
of Lemma
add-ipoly-ringeq
1. r : Rng
2. n : ℤ
3. 0 < n
4. ∀p,q:iMonomial() List.
     (||p|| + ||q|| < n - 1 
⇒ ipolynomial-term(add-ipoly(p;q)) ≡ ipolynomial-term(p) (+) ipolynomial-term(q))
5. u : iMonomial()
6. v : iMonomial() List
7. q : iMonomial() List
8. ||[u / v]|| + ||q|| < n
⊢ ipolynomial-term(if null(q)
then [u / v]
else let q1,qs = q 
     in if imonomial-le(u;q1)
        then if imonomial-le(q1;u)
             then let x ⟵ add-ipoly(v;qs)
                  in let cp,vs = u 
                     in eval c = cp + (fst(q1)) in
                        if c=0 then x else [<c, vs> / x]
             else let x ⟵ add-ipoly(v;[q1 / qs])
                  in [u / x]
             fi 
        else let x ⟵ add-ipoly([u / v];qs)
             in [q1 / x]
        fi 
fi ) ≡ ipolynomial-term([u / v]) (+) ipolynomial-term(q)
BY
{ (DVar `q' THEN Reduce 0) }
1
1. r : Rng
2. n : ℤ
3. 0 < n
4. ∀p,q:iMonomial() List.
     (||p|| + ||q|| < n - 1 
⇒ ipolynomial-term(add-ipoly(p;q)) ≡ ipolynomial-term(p) (+) ipolynomial-term(q))
5. u : iMonomial()
6. v : iMonomial() List
7. ||[u / v]|| + ||[]|| < n
⊢ ipolynomial-term([u / v]) ≡ ipolynomial-term([u / v]) (+) ipolynomial-term([])
2
1. r : Rng
2. n : ℤ
3. 0 < n
4. ∀p,q:iMonomial() List.
     (||p|| + ||q|| < n - 1 
⇒ ipolynomial-term(add-ipoly(p;q)) ≡ ipolynomial-term(p) (+) ipolynomial-term(q))
5. u : iMonomial()
6. v : iMonomial() List
7. u1 : iMonomial()
8. v1 : iMonomial() List
9. ||[u / v]|| + ||[u1 / v1]|| < n
⊢ ipolynomial-term(if imonomial-le(u;u1)
then 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 
else let x ⟵ add-ipoly([u / v];v1)
     in [u1 / x]
fi ) ≡ ipolynomial-term([u / v]) (+) ipolynomial-term([u1 / v1])
Latex:
Latex:
1.  r  :  Rng
2.  n  :  \mBbbZ{}
3.  0  <  n
4.  \mforall{}p,q:iMonomial()  List.
          (||p||  +  ||q||  <  n  -  1
          {}\mRightarrow{}  ipolynomial-term(add-ipoly(p;q))  \mequiv{}  ipolynomial-term(p)  (+)  ipolynomial-term(q))
5.  u  :  iMonomial()
6.  v  :  iMonomial()  List
7.  q  :  iMonomial()  List
8.  ||[u  /  v]||  +  ||q||  <  n
\mvdash{}  ipolynomial-term(if  null(q)
then  [u  /  v]
else  let  q1,qs  =  q 
          in  if  imonomial-le(u;q1)
                then  if  imonomial-le(q1;u)
                          then  let  x  \mleftarrow{}{}  add-ipoly(v;qs)
                                    in  let  cp,vs  =  u 
                                          in  eval  c  =  cp  +  (fst(q1))  in
                                                if  c=0  then  x  else  [<c,  vs>  /  x]
                          else  let  x  \mleftarrow{}{}  add-ipoly(v;[q1  /  qs])
                                    in  [u  /  x]
                          fi 
                else  let  x  \mleftarrow{}{}  add-ipoly([u  /  v];qs)
                          in  [q1  /  x]
                fi 
fi  )  \mequiv{}  ipolynomial-term([u  /  v])  (+)  ipolynomial-term(q)
By
Latex:
(DVar  `q'  THEN  Reduce  0)
Home
Index