<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def divide(self, factorset, inplace=True):
 r""" Returns a new factor set instance after division by the factor set Division of two factor sets :math:`\frac{\vec\phi_1}{\vec\phi_2}` basically translates to union of all the factors present in :math:`\vec\phi_2` and :math:`\frac{1}{\phi_i}` of all the factors present in :math:`\vec\phi_2`. Parameters factorset: FactorSet The divisor inplace: A boolean (Default value True) If inplace = True ,then it will modify the FactorSet object, if False then will return a new FactorSet object. Returns -------- If inplace = False, will return a new FactorSet Object which is division of given factors. Examples -------- set([<DiscreteFactor representing phi(x3:2, x4:2, x1:2) at 0x7f8e32b5ba10>, <DiscreteFactor representing phi(x5:2, x6:2, x7:2) at 0x7f8e32b5b650>, <DiscreteFactor representing phi(x1:2, x2:3, x3:2) at 0x7f8e32b5b050>, <DiscreteFactor representing phi(x5:2, x7:2, x8:2) at 0x7f8e32b5b8d0>]) """

        factor_set = self if inplace else self.copy()
        factor_set1 = factorset.copy()

        factor_set.add_factors(*[phi.identity_factor() / phi for phi in factor_set1.factors])

        if not inplace:
            return factor_set