  This is the latest in a series of articles aimed at exploring the
relationship between the complexity classes of P and NP. In the previous
papers, we have proved that the sat CNF problem is polynomially reduced to the
problem of finding a special covering for a set under the special decomposition
of this set and vice versa. That is, these problems are polinomially
equivalent. This means that the problem of finding a special covering for a set
under a special decomposition of this set, is an NP-complete problem. We also
described algorithmic procedures that determine whether there is a special
covering for a set under a special decomposition of this set. In this article
we prove that all these algorithmic procedures have polynomial time complexity
with respect to the length of input data. In addition, we will describe an
algorithm that, given any Boolean function in conjunctive normal form (CNF),
determines in polynomial time whether this function is satisfiable. We will
prove that the time complexity of this algorithm is bounded by the cube of the
length of the input data. Also, if the function is not satisfiable, the
algorithm deduces this result noting the reason for this result. We have
implemented an algorithm in Python, and successfully tested it on Boolean
functions represented in CNF with tens of thousands of variables and tens of
thousands of clauses.
