let cmp_in_key k1 k2 = match k1, k2 with
| (InImpl z1), (InImpl z2) when Locations.Zone.equal z1 z2 -> 0
| (InImpl _), (InImpl _) -> raise Not_equal
| (InImpl _), _ -> 1
| _, (InImpl _) -> -1
| InNum n1, InNum n2 -> n1 - n2
| (InNum _), _ -> 1
| _, (InNum _) -> -1
| InCtrl, InCtrl -> 0