Step
*
4
of Lemma
mul-polynom-val
1. k : ℕ
2. ∀k:ℕk
     ∀[n:ℕ]. ∀[p,q:polyform(n)].
       (((tree_size(p) + tree_size(q)) ≤ k) 
⇒ (∀[l:{l:ℤ List| n ≤ ||l||} ]. (mul-polynom(p;q)@l = (p@l * q@l) ∈ ℤ)))
3. n : ℕ
4. left : tree(ℤ)
5. p2 : tree(ℤ)
6. ↑(((ispolyform(left) (n - 1)) ∧b (ispolyform(p2) n)) ∧b 0 <z n)
7. l1 : tree(ℤ)
8. q2 : tree(ℤ)
9. ↑(((ispolyform(l1) (n - 1)) ∧b (ispolyform(q2) n)) ∧b 0 <z n)
10. (((1 + tree_size(left)) + tree_size(p2)) + (1 + tree_size(l1)) + tree_size(q2)) ≤ k
11. l : {l:ℤ List| n ≤ ||l||} 
⊢ eval aa = mul-polynom(left;l1) in
  eval ab = mul-polynom(tree_node(left;polyconst(0));q2) in
  eval ba = mul-polynom(p2;tree_node(l1;polyconst(0))) in
  eval bb = mul-polynom(p2;q2) in
  eval mid = add-polynom(ab;ba) in
  eval bb' = add-polynom(mid;tree_node(polyconst(0);bb)) in
    tree_node(aa;bb')@l
= (tree_node(left;p2)@l * tree_node(l1;q2)@l)
∈ ℤ
BY
{ (((RW assert_pushdownC (-6) THENA Auto)
    THEN (RW assert_pushdownC (-3) THENA Auto)
    THEN (Assert ⌜left ∈ polyform(n - 1)⌝⋅ BY
                Auto)
    THEN (Assert ⌜l1 ∈ polyform(n - 1)⌝⋅ BY
                Auto)
    THEN (Assert ⌜p2 ∈ polyform(n)⌝⋅ BY
                Auto)
    THEN (Assert ⌜q2 ∈ polyform(n)⌝⋅ BY
                Auto))
   THEN RepeatFor 2 (DVar `l')
   THEN All Reduce
   THEN Try ((Assert ⌜False⌝⋅ THEN Complete (Auto)))) }
1
1. k : ℕ
2. ∀k:ℕk
     ∀[n:ℕ]. ∀[p,q:polyform(n)].
       (((tree_size(p) + tree_size(q)) ≤ k) 
⇒ (∀[l:{l:ℤ List| n ≤ ||l||} ]. (mul-polynom(p;q)@l = (p@l * q@l) ∈ ℤ)))
3. n : ℕ
4. left : tree(ℤ)
5. p2 : tree(ℤ)
6. ((↑(ispolyform(left) (n - 1))) ∧ (↑(ispolyform(p2) n))) ∧ 0 < n
7. l1 : tree(ℤ)
8. q2 : tree(ℤ)
9. ((↑(ispolyform(l1) (n - 1))) ∧ (↑(ispolyform(q2) n))) ∧ 0 < n
10. (((1 + tree_size(left)) + tree_size(p2)) + (1 + tree_size(l1)) + tree_size(q2)) ≤ k
11. u : ℤ
12. v : ℤ List
13. n ≤ (||v|| + 1)
14. left ∈ polyform(n - 1)
15. l1 ∈ polyform(n - 1)
16. p2 ∈ polyform(n)
17. q2 ∈ polyform(n)
⊢ eval aa = mul-polynom(left;l1) in
  eval ab = mul-polynom(tree_node(left;polyconst(0));q2) in
  eval ba = mul-polynom(p2;tree_node(l1;polyconst(0))) in
  eval bb = mul-polynom(p2;q2) in
  eval mid = add-polynom(ab;ba) in
  eval bb' = add-polynom(mid;tree_node(polyconst(0);bb)) in
    tree_node(aa;bb')@[u / v]
= (tree_node(left;p2)@[u / v] * tree_node(l1;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||\}  ].  (mul-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))  \mwedge{}\msubb{}  (ispolyform(p2)  n))  \mwedge{}\msubb{}  0  <z  n)
7.  l1  :  tree(\mBbbZ{})
8.  q2  :  tree(\mBbbZ{})
9.  \muparrow{}(((ispolyform(l1)  (n  -  1))  \mwedge{}\msubb{}  (ispolyform(q2)  n))  \mwedge{}\msubb{}  0  <z  n)
10.  (((1  +  tree\_size(left))  +  tree\_size(p2))  +  (1  +  tree\_size(l1))  +  tree\_size(q2))  \mleq{}  k
11.  l  :  \{l:\mBbbZ{}  List|  n  \mleq{}  ||l||\} 
\mvdash{}  eval  aa  =  mul-polynom(left;l1)  in
    eval  ab  =  mul-polynom(tree\_node(left;polyconst(0));q2)  in
    eval  ba  =  mul-polynom(p2;tree\_node(l1;polyconst(0)))  in
    eval  bb  =  mul-polynom(p2;q2)  in
    eval  mid  =  add-polynom(ab;ba)  in
    eval  bb'  =  add-polynom(mid;tree\_node(polyconst(0);bb))  in
        tree\_node(aa;bb')@l
=  (tree\_node(left;p2)@l  *  tree\_node(l1;q2)@l)
By
Latex:
(((RW  assert\_pushdownC  (-6)  THENA  Auto)
    THEN  (RW  assert\_pushdownC  (-3)  THENA  Auto)
    THEN  (Assert  \mkleeneopen{}left  \mmember{}  polyform(n  -  1)\mkleeneclose{}\mcdot{}  BY
                            Auto)
    THEN  (Assert  \mkleeneopen{}l1  \mmember{}  polyform(n  -  1)\mkleeneclose{}\mcdot{}  BY
                            Auto)
    THEN  (Assert  \mkleeneopen{}p2  \mmember{}  polyform(n)\mkleeneclose{}\mcdot{}  BY
                            Auto)
    THEN  (Assert  \mkleeneopen{}q2  \mmember{}  polyform(n)\mkleeneclose{}\mcdot{}  BY
                            Auto))
  THEN  RepeatFor  2  (DVar  `l')
  THEN  All  Reduce
  THEN  Try  ((Assert  \mkleeneopen{}False\mkleeneclose{}\mcdot{}  THEN  Complete  (Auto))))
Home
Index