Step
*
4
1
2
1
1
1
of Lemma
add-polynom-val
1. k : ℕ
2. ∀k:ℕk
     ∀[n:ℕ]. ∀[p,q:polyform(n)].
       (((tree_size(p) + tree_size(q)) ≤ k) 
⇒ (∀[l:{l:ℤ List| n ≤ ||l||} ]. (add-polynom(p;q)@l = (p@l + q@l) ∈ ℤ)))
3. n : ℕ
4. left : tree(ℤ)
5. p2 : tree(ℤ)
6. ↑(ispolyform(left) (n - 1))
7. ↑(ispolyform(p2) n)
8. 0 < n
9. l1 : tree(ℤ)
10. q2 : tree(ℤ)
11. ↑(ispolyform(l1) (n - 1))
12. ↑(ispolyform(q2) n)
13. 0 < n
14. (((1 + tree_size(left)) + tree_size(p2)) + (1 + tree_size(l1)) + tree_size(q2)) ≤ k
15. u : ℤ
16. v : ℤ List
17. n ≤ (||v|| + 1)
18. tree_node(left;p2) ∈ polyform(n)
19. tree_node(l1;q2) ∈ polyform(n)
20. left ∈ polyform(n - 1)
21. p2 ∈ polyform(n)
22. q2 ∈ polyform(n)
23. l1 ∈ polyform(n - 1)
24. ∀[l:{l:ℤ List| (n - 1) ≤ ||l||} ]. (add-polynom(left;l1)@l = (left@l + l1@l) ∈ ℤ)
25. ∀[l:{l:ℤ List| n ≤ ||l||} ]. (add-polynom(p2;q2)@l = (p2@l + q2@l) ∈ ℤ)
26. tree_node(add-polynom(left;l1);add-polynom(p2;q2))@[u / v]
= (tree_node(left;p2)@[u / v] + tree_node(l1;q2)@[u / v])
∈ ℤ
27. ↑poly-zero(add-polynom(p2;q2))
28. ↑poly-int(add-polynom(left;l1))
29. 0 = (p2@[u / v] + q2@[u / v]) ∈ ℤ
⊢ add-polynom(left;l1)@[u / v]
= (eval t = v in
   eval av = left@t in
   eval bv = p2@[u / v] in
     if bv=0 then av else eval h = u in av + (h * bv)
  + eval t = v in
    eval av = l1@t in
    eval bv = q2@[u / v] in
      if bv=0 then av else eval h = u in av + (h * bv))
