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