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