∈ ℤ
BY
{ (RepeatFor 4 ((CallByValueReduce 0 THENA Auto))
   THEN (Subst' add-polynom(left;l1)@[u / v] ~ add-polynom(left;l1)@v 0 THENA (RWO "poly-int-value" 0 THEN Auto))
   ) }
1
1. k : ℕ
2. ∀k:ℕk
     ∀[n:ℕ]. ∀[p,q:polyform(n)].
       (((tree_size(p) + tree_size(q)) ≤ k) 
⇒ (∀[l:{l:ℤ List| n ≤ ||l||} ]. (add-polynom(p;q)@l = (p@l + q@l) ∈ ℤ)))
3. n : ℕ
4. left : tree(ℤ)
5. p2 : tree(ℤ)
6. ↑(ispolyform(left) (n - 1))
7. ↑(ispolyform(p2) n)
8. 0 < n
9. l1 : tree(ℤ)
10. q2 : tree(ℤ)
11. ↑(ispolyform(l1) (n - 1))
12. ↑(ispolyform(q2) n)
13. 0 < n
14. (((1 + tree_size(left)) + tree_size(p2)) + (1 + tree_size(l1)) + tree_size(q2)) ≤ k
15. u : ℤ
16. v : ℤ List
17. n ≤ (||v|| + 1)
18. tree_node(left;p2) ∈ polyform(n)
19. tree_node(l1;q2) ∈ polyform(n)
20. left ∈ polyform(n - 1)
21. p2 ∈ polyform(n)
22. q2 ∈ polyform(n)
23. l1 ∈ polyform(n - 1)
24. ∀[l:{l:ℤ List| (n - 1) ≤ ||l||} ]. (add-polynom(left;l1)@l = (left@l + l1@l) ∈ ℤ)
25. ∀[l:{l:ℤ List| n ≤ ||l||} ]. (add-polynom(p2;q2)@l = (p2@l + q2@l) ∈ ℤ)
26. tree_node(add-polynom(left;l1);add-polynom(p2;q2))@[u / v]
= (tree_node(left;p2)@[u / v] + tree_node(l1;q2)@[u / v])
∈ ℤ
27. ↑poly-zero(add-polynom(p2;q2))
28. ↑poly-int(add-polynom(left;l1))
29. 0 = (p2@[u / v] + q2@[u / v]) ∈ ℤ
⊢ add-polynom(left;l1)@v
= (if p2@[u / v]=0 then left@v else (left@v + (u * p2@[u / v]))
  + if q2@[u / v]=0 then l1@v else (l1@v + (u * q2@[u / v])))
∈ ℤ
Latex:
Latex:
1.  k  :  \mBbbN{}
2.  \mforall{}k:\mBbbN{}k
          \mforall{}[n:\mBbbN{}].  \mforall{}[p,q:polyform(n)].
              (((tree\_size(p)  +  tree\_size(q))  \mleq{}  k)
              {}\mRightarrow{}  (\mforall{}[l:\{l:\mBbbZ{}  List|  n  \mleq{}  ||l||\}  ].  (add-polynom(p;q)@l  =  (p@l  +  q@l))))
3.  n  :  \mBbbN{}
4.  left  :  tree(\mBbbZ{})
5.  p2  :  tree(\mBbbZ{})
6.  \muparrow{}(ispolyform(left)  (n  -  1))
7.  \muparrow{}(ispolyform(p2)  n)
8.  0  <  n
9.  l1  :  tree(\mBbbZ{})
10.  q2  :  tree(\mBbbZ{})
11.  \muparrow{}(ispolyform(l1)  (n  -  1))
12.  \muparrow{}(ispolyform(q2)  n)
13.  0  <  n
14.  (((1  +  tree\_size(left))  +  tree\_size(p2))  +  (1  +  tree\_size(l1))  +  tree\_size(q2))  \mleq{}  k
15.  u  :  \mBbbZ{}
16.  v  :  \mBbbZ{}  List
17.  n  \mleq{}  (||v||  +  1)
18.  tree\_node(left;p2)  \mmember{}  polyform(n)
19.  tree\_node(l1;q2)  \mmember{}  polyform(n)
20.  left  \mmember{}  polyform(n  -  1)
21.  p2  \mmember{}  polyform(n)
22.  q2  \mmember{}  polyform(n)
23.  l1  \mmember{}  polyform(n  -  1)
24.  \mforall{}[l:\{l:\mBbbZ{}  List|  (n  -  1)  \mleq{}  ||l||\}  ].  (add-polynom(left;l1)@l  =  (left@l  +  l1@l))
25.  \mforall{}[l:\{l:\mBbbZ{}  List|  n  \mleq{}  ||l||\}  ].  (add-polynom(p2;q2)@l  =  (p2@l  +  q2@l))
26.  tree\_node(add-polynom(left;l1);add-polynom(p2;q2))@[u  /  v]
=  (tree\_node(left;p2)@[u  /  v]  +  tree\_node(l1;q2)@[u  /  v])
27.  \muparrow{}poly-zero(add-polynom(p2;q2))
28.  \muparrow{}poly-int(add-polynom(left;l1))
29.  0  =  (p2@[u  /  v]  +  q2@[u  /  v])
\mvdash{}  add-polynom(left;l1)@[u  /  v]
=  (eval  t  =  v  in
      eval  av  =  left@t  in
      eval  bv  =  p2@[u  /  v]  in
          if  bv=0  then  av  else  eval  h  =  u  in  av  +  (h  *  bv)
    +  eval  t  =  v  in
        eval  av  =  l1@t  in
        eval  bv  =  q2@[u  /  v]  in
            if  bv=0  then  av  else  eval  h  =  u  in  av  +  (h  *  bv))
By
Latex:
(RepeatFor  4  ((CallByValueReduce  0  THENA  Auto))
  THEN  (Subst'  add-polynom(left;l1)@[u  /  v]  \msim{}  add-polynom(left;l1)@v  0
              THENA  (RWO  "poly-int-value"  0  THEN  Auto)
              )
  )
Home
Index