title: Why is this CVXPY expression not DCP?
body: <p>I have this short sample..</p>
  
  <pre><code>sysclk.value = 320e6
  
  ddsdiv = cp.Variable(integer = True,                    # DDS divisor
           name = 'ddsdiv')
  ddsdivpos = cp.Variable(pos = True)                     # Constrain to be positive
  
  ddsclk = cp.Variable(pos = True, name = 'ddsclk')       # Resulting clock
  
  constraints = [
          ddsdiv == ddsdivpos,                            # Constrain DDS divisor to be positive
          sysclk == ddsclk * ddsdiv,                      # Compute DDS clock
          ]
  objective = cp.Minimize(cp.abs(ddsclk - 10e6))
  prob = cp.Problem(objective, constraints);
  
  prob.solve()
  print(ddsclk.value)
  </code></pre>
  
  <p>However it says..</p>
  
  <pre><code>DCPError: Problem does not follow DCP rules. Specifically:
  The following constraints are not DCP:
  sysclk == ddsclk * ddsdiv , because the following subexpressions are not:
  |--  ddsclk * ddsdiv
  </code></pre>
  
  <p>Similarly it fails if I try (the more naive)..</p>
  
  <pre><code>        ddsclk == sysclk / ddsdiv,                      # Compute DDS clock
  </code></pre>
  
  <p>It also emits a DCPError.</p>
  
  <p>I don't understand how a positive number divided by a positive integer could not my convex (but my math is not great :)</p>
  
  <p>I'm using CVXPY 1.0.25, Python 3.7.5 on MacOSX 10.14.6.</p>
  
  <p>Thanks.</p>