code: def constraint_to_si(expr):
      
  
      satisfiable = True
      replace_list = [ ]
  
      satisfiable, replace_list = backends.vsa.constraint_to_si(expr)
  
      # Make sure the replace_list are all ast.bvs
      for i in xrange(len(replace_list)):
          ori, new = replace_list[i]
          if not isinstance(new, Base):
              new = BVS(new.name, new._bits, min=new._lower_bound, max=new._upper_bound, stride=new._stride, explicit_name=True)
              replace_list[i] = (ori, new)
  
      return satisfiable, replace_list
docs: Convert a constraint to SI if possible.
  
      :param expr:
      :return: