LogicJS adds logic programming to JavaScript
Nifty, but having "and", "or" and the rest before both of the arguments instead of in the middle is incredibly confusing to read. Very unintuitive. Why not restructure it to be chainable with something like:  firstVar.or(secondVar.eq('Bob').and(thirdVar.eq(41)));