let ih_union ih1 ih2 =
  let ih' = IH.copy ih1 in
  IH.iter (fun id vi ->
    if not(IH.mem ih' id)
    then IH.add ih' id vi
    else ()) ih2;
  ih'