© xkcd.com
Boolean formula satisfiability algorithms for JavaScript. See docs. Parent is js-algorithms. For a polynomial time algorithm for the 2SAT problem see @problem-solving/2sat.
let instance = sat.from.signs( [ [ -1 , 2 , 3 ] , [ -2 , -4 , 5 ] , [ 1 , -5 ] ] ) ; // or // let instance = sat.from.keys( // [ // [ [ false , '1' ] , [ true , '2' ] , [ true , '3' ] ] , // [ [ false , '2' ] , [ false , '4' ] , [ true , '5' ] ] , // [ [ true , '1' ] , [ false , '5' ] ] // ] // ) ; sat.decide( instance ) ; // true sat.verify( instance , sat.solve( instance ).next( ).value ) ; // true for ( let certificate of sat.solve( instance ) ) { console.log( instance.assignment( certificate ) ) ; }