let rec key_of_value value = function [] -> raise InternalError | (k, v) :: l -> if compare v value = 0 then k else key_of_value value l