Step
*
1
2
2
of Lemma
add-ipoly-wf1
1. ∀u,u':ℤ × (ℤ List). (imonomial-le(u;u') ∈ 𝔹)
2. u : ℤ × (ℤ List)
3. v : (ℤ × (ℤ List)) List
4. ∀q:(ℤ × (ℤ List)) List. (add-ipoly(v;q) ∈ (ℤ × (ℤ List)) List)
5. u1 : ℤ × (ℤ List)
6. v1 : (ℤ × (ℤ List)) List
7. add-ipoly([u / v];v1) ∈ (ℤ × (ℤ List)) List
⊢ if null([u / v]) then [u1 / v1]
if null([u1 / v1]) then [u / v]
else let p1,ps = [u / v]
in let q1,qs = [u1 / v1]
in if imonomial-le(p1;q1)
then if imonomial-le(q1;p1)
then let x ⟵ add-ipoly(ps;qs)
in let cp,vs = p1
in eval c = cp + (fst(q1)) in
if c=0 then x else [<c, vs> / x]
else let x ⟵ add-ipoly(ps;[q1 / qs])
in [p1 / x]
fi
else let x ⟵ add-ipoly([p1 / ps];qs)
in [q1 / x]
fi
fi ∈ (ℤ × (ℤ List)) List
BY
{ (Reduce 0
THEN (Assert add-ipoly(v;v1) ∈ (ℤ × (ℤ List)) List BY
BackThruSomeHyp)
THEN (CallByValueReduceOn ⌜add-ipoly(v;v1)⌝ 0⋅ THENA Auto)
THEN (Assert add-ipoly(v;[u1 / v1]) ∈ (ℤ × (ℤ List)) List BY
BackThruSomeHyp)
THEN (CallByValueReduceOn ⌜add-ipoly(v;[u1 / v1])⌝ 0⋅ THENA Auto)
THEN (Assert add-ipoly([u / v];v1) ∈ (ℤ × (ℤ List)) List BY
BackThruSomeHyp)
THEN (CallByValueReduceOn ⌜add-ipoly([u / v];v1)⌝ 0⋅ THENA Auto)) }
1
1. ∀u,u':ℤ × (ℤ List). (imonomial-le(u;u') ∈ 𝔹)
2. u : ℤ × (ℤ List)
3. v : (ℤ × (ℤ List)) List
4. ∀q:(ℤ × (ℤ List)) List. (add-ipoly(v;q) ∈ (ℤ × (ℤ List)) List)
5. u1 : ℤ × (ℤ List)
6. v1 : (ℤ × (ℤ List)) List
7. add-ipoly([u / v];v1) ∈ (ℤ × (ℤ List)) List
8. add-ipoly(v;v1) ∈ (ℤ × (ℤ List)) List
9. add-ipoly(v;[u1 / v1]) ∈ (ℤ × (ℤ List)) List
10. add-ipoly([u / v];v1) ∈ (ℤ × (ℤ List)) List
⊢ if imonomial-le(u;u1)
then if imonomial-le(u1;u)
then let cp,vs = u
in eval c = cp + (fst(u1)) in
if c=0 then add-ipoly(v;v1) else [<c, vs> / add-ipoly(v;v1)]
else [u / add-ipoly(v;[u1 / v1])]
fi
else [u1 / add-ipoly([u / v];v1)]
fi ∈ (ℤ × (ℤ List)) List
Latex:
Latex:
1. \mforall{}u,u':\mBbbZ{} \mtimes{} (\mBbbZ{} List). (imonomial-le(u;u') \mmember{} \mBbbB{})
2. u : \mBbbZ{} \mtimes{} (\mBbbZ{} List)
3. v : (\mBbbZ{} \mtimes{} (\mBbbZ{} List)) List
4. \mforall{}q:(\mBbbZ{} \mtimes{} (\mBbbZ{} List)) List. (add-ipoly(v;q) \mmember{} (\mBbbZ{} \mtimes{} (\mBbbZ{} List)) List)
5. u1 : \mBbbZ{} \mtimes{} (\mBbbZ{} List)
6. v1 : (\mBbbZ{} \mtimes{} (\mBbbZ{} List)) List
7. add-ipoly([u / v];v1) \mmember{} (\mBbbZ{} \mtimes{} (\mBbbZ{} List)) List
\mvdash{} if null([u / v]) then [u1 / v1]
if null([u1 / v1]) then [u / v]
else let p1,ps = [u / v]
in let q1,qs = [u1 / v1]
in if imonomial-le(p1;q1)
then if imonomial-le(q1;p1)
then let x \mleftarrow{}{} add-ipoly(ps;qs)
in let cp,vs = p1
in eval c = cp + (fst(q1)) in
if c=0 then x else [<c, vs> / x]
else let x \mleftarrow{}{} add-ipoly(ps;[q1 / qs])
in [p1 / x]
fi
else let x \mleftarrow{}{} add-ipoly([p1 / ps];qs)
in [q1 / x]
fi
fi \mmember{} (\mBbbZ{} \mtimes{} (\mBbbZ{} List)) List
By
Latex:
(Reduce 0
THEN (Assert add-ipoly(v;v1) \mmember{} (\mBbbZ{} \mtimes{} (\mBbbZ{} List)) List BY
BackThruSomeHyp)
THEN (CallByValueReduceOn \mkleeneopen{}add-ipoly(v;v1)\mkleeneclose{} 0\mcdot{} THENA Auto)
THEN (Assert add-ipoly(v;[u1 / v1]) \mmember{} (\mBbbZ{} \mtimes{} (\mBbbZ{} List)) List BY
BackThruSomeHyp)
THEN (CallByValueReduceOn \mkleeneopen{}add-ipoly(v;[u1 / v1])\mkleeneclose{} 0\mcdot{} THENA Auto)
THEN (Assert add-ipoly([u / v];v1) \mmember{} (\mBbbZ{} \mtimes{} (\mBbbZ{} List)) List BY
BackThruSomeHyp)
THEN (CallByValueReduceOn \mkleeneopen{}add-ipoly([u / v];v1)\mkleeneclose{} 0\mcdot{} THENA Auto))
Home
Index