let ih_inter ih1 ih2 =
  let ih' = IH.copy ih1 in
  IH.iter (fun id _vi ->
    if not(IH.mem ih2 id) then
      IH.remove ih' id else
      ()) ih1;
  ih'