let dom lookup op al =
  let dom_of x = 
    try
      let d1 = Term.Var.dom_of x in
        (try 
           let d2 = lookup x in
             Dom.inter d1 d2
         with
             Not_found -> d1)
    with
        Not_found -> 
          try lookup x with Not_found -> Dom.Real
  in
    Dom.multl (List.map dom_of al)