code: def _spin_product(variables):
      
      multiplier, multiplicand, product, aux = variables
  
      return BinaryQuadraticModel({multiplier: -.5,
                                   multiplicand: -.5,
                                   product: -.5,
                                   aux: -1.},
                                  {(multiplier, multiplicand): .5,
                                   (multiplier, product): .5,
                                   (multiplier, aux): 1.,
                                   (multiplicand, product): .5,
                                   (multiplicand, aux): 1.,
                                   (product, aux): 1.},
                                  2.,
                                  Vartype.SPIN)
docs: Create a bqm with a gap of 2 that represents the product of two variables.
  
      Note that spin-product requires an auxiliary variable.
  
      Args:
          variables (list):
              multiplier, multiplicand, product, aux
  
      Returns:
          :obj:`.BinaryQuadraticModel`