Step
*
2
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. p1 : ℤ
5. True
6. left : tree(ℤ)
7. q2 : tree(ℤ)
8. ↑(ispolyform(left) (n - 1))
9. ↑(ispolyform(q2) n)
10. 0 < n
11. (0 + (1 + tree_size(left)) + tree_size(q2)) ≤ k
12. l : {l:ℤ List| n ≤ ||l||} 
13. tree_leaf(p1) ∈ polyform(n)
14. tree_node(left;q2) ∈ polyform(n)
15. left ∈ polyform(n - 1)
⊢ tree_node(add-polynom(polyconst(p1);left);q2)@l = (polyconst(p1)@l + tree_node(left;q2)@l) ∈ ℤ
BY
{ (Unfold `polyconst` 0
   THEN (InstHyp [⌜k - 1⌝;⌜n - 1⌝;⌜tree_leaf(p1)⌝;⌜left⌝] 2⋅ THENA Auto)
   THEN Subst' tree_size(tree_leaf(p1)) ~ 0 0
   THEN Auto
   THEN RepUR ``poly-int-val poly-val-fun`` 0
   THEN Fold `poly-val-fun` 0
   THEN Fold `poly-int-val` 0
   THEN RepeatFor 2 (DVar `l')
   THEN All Reduce
   THEN Try ((Assert ⌜False⌝⋅ THEN Complete (Auto)))
   THEN (CallByValueReduce 0 THENA Auto)
   THEN (InstHyp[⌜v⌝] (-1)⋅ THENA Auto)
   THEN HypSubst' (-1) 0) }
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. p1 : ℤ
5. True
6. left : tree(ℤ)
7. q2 : tree(ℤ)
8. ↑(ispolyform(left) (n - 1))
9. ↑(ispolyform(q2) n)
10. 0 < n
11. (0 + (1 + tree_size(left)) + tree_size(q2)) ≤ k
12. u : ℤ
13. v : ℤ List
14. n ≤ (||v|| + 1)
15. tree_leaf(p1) ∈ polyform(n)
16. tree_node(left;q2) ∈ polyform(n)
17. left ∈ polyform(n - 1)
18. ∀[l:{l:ℤ List| (n - 1) ≤ ||l||} ]. (add-polynom(tree_leaf(p1);left)@l = (tree_leaf(p1)@l + left@l) ∈ ℤ)
19. add-polynom(tree_leaf(p1);left)@v = (tree_leaf(p1)@v + left@v) ∈ ℤ
⊢ eval av = tree_leaf(p1)@v + left@v in
  eval bv = q2@[u / v] in
    if bv=0 then av else eval h = u in av + (h * bv)
= (p1 + eval av = left@v in eval bv = q2@[u / v] in   if bv=0 then av else eval h = u in av + (h * bv))
∈ ℤ
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.  p1  :  \mBbbZ{}
5.  True
6.  left  :  tree(\mBbbZ{})
7.  q2  :  tree(\mBbbZ{})
8.  \muparrow{}(ispolyform(left)  (n  -  1))
9.  \muparrow{}(ispolyform(q2)  n)
10.  0  <  n
11.  (0  +  (1  +  tree\_size(left))  +  tree\_size(q2))  \mleq{}  k
12.  l  :  \{l:\mBbbZ{}  List|  n  \mleq{}  ||l||\} 
13.  tree\_leaf(p1)  \mmember{}  polyform(n)
14.  tree\_node(left;q2)  \mmember{}  polyform(n)
15.  left  \mmember{}  polyform(n  -  1)
\mvdash{}  tree\_node(add-polynom(polyconst(p1);left);q2)@l  =  (polyconst(p1)@l  +  tree\_node(left;q2)@l)
By
Latex:
(Unfold  `polyconst`  0
  THEN  (InstHyp  [\mkleeneopen{}k  -  1\mkleeneclose{};\mkleeneopen{}n  -  1\mkleeneclose{};\mkleeneopen{}tree\_leaf(p1)\mkleeneclose{};\mkleeneopen{}left\mkleeneclose{}]  2\mcdot{}  THENA  Auto)
  THEN  Subst'  tree\_size(tree\_leaf(p1))  \msim{}  0  0
  THEN  Auto
  THEN  RepUR  ``poly-int-val  poly-val-fun``  0
  THEN  Fold  `poly-val-fun`  0
  THEN  Fold  `poly-int-val`  0
  THEN  RepeatFor  2  (DVar  `l')
  THEN  All  Reduce
  THEN  Try  ((Assert  \mkleeneopen{}False\mkleeneclose{}\mcdot{}  THEN  Complete  (Auto)))
  THEN  (CallByValueReduce  0  THENA  Auto)
  THEN  (InstHyp[\mkleeneopen{}v\mkleeneclose{}]  (-1)\mcdot{}  THENA  Auto)
  THEN  HypSubst'  (-1)  0)
Home
Index