let compare v1 v2 = match v1, v2 with
| (v1, id1, _,_), (v2, id2, _,_) ->
let cmp = String.compare v1 v2 in
if cmp <> 0 then cmp
else
begin
match id1 , id2 with
| None , None -> 0
| Some _ , None -> 1
| None , Some _ -> (-1)
| Some id1 , Some id2 -> Pervasives.compare id1 id2
end