let is_equal s x y =
  let (x', _) = v s x in
  let (y', _) = v s y in
    if Term.eq x' y' then 
      Three.Yes
    else if D.is_diseq s.d x' y' then 
      Three.No
    else
      try
        let (i, _) = c s x' 
        and (j, _) = c s y' in
          if i = Sign.Zero && j = Sign.Zero then
            Three.Yes
          else if Sign.disjoint i j then
            Three.No
          else 
            Three.X
      with
          Not_found -> Three.X