@classmethod
def apply(cls, v1, v2, op):
    """
		Return a new canonical representation of the
		pyddlib.DD object for the result of `v1` `op` `v2`.

		:param v1: root vertex of left operand
		:type v1: pyddlib.DD
		:param v2: root vertex of right operand
		:type v2: pyddlib.DD
		:param op: a binary operator
		:type op: callable object or function
		:rtype: pyddlib.DD
		"""
    T = {}
    return cls.__apply_step(v1, v2, op, T).reduce()
