let compare_item d1 d2 =
  let p = part_of_item d1.Formula.d_item - part_of_item d2.Formula.d_item in
  if p = 0 then
    match d1.Formula.d_item , d2.Formula.d_item with
      | Formula.Trecord c1 , Formula.Trecord c2 -> comp_compare c1 c2
      | Formula.Cons i , Formula.Cons j -> i - j
      | _ ,_ -> String.compare d1.Formula.d_name d2.Formula.d_name
  else p