Для первого этапа вам необходимо соединить каждый компонент LHS с каждым компонентом RHS; декартово произведение двух множеств. Для этого требуется двухуровневая карта с последующим объединением списков пар второго уровня в один список верхнего уровня (например, (apply #'append ...
).
Второй этап может быть выполнен с редуктом, который формирует список ассоциаций, связанный с показателем степени.
РЕДАКТИРОВАТЬ: Позвольте мне решить другую проблему для вас, и позволить вам выяснить, как перевести ее в решение для вашей проблемы:
Вычислите (a + b + ... + k) * (l + m + ... + z)
, сначала расширившись в пары, а затем суммируя произведения:
(defun mul-sums (aa bb)
(reduce #'+
(apply #'append
(map 'list
#'(lambda (a)
(map 'list
#'(lambda (b)
(* a b))
bb))
aa))))
; Compute (1 + 2 + 3) * (3 + 4).
> (mul-sums '(1 2 3) '(3 4))
42