let dom of_term op al =
try
(match op, al with
| Sym.Num(q), [] ->
Dom.of_q q
| Sym.Multq(q), [a] ->
Dom.multq q (of_term a)
| Sym.Add, [a; b] ->
Dom.add (of_term a) (of_term b)
| Sym.Add, _ ->
Dom.addl (List.map of_term al)
| _ ->
Dom.Real)
with
Not_found -> Dom.Real