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'