let rec add_identification_ctr_xor xor_eqns : t_partition -> term list list =
  let rec help n xor_eqns = function
    | m::ms -> help n ([Var(m);Var(n)]::xor_eqns) ms
    | []    -> xor_eqns
  in
  function
    | (n::ns)::tail -> add_identification_ctr_xor (help n xor_eqns ns) tail
    | [] -> xor_eqns
    | _ -> failwith ("add_identification_ctr_xor: input is not a valid "^
                     "partition, it contains an empty class")