title: Check constraints are ok in cvxpy with actual values
body: <p>When solving optimisation problems in cvxpy, is there a nice way to check that the constraints are valid by substituing in actual values for the optimisation variables?</p>
  
  <p>I have a complicated optimisation problem (100+ constraints), but I know what the optimal solution should be. However, cvxpy fails with error message <code>ValueError: Rank(A) &lt; p or Rank([G; A]) &lt; n</code>
  I think this is because I have a typo in one of the constraints, making them inconsistent. Is there a nice way to substitute actual values for the variables, to see which constraints are violated (since they probably have typos)? </p>
  
  <p>My actual problem is complicated, so I've made a simple example: </p>
  
  <pre><code>from cvxpy import *
  
  x = variable(name='x')
  y = variable(name='y')
  
  c1 = greater_equals(x, 1.)
  c2 = greater_equals(y, 1.)
  c3 = less_equals(x + y, -4.) # typo: -4 should be +4
  
  p = program(maximize(2. * x + y), [c1, c2, c3])
  
  p.solve()
  </code></pre>
  
  <p>The <code>-4</code> in constraint <code>c3</code> should be <code>+4</code>. 
  This fails with error message: <code>Certificate of primal infeasibility found.</code>
  If I enter <code>p.show()</code> I get: </p>
  
  <pre><code>maximize 2.0*x + y
  subject to
  x &gt;= 1.0
  y &gt;= 1.0
  x + y &lt;= -4.0
  </code></pre>
  
  <p>Is there a value to substitue the correct solution (<code>x == 3., y == 1.</code>) so see that 3rd constraint is violated? I've tried messing around with <code>x.value</code> etc. but haven't found a way</p>