diff --git a/xml/chapter2/section5/subsection3.xml b/xml/chapter2/section5/subsection3.xml
index 3971aca7e..8f76c839e 100644
--- a/xml/chapter2/section5/subsection3.xml
+++ b/xml/chapter2/section5/subsection3.xml
@@ -1025,6 +1025,37 @@ head(tail(tail(tail(mul(p1, p2)))));
subtraction of polynomials.
(Hint: You may find it helpful to define a generic negation operation.)
+
+
+ ex_2_88_solution
+
+function sub_terms(L1, L2) {
+ if (is_empty_termlist(L1)) {
+ return L2;
+ } else if (is_empty_termlist(L2)) {
+ return L1;
+ } else {
+ const t1 = first_term(L1);
+ const t2 = first_term(L2);
+ return order(t1) > order(t2)
+ ? adjoin_term(t1, sub_terms(rest_terms(L1), L2))
+ : order(t1) < order(t2)
+ ? adjoin_term(t2, sub_terms(L1, rest_terms(L2)))
+ : adjoin_term(make_term(order(t1),
+ sub(coeff(t1), coeff(t2))),
+ sub_terms(rest_terms(L1),
+ rest_terms(L2)));
+ }
+}
+function sub_poly(p1, p2) {
+ return is_same_variable(variable(p1), variable(p2))
+ ? make_poly(variable(p1),
+ sub_terms(term_list(p1), term_list(p2)))
+ : error(list(p1, p2), "polys not in same var -- sub_poly");
+}
+
+
+