code: def copy(self):
          
  
          cnf = CNF()
          cnf.nv = self.nv
          cnf.clauses = copy.deepcopy(self.clauses)
          cnf.comments = copy.deepcopy(self.comments)
  
          return cnf
docs: This method can be used for creating a copy of a CNF object. It
              creates another object of the :class:`CNF` class and makes use of
              the *deepcopy* functionality to copy the clauses.
  
              :return: an object of class :class:`CNF`.
  
              Example:
  
              .. code-block:: python
  
                  >>> cnf1 = CNF(from_clauses=[[-1, 2], [1]])
                  >>> cnf2 = cnf1.copy()
                  >>> print cnf2.clauses
                  [[-1, 2], [1]]
                  >>> print cnf2.nv
                  2