def canonicalize(self): if not self.lh_exp.curvature.is_constant(): x = Variable(*self.size) obj = x.canonical_form()[0] constraints = (x.T == self.rh_exp.T*self.lh_exp.T).canonical_form()[1] return (obj, constraints) else: return super(MulExpression, self).canonicalize()