Step * 2 2 2 1 of Lemma add-ipoly-req


1. : ℤ
2. 0 < n
3. ∀p,q:iMonomial() List.
     (||p|| ||q|| <  ipolynomial-term(add-ipoly(p;q)) ≡ ipolynomial-term(p) (+) ipolynomial-term(q))
4. iMonomial()
5. iMonomial() List
6. u1 iMonomial()
7. v1 iMonomial() List
8. ||[u v]|| ||[u1 v1]|| < n
9. ↑imonomial-le(u;u1)
⊢ ipolynomial-term(if imonomial-le(u1;u)
then let x ⟵ add-ipoly(v;v1)
     in let cp,vs 
        in eval cp (fst(u1)) in
           if c=0 then else [<c, vs> x]
else let x ⟵ add-ipoly(v;[u1 v1])
     in [u x]
fi ) ≡ ipolynomial-term([u v]) (+) ipolynomial-term([u1 v1])
BY
(((InstLemma `add-ipoly_wf1` [⌜v⌝;⌜v1⌝]⋅ THEN Auto) THEN InstLemma `add-ipoly_wf1` [⌜v⌝;⌜[u1 v1]⌝]⋅ THEN Auto)
   THEN (CallByValueReduce THENA Auto)
   THEN AutoSplit) }

1
1. : ℤ
2. 0 < n
3. ∀p,q:iMonomial() List.
     (||p|| ||q|| <  ipolynomial-term(add-ipoly(p;q)) ≡ ipolynomial-term(p) (+) ipolynomial-term(q))
4. iMonomial()
5. iMonomial() List
6. u1 iMonomial()
7. v1 iMonomial() List
8. ||[u v]|| ||[u1 v1]|| < n
9. ↑imonomial-le(u;u1)
10. add-ipoly(v;v1) ∈ iMonomial() List
11. add-ipoly(v;[u1 v1]) ∈ iMonomial() List
12. ↑imonomial-le(u1;u)
⊢ ipolynomial-term(let cp,vs 
                   in eval cp (fst(u1)) in
                      if c=0 then add-ipoly(v;v1) else [<c, vs> add-ipoly(v;v1)]) ≡ ipolynomial-term([u v])
(+) ipolynomial-term([u1 v1])

2
1. : ℤ
2. 0 < n
3. ∀p,q:iMonomial() List.
     (||p|| ||q|| <  ipolynomial-term(add-ipoly(p;q)) ≡ ipolynomial-term(p) (+) ipolynomial-term(q))
4. iMonomial()
5. iMonomial() List
6. u1 iMonomial()
7. ¬↑imonomial-le(u1;u)
8. v1 iMonomial() List
9. ||[u v]|| ||[u1 v1]|| < n
10. ↑imonomial-le(u;u1)
11. add-ipoly(v;v1) ∈ iMonomial() List
12. add-ipoly(v;[u1 v1]) ∈ iMonomial() List
⊢ ipolynomial-term([u add-ipoly(v;[u1 v1])]) ≡ ipolynomial-term([u v]) (+) ipolynomial-term([u1 v1])


Latex:


Latex:

1.  n  :  \mBbbZ{}
2.  0  <  n
3.  \mforall{}p,q:iMonomial()  List.
          (||p||  +  ||q||  <  n  -  1
          {}\mRightarrow{}  ipolynomial-term(add-ipoly(p;q))  \mequiv{}  ipolynomial-term(p)  (+)  ipolynomial-term(q))
4.  u  :  iMonomial()
5.  v  :  iMonomial()  List
6.  u1  :  iMonomial()
7.  v1  :  iMonomial()  List
8.  ||[u  /  v]||  +  ||[u1  /  v1]||  <  n
9.  \muparrow{}imonomial-le(u;u1)
\mvdash{}  ipolynomial-term(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  )  \mequiv{}  ipolynomial-term([u  /  v])  (+)  ipolynomial-term([u1  /  v1])


By


Latex:
(((InstLemma  `add-ipoly\_wf1`  [\mkleeneopen{}v\mkleeneclose{};\mkleeneopen{}v1\mkleeneclose{}]\mcdot{}  THEN  Auto)
    THEN  InstLemma  `add-ipoly\_wf1`  [\mkleeneopen{}v\mkleeneclose{};\mkleeneopen{}[u1  /  v1]\mkleeneclose{}]\mcdot{}
    THEN  Auto)
  THEN  (CallByValueReduce  0  THENA  Auto)
  THEN  AutoSplit)




Home Index