let simplify_adaptability_cstr (Adaptability (w_x, w_y)) =
  match on_computation w_x, on_computation w_y with
  | (None, p_x), (None, p_y) ->
      if p_x <: p_y then None
      else raise Solve
  | (Some c_x, p_x), (Some c_y, p_y) when c_x = c_y ->
      if p_x <: p_y then None
      else raise Solve
  | (Some c_x, p_x), (Some c_y, p_y) ->
      Some (Simpl_adaptability ((c_x, p_x), (c_y, p_y)))
  | (Some _, _), (None, _) | (None, _), (Some _, _) -> assert false