let iosh_combine iosh1 iosh2 =
let iosh' = IH.copy iosh1 in
IH.iter (fun id ios1 ->
try let ios2 = IH.find iosh2 id in
let newset = IOS.union ios1 ios2 in
IH.replace iosh' id newset;
with Not_found ->
let newset = IOS.add None ios1 in
IH.replace iosh' id newset) iosh1;
IH.iter (fun id ios2 ->
try ignore(IH.find iosh1 id)
with Not_found -> begin
(*if not(IH.mem iosh1 id) then*)
let newset = IOS.add None ios2 in
IH.add iosh' id newset end) iosh2;
iosh'