PLUSPOL(a,b)
if a=() then return b
else if b=() then return a
else
ea:=first first a;
eb:=first first b;
ca:=second first a; a=((ea ca) ...)
cb:=second first b; b=((eb cb) ...)
return
if ea > eb then
cons(first a,pluspol(rest a,b))
else if ea < eb then
cons(first b,pluspol(rest b,a))
else if ca + cb = 0 then
pluspol(rest a,rest b)
else cons(list(ea,ca + cb),pluspol(rest a,rest b))
fi fi fi
fi fi
TIMESPOL(a,b)
if a=() or b=() then return ()
else
ea:=first first a;
eb:=first first b;
ca:=second first a; a=((ea ca) ...)
cb:=second first b; b=((eb cb) ...)
return cons(list(ea + eb,ca*cb),
pluspol(timespol(list first a,rest b),
timespol(rest a,b)) )
fi