let rec sigma op l =
match op, l with
| Sym.Num(q), [] ->
mk_num q
| Sym.Add, [x; y] ->
mk_add x y
| Sym.Add, _ :: _ :: _ ->
mk_addl l
| Sym.Multq(q), [x] ->
mk_multq q x
| _ ->
assert false