Let `B ( N ) ` be the set of boolean strings with length N. Example :

B ( 3 ) = [ [ 000 ] , [ 001 ] , [ 010 ] , [ 011 ] , [ 100 ] , [ 101 ] , [ 110 ] , [ 111 ] ]

Let `F` be a set of boolean functions of arity N that tests if `a0, a1, ... aN` is a specific member of B ( N ) . Example :

F ( 3 ) = [ f0,f1,f2,f3... ] where

f0 ( a,b,c ) = ! a & ! b & ! c,

f1 ( a,b,c ) = ! a & ! b & c,

f2 ( a,b,c ) = ! a & b & ! c,

f3 ( a,b,c ) = ! a & b & c,

... etc...

Let `f` be a boolean function of arity N that tests its inputs against each `g` in `F`. For example, if N = 3 , a value of `f` could be :

f ( a,b,c ) = f0 ( a,b,c ) & f1 ( a,b,c ) & ! f2 ( a,b,c ) ...

In order to find `a, b, c` such that `f ( a,b,c ) = 1 `, then you must find `a,b,c` such that `f0 ( a,b,c ) = 1 `, `f1 ( a,b,c ) = 2 `, `f2 ( a,b,c ) = 3 `, etc. Considering there are ` 2 ^ N` elements in `B ( N ) `, then , you must, at least, execute ` 2 ^ N` tests. Thus, SAT can 't be solved in Polynomial time, and P!=NP.