(defun lambdaise (poly)
(let* ((variables (cl-buchberger::variables
(cl-buchberger::base-ring poly)))
(terms (cl-buchberger::terms->list poly)))
`(lambda (,@variables)
(+
,@(loop for term in terms
for co = (cl-buchberger::coefficient term)
for mo = (cl-buchberger::monomial term) collect
`(* ,co
,@(loop for m across mo for v in variables collect
`(expt ,v ,m))))))))