Maxima で 4 つの a

4 つの a と四則演算だけを組み合わせて表せる式を数式処理ソフト Maxima を使って全部挙げてみる。動機は中置演算子を定義する infix を使ってみたかったから。
Maxima のバッチファイル fourAs.max は、以下。

display2d:false$
infix("dda")$
infix("ddb")$
infix("ddc")$

for i:0 thru 3 do (
  if i=0 then a dda b:= a+b
  else if i=1 then a dda b:=a-b
  else if i=2 then a dda b:=a*b
  else if i=3 then a dda b:=a/b,
  for j:0 thru 3 do (
    if j=0 then a ddb b:= a+b
    else if j=1 then a ddb b:=a-b
    else if j=2 then a ddb b:=a*b
    else if j=3 then a ddb b:=a/b,
    for k:0 thru 3 do (
      if k=0 then a ddc b:= a+b
      else if k=1 then a ddc b:=a-b
      else if k=2 then a ddc b:=a*b
      else if k=3 then a ddc b:=a/b,
      disp(
        ratsimp(errcatch(((a dda a) ddb a) ddc a)),
        ratsimp(errcatch((a dda (a ddb a)) ddc a)),
        ratsimp(errcatch((a dda a) ddb (a ddc a))),
        ratsimp(errcatch(a dda ((a ddb a) ddc a))),
        ratsimp(errcatch(a dda (a ddb (a ddc a))))
      )
    )
  )
)$

似たような文字列が繰り返されているので、もっと簡潔になるはずだと思うのだけど、よくわからない。
実行するコマンドは maxima < fourAs.max | sed -e '1,10d' -e '/(C[0-9]*)/d' -e '/Division by 0/d' -e '/\[\]/d' | sort | uniq
結果は 64 種類。
[(2*a+1)/2] [(2*a-1)/2] [(a+1)/a] [(a-1)/a] [(a^2+1)/a] [(a^2-1)/a] [-(2*a-1)/2] [-(a-1)/a] [-(a^2-1)/a] [-1/(a-1)] [-1] [-2*a] [-a/(a-1)] [-a] [-a^2] [0] [1-2*a] [1-a] [1-a^2] [1/(2*a)] [1/(a+1)] [1/(a-1)] [1/3] [1/a^2] [1] [2*a+1] [2*a-1] [2*a-a^2] [2*a] [2*a^2+a] [2*a^2-a] [2*a^2] [2*a^3] [2-a] [2/a] [2] [3*a^2] [3] [4*a] [4*a^2] [a+1] [a+2] [a-1] [a-2*a^2] [a-2] [a-a^2] [a-a^3] [a/(a+1)] [a/(a-1)] [a/2] [a] [a^2+1] [a^2+2*a] [a^2+a] [a^2-1] [a^2-2*a] [a^2-a] [a^2-a^3] [a^2] [a^3+a] [a^3+a^2] [a^3-a] [a^3-a^2] [a^4]