Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
/* This file:
 *   http://anggtwu.net/MAXIMA/3-changevars1.mac.html
 *   http://anggtwu.net/MAXIMA/3-changevars1.mac
 *          (find-angg "MAXIMA/3-changevars1.mac")
 * Author: Eduardo Ochs <eduardoochs@gmail.com>
 *
 * Uma ferramenta pra preparar questões de integração que usam três
 * mudanças de variável.
 *
 * (defun e () (interactive) (find-angg "MAXIMA/3-changevars1.mac"))
 *
 * See: (find-es "maxima" "3-changevars")
 *      (find-es "maxima" "2-lisp")

 * «.basic-tests»	(to "basic-tests")
 * «.2023-2-C2-P1»	(to "2023-2-C2-P1")
*/

gradef(f(x), fp(x));
gradef(g(x), gp(x));
gradef(h(x), hp(x));
gradef(m(x), mp(x));
MM2 : align_eqs([
    integrate(diff(f(g(h(x))), x), x),
    integrate(diff(f(g(u)),    u), u),
    integrate(diff(f(v),       v), v),
    f(v),
    f(g(u)),
    f(g(h(v)))
  ]);
MM3 : align_eqs([
    integrate(diff(f(g(h(m(x)))), x), x),
    integrate(diff(f(g(h(u))),    u), u),
    integrate(diff(f(g(v)),       v), v),
    integrate(diff(f(w),          w), w),
    f(w),
    f(g(v)),
    f(g(h(u))),
    f(g(h(m(x))))
  ]);

foo2(f,g) := block([f0,f1,ex0,ex1],
    f0  : f,
    f1  : concat(f, 'p),
    ex0 : apply(g,[x]),
    ex1 : diff(ex0, x),
    buildq([f0,f1,ex0,ex1],
      [f0 = lambda([x],ex0),
       f1 = lambda([x],ex1)]))$
foo1(fg) := foo2(fg[1],fg[2])$
foo(fgs) := apply('append, map('foo1, fgs));

/*
** «basic-tests»  (to ".basic-tests")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("~/MAXIMA/3-changevars1.mac");
linel : 100;
MM2;
MM3;
f2(y) := y^4;
f3(z) := sin(z);
       foo2(f,f2);
      foo1([f,f2]);
      foo([[f,f2],[g,f3]]);
subst(foo([[f,f2],[g,f3]]), f(g(x))*gp(x));

** «2023-2-C2-P1»  (to ".2023-2-C2-P1")
**    (find-es "maxima" "2023-2-C2-P1" "Questao 2")
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("~/MAXIMA/3-changevars1.mac");
MM2;
f1(y) := sin(y) / 4;
f2(y) := y^4;
f3(y) := log(y);
substs : foo('[[f,f1],[g,f2],[h,f3]]);
              MM2;
subst(substs, MM2);

*/