Step
*
4
of Lemma
mul-polynom_wf
1. k : ℕ
2. ∀k:ℕk. ∀[n:ℕ]. ∀[p,q:polyform(n)]. (((tree_size(p) + tree_size(q)) ≤ k)
⇒ (mul-polynom(p;q) ∈ polyform(n)))
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
⊢ 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') ∈ polyform(n)
BY
{ (((RW assert_pushdownC (-5) THENA Auto) THEN (RW assert_pushdownC (-2) THENA Auto))
THEN (GenConcl ⌜mul-polynom(left;l1) = aa ∈ polyform(n - 1)⌝⋅
THENA (InstHyp [⌜k - 1⌝;⌜n - 1⌝;⌜left⌝;⌜l1⌝] 2⋅ THEN Auto)
)
THEN (CallByValueReduce 0 THENA Auto)
THEN ((Assert tree_node(left;polyconst(0)) ∈ polyform(n) BY
((GenConcl ⌜polyconst(0) = z ∈ polyform(n)⌝⋅ THENA (Auto THEN SubsumeC ⌜polynom(n)⌝⋅ THEN Auto))
THEN Auto
))
THEN (Assert tree_size(tree_node(left;polyconst(0))) = (1 + tree_size(left)) ∈ ℤ BY
(RW (AddrC [2] RecUnfoldTopAbC) 0
THEN Reduce 0
THEN Subst' tree_size(polyconst(0)) ~ 0 0
THEN Auto))
)
THEN (Assert tree_node(l1;polyconst(0)) ∈ polyform(n) BY
((GenConcl ⌜polyconst(0) = z ∈ polyform(n)⌝⋅ THENA (Auto THEN SubsumeC ⌜polynom(n)⌝⋅ THEN Auto))
THEN Auto
))
THEN (Assert tree_size(tree_node(l1;polyconst(0))) = (1 + tree_size(l1)) ∈ ℤ BY
(RW (AddrC [2] RecUnfoldTopAbC) 0 THEN Reduce 0 THEN Subst' tree_size(polyconst(0)) ~ 0 0 THEN Auto))) }
1
1. k : ℕ
2. ∀k:ℕk. ∀[n:ℕ]. ∀[p,q:polyform(n)]. (((tree_size(p) + tree_size(q)) ≤ k)
⇒ (mul-polynom(p;q) ∈ polyform(n)))
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. aa : polyform(n - 1)
12. mul-polynom(left;l1) = aa ∈ polyform(n - 1)
13. tree_node(left;polyconst(0)) ∈ polyform(n)
14. tree_size(tree_node(left;polyconst(0))) = (1 + tree_size(left)) ∈ ℤ
15. tree_node(l1;polyconst(0)) ∈ polyform(n)
16. tree_size(tree_node(l1;polyconst(0))) = (1 + tree_size(l1)) ∈ ℤ
⊢ 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') ∈ polyform(n)
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{} (mul-polynom(p;q) \mmember{} polyform(n)))
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
\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') \mmember{} polyform(n)
By
Latex:
(((RW assert\_pushdownC (-5) THENA Auto) THEN (RW assert\_pushdownC (-2) THENA Auto))
THEN (GenConcl \mkleeneopen{}mul-polynom(left;l1) = aa\mkleeneclose{}\mcdot{}
THENA (InstHyp [\mkleeneopen{}k - 1\mkleeneclose{};\mkleeneopen{}n - 1\mkleeneclose{};\mkleeneopen{}left\mkleeneclose{};\mkleeneopen{}l1\mkleeneclose{}] 2\mcdot{} THEN Auto)
)
THEN (CallByValueReduce 0 THENA Auto)
THEN ((Assert tree\_node(left;polyconst(0)) \mmember{} polyform(n) BY
((GenConcl \mkleeneopen{}polyconst(0) = z\mkleeneclose{}\mcdot{} THENA (Auto THEN SubsumeC \mkleeneopen{}polynom(n)\mkleeneclose{}\mcdot{} THEN Auto))
THEN Auto
))
THEN (Assert tree\_size(tree\_node(left;polyconst(0))) = (1 + tree\_size(left)) BY
(RW (AddrC [2] RecUnfoldTopAbC) 0
THEN Reduce 0
THEN Subst' tree\_size(polyconst(0)) \msim{} 0 0
THEN Auto))
)
THEN (Assert tree\_node(l1;polyconst(0)) \mmember{} polyform(n) BY
((GenConcl \mkleeneopen{}polyconst(0) = z\mkleeneclose{}\mcdot{} THENA (Auto THEN SubsumeC \mkleeneopen{}polynom(n)\mkleeneclose{}\mcdot{} THEN Auto))
THEN Auto
))
THEN (Assert tree\_size(tree\_node(l1;polyconst(0))) = (1 + tree\_size(l1)) BY
(RW (AddrC [2] RecUnfoldTopAbC) 0
THEN Reduce 0
THEN Subst' tree\_size(polyconst(0)) \msim{} 0 0
THEN Auto)))
Home
Index