let equal te a b =
    match te with
      | C_int _ | C_float _  -> F.p_eq a b
      | C_pointer t ->
          let obj = object_of t in
          M.equal_loc (M.loc_of_term obj a) (M.loc_of_term obj b)
      | C_comp comp -> eq_record comp (F.unwrap a) (F.unwrap b)
      | C_array arr -> eq_array arr (F.unwrap a) (F.unwrap b)